Hidden Preferences: The Magic of NMF in Recommenders

Hidden Preferences: The Magic of NMF in Recommenders

NMF (Non-negative Matrix Factorization) คือ

เทคนิค Matrix Factorization แบบหนึ่ง ที่แยกเมทริกซ์ใหญ่ ๆ ออกเป็นเมทริกซ์เล็ก 2 ตัว โดยมีเงื่อนไขว่า ค่าทุกตัวต้องเป็นบวกหรือศูนย์เท่านั้น

ถ้ามีเมทริกซ์พฤติกรรมผู้ใช้

$$ R \approx W \times H $$

  • R = User–Item Matrix (เช่น คะแนน, การคลิก, การซื้อ)
  • W = User–Latent Features
  • H = Item–Latent Features

ค่าทุกตัวใน W และ H ≥ 0 → ทำให้ตีความง่าย เช่น “ระดับความชอบ” หรือ “ความเกี่ยวข้อง”


ทำไม NMF ถึงเหมาะกับ Recommendation?

เพราะข้อมูลพฤติกรรมผู้ใช้ส่วนใหญ่เป็น ค่าบวก

  • จำนวนครั้งที่ดูสินค้า
  • จำนวนการซื้อ
  • Rating 1–5
  • เวลาในการใช้งาน

NMF เลยสร้าง representation ที่สอดคล้องกับธรรมชาติของข้อมูลจริง

แนวคิด

จินตนาการถึงการดู Streaming ของผู้ใช้งาน

User

Action

Comedy

Drama

A

5

1

0

B

4

2

1

C

0

1

5

NMF จะเรียนรู้ว่า

  • ผู้ใช้ A ชอบ Action
  • ผู้ใช้ C ชอบ Drama
  • หนังแต่ละเรื่องมี “สัดส่วนแนว” แฝงอยู่

ระบบจึงแนะนำหนังที่มี latent pattern ใกล้กับสิ่งที่ผู้ใช้ชอบ

ขั้นตอนใช้ NMF ทำ Recommendation

1) สร้าง User–Item Matrix

เช่น

  • แถว = ผู้ใช้
  • คอลัมน์ = สินค้า
  • ค่า = interaction (rating, purchase count)

2) ทำ Matrix Factorization

$$ R_{m \times n} \approx W_{m \times k} \times H_{k \times n} $$

  • k = จำนวน latent factors (เช่น 10–100)

3) ทำนายค่าที่หายไป

$$ \hat{R} = W \times H $$

ค่าที่เคยเป็นศูนย์ → กลายเป็น “คะแนนความน่าสนใจ”

เลือก Top-N items ที่ผู้ใช้ยังไม่เคยโต้ตอบ

ข้อดีของ NMF

  • ตีความง่าย (เพราะไม่มีค่าติดลบ)
  • เหมาะกับ implicit feedback (คลิก, ดู, ซื้อ)
  • มักให้ผลดีเมื่อข้อมูลเป็น non-negative จริง ๆ
  • ทำงานดีใน sparse data

ข้อจำกัด

  • จัดการค่าติดลบไม่ได้
  • อาจสู้ SVD หรือ Neural CF ไม่ได้ใน dataset ใหญ่มาก
  • ต้องจูนจำนวน latent factors ดี ๆ

ใช้เมื่อ

  • มีข้อมูลพฤติกรรมที่เป็น “จำนวน” หรือ “ความถี่”
  • อยากได้โมเดลที่อธิบายเชิงธุรกิจได้
  • Dataset ขนาดกลาง หรือ ใหญ่ แต่ไม่ระดับ massive deep learning scale