ฉันมีเมทริกซ์กระจัดกระจายขนาดใหญ่ของผู้ใช้และรายการที่พวกเขาชอบ (เรียงตามผู้ใช้ 1M และรายการ 100K ที่มีระดับความเบาบางต่ำมาก) ฉันสำรวจวิธีการที่ฉันสามารถทำการค้นหาด้วย kNN ด้วยขนาดของชุดข้อมูลของฉันและการทดสอบเริ่มต้นที่ฉันทำข้อสมมติฐานของฉันคือวิธีการที่ฉันจะใช้จะต้องขนานหรือกระจาย ดังนั้นฉันจึงพิจารณาวิธีแก้ปัญหาที่เป็นไปได้สองคลาส: อันที่มีอยู่ (หรือนำไปใช้ได้ในวิธีที่ง่ายพอสมควร) บนเครื่องมัลติคอร์เดียวอีกอันในคลัสเตอร์ Spark เช่นเป็นโปรแกรม MapReduce ต่อไปนี้เป็นแนวคิดสามประการที่ฉันพิจารณา:
- สมมติว่ามีความคล้ายคลึงกันแบบโคไซน์ให้ทำการคูณเมทริกซ์ที่ได้รับการทำให้เป็นมาตรฐานเต็มรูปแบบด้วยทรานสโพส (นำมาใช้เป็นผลรวมของผลิตภัณฑ์ด้านนอก)
- การใช้การแฮชที่มีความอ่อนไหวต่อท้องที่ (LSH)
- การลดมิติแรกของปัญหาด้วย PCA
ฉันขอขอบคุณความคิดหรือคำแนะนำเกี่ยวกับวิธีการที่เป็นไปได้ที่ฉันสามารถแก้ไขปัญหานี้ได้