มีวิธีการทางสถิติอะไรบ้างในการแนะนำภาพยนตร์เช่นเดียวกับใน Netflix


14

ฉันกำลังมองหาที่จะใช้รูปแบบไดนามิกเพื่อแนะนำภาพยนตร์ให้กับผู้ใช้ คำแนะนำควรได้รับการอัปเดตทุกครั้งที่ผู้ใช้ดูภาพยนตร์หรือให้คะแนน เพื่อให้ง่ายฉันคิดว่าการคำนึงถึงปัจจัยสองประการ:

  • การจัดอันดับที่ผ่านมาของภาพยนตร์อื่น ๆ โดยผู้ใช้
  • เวลาที่ผู้ใช้ดูภาพยนตร์ที่ผ่านมาบางเรื่อง

การตั้งค่าหนึ่งแบบนั้นจะเป็นอย่างไรและวรรณกรรมวิชาการแนะนำอะไร

ฉันเป็นคนใหม่ในสาขานี้และฉันคาดเดาว่าแบบจำลองการเปลี่ยนทิศทางเชิงเส้นสามารถให้ผลลัพธ์ที่ดีได้โดยไม่ต้องนึกถึงวิธีการที่ซับซ้อนกว่าเพื่อหลีกเลี่ยงความไม่แน่นอนที่ไม่จำเป็นในการประมาณค่าพารามิเตอร์ แต่อาจมีวิธีการที่กำหนดไว้แล้วที่ใช้กันทั่วไปในการปฏิบัติ?


3
ฉันไม่คิดว่ามันกว้างเกินกว่าจะตอบได้ เช่นมันมี 2 คำตอบ upvoted
gung - Reinstate Monica

2
ลองชุดข้อมูล Mining Massive Datasets ของ coursera และหนังสือฟรี!
เฟลิเป้เจอราร์ด

2
คุณอาจต้องการค้นหาเมทริกซ์และ / หรือการแยกตัวประกอบเทนเซอร์
Marc Claesen

1
@ usεr11852คำตอบของฉันกว้างกว่าคำถาม
shadowtalker

1
@ usεr11852ชื่อคำถามถามว่า "มีวิธีการทางสถิติอะไรบ้าง ... ?" ประโยคสุดท้ายถามว่ามีวิธีอื่นนอกเหนือจากการถดถอยหรือไม่ ฉันคิดว่าคำตอบหลายข้อด้านล่างให้ข้อมูลประเภทนี้
gung - Reinstate Monica

คำตอบ:


14

นี่เป็นปัญหาจริงที่โด่งดังในด้านการเรียนรู้ของเครื่อง ใน ~ 2006 Netflix เสนอ $ 1m ให้อัลกอริทึมที่ให้การปรับปรุงที่เหมาะสมที่สุดกับระบบผู้แนะนำของพวกเขา ทฤษฏีของการแก้ปัญหาที่ชนะจะถูกกล่าวถึงสั้น ๆ ในหนังสือเรียนของคาลเทคเรื่องการเรียนรู้เครื่องเบื้องต้น

โดยทั่วไปวิธีการเรียนรู้ชุดถูกนำมาใช้ โดยเฉพาะอย่างยิ่งชนิดของการผสมหรือการซ้อนถูกใช้ นี่ไม่ใช่เรื่องขี้ขลาด แต่เป็นสัญชาตญาณ เพื่อให้เข้าใจถึงสัญชาตญาณของการใช้วิธีการทางสถิติที่แตกต่างกันให้พิจารณาเหตุผลที่แตกต่างกันของคนที่ชอบหนังเรื่องเดียวกันนั่นคือโจอาจชอบ Topgun เพราะเขาชอบหนังแอ็คชั่นยุค 80 ในขณะที่เจนชอบ Topgun เพราะเธอชอบภาพยนตร์ ดังนั้นความจริงที่ว่าผู้ชมทั้งสองดู (และให้คะแนนภาพยนตร์สูง) ไม่จำเป็นต้องหมายความว่าพวกเขาจะชอบหนังอื่นที่มีความน่าจะเป็นสูง อัลกอริทึมการทำนายจะสามารถรองรับความแตกต่างเหล่านี้อย่างน้อยก็ในบางความสามารถ

สิ่งนี้อาจทำให้โซลูชันดูเรียบง่าย แต่การปรับสมดุลอัลกอริธึมการแข่งขันและการจัดลำดับความสำคัญการเดาที่ดีที่สุดสำหรับแต่ละกรณีนั้นไม่ง่าย ความจริงที่ว่า Netflix นั้นมอบเงินรางวัลจำนวนมากควรทำให้ขนาดของความท้าทายค่อนข้างชัดเจน

หากคุณเพิ่งเริ่มต้นเรียนรู้ด้วยเครื่องการตรวจสอบแหล่งข้อมูลข้างต้นอาจมีประโยชน์ขึ้นอยู่กับระดับความสนใจและภูมิหลังทางคณิตศาสตร์ของคุณ ดังนั้นการถดถอยอาจทำงานได้ดีถึงดี แต่มีประสิทธิภาพที่ดีขึ้นอย่างมาก


2
+1 สำหรับรางวัล Netflix ในขณะที่คุณชี้ให้เห็นว่ารางวัลนั้นเป็นตัวบ่งชี้ที่ดีว่าความท้าทายนี้มีขนาดใหญ่เพียงใด
Cort Ammon

11

ความท้าทายครึ่งหนึ่งในปัญหาเหล่านี้คือการรู้ว่าต้องค้นหาอะไร

คุณอาจได้เพิ่มแท็กไม่ทราบว่า แต่คุณในความเป็นจริงที่กำลังมองหาข้อมูลเกี่ยวกับระบบการแนะนำ คุณอาจต้องการเริ่มต้นด้วยการกรองการทำงานร่วมกันหรือยังดีกว่าคู่มือระบบผู้แนะนำโดย Ricci, Rokach และ Shapira ที่อ้างถึงในหน้านั้น


ฉันดูที่แท็กลึกกว่าและดูตัวอย่างส่วนใหญ่เกี่ยวกับการกรองร่วมกัน ปัญหาที่ฉันมีด้วยวิธีการนั้นขึ้นอยู่กับการป้อนข้อมูลของผู้ใช้รายอื่นถ้าฉันเข้าใจแนวคิด ฉันกำลังมองหาวิธีการมากขึ้นในสถานการณ์ของผู้ใช้รายหนึ่งไม่มีข้อมูลอื่นหรือเลือกข้อมูลอื่น จะดูที่การอ้างอิงอื่น ๆ ของคุณ
JohnAndrews

1
@ JohnAndrews: ฉันคิดว่า ssdecontrol ให้คำแนะนำที่เกี่ยวข้องกับคุณมากที่สุด คุณต้องมองเข้าไปในวรรณกรรมระบบผู้แนะนำ มีเทคนิคมากมายที่เกี่ยวข้องเช่น NNMF , Funk SVD , ตัวแปรที่แตกต่างกันของตัวแยกประเภทเพื่อนบ้านที่ใกล้ที่สุดฯลฯ เพื่อตั้งชื่อให้ชัดเจน ในที่สุดคุณต้องการใช้การกรองการทำงานร่วมกัน แต่คุณไม่สามารถเพียงแค่ "ดำน้ำใน" โดยไม่มีพื้นหลังใด ๆ
usεr11852

@JohnAndrews CrossValidated มักจะเป็นสถานที่ที่ไม่ดีในการเริ่มเรียนรู้เกี่ยวกับเรื่องโดยเฉพาะอย่างยิ่งถ้าคุณเพียงแค่ค้นหาด้วยแท็ก ดูการอ้างอิงที่ฉันเชื่อมโยงแทนได้อย่างไร บทความสถิติของ Wikipedia นั้นไม่น่าเชื่อถือเสมอไป แต่สิ่งเหล่านี้ค่อนข้างดีและมีการอ้างอิงมากมาย
shadowtalker

6

คุณควรตรวจสอบหลักสูตรของ Andrew Ng ใน Coursera: https://www.coursera.org/learn/machine-learning มันมีบทเรียนเกี่ยวกับการสร้างระบบผู้แนะนำซึ่งดูเหมือนจะเป็นสิ่งที่คุณกำลังมองหา โดยพื้นฐานแล้วมันเป็นรูปแบบหนึ่งของการถดถอยเชิงเส้นที่เรียนรู้คุณลักษณะสังเคราะห์สำหรับภาพยนตร์จากคนที่ให้คะแนนภาพยนตร์และใช้เพื่อทำนายคำแนะนำสำหรับผู้ที่ไม่ได้ให้คะแนน / ดูภาพยนตร์


3
ยินดีต้อนรับสู่เว็บไซต์ของเรา! ขอขอบคุณที่รวมข้อมูลบางอย่างที่สรุปเนื้อหาของลิงก์แทนที่จะแสดงลิงก์ "เปลือย" เราขอขอบคุณ
Silverfish

4

ในNetflix Challenge (ต.ค. 2549 - ก.ย. 2552)วงดนตรีที่มีขนาดใหญ่มาก (107 submodels แยกต่างหาก) ชนะรางวัลใหญ่ $ 1M ในตอนท้าย แต่ก็เป็นคำแนะนำให้สังเกตว่าอัลกอริธึมแบบง่าย ๆ มาตรฐานอ้างอิงจาก SVD ทั่วไป (sparse matrix) ความสำเร็จครั้งแรกของการเต้น Cinematch นั้นทำได้เพียงแค่ 6 วันหลังจากการแข่งขันเริ่มโดยทีมที่เรียกว่า WXYZConsulting

SVD (Singular Value Decomposition)เป็นอัลกอริธึมการแยกตัวประกอบเมทริกซ์ที่คุณเริ่มต้นด้วย[user, movie]เมทริกซ์2d ที่มีการจัดอันดับ (1 ถึง 5 ดาว) ในแต่ละ[u, m]ตำแหน่ง (*) และแบ่งเป็น 3 เมทริกซ์โดยเมทริกซ์กลาง ปฏิสัมพันธ์แฝงระหว่างผู้ใช้และภาพยนตร์

คุณสามารถทำให้ตารางเมทริกซ์มีขนาดเล็กลงหรือใหญ่ขึ้นเพื่อรวมการโต้ตอบปัจจัยแฝงดังกล่าวให้มากขึ้นหรือน้อยลงตามลำดับ

มีการใช้งานซอฟต์แวร์ฟรีหลายตัวสำหรับ SVD แบบกระจาย / รวดเร็ว ตัวอย่างเช่น redsvd หรือ vowpal-wabbit ดังนั้นก่อนที่คุณจะเขียนของคุณเองคุณอาจต้องการลอง

(*) รายการเหล่านี้ส่วนใหญ่เป็นศูนย์เนื่องจากผู้ใช้ส่วนใหญ่ไม่ได้ให้คะแนนภาพยนตร์มากที่สุด นั่นคือเมทริกซ์นั้นกระจัดกระจายมาก

อ้างอิง:


Netflix ใช้อะไรมาก่อน
jona

2
อัลกอริทึมที่เรียกว่า "Cinematch" ซึ่งไม่ได้เปิดเผยต่อสาธารณชน แต่ได้รับการอธิบายว่า "การรวมกันเชิงเส้นของปัจจัยต่าง ๆ ที่ได้รับการกลั่นกรองมาตลอดหลายปีที่ผ่านมา" เช่นการจัดอันดับทั่วโลกโดยเฉลี่ย (G) + เรทติ้ง, ... ฯลฯ
arielf

ขอบคุณสำหรับคำตอบอย่างละเอียด จะขุดลงไป สำหรับชุดค่าผสมเชิงเส้นนั้นไม่ใช่ปัญหาใหญ่ของการตั้งค่าพารามิเตอร์มากเกินไปใช่ไหม นั่นจะเป็นวิธีที่ฉันชอบ แต่ SVD ฟังดูมีแนวโน้ม
JohnAndrews

ไม่ใช่ปัญหาหากคุณเพิ่มเฉพาะปัจจัยที่ปรับปรุงข้อผิดพลาดการวางนัยทั่วไป เห็นได้ชัดว่าคุณต้องทดสอบการเพิ่มข้อมูลที่มองไม่เห็นทุกครั้งเพื่อให้ได้ความมั่นใจที่จำเป็น
arielf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.