หาคู่ที่ใกล้ชิดในพื้นที่มิติที่สูงมากด้วยเวกเตอร์หร็อมแหร็ม


9

ฉันมีเวกเตอร์คุณลักษณะ (~ a ล้าน) มี (~ ล้าน) คุณสมบัติไบนารีในแต่ละเวกเตอร์เพียง แต่ (~ พัน) ของพวกเขาจะเป็น , ส่วนที่เหลือเป็น0ฉันกำลังหาคู่เวกเตอร์ที่มีคุณสมบัติอย่างน้อย (~ ร้อย) ที่เหมือนกัน (ทั้งคู่) จำนวนคู่ดังกล่าวมีขนาดใกล้เคียงกับ (~ a ล้าน)NMK10L1N

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

อัลกอริทึมที่รู้จักกันดีใดที่จะมีประโยชน์สำหรับการเข้าถึงปัญหานี้ อะไรก็ตามที่เป็นกำลังสองในหรือจะไม่สามารถใช้งานได้จริงNM


ตัวอย่างการกำหนดปัญหาในโลกแห่งความจริงคือการพิจารณาว่าคนคนกำลังเคลื่อนที่ระหว่างสถานที่หลายแห่ง หากคนสองคนอยู่ในสถานที่เดียวกันในเวลาเดียวกันเราบอกว่าพวกเขาพบกัน (จำนวนชุดค่าผสมเวลาสถานที่ที่มีอย่างน้อย 1 คนคือ ) เรากำลังมองหาเพื่อน: คนที่พบกันอย่างน้อยครั้งNML


1
หากเวกเตอร์ 1 คุณลักษณะ 1 คือและเวกเตอร์ 2 คุณลักษณะ 1 เป็นด้วยพวกเขามีคุณสมบัติ "เหมือนกัน" หรือไม่ 00
gung - Reinstate Monica

@ user777 ฉันคิดว่าไม่ซึ่งในกรณีนี้คำตอบของคุณจะสมบูรณ์แบบ แต่มันจะดีถ้าสิ่งนี้ได้รับการกล่าวไว้อย่างชัดเจนจาก OP
gung - Reinstate Monica

@ gung คุณถือว่าถูกต้อง ฉันได้แก้ไขคำถามเพื่อชี้แจง ขอบคุณ!
Daniel Darabos

1
เกี่ยวกับจำนวนเวกเตอร์ที่มีคุณสมบัติมากกว่า 100 คู่ในการร่วมกันตัวอย่างแบบสุ่ม + แรงเดรัจฉาน ขนาด 1M x 1M เป็นปัญหาจริงหรือเกิดขึ้นจริงหรือ ดูวิธีการในการค้นหาแบบใกล้เคียงกับบิตสตริใกล้เคียงกับ stackoverflow
ปฏิเสธ

1
คำแนะนำที่บ้าอาจเป็นไปได้: ดูเวกเตอร์ที่มีความยาว 1 Mbit เป็นภาพขนาด 1,000 x 1,000 พิกเซลและค้นหาวิธีการจัดกลุ่มภาพเช่นstackoverflow.com/search?q=dyimageเหมือน+ clustering Afaik คุณต้องหาคุณสมบัติที่ดี (ไม่ใช่พิกเซลเดียว) เพื่อให้ใช้งานได้ แต่ฉันไม่มีผู้เชี่ยวชาญ
denis

คำตอบ:


6

ดูเหมือนว่าวิธีการที่คุณกำลังมองหาคือการรวมกันของลายเซ็น minhash และ Local Sensitive Hashing (LSH); (พร้อมใช้งานฟรี) ไฟล์ pdf ของชุดข้อมูล Mining Massiveอธิบายวิธีการนี้ (และมาตรการความคล้ายคลึงกันอื่น ๆ ) โดยละเอียดในบทที่ 3 แต่สั้น ๆ :

ลายเซ็น minhashเป็นตัวแทนย่อของเมทริกซ์เดิมของคุณที่ถูกสร้างโดยใช้บางส่วนจำนวนnของฟังก์ชันแฮชคุณสมบัติช่วยลดจำนวนของคุณสมบัติต่อการสังเกต ซึ่งจะช่วยลดขนาดของข้อมูลของคุณ แต่คุณอาจจะแจ้งให้ทราบว่าเรื่องนี้ยังคงใบคุณกับปัญหาO(N2)

ในการแก้ไขปัญหานี้ MMDS แนะนำว่าหากสิ่งที่คุณต้องการคือคู่ที่มีค่าใกล้เคียงกัน (ซึ่งดูเหมือนว่าจะนำไปใช้ในกรณีของคุณ) จากนั้นคุณสามารถมุ่งเน้นเฉพาะคู่เหล่านั้นที่มีแนวโน้มใกล้เคียงกันมากขึ้น - แนวทางนี้ เรียกว่าLocality Sensitive Hashingและในส่วน 3.4 พวกเขาเดินผ่านตัวอย่างของวิธีการรวมวิธีการใช้ลายเซ็นของ minhash เข้ากับ LSH

นอกจากข้อความแล้วยังมีการบรรยายในหลักสูตร Courseraที่มีชื่อเดียวกัน


7

ฉันกำลังหาคู่เวกเตอร์ที่มีคุณสมบัติอย่างน้อยเหมือนกันL

นี่เป็นเพียงผลิตภัณฑ์ภายในของเวกเตอร์คุณลักษณะไบนารี เมื่อผลิตภัณฑ์ภายในมีค่ามากกว่าทั้งคู่จะมีองค์ประกอบอย่างน้อยเหมือนกัน นี่ควรเป็นการคำนวณที่ค่อนข้างเร็ว - อย่างน้อยเร็วกว่าระยะทางแบบยุคลิดซึ่งจะสิ้นเปลืองและช้าสำหรับข้อมูลนี้ เพราะคุณกำหนดว่าคุณกำลังมองหาคู่นี้จะเนื้อแท้หมายความว่าคุณต้องทำคำนวณเพื่อเปรียบเทียบทุกเวกเตอร์L1L(N2)

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

คุณสามารถทำให้สิ่งนี้ง่ายขึ้นโดยการคำนวณเฉพาะผลิตภัณฑ์ภายในเมื่อผลรวมของเวกเตอร์คุณลักษณะ (ซึ่งในกรณีนี้เหมือนกับบรรทัดฐาน) สำหรับการสังเกตมากกว่าเนื่องจากเป็นไปไม่ได้สำหรับเวกเตอร์คุณลักษณะไบนารีนั้น จะมีสินค้าภายในอีกด้วยเวกเตอร์คุณลักษณะไบนารีซึ่งจะตอบสนองความเกณฑ์ของฉันเมื่อจำนวนนี้น้อยกว่าLเห็นได้ชัดว่าการคำนวณจำนวนเงินเหล่านี้เป็นเพียงความซับซ้อนดังนั้นฉันจึงเป็นวิธีที่ประหยัดในการลดขนาดของขั้นตอนผลิตภัณฑ์ภายในL1LO(N)

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

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

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

หากกราฟมีความสมมาตรการสังเกตต่อไปนี้อาจเป็นประโยชน์:

  1. กำหนด Laplacian ของกราฟของคุณเป็นโดยที่เป็นเมทริกซ์ตามแนวทแยงมุมขององศา (ผลรวมของเวกเตอร์คุณลักษณะแต่ละอัน) และคือเมทริกซ์ adjacency (การซ้อนของเวกเตอร์คุณลักษณะลงในเมทริกซ์)P=DADA
  2. จำนวนครั้งที่ปรากฏเป็นค่าเฉพาะของคือจำนวนของชิ้นส่วนเชื่อมต่อของGการแยกกราฟออกเป็นส่วนประกอบที่เชื่อมต่อและทำงานกับส่วนประกอบเหล่านั้นเพียงอย่างเดียวจะมีผลข้างเคียงของการลดขนาดข้อมูลของคุณ การคำนวณปริมาณที่คุณสนใจจะง่ายขึ้น แต่การคำนวณ eigendecomposition จะมีราคาแพงสำหรับจุดยอดหนึ่งล้าน ...0PG
  3. (หลังจากที่มีการเปลี่ยนแปลงเต็ม)เป็นบล็อกเมทริกซ์ทแยงมุมของ Laplacians ขององค์ประกอบที่เกี่ยวโยงกันของGPG
  4. Pคือ semidefinite บวก มันเกือบจะเป็นประโยชน์อย่างแน่นอน
  5. การเชื่อมต่อกับพีชคณิตของคือค่าของค่าเฉพาะที่สองที่เล็กที่สุดของPนี่เป็นการบอกคุณว่าเชื่อมโยงกันอย่างไร บางทีนั่นอาจจะตอบคำถามที่คุณสนใจอีกครั้งเวกเตอร์ที่มีคุณสมบัติเหมือนกัน ทฤษฎีกราฟสเปกตรัมพัฒนาแนวคิดนี้ในรายละเอียดเพิ่มเติมGPG

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

หากคุณมีกราฟสองฝ่ายที่เชื่อมโยงผู้คนกับพฤติกรรมคุณสามารถคิดว่านี่เป็นเครือข่ายพันธมิตรโดยที่ผู้คนเป็นแถวและพฤติกรรมเป็นคอลัมน์ หากคุณต้องการที่จะเชื่อมโยงผู้คนกับคนผ่านทางพฤติกรรมที่พวกเขามีเหมือนกันที่คุณสามารถคำนวณ a คือจำนวนพฤติกรรมที่ผู้คนมีร่วมกัน เห็นได้ชัดว่าชุดของจุดยอดที่ตอบคำถามของคุณBBBT=AAijAijL


ขอบคุณสำหรับคำตอบที่ยอดเยี่ยม! นั่นคือหลายสิ่งที่ฉันจะต้องตรวจสอบเพิ่มเติม ฉันไม่เชื่อว่าการเปรียบเทียบแบบคู่จะไม่สามารถหลีกเลี่ยงได้ นี่ไม่ใช่ปัญหาการจัดกลุ่มที่ฉันกำลังมองหากลุ่มขนาด> 1 หรือไม่ ฉันคาดหวังว่าวิธีการแบ่งส่วนแบบพิเศษบางอย่างสามารถลดจำนวนการเปรียบเทียบแบบคู่ได้อย่างมาก
Daniel Darabos

ขออภัยฉันไม่รู้เกี่ยวกับศาสตร์ข้อมูลมากนัก แต่มันไม่ใช่ปัญหาการจัดกลุ่มเมื่อเราต้องการจัดกลุ่มจุดที่อยู่ติดกันหรือไม่ ฉันมีระยะทางสูงสุด (L) และต้องการค้นหากลุ่ม (คู่) ของจุดที่อยู่ภายในระยะทางของกันและกัน นั่นเป็นการยืดนิยามของการรวมกลุ่มมากเกินไปหรือไม่?
Daniel Darabos

1
มันสามารถถูกใช้เป็นปัญหากราฟอย่างแน่นอน ในกรณีนี้เรามีกราฟสองส่วนของจุด N และ M และต้องการหาคู่ของจุดที่มีเพื่อนบ้าน L อย่างน้อยที่สุด ตอนนี้ฉันกำลังดูประโยคของเวกเตอร์ที่ใช้คุณลักษณะเฉพาะโดยหวังว่าจะมีวิธีการจัดกลุ่มที่ฉันสามารถนำไปใช้ได้ K-SVD แนะนำให้พบปัญหาที่คล้ายกันในstats.stackexchange.com/questions/93366/ดังนั้นฉันจึงอ่านข้อมูลนี้ในขณะนั้น ขอบคุณ!
Daniel Darabos

"นี่เป็นปัญหา SNA หรือไม่" ฉันไม่แน่ใจ. ในแอปพลิเคชั่นเดียวคุณสมบัติอธิบายพฤติกรรมและเรากำลังมองหาเพื่อเชื่อมโยงผู้คนที่มีพฤติกรรมคล้ายกัน สิ่งนี้ทำให้ปัญหา SNA หรือไม่ ขอบคุณที่แนะนำฉันให้รู้จักคำศัพท์มันมีประโยชน์มากในการแนะนำการค้นหาของฉัน
Daniel Darabos

ฉันแก้ไขคำตอบแล้ว เป้าหมายสูงสุดของคุณคือการแจกแจงคนที่มีพฤติกรรมหลายอย่างเหมือนกันหรือเป็นอย่างอื่นหรือไม่?
Sycorax พูดว่า Reinstate Monica

2

เมื่อมองหาผู้คนที่พบกันในช่วงเวลาว่าง:
แบ่งพื้นที่ออกเป็นบล็อก (บล็อกเมือง, ตารางกิโลเมตร, อะไรก็ตาม) และเวลาในบล็อกมีโอกาสดีที่ถ้าผู้คนพบกันพวกเขาจะพบกันในบล็อกเดียวกัน ดังนั้นเรียกใช้ NN ภายในแต่ละบล็อก Runtimes และอัตราความผิดพลาดของหลักสูตรจะขึ้นอยู่กับขนาดของบล็อกและรูปร่าง (ยังเป็นในสิ่งที่คุณสามารถทำคู่ขนาน / MapReduce) แต่คุณมีพารามิเตอร์ที่จะเล่นกับ - วิศวกรรมไม่เปิดกว้าง2)NspaceNtime
O(N2)

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

pairwise.py :

ใช้ Python Gensim library และ heapq จากไลบรารี่มาตรฐานเพื่อทำการเปรียบเทียบแบบคู่ที่รวดเร็วและปรับขนาดได้ระหว่างเอกสารจำนวนมากโดยใช้ TF-IDF และระยะทางโคไซน์


1

พจนานุกรมคว่ำ! แสดงถึงจุดเป็น , คีย์ที่สอดคล้องกับค่าที่ไม่ใช่ศูนย์ (เช่นคุณสมบัติที่เป็นจริง) ขนาดเฉลี่ยของการจัดเก็บข้อมูลขององค์ประกอบจะเป็นKแน่นอนฉันต้องการเพียงแค่สตริงเพื่อจัดเก็บฟีเจอร์และลอยเพื่อเก็บค่าxfeat1:value1,feat101:value101KKK

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

นี้มีลักษณะเหมือนพจนานุกรม:\} หากฉันต้องการเพิ่มความเร็วและประหยัดพื้นที่ฉันยังสามารถวางคุณสมบัติที่พบได้ในองค์ประกอบเดียวเท่านั้น (ที่นี่: ) เนื่องจากพวกเขาจะไม่สร้างคู่ที่ใกล้ชิด พจนานุกรมนี้สร้างขึ้นในการดำเนินงานfeat1:{1,101,202},feat2:{7,202},feat3:{202}...featM:{3,45,6}feat3O(NK)

ตอนนี้เมื่อคุณต้องการที่จะประเมินระยะขององค์ประกอบกับคนอื่น ๆ สร้าง (กับพจนานุกรม) รายการของดัชนีที่ใช้งานร่วมกันอย่างน้อยหนึ่งพร้อมxคุณรู้ว่าองค์ประกอบอื่น ๆ ทั้งหมดอยู่ไกลจาก (พวกเขาไม่ได้แบ่งปันคุณสมบัติเดียว!) หากจำนวนเฉลี่ยของ "องค์ประกอบต่อคุณสมบัติ" ต่ำ (เรียกว่า ) คุณไม่จำเป็นต้องอยู่ในอีกต่อไปxxxPO(N2)

ขณะนี้มีการปรับปรุงที่ยิ่งใหญ่อีกครั้งหากและแสดงเป็นพจนานุกรมเช่นกันเนื่องจากหรือสามารถประเมินซ้ำกับคีย์ของและในการดำเนินการxyd(x,y)<x,y>xyO(K)

ความซับซ้อนสุดท้ายของคุณคือแทนที่จะเป็นวิธีเริ่มต้นไร้เดียงสาO(NPK)O(MN2)

ฉันใช้วิธีนี้เพื่อนำ KNN ไปใช้กับชุดข้อความขนาดใหญ่ (รถไฟ: 2 000 000 บรรทัดทดสอบ 35,000 บรรทัดจำนวนคุณลักษณะ: 10 000 จำนวนเฉลี่ยของคุณสมบัติต่อองค์ประกอบ: 20) ซึ่งใช้เวลาประมาณหนึ่งชั่วโมง .. .


ฉันไม่เข้าใจวิธีการทั้งหมดนี้ - นี่ไม่ใช่เพราะฉันไม่เชื่อคุณมันเป็นเพราะฉันไม่คุ้นเคยกับกลยุทธ์ที่แตกต่างกันในการแสดงข้อมูล บางทีคุณอาจอธิบายเพิ่มเติมเกี่ยวกับสิ่งที่คุณครอบคลุมในสองย่อหน้าแรก
Sycorax พูดว่า Reinstate Monica

1) "ตัวเลขนี้จะไม่ใหญ่เกินไป": คอลัมน์ผลรวมเฉลี่ย = ผลรวมแถวเฉลี่ย = 1,000 2) ลอยตัว? ฟีเจอร์ของ OP คือไบนารี 3) รันไทม์สำหรับ 3 รัน N, 2N, 4N น่าสนใจจะแสดงว่าพวกมันประมาณหรือไม่ O(N2)
ปฏิเสธ

1

ฉันพบข้อมูลอ้างอิงที่คุณอาจเห็นว่ามีประโยชน์และฉันเชื่อว่ามันมีประสิทธิภาพมากกว่าแบบอื่นโดยไม่แสดงอาการเลย ถ้าผมเข้าใจถูกต้องคุณสามารถสร้าง -nearest เพื่อนบ้าน (KNN) กราฟในเวลาkO(LNlog(N))

L. Erotz, M. Steinbach และ V. Kumar "อัลกอริทึมการจัดกลุ่มเพื่อนบ้านที่ใกล้ที่สุดและแอปพลิเคชั่นใหม่" เอกสารประกอบการประชุมเชิงปฏิบัติการครั้งที่ 1 เรื่องการจัดกลุ่มข้อมูลมิติสูงและการประยุกต์ใช้ในปี 2545


ขอบคุณมันเป็นเรื่องที่น่าสนใจ คุณได้เวลา O (LN log (N)) ได้อย่างไร มันฟังดูยอดเยี่ยม แต่คำอธิบายอัลกอริทึมเริ่มต้นด้วย"สร้างเมทริกซ์ความเหมือนกัน"และนั่นจะเป็นเมทริกซ์ NxN เท่าที่ฉันเข้าใจ
Daniel Darabos

@DanielDarabos ความซับซ้อนอธิบายไว้ในหนังสือการทำกราฟกราฟเชิงปฏิบัติกับ R.
Sycorax พูดว่า Reinstate Monica

1

วิธีการทำงานที่บ้า แต่น่าจะเป็นไปได้ที่โดเมนความถี่ มี FFT เร็วบ้าบอ / ป่วยเรียกว่า " sparse FFT " ซึ่งคุณระบุจำนวนโหมดที่คุณสนใจ (จำนวนนับ 100 ฟีเจอร์) จากนั้นคุณทำงานด้วยการโน้มน้าวใจและมองหาแถวสูงสุดมากกว่าเกณฑ์ (มองหา บิตในการลงทะเบียนหมายเลขของคุณ) มันเป็นไปได้ที่nO(klogn)k<<n

เนื่องจาก k ของคุณคือ 100 และ n ของคุณคือ 1e6 สิ่งนี้ควรให้ความเร็ว ~ 1e4x เมื่อเทียบกับ FFT คลาสสิก

หากคุณต้องการความเร็วเพิ่มอีก 20x และคุณเป็นคนรับความเสี่ยงดังนั้นแทนที่จะต้องโน้มน้าวแถวทั้งหมดกับโดเมนและมองหาจุดสูงสุดคุณสามารถบูตส่วนย่อยของแถวได้

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

สิ่งที่ต้องทำ: ฉันควรใส่ตัวอย่างที่นี่โดยใช้ข้อมูลสังเคราะห์และเปรียบเทียบวิธีการบางอย่าง


0

ฉันเพิ่งเจอกระดาษที่เกี่ยวข้องโดยตรง

อัลกอริธึมแบบสุ่มและ NLP: การใช้ฟังก์ชันแฮชที่มีความละเอียดอ่อนในพื้นที่สำหรับการรวมกลุ่มคำนามความเร็วสูง (Ravichandran et al, 2005)

มันถูกนำไปใช้จริงในhttps://github.com/soundcloud/cosine-lsh-join-sparkซึ่งเป็นตำแหน่งที่ฉันพบ

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

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