การขยายแฮชแบบละเอียดอ่อนในพื้นที่


10

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

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

สิ่งที่ฉันมีอยู่มีดังต่อไปนี้

  1. ฉันบอกว่าภาพยนตร์ 1,000 เรื่องแต่ละเรื่องมีเรตติ้งจากผู้ใช้บางคนที่เลือก 1M ภาพยนตร์แต่ละเรื่องจะแสดงด้วยเวกเตอร์กระจัดกระจายของคะแนนผู้ใช้ (หมายเลขแถว = ID ผู้ใช้ค่า = คะแนนของผู้ใช้)
  2. ฉันสร้างเวกเตอร์สุ่ม N ความยาวของเวกเตอร์ตรงกับความยาวของเวกเตอร์ภาพยนตร์ (เช่นจำนวนผู้ใช้) ค่าเวกเตอร์คือ +1 หรือ -1 ฉันเข้ารหัสเวกเตอร์เหล่านี้เป็นเลขฐานสองเพื่อประหยัดพื้นที่โดยมี +1 แมปกับ 1 และ -1 แมปกับ 0
  3. ฉันสร้างเวกเตอร์แบบร่างสำหรับภาพยนตร์แต่ละเรื่องโดยการหาจุดผลิตภัณฑ์ของภาพยนตร์และเวกเตอร์แบบสุ่ม N แต่ละตัว (หรือถ้าฉันสร้างเมทริกซ์ R โดยการวางเวกเตอร์แบบสุ่ม N ตัวในแนวนอนและวางไว้ด้านบนของร่าง สำหรับภาพยนตร์ m คือ R * m) จากนั้นนำสัญลักษณ์ของแต่ละองค์ประกอบในเวกเตอร์ผลลัพธ์ดังนั้นฉันจึงลงท้ายด้วยเวกเตอร์สเก็ตช์สำหรับภาพยนตร์แต่ละเรื่องที่ +1 และ 1 วินาทีซึ่งฉันเข้ารหัสเป็นเลขฐานสองอีกครั้ง แต่ละเวกเตอร์คือความยาว N บิต
  4. ต่อไปฉันค้นหาภาพร่างที่คล้ายกันโดยทำดังต่อไปนี้
    1. ฉันแบ่งเวกเตอร์ร่างเป็นวง b ของ r บิต
    2. แต่ละวงของบิต r เป็นจำนวน ฉันรวมหมายเลขนั้นกับหมายเลขวงดนตรีและเพิ่มภาพยนตร์ลงในที่ฝากข้อมูลแฮชภายใต้หมายเลขนั้น ภาพยนตร์แต่ละเรื่องสามารถเพิ่มไปยังถังมากกว่าหนึ่งถัง
    3. ฉันดูแต่ละถัง ภาพยนตร์ใด ๆ ที่อยู่ในที่เก็บข้อมูลเดียวกันคือคู่ของผู้สมัคร

เมื่อเปรียบเทียบกับ 3.6.3 ของ mmds ขั้นตอน AND ของฉันคือเมื่อฉันดูแถบ r บิต - ภาพยนตร์หนึ่งคู่ผ่านไปยังขั้นตอน AND หาก r บิตมีค่าเท่ากัน ขั้นตอน OR หรือของฉันเกิดขึ้นในที่เก็บข้อมูล: ภาพยนตร์เป็นคู่ที่มีตัวเลือกหากพวกเขาอยู่ในที่เก็บข้อมูลใด ๆ

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

ใครช่วยให้ฉันเข้าใจวิธีการทำเช่นนี้?

คำตอบ:


4

ฉันคิดว่าฉันทำงานอะไรบางอย่างออกมา โดยทั่วไปฉันกำลังมองหาวิธีการที่ทำงานในแผนที่ / ลดสภาพแวดล้อมประเภทและฉันคิดว่าวิธีการนี

ดังนั้น,

  • สมมติว่าฉันมีวงดนตรี b แถว r และฉันต้องการเพิ่มอีกและเวทีพูดอีกอันค
  • ดังนั้นแทนที่จะเป็นบิต b * r ฉันต้องการแฮชของบิต b * r * c
  • และฉันรันโพรซีเดอร์ก่อนหน้านี้ของฉัน c คูณแต่ละครั้งบนบิต b * r
  • หากพบว่า x และ y เป็นคู่ที่มีตัวเลือกโดยโพรซีเดอร์เหล่านี้จะปล่อยคู่ของค่าคีย์ ((x, y), 1), ด้วย tuple ของ IDs (x, y) เป็นคีย์และค่า 1
  • ในตอนท้ายของขั้นตอน c ฉันจัดกลุ่มคู่เหล่านี้ตามคีย์และผลรวม
  • คู่ใด ๆ (x, y) ที่มีผลรวมเท่ากับ c คือคู่ที่มีตัวเลือกในแต่ละรอบ c และเป็นคู่ที่มีผู้สมัครของกระบวนการทั้งหมด

ดังนั้นตอนนี้ฉันมีวิธีแก้ปัญหาที่ใช้การได้และสิ่งที่ฉันต้องทำคือการทำงานว่าการใช้ 3 ขั้นตอนเช่นนี้จะช่วยให้ฉันได้รับผลลัพธ์ที่ดีขึ้นด้วยแฮชบิตโดยรวมน้อยลงหรือประสิทธิภาพโดยรวมที่ดีขึ้น ...


0

ฉันจะแสดงความคิดเห็น แต่ไม่สามารถทำได้ ฉันกำลังมองหาวิธีรักษาแบบขยายการปฏิบัติใน LSH และสิ่งที่คุณนำเสนอนั้นสมเหตุสมผลมาก จากสิ่งที่ฉันรวบรวมฟังก์ชันแฮชหลักคือสำหรับเวกเตอร์สุ่ม , หลังจากและสิ่งนี้กลายเป็นและ ในที่สุดหลังจาก OR,หรือตอนนี้คุณสามารถและ / หรือใช้

h(x,v)={0if sgn(xv)<01else
vh(x,i)=(h(x,vi+1),...,h(x,vi+r))h(x,j)=f(h(x,rj),j)
h(x,y)={1if h(x,j)=h(y,j) for any j[0,b)0else
h(x,y)ตามที่คุณอธิบาย จากนั้นคุณเพียงแค่จะเลือกผู้สมัครตาม AND / OR คำสั่งตรรกะ; คุณไม่ได้คร่ำครวญอีกต่อไปแล้ว ณ จุดนี้เพื่อดำเนินการต่อไปคุณต้องมีการแมปของถังขยะเพื่อให้แต่ละเวกเตอร์ปรากฏเพียงครั้งเดียวในแต่การทำเช่นนี้จะทำให้เกิดผลบวกปลอมและ / หรือ เชิงลบ แนวคิดหนึ่งสำหรับแฮชคือค่าต่ำสุดของ สำหรับทั้งหมด(หรือขั้นต่ำสำหรับทั้งหมดและทั้งหมดที่เกี่ยวข้องโดยตรงและโดยอ้อม ) ทั้งสองอย่างชัดเจนจะแนะนำอคติ ฉันอาจลองใช้วิธีใดวิธีหนึ่งต่อไปนี้ แต่ฉันไม่แน่ใจว่าแฮชจากการสุ่มและ / หรือจะมีความหมายในครั้งถัดไปh^:SSSh(x,j)jjyv และซ้ำจำนวนมากอาจ?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.