Temporal Diversity ใน Recommender Systems

lukkiddd
lukkiddd
Published in
4 min readJan 26, 2020

ที่มา: Temporal Diversity in Recommender Systems

Photo by Devon Divine on Unsplash

บทความนี้จะมาสรุปความเข้าใจคร่าว ๆ หลังจากอ่าน Paper เรื่องนี้ครับ

ขอออกตัวก่อนครับว่า ถ้าตรงไหนผิด คอมเมนต์บอกได้เลยนะครับ :D

สรุปบางส่วน :D

  • Larger profile sizes negatively affect diversity
  • The more you rate now, the more diverse your next recommendations will be in the next session.
  • The longer the user does not return to the system, the more diversity increases.

วิธีเพิ่ม Diversity

  • Temporal Switching — เปลี่ยน Algorithm ทุก ๆ x วัน
  • Temporal User-based Switching — เปลี่ยน Algorithm ทุกครั้งที่ user เข้ามา
  • Re-ranking Frequent Visitors’ Lists — สลับของใหม่มาแทนที่ สำหรับผู้ใช้ที่เข้ามาใช้บ่อย

ใน Paper นี้ เค้าพูดเกี่ยวกับ Temporal Diversity ใน Recommender System ครับ

Photo by Alexander Schimmeck on Unsplash

แค่ Accuracy มันไม่พอ

เนื่องจากการที่เราวัดแค่ Accuracy อย่างเดียว มันอาจจะดูไม่ถูกต้อง เช่น ถ้า ระบบเรา แนะนำแต่ของ “แบบเดิม” อย่างเดียว ถึงแม้ของสิ่งนั้นจะเป้นสิ่งทีผู้ใช้น่าจะชอบ มาก ๆ ก็ตาม

ปกติ ถ้าเราใช้ Collaborative Filtering (matrix factorization) ในการ recommend item เนี่ย เราจะต้องทำการ คำนวณใหม่ทุกครั้ง เมื่อเราต้องการให้ผลลัพธ์ในการ recommend เราเปลี่ยนไป

  1. เมื่อมี item ใหม่เข้ามาในระบบ
  2. เมื่อผู้ใช้มีการ interact กับ item เพิ่ม (click item, ดูหนัง)

ทีนี้ใน Paper เค้าก็ลองดูครับว่า ถ้าเราคำนวณ CF ใหม่เรื่อยๆ แบบนี้ค่า Diversity จะเปลี่ยนไปแค่ไหน

Top-10 และ 20 ของ Diversity และ Novelty ที่เปลี่ยนไปเมื่อ update algorithm

Diversity ในที่นี้ จะหมายถึง item ที่ไม่ได้ถูก recommend ในรอบที่แล้

ยกตัวอย่างเช่น
รอบแรกผู้ใช้ ได้ recommend item 5 อย่าง

L1 = A, B, C, D, E

รอบต่อมาผู้ใช้ ใน recommend item เปลี่ยนไป 1 อย่าง

L2 = A, B, Z, D, E

นั่นแปลว่า Diversity จะเท่ากับ

1/5 = 0.2

Diversity vs. Profile Size

Diversity vs. Profile Size

ผู้ใช้ที่มีข้อมูลเยอะ ๆ เช่น กด like เพลงหลายๆ เพลง, ดูหนัง หลายๆ เรื่อง มีผลยังไงบ้างกับ diversity

Larger profile sizes negatively affect diversity

และผลลัพธ์ที่ได้คือ เมื่อคุณมีข้อมูลเยอะในระบบ คุณจะเห็นของที่หลากหลายน้อยลงเรื่อย ๆ ดังรูป Figure 4.

Diversity VS. Rating Inputs

Diversity vs. Rating Inputs

ถ้าผู้ใช้มีการใช้งานเยอะในครั้งเดียวล่ะ ครั้งต่อไป จะแนะนำของที่แตกต่างจากเดิมเยอะไหม เช่น ดูหนังหลาย ๆ เรื่องในครั้งเดียว

These results can be interpreted as follows: the more you rate now, the more diverse your next recommendations will be in the next session.

ผลลัพธ์ที่ได้คือ แน่นอนครับ เมื่อคุณยิ่ง interact กับระบบต่อครั้ง มากเท่าไหร่ item ที่คุณจะเห็นครั้งต่อไปจะยิ่งเปลี่ยนไปอย่างแน่นอนครับ ดังรูป Figure 5.

Diversity vs. Time Between Sessions

Diversity vs. Time between Sessions

ถ้าผู้ใช้ เว้นเวลานานกว่าจะเข้ามาในระบบอีกครั้งล่ะ เค้าจะเห็น item เปลี่ยนไปแค่ไหน

เนื่องจาก ระหว่างที่ผู้ใช้คนใดคนนึงไม่ได้เข้ามาในระบบ มันก็ยังมีผู้ใช้คนอื่นที่ interact กับระบบ อยู่เรื่อย ๆ และยังมี item ใหม่เข้ามาในระบบอีกด้วย

ดังนั้น ผลลัพธ์ที่ดี ก็คือ

the longer the user does not return to the system, the more diversity increases.

ยิ่งคุณหายไปนานเท่าไหร่ ตอนคุณกลับมาคุณก็จะเห็นของเปลี่ยนไปมากเท่านั้น ดังรูป Figure 6.

Promoting Temporal Diversity

ต่อมาผู้เขียนก็ทดลองต่อว่า แล้วเราจะเพิ่ม Temporal Diversity ได้ยังไงบ้าง

  1. Simply Rank Items Randomly
  2. Temporal Switching
  3. Temporal User-based Switching
  4. Re-ranking Frequent Visitors’ Lists

1. Simple Rank Items Randomly

สุ่มเลยครับ ของเปลี่ยนแน่นอน แต่ที่จะไม่ดีคือ เราอาจจะได้ของที่ไม่ตรงกับสิ่งที่ผู้ใช้ชอบก็ได้

Diversity then comes at the cost of accuracy

ซึ่งเราก็เห็นได้อย่างชัดเจนจากการทำ Survey ใน Figure 2. ว่า วิธีแบบ Random ไม่น่าจะเป็นตัวเลือกที่ดี

2. Temporal Switching

อีกวิธีคือ เค้าทำการสลับ algorithm ทุก ๆ 7 วันครับ นั่นคือ 7 วันแรกจะใช้ kNN ในการ recommend item และ 7 วันต่อมาจะใช้ SVD ในการ recommend item

และผลลัพธ์ที่ออกมาก็ไม่เลวเลย Diversity เพิ่มขึ้นเป็นประมาณ 0.8 และ Accuracy ก็ไม่ได้แย่อะไร Figure 7.

Temporal User-based Switching

อีกวิธีที่คล้ายๆ กับวิธีข้างบนครับ แต่ที่ต่างคือ ไม่ได้เปลี่ยนทุก ๆ 7 วัน วิธีนี้เปลี่ยนตามผู้ใช้ครับ

เพราะผู้ใช้แต่ละคน ไม่ได้เข้ามาเหมือนกัน ดังนั้น เราจะสลับ algorithm ทุกครั้งที่ผู้ใช้เข้ามา

เช่น เข้ามาครั้งแรกได้ kNN ครั้งต่อไปที่เข้ามาจะได้ SVD และสลับแบบนี้ ไป เรื่อย

ผลลัพธ์ที่ได้คือ Diversity ขึ้นไปเกือบ 1 เลยครับ Figure 8.

แต่ข้อเสียของวิธีนี้ที่ผู้เขียนบอกคือ เราต้องคำนวณ recommend ใหม่ “ทุกครั้ง”

Re-ranking frequent visitors’ lists

เนื่องจากวิธีข้างต้น จำเป็นต้องใช้มากกว่า 1 algorithm อีกวิธีที่ผู้เขียเสนอคือ re-ranking ครับ

One of the observations we made above is that users who have very regular sessions with the recommender system have low top-N temporal diversity

จากการทดลองข้้างต้น ผู้เขียนมีข้อสังเกตว่า ผู้ใช้ที่เข้าบ่อยๆ ที่มี diversity น้อย ดังนั้นทำไมเราไม่ re-rank item ให้กับผู้ใช้พวกนี้ล่ะ

วิธีการคือ

ถ้าเรามี item อยู่ M items (eg. M = 100, มีหนังอยู่ 100 เรื่อง) แต่เราผู้ใช้เห็น N items (eg. N=10, เห็น 10 เรื่องแรก)

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 , …, 100

ทีนี้เราก็จะทำการ สุ่มหยิบหนัง ที่ [N+1, …, M] มาแทนที่ ตามความ diversity ที่เราต้องการ

เช่น ถ้าเราต้องการความ diversity = 1 เราก็หยิบหนังใหม่มาแทนที่ d x N เรื่อง

ก่อน
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 , …, 100

หลัง
11, 15, 16, 19, 20, 32, 51, 62, 73, 33, 1, 2, 3 , …, 100

หรือถ้าเราต้องการ d = 0.5 เราก็หยิบมา 5 เรื่อง (0.5 x 10)

ก่อน
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 , …, 100

หลัง
1, 12, 3, 14, 5, 16, 7, 18, 9, 20, 2, 4, …, 100

ผลลัพธ์ที่ได้คือ Diveristy เพิ่มขึ้น เช่นเดียวกัน Figure 9.

สรุป

Paper นี้แสดงให้เห็นว่า state of the art algorithm (CF ในปี 2010) มีความ diversity ต่ำ — แนะนำแต่ item เดิม ๆ และเมื่อเราแนะนำแต่ item เดิม ๆ ผู้ใช้ก็อาจจะไม่ชอบสิ่งที่แนะนำมา

ก็เป็นอีกการทดลองที่ทำให้เห็นว่า แค่ Accuracy อย่างเดียวคงไม่เพียงพอต่อการวัดประสิทธิภาพของ Recommender System ครับ

ขอบคุณทุกท่านที่อ่านจนมาถึงจุดนี้ครับ ถ้าตรงไหนตกหล่น หรือผิดพลาดไป คอมเมนท์บอกได้เลยนะครับ ขอบคุณครับ :D

ถ้าหากใครกำลังทำ หรือ สนใจ เกี่ยวกับ Recommender System เข้ามาพูดคุยกันในกลุ่ม Recommender System Developers Thailand ได้นะครับ :D

Facebook Group: Recommendation System Developers Thailand

บทความที่คุณอาจจะสนใจ

--

--