แอปพลิเคชันและความแตกต่างสำหรับความคล้ายคลึงกันของ Jaccard และ Cosine Similarity


27

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

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

คำตอบ:


19

ความคล้ายคลึงกันของ Jaccard นั้นมอบโดย sij=pp+q+r

ที่ไหน

p = # ของคุณลักษณะที่เป็นบวกสำหรับทั้งวัตถุ
q = # ของคุณลักษณะ 1 สำหรับฉันและ 0 สำหรับ j
r = # ของคุณลักษณะ 0 สำหรับฉันและ 1 สำหรับ j

ในขณะที่ความคล้ายโคไซน์ = ABABโดยที่ A และ B เป็นเวกเตอร์วัตถุ

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

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

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

เมื่อใช้ดัชนีเหล่านี้คุณต้องคิดถึงปัญหาของคุณอย่างถี่ถ้วนและหาวิธีกำหนดความคล้ายคลึงกัน เมื่อคุณมีคำจำกัดความแล้วคุณสามารถเลือกซื้อดัชนีได้

แก้ไข: ก่อนหน้านี้ฉันมีตัวอย่างรวมอยู่ในคำตอบนี้ซึ่งในที่สุดก็ไม่ถูกต้อง ขอบคุณผู้ใช้หลายคนที่ชี้ให้เห็นว่าฉันได้ลบตัวอย่างที่ผิดพลาด


2
คุณช่วยอธิบายได้ว่าทำไมดัชนีโคไซน์ถึงดีกว่าสำหรับระบุการลอกเลียนและไม่ดีสำหรับการระบุไซต์มิเรอร์
dharm0us

ฉันรู้สึกว่าบางส่วนของคำตอบนี้ไม่ง่าย "ตัวอย่างเช่นหากคุณมีวัตถุสองรายการทั้งที่มี 10 คุณลักษณะจาก 100 แอตทริบิวต์ที่เป็นไปได้นอกจากนี้พวกเขายังมีแอตทริบิวต์ 10 รายการร่วมกันในกรณีนี้ดัชนี Jaccard จะเป็น 1 และดัชนีโคไซน์จะเป็น 0.001" cosine_similarity(10*[1]+90*[0], 10*[1]+90*[0])นี้จะแปลเพื่อสิ่งที่ต้องการ แน่นอนความคล้ายคลึงโคไซน์ก็จะเป็น 1 ด้วยเช่นกันเนื่องจากการวัดทั้งสองนั้นไม่สนใจองค์ประกอบเหล่านั้นที่เป็นศูนย์ในเวกเตอร์ทั้งสอง
fsociety

1
คำตอบนี้ผิดเกี่ยวกับความเหมือนโคไซน์โปรดพิจารณาคำตอบของผู้ใช้ 18596
Robin

"ใส่ความคล้ายคลึงกันแบบโคไซน์จำนวนแอ็ตทริบิวต์ทั่วไปหารด้วยจำนวนแอ็ตทริบิวต์ที่เป็นไปได้ทั้งหมด" -> สิ่งนี้ไม่ถูกต้องทั้งหมด สัญกรณ์กำหนดเวกเตอร์ดอทผลิตภัณฑ์และบรรทัดฐาน
Sean Owen

22

ฉันไม่สามารถแสดงความคิดเห็นได้เนื่องจากฉันไม่มีสถานะใด ๆ แต่คำตอบที่ตรวจสอบนั้นผิดรวมทั้งไม่ตอบคำถาม ∥A∥หมายถึงบรรทัดฐาน L2 ของ A คือความยาวของเวกเตอร์ในปริภูมิแบบยุคลิดไม่ใช่มิติของเวกเตอร์ A ในคำอื่น ๆ คุณไม่นับ 0 บิตคุณบวก 1 บิตแล้วเอา รากที่สอง. ตัวอย่างของ 10 คุณลักษณะของเวกเตอร์ที่มีความยาว 100 จึงไม่ถูกต้องเช่นกัน ขออภัยฉันไม่มีคำตอบที่แท้จริงว่าคุณควรใช้เมตริกใด แต่ฉันไม่สามารถปล่อยให้คำตอบไม่ถูกต้องได้


2
คุณพูดถูก มันเป็นความอัปยศที่ผู้คนมากมายโหวตให้คำตอบที่ไม่ถูกต้อง ความคล้ายคลึงโคไซน์ตามที่อธิบายในบทความวิกิพีเดียไม่ได้คำนึงถึง 0 บิต en.wikipedia.org/wiki/Cosine_similarity
neelshiv

11

ความคล้ายคลึงกันของ Jaccard ใช้สำหรับกรณีไบนารีสองประเภท:

  1. สมมาตรโดยที่ 1 และ 0 มีความสำคัญเท่ากัน (เพศสถานะสมรส ฯลฯ )
  2. ไม่สมมาตรโดยที่ 1 และ 0 มีระดับความสำคัญต่างกัน (การทดสอบเชิงบวกสำหรับโรค)

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

ความแตกต่างอีกประการคือ 1 - ค่าสัมประสิทธิ์ Jaccard สามารถใช้เป็นค่าที่แตกต่างกันหรือวัดระยะทางในขณะที่ความคล้ายคลึงของโคไซน์ไม่มีโครงสร้างดังกล่าว สิ่งที่คล้ายกันคือระยะทาง Tonimoto ซึ่งใช้ในอนุกรมวิธาน


เหตุใดจึงสามารถใช้ Jaccard เพียงอย่างเดียวในการวัดที่แตกต่างกันได้ ความเข้าใจของฉันคือว่าcosineเป็นที่แตกต่างกันวัด แต่ไม่ถูกต้อง
javadba

3

ดังที่ระบุไว้ข้างต้นคำตอบที่ตรวจสอบนั้นผิด

ที่ไหนและเป็นไบนารีเวกเตอร์ที่พวกเขาสามารถจะตีความว่าเป็นชุดของดัชนีมีค่า 1. Let 's จึงพิจารณาชุดและBabAB

Jaccard มีลักษณะคล้ายคลึงกันโดย

J(A,B)=|AB||AB|=|AB||AB|+|AB|+|BA|

โคไซน์มีลักษณะคล้ายคลึงกันแล้วโดย

C(A,B)=|AB||A||B|=|AB|(|AB|+|AB|)(|AB|+|BA|)

เปรียบเทียบบาง:

  • ตัวเลขที่นี่เหมือนกัน
  • ตัวส่วนเติบโตแบบเลขคณิตด้วยขนาดของและใน jaccard แต่เป็นเรขาคณิตในโคไซน์|A||B|
  • ตัวส่วนของโคไซน์ขึ้นอยู่กับจำนวนรายการในและจำนวนรายการใน. มันไม่ได้ขึ้นอยู่กับทางแยกของพวกเขา|A||B|

ฉันยังไม่ได้มีสัญชาตญาณที่ชัดเจนว่าควรเลือกที่ใดที่เหนือกว่ายกเว้นที่ Vikram Venkat ตั้งข้อสังเกต 1 - Jaccard สอดคล้องกับตัวชี้วัดที่แท้จริงไม่เหมือนกับโคไซน์ และโคไซน์ขยายไปถึงเวกเตอร์มูลค่าจริง

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