การตีความความเหมือนโคไซน์เชิงลบ


17

คำถามของฉันอาจจะโง่ ดังนั้นฉันจะขออภัยล่วงหน้า

ฉันพยายามใช้แบบจำลอง GLOVE ที่ผ่านการฝึกอบรมโดยกลุ่ม Stanford NLP ( ลิงก์ ) อย่างไรก็ตามฉันสังเกตเห็นว่าผลลัพธ์ที่คล้ายคลึงกันของฉันแสดงจำนวนลบ

นั่นทำให้ฉันดูไฟล์ข้อมูล word-vector ทันที เห็นได้ชัดว่าค่าในคำว่าเวกเตอร์ได้รับอนุญาตให้เป็นค่าลบ นั่นอธิบายว่าทำไมฉันเห็นความเหมือนโคไซน์ลบ

ฉันคุ้นเคยกับแนวคิดของความเหมือนโคไซน์ของความถี่เวกเตอร์ซึ่งค่าถูก จำกัด อยู่ใน [0, 1] ฉันรู้สำหรับความจริงที่ว่าดอทโปรดัคและฟังก์ชันโคไซน์สามารถเป็นบวกหรือลบได้ขึ้นอยู่กับมุมระหว่างเวกเตอร์ แต่ฉันมีความเข้าใจยากมากและตีความความคล้ายคลึงเชิงลบโคไซน์นี้

ตัวอย่างเช่นถ้าฉันมีคู่ของคำที่ให้ความเหมือนกันของ -0.1 พวกเขาจะคล้ายกันน้อยกว่าคู่อื่นที่มีความคล้ายคลึงกันคือ 0.05? วิธีการเปรียบเทียบความคล้ายคลึงกันของ -0.9 ถึง 0.8?

หรือฉันควรดูที่ค่าสัมบูรณ์ของความแตกต่างมุมน้อยที่สุดจาก ? ค่าสัมบูรณ์ของคะแนน?nπ

ขอบคุณมาก ๆ


1
แท็กที่คล้ายคลึงกันของโคไซน์บอกว่า: An angular-type similarity coefficient between two vectors. It is like correlation, only without centering the vectors.ความแตกต่างเพียงอย่างเดียวระหว่างทั้งสองก็คือในส่วนเบี่ยงเบนสหสัมพันธ์ (ช่วงเวลา) - ซึ่งกำลังถูกคูณข้าม - มาจากค่าเฉลี่ยในขณะที่ค่าเบี่ยงเบนโคไซน์จากเดิม 0 - นั่นคือค่า .
ttnphns

2
(ต่อ) การทำความเข้าใจกับค่าสัมประสิทธิ์บวกหรือลบจะเหมือนกันในทั้งสองกรณี โคลบ หมายความว่าค่าเบี่ยงเบน / ค่าบวกของเวกเตอร์หนึ่งมีแนวโน้มที่จะจับคู่กับค่าเบี่ยงเบน / ค่าลบของอีกเวกเตอร์หนึ่ง ไม่ว่าจะหมายความว่าเวกเตอร์นั้น "คล้ายกัน" หรือตรงกันข้าม "แตกต่างกันมาก" ขึ้นอยู่กับความหมายของการเบี่ยงเบนหรือค่าบวก / ลบในข้อมูลสำหรับคุณ
ttnphns

@ttnphns ขอบคุณมากสำหรับความคิดเห็นของคุณ! มันเป็นแรงบันดาลใจให้ฉันคิดเกี่ยวกับความเหมือนโคไซน์ในรูปแบบใหม่ ในกรณีการใช้งานของฉันบางทีฉันอาจคิดว่ามันเป็นความแตกต่างในผลลัพธ์สุดท้าย: หากความสัมพันธ์ของ Doc A และ B เป็นลบและวารสารเฉพาะวารสาร X รวมถึง Doc A ก็มีโอกาสน้อยกว่าที่ X รวม B เป็น ดีจากความน่าจะเป็นบางค่าเฉลี่ย การตีความนี้ฟังดูสมเหตุสมผลหรือไม่
Mai

ฉันไม่กล้าที่จะพูดเพราะฉันไม่รู้ข้อมูลความหมายของค่านิยมและการศึกษาของคุณ
ttnphns

คำตอบ:


2

ให้เวกเตอร์สองตัวaและb , มุมได้มาจากผลคูณสเกลาร์และบรรทัดฐานของเวกเตอร์:θ

cos(θ)=ab||a||||b||

เนื่องจากค่าอยู่ในช่วง :cos(θ)[1,1]

  • 1ค่าจะระบุเวกเตอร์ตรงข้ามอย่างยิ่ง
  • 0อิสระ (orthogonal) เวกเตอร์
  • 1เวกเตอร์ (บวกร่วมเชิงเส้น) ที่คล้ายกัน ค่ากลางจะถูกใช้เพื่อประเมินระดับความคล้ายคลึงกัน

ตัวอย่าง : ให้ผู้ใช้สองคนและและมีความคล้ายคลึงกันระหว่างผู้ใช้สองคนนี้ตามรสนิยมของพวกเขาสำหรับภาพยนตร์:U1U2sim(U1,U2)

  • sim(U1,U2)=1หากผู้ใช้สองคนมีรสนิยมเหมือนกันทุก (หรือถ้า )U1=U2
  • sim(U1,U2)=0หากเราไม่พบความสัมพันธ์ใด ๆ ระหว่างผู้ใช้สองคนเช่นหากพวกเขาไม่ได้เห็นภาพยนตร์ทั่วไป
  • sim(U1,U2)=1หากผู้ใช้มีการคัดค้านรสนิยมเช่นถ้าพวกเขาให้คะแนนภาพยนตร์เรื่องเดียวกันในทางตรงกันข้าม

0

ห้ามใช้ค่าสัมบูรณ์เนื่องจากสัญญาณลบไม่ได้เป็นแบบสุ่ม ในการรับค่าโคไซน์ระหว่าง 0 ถึง 1 คุณควรใช้ฟังก์ชันโคไซน์ต่อไปนี้:

(รหัส R)

cos.sim <- function(a,b) 
{
  dot_product = sum(a*b)
  anorm = sqrt(sum((a)^2))
  bnorm = sqrt(sum((b)^2))
  minx =-1
  maxx = 1
  return(((dot_product/anorm*bnorm)-minx)/(maxx-minx))
} 

(รหัสหลาม)

def cos_sim(a, b):
    """Takes 2 vectors a, b and returns the cosine similarity according 
to the definition of the dot product"""
    dot_product = np.dot(a, b)
    norm_a = np.linalg.norm(a)
    norm_b = np.linalg.norm(b)
    return dot_product / (norm_a * norm_b)

minx = -1 
maxx = 1

cos_sim(row1, row2)- minx)/(maxx-minx)
```

คุณตั้งค่า minx และ maxx ไว้ที่ไหน คุณอาจใช้การปรับมาตรฐานขั้นต่ำนี้ให้กับมิติเวกเตอร์แทนการคำนวณระยะทาง
emre สามารถ

0

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


0

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

มุมมองที่เรียบง่ายของโครงสร้างการฝังคำมีดังนี้: คุณกำหนดแต่ละคำให้กับเวกเตอร์แบบสุ่มใน R ^ d ถัดไปเรียกใช้เครื่องมือเพิ่มประสิทธิภาพที่พยายามที่จะเขยิบสองเวกเตอร์ที่คล้ายกัน v1 และ v2 ใกล้กันหรือขับสองเวกเตอร์ที่แตกต่างกัน v3 และ v4 ออกห่างกัน (ตามระยะทางพูดโคไซน์) คุณเรียกใช้การปรับให้เหมาะสมนี้สำหรับการวนซ้ำที่เพียงพอและในตอนท้ายคุณมีการใส่คำศัพท์ด้วยเกณฑ์เดียวที่คำที่คล้ายกันมีเวกเตอร์ที่ใกล้กว่าและเวกเตอร์ที่ต่างกันนั้นอยู่ห่างกันมาก ผลลัพธ์ที่ได้อาจทำให้คุณมีมิติ - ค่าเป็นลบและบางคู่มีความเหมือนโคไซน์ลบ - เพียงเพราะกระบวนการปรับให้เหมาะสมไม่สนใจเกณฑ์นี้ มันอาจผลักเวกเตอร์บางตัวลงไปในค่าลบ ขนาดของเวกเตอร์ไม่ตรงกับจำนวนคำ

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