Ana içeriğe geç

Manhattan Uzaklığı Nedir?

Python ve R ile kodlama örnekleriyle Manhattan Uzaklığını nasıl hesaplayıp uygulayacağınızı öğrenin ve makine öğrenimi ile yol bulmada kullanımını keşfedin.
· 8 dk. oku

Yapay Zeka ile Keşfedin

Uzaklık ölçütleri, uzaydaki nesnelerin veya noktaların birbirinden ne kadar uzakta olduğunu ölçmek için temel araçlardır. Bu ölçütler, makine öğrenimi, robotik ve coğrafi bilgi sistemleri dahil olmak üzere birçok alanda önemli rol oynar. Uzaklıkları sayısallaştırarak, hem kâr amaçlı işletmeler hem de araştırmacılar için önemli olan desen tanıma, veri kümeleme ve mekânsal analiz gibi görevleri gerçekleştirebiliriz. 

L1 uzaklığı veya taksi uzaklığı olarak da bilinen Manhattan uzaklığı, ızgara benzeri yollarda veya çok boyutlu uzaylardaki noktalar arasındaki mesafeleri hesaplamak için özellikle kullanışlı bir ölçü olarak öne çıkar. Burada hem matematiksel temeline hem de Manhattan uzaklığının Python ve R'de nasıl uygulanacağına bakacağız. 

Manhattan distance image by Dall-E."Manhattan uzaklığı." Görsel: Dall-E.

Unutmayın, Manhattan uzaklığı, uzaklık ölçütleri başlığının yalnızca bir parçasıdır ve bu kavram pek çok farklı alanda tekrar tekrar karşımıza çıkar. Uzaklık temelli öğrenmede uzmanlaşmak için, tercih ettiğiniz dile bağlı olarak Designing Machine Learning Workflows in Python veya Cluster Analysis in R kursumuzu düşünebilirsiniz. 

Manhattan Uzaklığının Tanımı

Manhattan uzaklığı, ızgara benzeri bir yol üzerinde iki nokta arasındaki mesafeyi belirlemek için kullanılan bir ölçüttür. İki nokta arasındaki en kısa düz çizgiyi ölçen Öklid uzaklığının aksine, Manhattan uzaklığı, noktaların koordinatları arasındaki mutlak farkların toplamını ölçer. Bu yönteme "Manhattan uzaklığı" denmesinin nedeni, Manhattan’ın ızgara benzeri sokaklarında ilerleyen bir taksi gibi, yalnızca ızgara çizgileri boyunca hareket edilmesidir. 

Matematiksel olarak, n boyutlu bir uzayda iki nokta arasındaki Manhattan uzaklığı, Kartezyen koordinatlarının mutlak farklarının toplamıdır. 

Manhattan distance formulas for 2-dimensional and three-dimensional vectors

Manhattan uzaklığı formülü, negatif farkları pozitif değerlere dönüştüren mutlak değer fonksiyonunu içerir. Bu, tüm mesafe ölçümlerinin negatif olmamasını sağlayarak, hareket yönünden bağımsız gerçek skaler mesafeyi yansıtması açısından kritik önemdedir.

Manhattan Uzaklığını Hesaplama ve Görselleştirme

Belirttiğimiz gibi, Manhattan uzaklığı iki noktanın karşılık gelen koordinatları arasındaki mutlak farkların toplanmasıyla hesaplanır. Şimdi bunu 2B ve 3B uzayda örneklerle inceleyelim.

2B örnek

İki noktayı ele alalım: A(1, 1) ve B(4, 5):

  1. |x₁ - x₂| hesaplayın = |1 - 4| = 3
  2. |y₁ - y₂| hesaplayın = |1 - 5| = 4
  3. Sonuçları toplayın: 3 + 4 = 7

Dolayısıyla A ile B arasındaki Manhattan uzaklığı 7 birimdir. 

Manhattan distance of two vectorsİki vektörün Manhattan uzaklığı. Görsel: Yazar.

Bu 2B ızgarada, Manhattan uzaklığının yalnızca yatay ve dikey hareket ederek A noktasından B noktasına giden bir taksinin izleyeceği yolu takip ettiğini görebilirsiniz.

3B örnek

Şimdi 3B uzayda iki noktayı ele alalım: A(1, 2, 3) ve B(4, 5, 6):

  1. |x₁ - x₂| hesaplayın = |1 - 4| = 3
  2. |y₁ - y₂| hesaplayın = |2 - 5| = 3
  3. |z₁ - z₂| hesaplayın = |3 - 6| = 3
  4. Sonuçları toplayın: 3 + 3 + 3 = 9

Bu 3B noktalar arasındaki Manhattan uzaklığı 9 birimdir.

Öklid uzaklığı ile karşılaştırma

Manhattan uzaklığı ızgara çizgileri boyunca yolu ölçerken, Öklid uzaklığı iki nokta arasındaki düz çizgi mesafesini, deyim yerindeyse "kuş uçuşu" mesafeyi ölçer. 

2B örneğimiz için:

  • Manhattan uzaklığı: 7 birim
  • Öklid uzaklığı: √((1-4)² + (1-5)²) = 5 birim

İşte Manhattan ve Öklid uzaklıklarının görsel bir karşılaştırması: 

Comparing Manhattan distance and Euclidian distance of two vectors on a Cartesian coordinate planeManhattan uzaklığı vs. Öklid uzaklığı. Görsel: Yazar.

Öklid uzayında, Öklid uzaklığı her zaman Manhattan uzaklığından küçük veya ona eşittir. 

Manhattan uzaklığı ile Öklid uzaklığı arasında seçim yapma

Manhattan uzaklığı özellikle şu senaryolarda kullanışlıdır:

  1. Hareketin ızgara benzeri yollarla sınırlı olduğu durumlar (ör. şehir blokları, devre kartı yerleşimleri).
  2. Çapraz hareketin yasak olduğu veya daha maliyetli olduğu durumlar.
  3. Makine öğreniminde yüksek boyutlu verilerle çalışırken, Öklid uzaklığına kıyasla hesaplama açısından daha verimli olabildiği durumlar.
  4. Kesikli veya sıralı verilerdeki farklılıkları analiz ederken.

Buna karşılık, Öklid uzaklığı şu durumlarda daha uygundur:

  1. Açık alanlarda fiziksel mesafeleri ölçerken.
  2. Çapraz hareketlerin de aynı derecede geçerli olduğu sürekli verilerle çalışırken.

Manhattan Uzaklığının Uygulamaları

Manhattan uzaklığı, bilgisayar bilimi, veri analizi ve coğrafi teknolojinin çeşitli alanlarında uygulama bulur. İşte Manhattan uzaklığının özellikle yararlı olduğu bazı temel alanlar.

Yol bulma algoritmaları (ör. A* algoritması) 

Izgara tabanlı ortamlarda, Manhattan uzaklığı iki nokta arasındaki mesafeyi tahmin etmek için hızlı ve etkili bir sezgisel sağlar. Özellikle hareketin yatay ve dikey yönlerle sınırlı olduğu senaryolarda, A* algoritmasında aramayı hedefe daha verimli yönlendirmeye yardımcı olur. Şehir sokaklarında yönlendirme, labirent çözme algoritmaları ve bazı video oyunu yapay zekâsında yol bulma buna örnektir. 

Kümeleme teknikleri (ör. K-Means kümeleme) 

Manhattan uzaklığı, özellikle yüksek boyutlu verilerle çalışırken, kümeleme algoritmalarında bir uzaklık ölçütü olarak kullanılabilir. K-Means kümelemede, Manhattan uzaklığının Öklid uzaklığı yerine kullanılması, özellikle seyrek yüksek boyutlu verilerle veya aykırı değerler mevcutken daha iyi sonuçlar verebilir. Ayrıca, seyrek vektör uzaylarında etkinliği nedeniyle metin sınıflandırma ve doküman kümelemede sıklıkla tercih edilir. Manhattan uzaklığının tekil boyutlardaki uç değerlere daha düşük duyarlılığı, bazı veri kümelerinde daha dengeli kümeleme sonuçlarına yol açabilir.

Görüntü tanıma 

Manhattan uzaklığı, piksel değerlerini veya özellik vektörlerini karşılaştırmak için kullanılabilir. Özellikle, küçük bir görselin daha büyük bir görsel içinde örneklerini bulmaya çalıştığınız şablon eşleştirmede kullanışlıdır. Yüz tanıma sistemleri, video akışlarında nesne tespiti veya büyük görsel veritabanlarında desen eşleştirme gibi hızın kritik olduğu ve Öklid uzaklığına göre küçük hassasiyet kaybının çoğu zaman ihmal edilebilir olduğu durumlarda da değerlidir.

Aykırı değer tespiti 

Manhattan uzaklığı, tekil boyutlardaki uç değerlere Öklid uzaklığına kıyasla daha az duyarlı olduğu için, bir veri kümesindeki diğerlerinden önemli ölçüde farklı veri noktalarını belirlemek için kullanılabilir. Bu özellik, sahtekârlık tespiti veya ağ güvenliği gibi anomali tespit sistemlerinde işe yarar. Örneğin finansal sistemlerde, Manhattan uzaklığı tek bir öznitelikteki aşırı değerlerden aşırı etkilenmeden olağandışı işlem kalıplarını belirlemeye yardımcı olabilir ve potansiyel olarak daha az hataya yol açabilir.

Coğrafi Bilgi Sistemleri (GIS) 

GIS uygulamalarında, Manhattan uzaklığı ızgara benzeri bir sokak ağı boyunca hareketi modelleyebilir; bu da onu kentsel planlama ve lojistik için kullanışlı kılar. Şehirde toplam seyahat mesafesini en aza indirmeye dayalı tesislerin en uygun konumlarını belirlemek gibi yer-seçim problemlerinde kullanılır. Manhattan uzaklığı ayrıca yollar veya nehirler gibi doğrusal unsurlar etrafında tampon bölge oluşturma gibi mekânsal analiz görevlerinde de uygulanabilir. Kentsel planlamacılar kamu hizmetlerine erişilebilirliği analiz etmek için, lojistik şirketleri ise şehirlerdeki teslimat güzergâhlarını optimize etmek için Manhattan uzaklığını kullanabilir.

Manhattan Uzaklığının Matematiksel Özellikleri

Manhattan uzaklığı, onu özellikle kullanışlı kılan birkaç önemli matematiksel özelliğe sahiptir. İki temel yönü inceleyelim: metrik uzay özellikleri ve aykırı değerlere karşı dayanıklılığı.

Metrik uzay özellikleri

Manhattan uzaklığı gerçek bir metriktir; yani metrik bir uzayda bir uzaklık fonksiyonu için gerekli dört koşulun tamamını sağlar:

  1. Negatif olmama: Herhangi iki nokta arasındaki mesafe daima negatife eşit veya ondan büyüktür. d(x, y) ≥ 0 tüm x ve y için.
  2. Ayrılamayanların özdeşliği: Bir noktanın kendisiyle arasındaki mesafe sıfırdır ve iki nokta arasındaki mesafe sıfırsa, bu iki nokta aynıdır. d(x, y) = 0 ancak ve ancak x = y ise.
  3. Simetri: A noktasından B noktasına olan mesafe, B’den A’ya olan mesafeyle aynıdır. d(x, y) = d(y, x) tüm x ve y için.
  4. Üçgen eşitsizliği: İki nokta arasındaki mesafe, bu noktaların üçüncü bir noktayla olan mesafelerinin toplamından her zaman küçük veya ona eşittir. d(x, z) ≤ d(x, y) + d(y, z) tüm x, y ve z için.

Üçgen eşitsizliğini sağlamayan kosinüs uzaklığının aksine, Manhattan uzaklığının bu özelliklerin tümüne uyması onu çeşitli matematiksel ve hesaplamalı uygulamalarda kullanışlı kılar. Örneğin:

  • Optimizasyon algoritmalarında, üçgen eşitsizliği arama uzaylarını verimli şekilde budamak için kullanılabilir.
  • Metrik ağaçlar gibi veri yapılarında, bu özellikler daha hızlı en yakın komşu aramalarına olanak tanır.
  • Makine öğreniminde, uzaklık ölçütlerine dayanan (örneğin k-en yakın komşular) algoritmalar bu özelliklerden teorik güvenceler ve verimli uygulamalar için yararlanabilir.

Gelişmiş aykırı değer ayrımı 

Manhattan uzaklığı, doğrusal toplama yaklaşımıyla, farkları karesini alan Öklid uzaklığına kıyasla aykırı değerlerin ayrımında sıklıkla daha iyi performans gösterir. Bu fark, Manhattan uzaklığının her boyuttaki mutlak farkları bağımsız olarak biriktirmesinden, böylece herhangi bir tek boyuttaki büyük tutarsızlıkların ezici etkisini azaltmasından kaynaklanır.

2B bir uzayda iki noktayı düşünün: A(0, 0) ve B(10, 0). Şimdi koordinatları (0, 100) olan C adlı bir aykırı nokta ekleyelim:

  • A ile C arasındaki Manhattan uzaklığı: |0 - 0| + |0 - 100| = 100
  • A ile C arasındaki Öklid uzaklığı: √((0 - 0)² + (0 - 100)²) = 100
  • B ile C arasındaki Manhattan uzaklığı: |10 - 0| + |0 - 100| = 110
  • B ile C arasındaki Öklid uzaklığı: √((10 - 0)² + (0 - 100)²) ≈ 100,5

Illustration of the Manhattan vs Euclidean distances between pointsAykırı değerlerle Manhattan vs Öklid uzaklığı. Görsel: Yazar

Bu örnekte, y-koordinatındaki aykırı değerin baskın etkisi nedeniyle Öklid uzaklığı AC ve BC'yi neredeyse aynı gösterirken, Manhattan uzaklığı bunları belirgin biçimde ayırt eder.

Bu özellik, Manhattan uzaklığını özellikle şu durumlarda kullanışlı kılar:

  1. Görüntü işleme veya metin analizi gibi aykırı değerlerin yaygın olduğu yüksek boyutlu uzaylarda.
  2. Küme merkezleri üzerindeki aykırı değer etkisini azaltmak istediğiniz kümeleme algoritmalarında.
  3. Aykırı değerleri önemlerini gereğinden fazla artırmadan belirlemek istediğiniz anomali tespit sistemlerinde.

Tekil boyutlardaki uç değerlere daha az duyarlı olduğundan, Manhattan uzaklığı özellikle gürültülü veya kusurlu verilerin bulunduğu birçok gerçek dünya veri setinde daha dengeli bir benzerlikten uzaklık ölçüsü sağlayabilir.

Python ve R'de Manhattan Uzaklığı

Burada, Manhattan uzaklığını Python ve R kullanarak nasıl hesaplayacağımızı keşfedeceğiz. Her örnek, özel fonksiyonlardan kütüphane yöntemlerine kadar farklı yaklaşımları gösterecek.

Python örnekleri

Python, Manhattan uzaklığını hesaplamak için birden fazla yol sunar. İki farklı yöntemi inceleyelim.

1. NumPy dizileri kullanarak hesaplama:

import numpy as np
point_a_np = np.array([1, 1, 1])
point_b_np = np.array([4, 5, 6])
distance_numpy = np.sum(np.abs(point_a_np - point_b_np))
print(f"Manhattan distance (NumPy): {distance_numpy}")

Çıktı: 

Manhattan distance (NumPy): 12

Bu yöntem, NumPy dizilerini doğrudan kullanır ve özellikle büyük veri kümeleriyle çalışırken veya analizinizde zaten NumPy dizileriyle çalışıyorsanız çok verimli olabilir.

2. SciPy’nin cityblock() fonksiyonunu kullanarak hesaplama: 

from scipy.spatial.distance import cityblock
point_a = (1, 1, 1)
point_b = (4, 5, 6)
distance_scipy = cityblock(point_a, point_b)
print(f"Manhattan distance (SciPy): {distance_scipy}")

Çıktı:

Manhattan distance (SciPy): 12

SciPy, Manhattan uzaklığını hesaplayan cityblock() fonksiyonunu sağlar. Bu yöntem basit ve etkilidir; özellikle projenizde SciPy ile çalışırken uygundur. 

R örnekleri

R da Manhattan uzaklığını hesaplamak için birden fazla yöntem sunar. İki farklı yaklaşımı inceleyelim.

1. Özel bir fonksiyon oluşturma

manhattan_distance <- function(x1, y1, x2, y2) {
  abs(x1 - x2) + abs(y1 - y2)
}
# Example points 
point1 <- c(3, 5) # (x1, y1) 
point2 <- c(1, 9) # (x2, y2) 
# Calculate Manhattan distance between point1 and point2 
distance <- manhattan_distance(point1[1], point1[2], point2[1], point2[2]) 
print(paste("Manhattan distance (custom function):", distance))

Çıktı:

"Manhattan distance (custom function): 6"

Bu örnekte, manhattan_distance adlı özel bir fonksiyon oluşturuyoruz. Bu fonksiyon, iki noktanın koordinatlarını girdi olarak alır ve karşılık gelen koordinatların mutlak farklarını toplayarak Manhattan uzaklığını bulur.

2. stats kütüphanesini kullanma

point_a <- c(1, 1, 1)
point_b <- c(4, 5, 6)
distance_builtin <- stats::dist(rbind(point_a, point_b), method = "manhattan")
print(paste("Manhattan distance:", distance_builtin))

Çıktı: 

"Manhattan distance: 12"

İkinci örnekte, Manhattan uzaklığını hesaplamak için stats paketindeki dist() fonksiyonunu kullanıyoruz. Bu yaklaşım, matrislerle veya birden fazla noktayla çalışırken süreci önemli ölçüde basitleştirdiği için faydalıdır.

Sonuç

Manhattan uzaklığının önemi, basitliğinde, hesaplama verimliliğinde ve belirli senaryolarda aykırı değerlere karşı dayanıklılığında yatar. Öklid uzaklığından farklı olarak, Manhattan uzaklığı ızgara tabanlı sistemlerde sıklıkla daha sezgisel sonuçlar verir ve özellikle yüksek boyutlu uzaylarda hesaplaması daha verimli olabilir. 

Dahası, Manhattan uzaklığı ve diğer uzaklık ölçütleri çok çeşitli yerlerde karşımıza çıkar. Uzaklık temelli öğrenmeye ayrılmış bir bölüm içeren Designing Machine Learning Workflows in Python kursumuzun yanı sıra, sınıflandırma ve boyut indirgeme için uzaklık temelli ölçütler kullanan Cluster Analysis in R kursumuza ve aykırı değer tespiti ile özellik ölçeklendirme için uzaklık ölçütlerini kullanan Anomaly Detection in Python kursumuza da göz atabilirsiniz.  

Unutmayın, uzaklık ölçütünün seçimi algoritmalarınızın performansını ve sonuçlarını önemli ölçüde etkileyebilir. Manhattan uzaklığını ne zaman ve nasıl kullanacağınızı anlayarak veri bilimi araç setinize güçlü bir araç eklemiş olursunuz. Denemeye, öğrenmeye ve uzaklık temelli algoritmalarla mümkün olanın sınırlarını zorlamaya devam edin!

Vinod Chugani

Yazar

Vinod Chugani

Vinod Chugani kariyerine Tokyo'da JPMorgan'ın en genç Hedge Fund Sales Desk Lideri olarak başladı ve daha sonra Lehman Brothers'ta bireysel satış rekoru kırdı, ardından 30 ülkede faaliyet gösteren bir elektronik dağıtım işi kurdu ve veriye yönelmeden önce geliri SG$100 milyonun üzerine taşıdı. Duke Ekonomimezunu ve NYC Data Science Academy alum, Maven'de Hugo Bowne-Anderson'ın Building AI Applications kursu için 100+ başvuru arasından seçilen üç bursiyerden biriydi. Bugün, istatistikten ajan temelli yapay zekâya uzanan konularda DataCamp, KDnuggets, Machine Learning Mastery ve Statology için yazıyor ve adında 1.000'i aşkın bire bir oturum bulunan NYC Data Science Academy'de veri profesyonellerine mentorluk yapıyor.

 

Sıkça Sorulan Sorular

Manhattan uzaklığı, Öklid uzaklığıyla nasıl karşılaştırılır?

Manhattan uzaklığı ızgara çizgileri boyunca yolu ölçerken (şehir blokları gibi), Öklid uzaklığı iki nokta arasındaki düz çizgi mesafesini ölçer. Manhattan uzaklığı genellikle ızgara tabanlı sistemler veya yüksek boyutlu veriler için daha uygundur; Öklid uzaklığı ise açık alanlar veya sürekli veriler için daha iyidir.

Manhattan uzaklığı neden "taksi uzaklığı" olarak adlandırılır?

Izgara biçiminde düzenlenmiş bir şehirde (Manhattan gibi) bir taksinin yalnızca yatay ve dikey parçalardan oluşan bir güzergâh üzerinde gideceği mesafeyi temsil ettiği için taksi uzaklığı olarak adlandırılır.

Manhattan uzaklığını diğer uzaklık ölçütlerine tercih etmenin avantajları nelerdir?

Manhattan uzaklığı hesaplama açısından verimlidir, yüksek boyutlu uzaylarda aykırı değerlere daha az duyarlıdır ve ızgara tabanlı sistemlerde sıklıkla daha sezgisel sonuçlar verir. Ayrıca metrik bir uzaydaki bir uzaklık fonksiyonu için gereken dört koşulun tamamını sağlayan gerçek bir metriktir.

Manhattan uzaklığı makine öğreniminde kümeleme için kullanılabilir mi?

Evet, Manhattan uzaklığı K-means gibi kümeleme algoritmalarında, özellikle yüksek boyutlu veya seyrek verilerle çalışırken kullanılabilir. Bu senaryolarda, bazen Öklid uzaklığına kıyasla daha sağlam sonuçlar üretebilir.

Manhattan uzaklığı negatif koordinat değerleriyle kullanılabilir mi?

Evet, Manhattan uzaklığı negatif koordinatlarla da kullanılabilir. Formül mutlak değerleri kullandığı için pozitif veya negatif tüm gerçek sayılarla çalışır.

Konular

İlgili