4.4.4
Kesamaan dan jarak kosinus
Ringkasan
- Kesamaan kosinus mengukur kedekatan vektor melalui sudut di antara keduanya.
- Hitung kesamaan/jarak kosinus di Python untuk embedding atau vektor TF-IDF yang jarang.
- Perhatikan normalisasi, penanganan vektor nol, dan catatan praktis lainnya.
1. Definisi dan intuisi #
Untuk \(\mathbf{a}, \mathbf{b}\):
$$ \cos(\theta) = \frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\| \, \|\mathbf{b}\|} $$- Nilai mendekati 1: arah sama (kemiripan tinggi).
- Mendekati 0: ortogonal (tidak berkorelasi).
- Mendekati –1: arah berlawanan.
- Jarak kosinus: \(d = 1 - \cos(\theta)\).
Karena magnitudo ternormalisasi, kosinus fokus pada arah vektor.
2. Contoh Python #
| |
Untuk pasangan tunggal, gunakan scipy.spatial.distance.cosine. Matriks jarang bekerja efisien dengan kesamaan kosinus di scikit-learn.
3. Karakteristik utama #
- Invarian terhadap skala: cocok untuk TF-IDF atau embedding dengan magnitudo berbeda.
- Bersahabat dengan sparsity: stabil meski sebagian besar entri nol.
- Komponen negatif: interpretasi perlu hati-hati; mungkin butuh sentralisasi atau normalisasi.
4. Penerapan #
- Pencarian & rekomendasi: rank item berdasarkan kesamaan kosinus terhadap kueri atau profil pengguna.
- Clustering topik: gunakan jarak kosinus pada k-means (atau spherical k-means) untuk mengelompokkan teks.
- Evaluasi embedding: bandingkan distribusi kesamaan untuk pasangan positif/negatif.
5. Catatan praktis #
- Kesamaan kosinus tidak terdefinisi untuk vektor nol; buang atau tambahkan epsilon kecil.
- Jarak kosinus bisa melanggar ketidaksetaraan segitiga; pastikan cocok dengan algoritme turunannya.
- Kombinasikan dengan standardisasi atau reduksi dimensi bila orientasi sangat sensitif terhadap skala fitur.
Kesamaan kosinus adalah ukuran sederhana namun kuat untuk membandingkan arah vektor; perhatikan asumsi metrik dan keberadaan vektor nol saat dipakai di pipeline produksi.