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