แนะนำร้านให้แม่น ด้วยพลังของ Collaborative Filtering
Merchant Recommendation ด้วย Collaborative Filtering
แนวคิดหลักคือ
“ผู้ใช้ที่มีพฤติกรรมคล้ายกัน มักชอบร้านคล้ายกัน”
เรา ไม่ต้องรู้รายละเอียดร้าน ก็แนะนำได้ จากพฤติกรรมการใช้งาน
1) เตรียมข้อมูล
สร้างตารางพฤติกรรมการใช้งาน
|
user_id |
merchant_id |
interaction |
|
U1 |
M1 |
5 |
|
U1 |
M2 |
3 |
|
U2 |
M1 |
4 |
|
U2 |
M3 |
5 |
interaction อาจมาจาก
- จำนวนครั้งที่ใช้จ่าย
- ยอดใช้จ่าย
- การกดดู / คลิก / เซฟร้าน
2) สร้าง User–Merchant Matrix
แปลงเป็นเมทริกซ์
|
|
M1 |
M2 |
M3 |
|
U1 |
5 |
3 |
0 |
|
U2 |
4 |
0 |
5 |
|
U3 |
0 |
4 |
4 |
ค่าศูนย์ = ยังไม่เคยใช้
3) ใช้ Matrix Factorization (แก่นของ CF)
โมเดลจะเรียนรู้ latent factors
User Vector × Merchant Vector ≈ Interaction Score
เครื่องมือยอดนิยม
- ALS (Implicit/Explicit)
- LightFM
- Surprise library
ผลลัพธ์คือได้ embedding ของ
- ผู้ใช้แต่ละคน
- ร้านแต่ละร้าน
4) การแนะนำทำยังไง
สำหรับผู้ใช้ U1
- เอา user vector ของ U1
- คูณกับ merchant vector ของทุกร้าน
- ได้คะแนนความน่าจะสนใจ
- ตัดร้านที่เคยใช้แล้วออก
- เลือก Top-N ร้านคะแนนสูงสุด
กลายเป็นร้านที่ “คนคล้าย U1 เคยใช้และชอบ”
5) ข้อดี
- ไม่ต้องมีข้อมูลหมวดร้าน
- ทราบถึงรสนิยมที่ซ่อนอยู่ได้ (เช่น คนชอบ ramen → ชอบชาเขียวพรีเมียม)
- แม่นยำเมื่อมีข้อมูลเยอะ
6) ข้อจำกัด
- ผู้ใช้ใหม่ -> แนะนำไม่ได้ (cold start problem)
- ร้านใหม่ -> ยังไม่มีใครใช้ ก็ยังไม่ถูกแนะนำ
- ไม่เข้าใจบริบทเวลา และ location
สรุป
ใช้พฤติกรรมผู้ใช้สร้างความคล้ายกัน แล้วแนะนำร้านที่ “คนรสนิยมใกล้กัน” เคยใช้ แต่ผู้ใช้นี้ยังไม่เคยใช้