การกรองความร่วมมือผ่านการแยกตัวประกอบแบบเมทริกซ์ด้วยฟังก์ชันการสูญเสียโลจิสติกส์


9

พิจารณาปัญหาการกรองร่วมกัน เรามีเมทริกซ์ขนาด # ผู้ใช้ * #items หากผู้ใช้ฉันชอบรายการ j,หากผู้ใช้ฉันไม่ชอบรายการ j และหากไม่มีข้อมูลเกี่ยวกับคู่ (i, j) เราต้องการที่จะทำนายสำหรับผู้ใช้งานในอนาคตคู่ไอเท็มMMi,j=1Mi,j=0Mi,j=?Mi,j

วิธีการกรองแบบร่วมมือกันมาตรฐานคือการแสดง M เป็นผลคูณของ 2 เมทริกซ์เช่นน้อยที่สุด (เช่นการลดความคลาดเคลื่อนกำลังสองเฉลี่ยสำหรับองค์ประกอบที่รู้จักของ )U×V||MU×V||2M

สำหรับฉันแล้วฟังก์ชั่นการสูญเสียโลจิสติกส์ดูจะเหมาะสมกว่าทำไมอัลกอริธึมทั้งหมดที่ใช้ MSE


1
ในกรณีนี้มันสมเหตุสมผล แต่ส่วนใหญ่ M_i, j สามารถให้คะแนนและในกรณีนั้น MSE นั้นมีประโยชน์มากกว่า ฉันจะบอกว่า MSE นั้นกว้างกว่านี้มาก
ThiS

คำตอบ:


9

เราใช้การสูญเสียโลจิสติกส์สำหรับการแยกตัวประกอบเมทริกซ์โดยนัยที่ Spotify ในบริบทของการแนะนำเพลง (โดยใช้จำนวนการเล่น) เราเพิ่งตีพิมพ์บทความเกี่ยวกับวิธีการของเราในการประชุมเชิงปฏิบัติการ NIPS 2014 ที่จะเกิดขึ้น กระดาษนี้มีชื่อว่า Logistic Matrix Factorization สำหรับข้อมูลคำติชมโดยนัยและสามารถพบได้ที่นี่http://stanford.edu/~rezab/nips2014workshop/submits/logmat.pdf

รหัสสำหรับกระดาษสามารถพบได้ใน Github ของฉันhttps://github.com/MrChrisJohnson/logistic-mf


1
L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α.r_ui * (1 - p (lui | xu, yi, βu, βi)) ^ (1 - α.r_ui) A ดูรหัสของคุณและคุณใช้1 + α.r_ui l64: A = (self.counts + self.ones) * A github.com/MrChrisJohnson/logistic-mf/blob/master/ …ดังนั้นฉันขาดอะไรไปบ้างขอแสดงความนับถือ
fstrub

ฉันได้ดูเอกสารที่คุณตีพิมพ์ เป็นเรื่องที่น่าสนใจมากเนื่องจากเมทริกซ์การแยกตัวประกอบด้วยการถดถอยโลจิสติกยังไม่ได้รับการศึกษา อย่างไรก็ตามฉันสับสนกับฟังก์ชั่นการสูญเสียของคุณ (2) L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α.r_ui * (1 - p (lui) | xu, yi, βu, βi)) เกี่ยวกับ (3) ฉันคิดว่ามีตัวพิมพ์ผิด mistaske L (R | X, Y, β) = Prod (p (lui | xu, yi, βi, βi) ^ α .r_ui * (1 - p (lui | xu, yi, βu, βi)) ^ (1 + α.r_ui ) แต่ที่จริงแล้วฉันยังสับสนอยู่เล็กน้อยจริง ๆ แล้วฉันคาดว่าจะมีกฏหมายเช่น Bernouilli เป็น
fstrub

บางทีฉันอาจจะสายไปกว่านี้ .. บางคนมีโอกาสลองใช้ algo นอกบริบทของการแนะนำเพลงและแทนที่จะเป็นบริบทดั้งเดิมของการแนะนำผลิตภัณฑ์ ขอบคุณ
Marco Fumagalli

3

เอกสารส่วนใหญ่ที่คุณจะพบในหัวข้อนี้จะจัดการกับเมทริกซ์ซึ่งการจัดอันดับอยู่ในระดับ [0,5] ในบริบทของรางวัล Netflix เช่นเมทริกซ์มีการจัดอันดับแบบไม่ต่อเนื่องตั้งแต่ 1 ถึง 5 (+ ค่าที่หายไป) นั่นเป็นสาเหตุที่ข้อผิดพลาดกำลังสองคือฟังก์ชันต้นทุนที่แพร่กระจายมากที่สุด มาตรการความผิดพลาดอื่น ๆ เช่น Kullback-Leibler divergence สามารถมองเห็นได้

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

อย่างไรก็ตามหากคุณกำลังพูดถึงการแยกตัวประกอบเมทริกซ์ที่ไม่เป็นลบคุณควรใช้บันทึกการสูญเสียเป็นฟังก์ชันต้นทุนของคุณ คุณอยู่ในกรณีที่คล้ายกันกับ Logistic Regression ซึ่งใช้การสูญเสียการบันทึกเป็นฟังก์ชันต้นทุน: ค่าที่สังเกตได้ของคุณคือ 0 และ 1 และคุณทำนายตัวเลข (ความน่าจะเป็น) ระหว่าง 0 ถึง 1

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