まとめ
- Mengelompokkan ukuran jarak dan kesamaan berdasarkan skenario penggunaannya.
- Membandingkan jarak representatif untuk vektor, distribusi probabilitas, dan transportasi optimal dengan contoh kode.
- Menyoroti praproses dan reduksi dimensi yang memengaruhi perilaku jarak.
Bab 4 #
Ukuran jarak dan kesamaan #
Jarak menyatakan seberapa jauh dua objek; kesamaan melakukan kebalikannya. Konsep ini menopang klastering, rekomendasi, deteksi anomali, hingga evaluasi model generatif. Setiap jarak mempunyai asumsi sendiri tentang data, sehingga pemilihan metrik harus disesuaikan dengan karakter data dan algoritme lanjutan.
Kategori utama #
1. Jarak pada ruang vektor #
- Jarak Euclidean: jarak garis lurus yang intuitif; sangat sensitif terhadap skala fitur.
- Kemiripan/jarak kosinus (Cosine similarity): membandingkan arah vektor; ideal untuk TF-IDF atau embedding.
- Jarak Manhattan / Chebyshev: norma L1 dan L∞; berguna untuk vektor jarang atau perbandingan yang lebih robust.
2. Jarak antar distribusi probabilitas #
- Divergensi KL (KL divergence): entropi relatif; asimetris dan sensitif terhadap probabilitas nol.
- Divergensi Jensen–Shannon (Jensen–Shannon): versi simetris & terbatas dari KL; akar kuadratnya merupakan metrik.
- Jarak Hellinger (Hellinger): transformasi akar memberikan simetri dan memenuhi sifat metrik.
3. Berbasis transportasi optimal #
- Jarak Wasserstein (Wasserstein): mempertimbangkan pergeseran lokasi dan bentuk; unggul untuk model generatif dan deteksi drift.
- Jarak Sinkhorn: transportasi optimal dengan regularisasi entropi yang lebih cepat dihitung.
Membandingkan jarak vektor #
import matplotlib.pyplot as plt
import numpy as np
from sklearn.metrics.pairwise import cosine_distances, euclidean_distances
embeddings = np.array(
[
[0.2, 0.4, 0.4],
[0.1, 0.9, 0.0],
[0.6, 0.2, 0.2],
[0.3, 0.1, 0.6],
[0.05, 0.45, 0.5],
]
)
labels = ["A", "B", "C", "D", "E"]
cos_dist = cosine_distances(embeddings)
euc_dist = euclidean_distances(embeddings)
fig, axes = plt.subplots(1, 2, figsize=(7.5, 3.3))
for ax, matrix, title in zip(
axes,
(cos_dist, euc_dist),
("Jarak kosinus", "Jarak Euclidean"),
):
im = ax.imshow(matrix, cmap="viridis")
ax.set_xticks(range(len(labels)))
ax.set_yticks(range(len(labels)))
ax.set_xticklabels(labels)
ax.set_yticklabels(labels)
ax.set_title(title)
for i in range(len(labels)):
for j in range(len(labels)):
ax.text(j, i, f"{matrix[i, j]:.2f}", ha="center", va="center", color="white")
fig.colorbar(im, ax=axes.ravel().tolist(), shrink=0.9, label="Jarak")
plt.tight_layout()

Definisi “tetangga terdekat” berubah sesuai metrik. Kosinus menonjolkan arah (B dan E dianggap dekat), sedangkan Euclidean menekankan perbedaan magnitudo.
Panduan memilih jarak #
- Periksa skala fitur
Lakukan standarisasi atau normalisasi ketika skala antar fitur berbeda jauh. - Pertimbangkan sparsity
Data teks atau rekomendasi yang jarang biasanya cocok dengan jarak kosinus. - Kenali kebutuhan distribusi
Gunakan KL/Jensen–Shannon/Hellinger untuk vektor probabilitas; perhatikan perbedaan dukungan. - Nilai bentuk vs posisi
Wasserstein menangkap pergeseran sekaligus bentuk, berguna untuk model generatif dan drift. - Seimbangkan akurasi dan biaya
Dataset besar/berdimensi tinggi mungkin memerlukan pendekatan aproksimasi (LSH, Sinkhorn).
Referensi cepat #
| Kategori | Ukuran | Penggunaan | Catatan |
|---|---|---|---|
| Vektor | Cosine similarity | Embedding teks, TF-IDF, data jarang | Tangani vektor nol dengan hati-hati |
| Vektor | Euclidean / L1 / L∞ | Klastering fitur kontinu | Skala fitur sangat menentukan |
| Distribusi | Divergensi KL | Membandingkan distribusi model vs data | Asimetris; bermasalah jika ada probabilitas nol |
| Distribusi | Jensen–Shannon | Perbandingan probabilitas simetris | Akar kuadrat memenuhi sifat metrik |
| Distribusi | Jarak Hellinger | Inferensi Bayes, pemantauan drift | Desain bin/normalisasi memengaruhi hasil |
| Transportasi optimal | Jarak Wasserstein | Evaluasi model generatif, deteksi anomali | Mahal dihitung; gunakan Sinkhorn jika perlu |
Daftar periksa #
- Jenis masukan (vektor atau distribusi) sudah dipastikan
- Asumsi metrik (simetri, segitiga) sesuai dengan kebutuhan algoritme berikutnya
- Dampak normalisasi atau reduksi dimensi sudah dievaluasi
- Metode aproksimasi dipertimbangkan ketika jarak presisi tinggi terlalu mahal
- Perubahan jarak divisualisasikan untuk memastikan sesuai intuisi