Jarak

Eval

Jarak

まとめ
  • 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()
Heatmap jarak kosinus dan Euclidean

Definisi “tetangga terdekat” berubah sesuai metrik. Kosinus menonjolkan arah (B dan E dianggap dekat), sedangkan Euclidean menekankan perbedaan magnitudo.


Panduan memilih jarak #

  1. Periksa skala fitur
    Lakukan standarisasi atau normalisasi ketika skala antar fitur berbeda jauh.
  2. Pertimbangkan sparsity
    Data teks atau rekomendasi yang jarang biasanya cocok dengan jarak kosinus.
  3. Kenali kebutuhan distribusi
    Gunakan KL/Jensen–Shannon/Hellinger untuk vektor probabilitas; perhatikan perbedaan dukungan.
  4. Nilai bentuk vs posisi
    Wasserstein menangkap pergeseran sekaligus bentuk, berguna untuk model generatif dan drift.
  5. Seimbangkan akurasi dan biaya
    Dataset besar/berdimensi tinggi mungkin memerlukan pendekatan aproksimasi (LSH, Sinkhorn).

Referensi cepat #

KategoriUkuranPenggunaanCatatan
VektorCosine similarityEmbedding teks, TF-IDF, data jarangTangani vektor nol dengan hati-hati
VektorEuclidean / L1 / L∞Klastering fitur kontinuSkala fitur sangat menentukan
DistribusiDivergensi KLMembandingkan distribusi model vs dataAsimetris; bermasalah jika ada probabilitas nol
DistribusiJensen–ShannonPerbandingan probabilitas simetrisAkar kuadrat memenuhi sifat metrik
DistribusiJarak HellingerInferensi Bayes, pemantauan driftDesain bin/normalisasi memengaruhi hasil
Transportasi optimalJarak WassersteinEvaluasi model generatif, deteksi anomaliMahal 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