ในทางปฏิบัติผู้คนทำอะไรกับค่าที่หายไปจากเมทริกซ์การแนะนำซึ่งเป็นจุดรวมของการคำนวณ ฉันเดาจากการอ่านโพสต์บล็อกของ Simon คือเขาเพียงใช้คำที่ไม่หายไปในการสร้างแบบจำลอง
ถูกต้อง - นั่นคือจุดสำคัญของเขาและแบบจำลองของคุณในการทำนายคำศัพท์ที่หายไปใช่ไหม? มันเป็นจุดสำคัญที่หลายคนลืมไปแล้ว พวกเขาคิดว่าพวกเขาสามารถ "สันนิษฐาน" เพื่อกำหนดค่าคงที่ให้กับข้อมูลที่ขาดหายไปโดยไม่สนใจโลกและสิ่งต่าง ๆ จะได้ผลดีพอจาก SVD ขยะมูลฝอยขยะ: มันเป็นเรื่องจริงและคุณควรดูมันให้ดีกว่านี้ คุณไม่ควรป้อนข้อมูลขยะลงในแบบจำลองหากคุณต้องการสิ่งที่มีประโยชน์
แน่นอนว่าไม่ใช่ "ดีที่สุดที่จะอนุมานค่าที่หายไป" ในชุดข้อมูลที่กระจัดกระจายส่วนใหญ่แล้วเรียกใช้ SVD ด้วยความหวังว่าจะใส่ค่าสำหรับคุณ (ซึ่งคุณได้ใส่ข้อมูลก่อนที่จะเรียกใช้ SVD ใช่มั้ย) คุณคิดว่าไงแบบจำลองเป็นเวทมนตร์? ไม่มีเวทมนตร์หรือเทคโนโลยีที่จะเอาชนะข้อมูลขยะส่วนใหญ่ได้ คุณไม่สามารถโกหกโมเดลที่ข้อมูลเป็นข้อมูลจริงเมื่อไม่ใช่ของจริง แต่จริงๆแล้วมีเพียงขยะบางชนิดที่คุณสร้างขึ้นมาจากอากาศบาง ๆ
SVD ทำสิ่งที่มีประโยชน์อื่น ๆ ดังนั้นฉันไม่ได้บอกว่า SVD นั้นไร้ค่าอย่างน้อย ไปข้างหน้าและใช้ SVD เฉพาะในชุดข้อมูลที่สมบูรณ์ซึ่งบางทีคุณได้กำหนดค่าที่ขาดหายไปอย่างชาญฉลาดโดยใช้โมเดลการเรียนรู้ของเครื่องด้วยความสนใจเนื่องจากข้อผิดพลาดอคติและความแปรปรวนระหว่างการพัฒนา
การเรียนรู้ของเครื่องเป็นวิธี ดังนั้นหากคุณยังต้องการทราบวิธีการใส่ค่าโดยใช้การออกแบบการแยกตัวประกอบเมทริกซ์มีวิธีที่ดีในการทำสิ่งนี้โดยใช้การเรียนรู้ของเครื่องและที่สำคัญพวกเขาไม่ป้อนข้อมูลขยะใด ๆ กับแบบจำลองเพื่อพยายามเรียนรู้อย่างไร้จุดหมาย
แบบจำลองการแยกตัวประกอบของเมทริกซ์การเรียนรู้ด้วยเครื่องจักรนั้นถูกนำเสนอค่อนข้างดีโดยผู้สอนของชุดข้อมูลการทำเหมืองข้อมูลออนไลน์ขนาดใหญ่ของ Stanford ในโมดูล 5 พวกเขาแสดงคณิตศาสตร์และอธิบายแบบจำลอง พวกเขาไม่ได้รหัสขึ้นสำหรับคุณว่า
ไม่เป็นไรเพราะคุณสามารถเขียนโค้ดเองได้ถ้าคุณเข้าใจการเรียนรู้ของเครื่องขั้นพื้นฐาน คุณรู้หรือไม่ว่าฟังก์ชันการสูญเสียและฟังก์ชันต้นทุนคืออะไร? กู? โคตรลาดลง? คุณตกลงกับการคูณเมทริกซ์และการบวกไหม? ข้อผิดพลาดอคติและข้อผิดพลาดความแปรปรวน? ถ้าเป็นเช่นนั้นคุณจะดี ถ้าไม่เช่นนั้นคุณควรพิจารณาใช้หลักสูตรการเรียนรู้ออนไลน์ของ Andrew Ng ที่ Coursera ซึ่งเป็นหนึ่งในสถานที่เริ่มต้นที่ดีมากมาย จากนั้นไปใช้หลักสูตรออนไลน์Mining Massive Dataซึ่งพูดถึงการแยกตัวประกอบเมทริกซ์และการเรียนรู้ของเครื่องสำหรับการทำแบบจำลองผู้แนะนำ
พอจะพูดได้ว่าคุณสามารถออกแบบและสร้างแบบจำลองการแยกตัวประกอบของคุณเองซึ่งจัดการกับข้อมูลที่หายไปได้ดีอย่างที่ Simon Funk ทำและคุณสามารถทำได้ตั้งแต่เริ่มต้น แต่ก็ไม่ยากเหมือนเดิม ในวันของเขาเพราะตอนนี้คุณสามารถใช้เครื่องมือเช่น TensorFlow หรือ Microsoft CNTK ที่ทำอะไรให้คุณได้มาก กำหนดฟังก์ชั่นการสูญเสียและฟังก์ชั่นค่าใช้จ่ายเลือกเครื่องมือเพิ่มประสิทธิภาพพาร์ติชันชุดข้อมูลของคุณในการฝึกอบรม, dev, ทดสอบจากข้อมูลที่มีอยู่จริง (ข้อมูลที่มีป้ายกำกับ) และปล่อยให้มันทำงาน ใช้งานได้อย่างจริงจัง ไม่ใช่เรื่องง่ายในการดีบัก TF และข้อผิดพลาดในการสร้างกราฟ แต่สามารถทำงานได้ดีในที่สุดและใช้โค้ดน้อยกว่าหนึ่งหน้า
โดยเฉพาะวิธีหนึ่งที่จะไม่ป้อนข้อมูลปลอมให้กับรูปแบบการเรียนรู้ของเครื่องแยกตัวประกอบเมทริกซ์คือการข้ามองค์ประกอบเมทริกซ์ของข้อมูลที่หายไปในฟังก์ชันการสูญเสียและต้นทุนของคุณ