SVD ของเมทริกซ์ที่มีค่าหายไป


12

สมมติว่าฉันมีเมทริกซ์การแนะนำสไตล์ Netflix และฉันต้องการสร้างแบบจำลองที่ทำนายการจัดอันดับภาพยนตร์ในอนาคตสำหรับผู้ใช้ที่กำหนด การใช้วิธีการของ Simon Funk เราจะใช้การไล่ระดับสีแบบสุ่มสุ่มเพื่อลดบรรทัดฐาน Frobenius ระหว่างเมทริกซ์เต็มและเมทริกซ์ item-by-item * user-by-user

ในทางปฏิบัติผู้คนทำอะไรกับค่าที่หายไปจากเมทริกซ์การแนะนำซึ่งเป็นจุดรวมของการคำนวณ ฉันเดาจากการอ่านโพสต์บล็อกของ Simon คือเขาใช้คำที่ไม่หายไปเท่านั้น (ซึ่งประกอบด้วย (พูด) ~ 1% ของเมทริกซ์คำแนะนำ) เพื่อสร้างแบบจำลอง อีก 99% ของเมทริกซ์?

ในทางปฏิบัติคุณจะข้ามค่าเหล่านั้นทั้งหมดหรือไม่? หรือคุณสรุปให้มากที่สุดเท่าที่จะทำได้ก่อนที่จะทำการไล่ระดับสีแบบสุ่มสุ่ม? แนวปฏิบัติที่ดีที่สุดมาตรฐานบางประการสำหรับการจัดการกับค่าที่หายไปคืออะไร


1
ดูเหมือนว่าคำถามเดียวกันนี้ ฉันตอบคำถามที่นั่น
d_ijk_stra

2
ฉันก็ตอบด้วย
Stumpy Joe Pete

2
@d_ijk_stra "ตอบ" กำลังทำให้มันเป็นบิตสำหรับสิ่งที่จำนวนลิงก์ไปยัง PDF
ali_m

คำตอบ:


6

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

อาจเป็นวิธีที่ดีที่สุดในการพิจารณา SVD เป็นวิธีการอนุมานค่าที่หายไป หากคุณมีวิธีที่ดีกว่าในการทำเช่นนี้ทำไมคุณถึงต้องการ SVD หากคุณไม่ทำเช่นนั้นแผนกบริการจะเติมช่องว่างให้คุณอย่างมีความสุข


1
คุณใช้ SVD ในการอนุมานค่าที่หายไปเหล่านั้นได้อย่างไร คุณได้ลองวิธีอื่น ๆ เพื่ออนุมานค่าที่หายไปแล้วหรือไม่โดยใช้ค่าที่ไม่หายไปเพื่อฝึกตัวจําแนกแบบฟอเรสต์แบบสุ่มซึ่งสามารถใช้คาดเดาค่าที่หายไปของคุณได้หรือไม่? คุณได้ผลลัพธ์ที่ดีกว่าหรือขึ้นอยู่กับปัญหาจริง ๆ หรือไม่?
Vishal

1
คุณอนุมานค่าที่ขาดหายไปเช่นเดียวกับที่คุณคาดการณ์ค่าในอนาคตโดยใช้ส่วนประกอบที่เกี่ยวข้องของการย่อยสลาย SVD การทำนายเรตติ้งในอนาคตนั้นเป็นปัญหาเดียวกันกับการอนุมานค่าที่หายไป หากคุณมีวิธีที่ดีในการอนุมานค่าที่ขาดหายไปเพียงแค่ใช้มันเพื่อทำนายอันดับในอนาคต ถ้าคุณทำไม่ได้นั่นคือสิ่งที่ SVD มีไว้สำหรับ
Martin O'Leary

"อาจเป็นวิธีที่ดีที่สุดในการพิจารณา SVD เป็นวิธีการอนุมานค่าที่หายไป" อ่าไม่จริง SVD ขึ้นอยู่กับผู้ใช้ในการอนุมานค่าที่หายไปทั้งหมดด้วยวิธีอื่นก่อนเรียกใช้ SVD SVD ไม่มีข้อโต้แย้งอะไรเลย
Geoffrey Anderson

1

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

ถูกต้อง - นั่นคือจุดสำคัญของเขาและแบบจำลองของคุณในการทำนายคำศัพท์ที่หายไปใช่ไหม? มันเป็นจุดสำคัญที่หลายคนลืมไปแล้ว พวกเขาคิดว่าพวกเขาสามารถ "สันนิษฐาน" เพื่อกำหนดค่าคงที่ให้กับข้อมูลที่ขาดหายไปโดยไม่สนใจโลกและสิ่งต่าง ๆ จะได้ผลดีพอจาก SVD ขยะมูลฝอยขยะ: มันเป็นเรื่องจริงและคุณควรดูมันให้ดีกว่านี้ คุณไม่ควรป้อนข้อมูลขยะลงในแบบจำลองหากคุณต้องการสิ่งที่มีประโยชน์

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

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

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

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

ไม่เป็นไรเพราะคุณสามารถเขียนโค้ดเองได้ถ้าคุณเข้าใจการเรียนรู้ของเครื่องขั้นพื้นฐาน คุณรู้หรือไม่ว่าฟังก์ชันการสูญเสียและฟังก์ชันต้นทุนคืออะไร? กู? โคตรลาดลง? คุณตกลงกับการคูณเมทริกซ์และการบวกไหม? ข้อผิดพลาดอคติและข้อผิดพลาดความแปรปรวน? ถ้าเป็นเช่นนั้นคุณจะดี ถ้าไม่เช่นนั้นคุณควรพิจารณาใช้หลักสูตรการเรียนรู้ออนไลน์ของ Andrew Ng ที่ Coursera ซึ่งเป็นหนึ่งในสถานที่เริ่มต้นที่ดีมากมาย จากนั้นไปใช้หลักสูตรออนไลน์Mining Massive Dataซึ่งพูดถึงการแยกตัวประกอบเมทริกซ์และการเรียนรู้ของเครื่องสำหรับการทำแบบจำลองผู้แนะนำ

พอจะพูดได้ว่าคุณสามารถออกแบบและสร้างแบบจำลองการแยกตัวประกอบของคุณเองซึ่งจัดการกับข้อมูลที่หายไปได้ดีอย่างที่ Simon Funk ทำและคุณสามารถทำได้ตั้งแต่เริ่มต้น แต่ก็ไม่ยากเหมือนเดิม ในวันของเขาเพราะตอนนี้คุณสามารถใช้เครื่องมือเช่น TensorFlow หรือ Microsoft CNTK ที่ทำอะไรให้คุณได้มาก กำหนดฟังก์ชั่นการสูญเสียและฟังก์ชั่นค่าใช้จ่ายเลือกเครื่องมือเพิ่มประสิทธิภาพพาร์ติชันชุดข้อมูลของคุณในการฝึกอบรม, dev, ทดสอบจากข้อมูลที่มีอยู่จริง (ข้อมูลที่มีป้ายกำกับ) และปล่อยให้มันทำงาน ใช้งานได้อย่างจริงจัง ไม่ใช่เรื่องง่ายในการดีบัก TF และข้อผิดพลาดในการสร้างกราฟ แต่สามารถทำงานได้ดีในที่สุดและใช้โค้ดน้อยกว่าหนึ่งหน้า

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


1

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

ชื่อวิทยานิพนธ์คือ "โมเดลอันดับต่ำสำหรับระบบผู้แนะนำที่มีข้อมูล จำกัด " โดย Evgeny Frolov https://www.skoltech.ru/app/data/uploads/2018/09/Frolov_Dissertation_Final1.pdf

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