Bilişim dünyasına kaliteli, özgün ve Türkçe içerikler kazandırmayı hedefleyen bir platform..

friends friends friends

Veri Biliminde 9 Mesafe Ölçütü

Veri Biliminde 9 Mesafe Ölçütü

Veri bilimi ve makine öğrenmesinde birçok algoritma, veriler arasındaki benzerlik veya farklılıkları ölçerek çalışır. Bu noktada mesafe ölçütleri (distance metrics), iki gözlemin birbirine ne kadar yakın veya uzak olduğunu sayısal olarak ifade eden matematiksel yöntemlerdir. Özellikle kümeleme, sınıflandırma, öneri sistemleri ve anomali tespiti gibi uygulamalarda doğru mesafe ölçütünün seçilmesi model performansını doğrudan etkileyebilir. Ancak her veri seti için aynı yöntem uygun değildir; sayısal, kategorik veya yüksek boyutlu veriler farklı mesafe hesaplama teknikleri gerektirebilir. Bu yazıda veri biliminde yaygın olarak kullanılan 9 farklı mesafe ölçütünü inceleyerek çalışma mantıklarını, avantajlarını ve hangi durumlarda tercih edilmeleri gerektiğini ele alacağız.

Denetimli veya denetimsiz birçok algoritma, mesafe ölçümlerinden yararlanır. Öklid mesafesi veya kosinüs benzerliği gibi bu ölçümler, k-NN, UMAP, HDBSCAN vb. algoritmalarda sıklıkla bulunur.

Hamming Mesafesi

Hamming Distance (Hamming Mesafesi), iki veri arasındaki farklı özelliklerin sayısını ölçen bir mesafe ölçütüdür. Özellikle kategorik, ikili (binary) veya metinsel verilerde sıklıkla kullanılır. Mesafe, karşılaştırılan iki gözlemde farklı olan özelliklerin toplamı olarak hesaplanır. Basit yapısı sayesinde hata tespiti, biyoinformatik uygulamaları ve kategorik veriler üzerinde çalışan makine öğrenmesi algoritmalarında yaygın olarak tercih edilmektedir. Hamming mesafesini hesaplamak için basit bir fonksiyon verebiliriz. Eğer dizelerin uzunlukları eşit değilse hata verir. Ardından "mahmut" ve "mehmet" arasındaki mesafeyi hesaplıyoruz ve sonuç 2 çıkıyor.

def hamming_distance(s1, s2):
    if len(s1) != len(s2):
        raise ValueError("Hamming distance eşit uzunlukta ifade ister")
    # Count positions with differing characters
    return sum (ch1!=ch2 for ch1, ch2 in zip (s1, s2))

# Example usage:
print (hamming_distance("mahmut", "mehmet")) # Output: 2

Levenshtein Distance

Levenshtein Distance (Levenshtein Mesafesi), iki metin arasındaki benzerliği ölçmek için kullanılan bir mesafe ölçütüdür. Bir kelimeyi başka bir kelimeye dönüştürmek için gereken minimum ekleme, silme ve değiştirme işlemlerinin sayısını hesaplar. Örneğin "kitap" kelimesini "hitap" kelimesine dönüştürmek için yalnızca bir harfin değiştirilmesi gerektiğinden Levenshtein mesafesi 1'dir. Yazım hatalarının düzeltilmesi, arama motorları, metin madenciliği, doğal dil işleme (NLP) ve benzer metinlerin tespit edilmesi gibi birçok alanda yaygın olarak kullanılmaktadır. Levenshtein mesafesi (genellikle sadece düzenleme mesafesi olarak adlandırılır), karakter ekleme, silme veya değiştirme işlemlerine izin vererek Hamming yöntemini genelleştirir. Bir dizeyi başka bir dizeye dönüştürmek için gereken minimum tek karakterlik düzenleme sayısını bulur. Ekleme/silme işlemlerini dikkate aldığı için Levenshtein mesafesi farklı uzunluktaki dizeleri karşılaştırabilir.

def levenshtein_distance(s1, s2):
    m, n = len(s1), len(s2)
    # Initialize a (m+1)x(n+1) matrix
    dp = [[0] * (n+1) for _ in range(m+1)]
    for i in range(m+1):
        dp[i][0] = i
    for j in range(n+1):
        dp[0][j] = j
    # Compute distances
    for i in range(1, m+1):
        for j in range(1, n+1):
            cost = 0 if s1[i-1] == s2[j-1] else 1
            dp[i][j] = min (
                dp[i-1][j] + 1,      # deletion
                dp[i][j-1] + 1,      # insertion
                dp[i-1][j-1] + cost  # substitution
            )
    return dp[m][n]

# Example usage:
print (levenshtein_distance("mahmut", "muhammet")) # Output: 4

Chebyshev Distance

Chebyshev Distance (Chebyshev Mesafesi), iki nokta arasındaki mesafeyi hesaplarken boyutlar arasındaki en büyük farkı dikkate alan bir mesafe ölçütüdür. Başka bir ifadeyle, tüm özellikler arasındaki farklar hesaplanır ve bunların en büyüğü mesafe değeri olarak kabul edilir. Satranç tahtasında şahın bir kareden başka bir kareye ulaşmak için gereken minimum hamle sayısını hesaplamaya benzer bir mantığa sahiptir. Bu nedenle Chebyshev mesafesi, maksimum sapmanın önemli olduğu problemlerde ve çok boyutlu veri analizlerinde kullanılmaktadır.

Bu mesafe ölçütü, bir çift nesnenin koordinatları arasındaki mutlak farkların maksimumu olarak tanımlanır. Özellikle, çapraz hareketlere izin verilen bir ızgara noktasından herhangi bir yöne hareket edebileceğiniz senaryolarda kullanışlıdır.

Yorum: Euclidean ve Manhattan mesafeleri tüm boyutlardaki farkları hesaba katarken, Chebyshev Distance yalnızca en büyük farkla ilgilenir. Bu nedenle bir özelliğin kritik öneme sahip olduğu durumlarda tercih edilebilir.

A noktası = (2, 3)

B noktası = (5, 7)

Özellik farkları:

  • |5 − 2| = 3
  • |7 − 3| = 4

En büyük fark 4 olduğu için Chebyshev Mesafesi = 4.

from scipy.spatial import distance

# Define points
point_A = (1, 1)
point_B = (4, 5)

# Calculate Chebyshev distance
chebyshev_dist = distance.chebyshev(point_A, point_B)

print(f"The Chebyshev distance between {point_A} and {point_B} is {chebyshev_dist}.")

Haversine Distance

Haversine Distance (Haversine Mesafesi), Dünya'nın küresel yapısını dikkate alarak iki coğrafi nokta arasındaki en kısa mesafeyi hesaplayan bir yöntemdir. Enlem (latitude) ve boylam (longitude) bilgilerini kullanarak iki konum arasındaki kuş uçuşu mesafeyi belirler. GPS uygulamaları, harita servisleri, navigasyon sistemleri ve konum tabanlı analizlerde yaygın olarak kullanılmaktadır. Özellikle şehirler, ülkeler veya GPS koordinatları arasındaki gerçek mesafeyi hesaplamak için Öklid mesafesine göre çok daha doğru sonuçlar verir.

Haversine formülü, küre üzerindeki iki nokta arasındaki en kısa mesafeyi (büyük daire mesafesi - great-circle distance) hesaplamak için kullanılan önemli bir denklemdir. Özellikle navigasyon, haritacılık ve veri bilimi projelerinde koordinatlar (enlem ve boylam) üzerinden mesafe ölçmek için tercih edilir.

Dünya tam bir küre olmasa da, Haversine formülü çoğu uygulama için yeterli hassasiyette (yaklaşık %0.5 hata payı ile) sonuç verir.

Ne zaman kullanılır? Verileriniz enlem-boylam (latitude-longitude) koordinatlarından oluşuyorsa, Öklid veya Manhattan mesafesi yerine Haversine Distance kullanmak daha doğru sonuçlar verir çünkü Dünya düz değil, yaklaşık olarak küreseldir.

from sklearn.metrics.pairwise import haversine_distances
from math import radians

# Koordinatlar: [enlem, boylam]
# Not: sklearn radyan cinsinden giriş bekler
nokta1 = [radians(41.0422), radians(29.0082)]
nokta2 = [radians(39.9208), radians(32.8541)]

# Matris formatında hesaplama yapar
result = haversine_distances([nokta1], [nokta2])

# Sonuç radyan cinsindendir, km'ye çevirmek için Dünya yarıçapı ile çarpılır
mesafe_km = result[0][0] * 6371
print(f"Haversine ile mesafe: {mesafe_km:.2f} km")

Kaynaklar

  1. https://www.maartengrootendorst.com/blog/distances/
  2. https://www.datacamp.com/tutorial/chebyshev-distance
  3. https://www.instagram.com/reels/DU1LKbADVMZ/
mesafe ölçümleri distance metrics Chebyshev Distance
0 Beğeni
Veri
Önceki Yazı

Hamming vs Levenshtein Distance

28 Mart 2026 tarihinde yayınlandı.
Sonraki Yazı

Apriori Algoritması

28 Mart 2026 tarihinde yayınlandı.
arrow