Menafsirkan kesamaan cosinus negatif

17

Pertanyaan saya mungkin konyol. Jadi saya akan minta maaf sebelumnya.

Saya mencoba menggunakan model GLOVE yang sudah dilatih oleh Stanford NLP group ( tautan ). Namun, saya perhatikan bahwa hasil kesamaan saya menunjukkan beberapa angka negatif.

Itu segera mendorong saya untuk melihat file data kata-vektor. Rupanya, nilai-nilai dalam kata vektor diizinkan menjadi negatif. Itu menjelaskan mengapa saya melihat kesamaan cosinus negatif.

Saya terbiasa dengan konsep persamaan cosinus dari vektor frekuensi, yang nilainya dibatasi pada [0, 1]. Saya tahu pasti bahwa fungsi titik produk dan kosinus dapat positif atau negatif, tergantung pada sudut antara vektor. Tetapi saya benar-benar kesulitan memahami dan menafsirkan kesamaan cosinus negatif ini.

Sebagai contoh, jika saya memiliki sepasang kata yang memberikan kesamaan -0.1, apakah mereka kurang serupa daripada pasangan lain yang memiliki kesamaan 0,05? Bagaimana dengan membandingkan kesamaan -0,9 hingga 0,8?

Atau haruskah saya melihat nilai absolut dari perbedaan sudut minimal dari ? Nilai absolut dari skor?nπ

Terima kasih banyak.

Mai
sumber
1
Tag cosine similarity mengatakan: An angular-type similarity coefficient between two vectors. It is like correlation, only without centering the vectors.Satu-satunya perbedaan antara keduanya adalah bahwa dalam penyimpangan korelasi (momen) - yang sedang dikalikan lintas - berasal dari rata-rata, sedangkan dalam penyimpangan cosinus berasal dari 0 asli - yaitu mereka adalah nilai-nilai sebagaimana adanya .
ttnphns
2
(Lanj.) Memahami koefisien positif atau negatif adalah sama dalam kedua contoh. Koef negatif. berarti bahwa penyimpangan / nilai positif dari satu vektor cenderung berpasangan dengan penyimpangan / nilai negatif lainnya. Apakah ini berarti vektornya "serupa" atau sebaliknya, "sangat berbeda" tergantung pada apa arti dari penyimpangan / nilai positif dan negatif dalam data, untuk Anda.
ttnphns
@ttnphns Terima kasih banyak atas komentar Anda! Itu mengilhami saya untuk memikirkan kesamaan cosinus dengan cara baru. Dalam use case saya, mungkin saya bisa menganggapnya sebagai perbedaan dalam hasil akhir: jika korelasi Doc A dan B negatif, dan jurnal uni-topikal X menyertakan Doc A, maka kecil kemungkinan X memasukkan B sebagai baik, dari beberapa probabilitas rata-rata. Apakah interpretasi ini kedengarannya valid untuk Anda?
Mai
Saya tidak berani mengatakannya karena saya tidak tahu data Anda, makna nilai di dalamnya, dan studi Anda.
ttnphns

Jawaban:

2

Biarkan dua vektor dan , sudut diperoleh oleh produk skalar dan norma vektor:abθ

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

Karena nilai berada dalam kisaran :cos(θ)[1,1]

  • 1Nilai akan menunjukkan vektor yang sangat berlawanan
  • 0 vektor independen (ortogonal)
  • 1 vektor serupa (positif linear). Nilai menengah digunakan untuk menilai tingkat kesamaan.

Contoh : Biarkan dua pengguna dan , dan kesamaan antara dua pengguna ini sesuai dengan selera film:U1U2sim(U1,U2)

  • sim(U1,U2)=1 jika kedua pengguna memiliki rasa yang sama persis (atau jika )U1=U2
  • sim(U1,U2)=0 jika kami tidak menemukan korelasi antara dua pengguna, misalnya jika mereka belum melihat film umum
  • sim(U1,U2)=1 jika pengguna menentang selera, misalnya jika mereka memberi peringkat film yang sama dengan cara yang berlawanan.
Thomas FEL
sumber
0

Jangan gunakan nilai absolut, karena tanda negatif tidak sewenang-wenang. Untuk mendapatkan nilai cosinus antara 0 dan 1, Anda harus menggunakan fungsi cosinus berikut:

(Kode 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))
} 

(Kode Python)

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)
```
unicoder
sumber
Di mana Anda mengatur minx dan maxx? Anda mungkin menerapkan normalisasi min-max ini ke dimensi vektor, alih-alih jarak yang dihitung.
emre can
0

Kesamaan cosine sama seperti korelasi Pearson, tetapi tanpa mengurangi artinya. Jadi, Anda dapat membandingkan kekuatan relatif 2 persamaan cosinus dengan melihat nilai absolut, seperti halnya Anda membandingkan nilai absolut dari 2 korelasi Pearson.

Dave
sumber
0

Benar bahwa cosine-similarity antara vektor frekuensi tidak boleh negatif karena jumlah kata tidak boleh negatif, tetapi dengan embeddings kata (seperti sarung tangan) Anda dapat memiliki nilai negatif.

Pandangan yang disederhanakan dari konstruksi penyematan kata adalah sebagai berikut: Anda menetapkan setiap kata ke vektor acak dalam R ^ d. Selanjutnya jalankan pengoptimal yang mencoba menyenggol dua vektor mirip-v1 dan v2 berdekatan satu sama lain atau mendorong dua vektor berbeda v3 dan v4 terpisah lebih jauh (sesuai jarak tertentu, katakan cosine). Anda menjalankan pengoptimalan ini untuk iterasi yang cukup dan pada akhirnya, Anda memiliki kata-embeddings dengan kriteria tunggal bahwa kata-kata serupa memiliki vektor lebih dekat dan vektor berbeda jauh lebih jauh. Hasil akhirnya mungkin membuat Anda dengan beberapa nilai dimensi menjadi negatif dan beberapa pasangan memiliki kesamaan cosinus negatif - hanya karena proses optimasi tidak peduli dengan kriteria ini. Ini mungkin telah menyikut beberapa vektor ke nilai negatif. Dimensi vektor tidak sesuai dengan jumlah kata,

surat npcmail
sumber