เพื่อนบ้านที่ใกล้ที่สุดค้นหาข้อมูลมิติที่สูงมาก


17

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

  • สมมติว่ามีความคล้ายคลึงกันแบบโคไซน์ให้ทำการคูณเมทริกซ์ที่ได้รับการทำให้เป็นมาตรฐานเต็มรูปแบบด้วยทรานสโพส (นำมาใช้เป็นผลรวมของผลิตภัณฑ์ด้านนอก)
  • การใช้การแฮชที่มีความอ่อนไหวต่อท้องที่ (LSH)
  • การลดมิติแรกของปัญหาด้วย PCA

ฉันขอขอบคุณความคิดหรือคำแนะนำเกี่ยวกับวิธีการที่เป็นไปได้ที่ฉันสามารถแก้ไขปัญหานี้ได้


1
ฉันเพิ่งตรวจสอบเรื่องนี้และเขียนโพสต์บล็อกเกี่ยวกับสิ่งที่ฉันพบ ฉันใช้ LSH แต่ฉันคิดว่าระดับความแตกต่างของฉันนั้นสูงกว่าที่คุณต้องการ tttv-engineering.tumblr.com/post/109569205836/ …
Philip Pearl

คำตอบ:


15

ฉันหวังว่าทรัพยากรต่อไปนี้อาจช่วยให้คุณมีแนวคิดเพิ่มเติมในการแก้ปัญหา:

1) รายงานการวิจัย"อัลกอริทึมการเข้าร่วม K- ใกล้เคียงอย่างมีประสิทธิภาพสำหรับข้อมูลที่กระจัดกระจายมิติ" : http://arxiv.org/abs/1011.2807

2) เอกสารโครงการระดับ"ระบบแนะนำตามการกรองแบบร่วมมือกัน" (Stanford University): http://cs229.stanford.edu/proj2008/Wen-RecommendationSystemBasedOnCollaborativeFiltering.pdf

3) โครงการสำหรับการแข่งขันรางวัล Netflix ( k-NN-ตาม) : http://cs.carleton.edu/cs_comps/0910/netflixprize/final_results/knn/index.html

4) รายงานการวิจัย"ฮับในอวกาศ: เพื่อนบ้านที่ใกล้ที่สุดที่ได้รับความนิยมในข้อมูลมิติ"บนคำสาปของปรากฏการณ์มิติและความสัมพันธ์กับการเรียนรู้ของเครื่องโดยทั่วไปและอัลกอริทึม k-NNโดยเฉพาะ: http://jmlr.org /papers/volume11/radovanovic10a/radovanovic10a.pdf

5) ซอฟแวร์สำหรับการจำแนก k-NN กระจัดกระจาย (ฟรี แต่ดูเหมือนจะไม่เปิดแหล่งที่มา - อาจชี้แจงกับผู้เขียน): http://www.autonlab.org/autonweb/10408.html

6) กระทู้การสนทนาหลายหัวข้อในStackOverflow :

7) ให้ความสนใจกับGraphLabซึ่งเป็นเฟรมเวิร์กขนานของโอเพ่นซอร์สสำหรับการเรียนรู้ของเครื่อง ( http://select.cs.cmu.edu/code/graphlab ) ซึ่งรองรับการจัดกลุ่มแบบขนานผ่านMapReduceโมเดล: http: //select.cs.cmu edu / รหัส / graphlab / clustering.html

นอกจากนี้คุณยังอาจตรวจสอบคำตอบของฉันที่นี่ในข้อมูลวิทยาศาสตร์ StackExchange ในการถดถอยเบาบางสำหรับการเชื่อมโยงไปเกี่ยวข้องRแพคเกจและCRAN Task Viewหน้า: /datascience//a/918/2452


4

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


1

คุณควรใช้: PySparNNการใช้งานล่าสุดของ Facebook ใน python ซึ่งเป็นเลือดที่รวดเร็ว มันยังใช้งานง่าย

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