Kesamaan cosinus versus produk titik sebagai metrik jarak


41

Sepertinya kesamaan cosinus dari dua fitur hanyalah produk titik mereka diskalakan oleh produk besarnya mereka. Kapan kesamaan cosinus membuat metrik jarak yang lebih baik daripada produk titik? Apakah produk titik dan persamaan cosinus memiliki kekuatan atau kelemahan yang berbeda dalam situasi yang berbeda?


Perhatikan bahwa tak satu pun dari ini adalah metrik jarak yang tepat, bahkan jika Anda mengubahnya menjadi nilai yang kecil ketika poin "mirip". Ini mungkin atau mungkin tidak masalah untuk kasus penggunaan Anda.
Sean Owen

Jawaban:


41

Berpikir secara geometris. Kesamaan cosine hanya peduli tentang perbedaan sudut, sedangkan produk titik peduli tentang sudut dan besarnya. Jika Anda menormalkan data Anda untuk memiliki besaran yang sama, keduanya tidak dapat dibedakan. Kadang-kadang diinginkan untuk mengabaikan besarnya, maka kesamaan cosinus bagus, tetapi jika besarnya berperan, titik produk akan lebih baik sebagai ukuran kesamaan. Perhatikan bahwa keduanya tidak merupakan "metrik jarak".


3
"metrik jarak" umumnya digunakan sebagai kebalikan dari "kesamaan" dalam literatur: jarak yang lebih besar, kesamaan yang lebih kecil, tetapi pada dasarnya mereka mewakili ide yang sama.
berteman

1
@ Teman Anda berarti 'ketidaksamaan'. Metrik memiliki definisi yang tepat.
Memming

8

Anda benar, persamaan cosinus memiliki banyak kesamaan dengan titik produk vektor. Memang, itu adalah produk titik, diskalakan oleh besarnya. Dan karena penskalaan itu dinormalisasi antara 0 dan 1. CS lebih disukai karena memperhitungkan variabilitas data dan frekuensi relatif fitur. Di sisi lain, produk dot sederhana sedikit "lebih murah" (dalam hal kompleksitas dan implementasi).


Mengapa produk titik saja (setara dengan tidak normalisasi) tidak memperhitungkan data dan frekuensi fitur? Saya tidak tahu ini bedanya.
Sean Owen

2
Mungkin, saya tidak jelas. Saya berbicara tentang keragaman data. Misalnya, kami memiliki dua pasang dokumen. Di dalam masing-masing pasangan dokumen identik, tetapi dokumen pasangan-1 lebih pendek, daripada pasangan-2. Dan kami menghitung kesamaan dalam setiap pasangan. Produk dot akan menghasilkan angka yang berbeda, meskipun dalam kedua kasus diperkirakan perkiraan kesamaan maksimum.
sobach

5

Saya ingin menambahkan satu dimensi lagi ke jawaban yang diberikan di atas. Biasanya kami menggunakan kesamaan cosinus dengan teks besar, karena menggunakan matriks jarak pada paragraf data tidak dianjurkan. Dan juga jika Anda ingin cluster Anda luas, Anda cenderung memilih cosine similarity karena ia menangkap kesamaan secara keseluruhan.

Misalnya jika Anda memiliki teks yang panjangnya dua atau tiga kata maksimal saya merasa menggunakan cosine similarity tidak mencapai ketepatan seperti yang dicapai oleh metrik jarak.


4

Ada perbandingan yang sangat baik dari metrik kesamaan kesamaan berbasis-produk bersama di sini .

Secara khusus, Kesamaan Cosine dinormalisasi untuk berada di dalam [0,1], tidak seperti produk titik yang dapat berupa bilangan real, tetapi, seperti yang dikatakan semua orang, yang akan perlu mengabaikan besarnya vektor. Secara pribadi, saya pikir itu hal yang baik. Saya menganggap besarnya sebagai struktur internal (dalam-vektor), dan sudut antara vektor sebagai struktur eksternal (antara vektor). Mereka adalah hal-hal yang berbeda dan (menurut saya) seringkali paling baik dianalisis secara terpisah. Saya tidak bisa membayangkan situasi di mana saya lebih suka menghitung produk dalam daripada menghitung persamaan cosinus dan hanya membandingkan besarnya sesudahnya.


"Cosine Similarity dinormalisasi untuk berada di dalam [0,1]" Ini masih memiliki produk titik di pembilang, saya pikir rentangnya seharusnya [-1, 1]?
Kari

2

x,||x||2=x,x=1ϕx,y=cosϕϕ=arccosx,y

Secara visual, semua data Anda hidup di unit sphere. Menggunakan produk titik sebagai jarak akan memberi Anda jarak chordal, tetapi jika Anda menggunakan jarak cosinus ini, itu sesuai dengan panjang jalur antara dua titik di bola. Itu berarti, jika Anda ingin rata-rata dari dua titik, Anda harus mengambil titik di-di antara jalur ini (geodesik) daripada titik tengah yang diperoleh dari 'rata-rata aritmatika / titik produk / geometri euclidean' karena titik ini tidak tidak hidup di bola (karenanya pada dasarnya bukan objek yang sama)!


1

Seperti yang telah ditunjukkan orang lain, ini bukan "metrik" jarak, karena mereka tidak memenuhi kriteria metrik. Katakan sebaliknya "mengukur jarak".

Lagi pula, apa yang Anda ukur dan mengapa? Informasi itu akan membantu kami memberikan jawaban yang lebih berguna untuk situasi Anda.


Saya selalu bertanya-tanya tentang perbedaan antara ukuran dan metrik. Menurut pemerintah (NIST): "... Kami menggunakan ukuran untuk atribut dan metrik yang lebih konkret atau objektif untuk atribut yang lebih abstrak, tingkat lebih tinggi, atau agak subyektif. ... Ketegaran, kualitas (seperti dalam" kualitas tinggi "), dan keefektifan adalah atribut penting yang kita rasakan secara konsisten, tetapi sulit untuk didefinisikan secara objektif. Jadi ini adalah metrik. " Tetapi konteksnya adalah rekayasa perangkat lunak, bukan matematika. Apa pendapat Anda?
ahoffer

1
Wikipedia lebih bermanfaat. jarak (x, y) harus non-negatif; d (x, y) = 0 hanya jika x = y; d (x, y) = d (y, x); dan memenuhi ketimpangan segitiga- d (x, z) ≤ d (x, y) + d (y, z)
ahoffer

1
Cukup banyak: metrik harus memenuhi aksioma tertentu dan ukurannya kurang jelas.
sintax
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.