Ana içeriğe geç

Kosinüs Uzaklığı Nedir?

Kosinüs uzaklığı ve kosinüs benzerliğini keşfedin. Hesaplamaları, uygulamaları ve diğer metriklerle karşılaştırmaları inceleyin. numpy kullanarak R ve Python'da nasıl uygulanacağını öğrenin.
· 8 dk. oku

Yapay Zeka ile Keşfedin

Cosine distance representation by Dall-E

"Kosinüs uzaklığı." Görsel: Dall-E.

Veri noktaları arasındaki benzerlik veya benzerlikten uzaklığı ölçmek; metin analizinden öneri sistemlerine kadar birçok uygulama için faydalıdır. Kosinüs uzaklığı, büyüklükten ziyade vektörün yönelimine odaklandığı için özellikle yüksek boyutlu verilerde veya seyrek veri kümelerinde etkili olan bir uzaklık metriğidir. 

Makine öğrenimindeki yaygın ve önemli kavramlara kısa bir tazeleme ihtiyacınız varsa, kapsamlı eğitimimiz Derin Öğrenme için Matematiksel Kavramların Sırlarını Açmak ile başlayın. Ayrıca uzaklık tabanlı öğrenmeye dair bir başka yazı olan Manhattan Uzaklığı Nedir? başlıklı içeriğimizi de okuyarak uzaklık metriklerine dair anlayışınızı genişletebilir ve kosinüs uzaklığı ile Manhattan uzaklığı arasındaki farkları görebilirsiniz.

Kosinüs Uzaklığının Tanımlanması

Şimdi kosinüs uzaklığını, kosinüs uzaklığı formülüne göre tanımlamak için biraz zaman ayıralım. Bunu yaparken, kosinüs benzerliği ile ilişkisini de ele alacağız.

Kosinüs uzaklığı formülü

Kosinüs uzaklığı, iki vektör arasındaki açının kosinüsünü hesaplayarak vektörler arasındaki benzerlikten uzaklığı ölçer. Aşağıdaki formülde görüldüğü üzere, kosinüs benzerliğinin bir eksiği olarak da tanımlanabilir:

Cosine distance formula using cosine similarity

Daha ayrıntılı ve daha resmi bir matematiksel ifadeyle, kosinüs uzaklığı aşağıdaki formülle hesaplanır. 

Cosine distance formula with full mathematical expression

Burada A⋅B, A ve B vektörlerinin skaler çarpımını; ||A|| ve ||B|| ise vektörlerin büyüklüklerini, yani Öklid normlarını temsil eder.

Bu formülle kosinüs uzaklığını 0 ile 2 arasında bir aralıkta nicelendiriyoruz. Kosinüs uzaklığının 0 olması, vektörlerin mükemmel biçimde hizalandığı (aralarında açı olmadığı) ve azami benzerlik gösterdiği anlamına gelirken; 2’ye yakın bir değer, vektörlerin tam zıt yönlerde olduğunu ve azami benzerlikten uzaklığı işaret eder. 

Kosinüs benzerliği vs. kosinüs uzaklığı

Gördüğümüz gibi, kosinüs uzaklığı vektörler arasındaki açının kosinüsünü hesaplayarak benzerlikten uzaklığı ölçerken; kosinüs benzerliği aynı açının kosinüsüne dayalı olarak iki vektörün ne kadar benzer olduğunu niceler. 

Kosinüs benzerliği -1 ile 1 arasında değer alır. 1 değeri vektörlerin mükemmel hizalı olduğunu (aralarında açı olmadığını) ve azami benzerliği ifade ederken; -1 değeri vektörlerin tam zıt yönlerde olduğunu ve azami benzerlikten uzaklığı yansıtır. Sıfıra yakın değerler ortogonalliği gösterir.

Kosinüs Uzaklığının Hesaplanması ve Görselleştirilmesi

İki vektörle bir örnek yapalım: Vektör A (2,4) ve Vektör B (4,2). Aşağıdaki adımları izleyerek kosinüs uzaklıklarını hesaplayalım:

  1. A ve B'nin skaler çarpımını hesaplayın:

    A · B = (2 × 4) + (4 × 2) = 8 + 8 = 16

  2. A ve B'nin büyüklüklerini hesaplayın:

    ||A|| = √(2² + 4²) = √20

    ||B|| = √(4² + 2²) = √20
  1. Skaler çarpımı büyüklüklerin çarpımına bölün:

    (A · B) / (||A|| × ||B||) = 16 / (√20 × √20) = 16 / 20 = 0.8
  1. Kosinüs uzaklığını hesaplayın:

    Kosinüs Uzaklığı = 1 - 0.8 = 0.2

0,2’lik bir kosinüs uzaklığıyla, sonuç 0 ile 2 ölçeğinde oldukça düşük kalır. Bu, A ve B vektörlerinin yönleri bakımından birbirine epey benzer olduğunu gösterir. 

Cosine distance vs. cosine similarity visualizedKosinüs uzaklığı ve kosinüs benzerliği. Görsel: Yazar.

Bu gösterimde:

  • Vektör A: (2, 4)
  • Vektör B: (4, 2)
  • θ, A ile B arasındaki açıdır

Kosinüs benzerliği (0,8), θ açısının kosinüsünü temsil eder. Vektörler yön olarak birbirine yakın olduğundan açı küçüktür; bu da yüksek bir kosinüs benzerliğine ve düşük bir kosinüs uzaklığına (0,2) yol açar.

Kosinüs uzaklığının, kosinüs benzerliğinin cos(θ) olduğu durumda 1 - cos(θ) olarak da tanımlanabilmesi şu anlama gelir: 

  • Vektörler yönce özdeş olduğunda (θ = 0°), cos(θ) = 1, dolayısıyla kosinüs uzaklığı = 0
  • Vektörler dik olduğunda (θ = 90°), cos(θ) = 0, dolayısıyla kosinüs uzaklığı = 1
  • Vektörler zıt olduğunda (θ = 180°), cos(θ) = -1, dolayısıyla kosinüs uzaklığı = 2

Kosinüs Uzaklığının Uygulamaları

Bazı önemli uygulamalara göz atalım.

Doğal dil işleme (NLP)

Kosinüs uzaklığı, word2vec gibi metin temsilleri arasındaki anlamsal ilişkileri etkili biçimde ölçerek çeşitli doğal dil işleme görevlerinde kritik bir rol oynar. Bu kavramlara kısa bir bakış için, Python'da Metin Sınıflandırmayı Anlamak başlıklı eğitimimizi faydalı bulabilirsiniz. 

Belge sınıflandırma ve benzerlik

Belge sınıflandırmada, kosinüs uzaklığı belge vektörleri arasındaki açıları karşılaştırarak içerik benzerliğini ölçer. Her belge bir vektöre dönüştürülür; boyutlar, kelimelerin TF-IDF puanlarını yansıtır. Benzer belgeler benzer yönlere işaret eder ve daha küçük kosinüs uzaklıkları verir. 

Kümeleme ve anlamsal gruplama

Kosinüs uzaklığı, aynı kelimeleri kullanmasalar bile anlamsal olarak ilişkili belgeleri gruplandıran K-means kümeleme gibi kümeleme görevlerinde öne çıkar. Metin işlemede yaygın olan yüksek boyutlu, seyrek veriler için idealdir. Vektör yönelimini yakalayarak daha isabetli tematik kümeler oluşturmayı sağlar. Bu teknik, gözetimsiz öğrenmede sıkça kullanılır; örneğin haber makalelerini konularına göre gruplayarak doğal kümeleri keşfetmek için.

Bilgi erişimi ve arama motorları

Bilgi erişiminde, kosinüs uzaklığı arama sorgularını belgelerle vektör karşılaştırması yoluyla eşleştirir. Arama motorları, kosinüs uzaklığı bakımından sorgu vektörüne en yakın belgeleri bulur ve en küçük uzaklığa sahip olanları alaka düzeyi en yüksek olacak şekilde sıralar. 

Kelime gömme temsilleri ve kelime benzerliği 

Belge düzeyinin ötesinde, Word2Vec veya GloVe gibi kelime gömme temsillerinde kosinüs uzaklığı hayati önemdedir; burada kelimeler yüksek boyutlu vektörler olarak temsil edilir. Bu gömmeler, benzer anlamlara sahip kelimelerin vektör uzayında birbirine yakın yerleşmesini sağlar. Kosinüs uzaklığı, bir kelimeye en benzer kelimeleri bulmak, eşanlamlı tespitini desteklemek veya duygu analizi ya da makine çevirisi gibi daha karmaşık modellerde özellikleri beslemek için kullanılabilir.

Görüntü tanıma 

Görüntü tanımada, kosinüs uzaklığı görsellerden çıkarılan öznitelik vektörlerini karşılaştırmak için devreye girer. İster kalabalıkta yüzleri ayırt etmek, ister doğa fotoğraflarını sınıflandırmak olsun, yalnızca büyüklüğe değil, vektörlerin yön benzerliğine bakar. Bu odak, görüntüler için doğru kategorileri saptamada yardımcı olur; görsel tabanlı sistemlerin doğruluğunu ve etkinliğini artırır.

Öneri sistemleri 

Kosinüs uzaklığını dijital dünyanın bir eşleştiricisi gibi düşünün; kullanıcıları geçmiş beğenileriyle uyumlu film veya ürünlerle buluşturur. Kullanıcı ve öğe profillerinin vektör uzaylarında ne kadar hizalı olduğuna bakarak, öneri sistemleri bir sonraki muhtemel beğenilerinizi şaşırtıcı bir isabetle tahmin eder.

Kosinüs Uzaklığının Matematiksel Özellikleri

Kosinüs uzaklığının, onu diğer uzaklık ölçülerinden ayıran özgün matematiksel özellikleri vardır. Bu özellikleri anlamak, kosinüs uzaklığını farklı bağlamlarda doğru yorumlamak ve uygulamak açısından önemlidir.

Metriğin uzay özellikleri

Matematikte metrik ya da uzaklık fonksiyonu, bir kümedeki her bir eleman çifti arasındaki uzaklığı tanımlayan bir fonksiyondur. Gerçek bir metrik sayılabilmesi için bir fonksiyonun dört koşulu sağlaması gerekir:

  1. Negatif olmama: d(x, y) ≥ 0

  2. Ayrılamazların özdeşliği: d(x, y) = 0 ancak ve ancak x = y ise

  3. Simetri: d(x, y) = d(y, x)

  4. Üçgen eşitsizliği: d(x, z) ≤ d(x, y) + d(y, z)

Kosinüs uzaklığı ilk üç koşulu sağlar ancak üçgen eşitsizliğini her zaman sağlamaz. Bu, bazı durumlarda A ile B ve B ile C arasındaki kosinüs uzaklıklarının toplamının, A ile C arasındaki kosinüs uzaklığından daha küçük olabileceği anlamına gelir.

Ölçek değişmezliği

Kosinüs uzaklığının dikkat çekici özelliklerinden biri ölçek değişmezliğidir. Bu, iki vektörden birini veya her ikisini bir skalerle (sıfır olmayan sabit) çarpsanız bile kosinüs uzaklığının aynı kaldığı anlamına gelir. Matematiksel olarak, sıfır olmayan herhangi iki skaler a ve b ile x ve y vektörleri için:

Kosinüs Uzaklığı(ax, by) = Kosinüs Uzaklığı(x, y)

Bu ölçek değişmezliği özelliği, kosinüs uzaklığını birçok diğer uzaklık ölçüsünden ayırır.

Python ve R'de Kosinüs Uzaklığı

Burada, Python ve R kullanarak kosinüs uzaklığının nasıl hesaplanacağını inceleyeceğiz. 

Python örneği

Python'da, kosinüs uzaklığı ve kosinüs benzerliğini hesaplamak için NumPy kullanabiliriz. Bunu, vektörlerimizin skaler çarpımını ve normunu bularak yapıyoruz.

import numpy as np

# Define the vectors
A = np.array([2, 4])
B = np.array([4, 2])

# Calculate cosine similarity
cos_similarity = np.dot(A, B) / (np.linalg.norm(A) * np.linalg.norm(B))

# Calculate cosine distance
cos_distance = 1 - cos_similarity

print("Cosine Similarity: {:.2f}".format(cos_similarity))
print("Cosine Distance: {:.2f}".format(cos_distance))

Çıktı: 

Cosine Similarity: 0.80
Cosine Distance: 0.20

Alternatif olarak, SciPy paketindeki cosine() fonksiyonunu kullanarak da kosinüs uzaklığını bulabiliriz. 

import numpy as np
from scipy.spatial.distance import cosine

# Define the vectors
A = np.array([2, 4])
B = np.array([4, 2])

# Calculate cosine distance
cos_distance = cosine(A, B)  # Uses scipy's cosine for cosine distance

print("Cosine Distance: {:.2f}".format(cos_distance))

Çıktı: 

Cosine Distance: 0.20

R örneği

R'de, temel vektör işlemlerini kullanarak kosinüs benzerliğini ve kosinüs uzaklığını hesaplayabilirsiniz. İşte nasıl yapıldığı:

# Define the vectors
A <- c(2, 4)
B <- c(4, 2)

# Calculate cosine similarity
cos_similarity <- sum(A * B) / (sqrt(sum(A^2)) * sqrt(sum(B^2)))
# Note: We can also use %*% operator for matrix multiplication. 
# %*%, when applied to two vectors, calculates the dot product. 
# For example: cos_similarity <- A %*% B / (sqrt(sum(A^2)) * sqrt(sum(B^2)))

# Calculate cosine distance
cos_distance <- 1 - cos_similarity

# Print the result
print(paste("Cosine Similarity:", cos_similarity))
print(paste("Cosine Distance:", cos_distance))

Çıktı:

“Cosine Similarity: 0.80”
“Cosine Distance: 0.20”

R örneğinde, kosinüs benzerliği; skaler çarpım ve normlar için elle yapılan işlemlerle, Python örneğine benzer biçimde ama tamamen R'nin temel işlevleri içinde hesaplanır. Kosinüs uzaklığının, kosinüs benzerliğinden 1 çıkarılarak elde edildiğine dikkat edin.

Kosinüs Benzerliği vs. Öklid Uzaklığı ve Diğer Uzaklık Metrikleri

Aşağıdaki görsel, özgün örneğimizi genişletir ancak bu kez aynı vektörler için üç tür uzaklık ölçümünü farklı renklerle gösterir:

  • Manhattan Uzaklığı, koordinatların mutlak farklarının toplamını ölçer. 
  • Öklid Uzaklığı, iki nokta arasındaki düz çizgi mesafesini hesaplar. 
  • Kosinüs Uzaklığı, iki vektör arasındaki açının kosinüsünden türetilir. 

Cosine distance vs. Euclidean distance vs. Manhattan distance

Kosinüs uzaklığı vs. Öklid uzaklığı vs. Manhattan uzaklığı. Görsel: Yazar.

Bu uzaklıkların her biri verilere özgün içgörüler sunar. Öklid ve Manhattan uzaklıkları, vektör bileşenlerinin büyüklüğünü hesaba katan geometrik uzaklıklardır; bu da onları uzaydaki fiziksel ölçümler için uygun kılar. Buna karşılık kosinüs uzaklığı, vektörler arasındaki açıya odaklanır; özellikle metin analizi ve veri biliminin diğer biçimlerinde kullanılan yüksek boyutlu uzaylarda yönelim ve doğrultuyu anlamak için idealdir.

Sonuç

Kosinüs uzaklığı ve onun tamamlayıcısı olan kosinüs benzerliği, veri bilimi ve makine öğreniminde güçlü araçlardır. Bu metrikler, özellikle geleneksel uzaklık ölçülerinin yetersiz kalabildiği yüksek boyutlu uzaylarda, vektörler arasındaki ilişkilere dair özgün içgörüler sunar.

Veriler karmaşıklık ve boyut bakımından büyümeye devam ettikçe, kosinüs uzaklığı gibi metrikler gizli kalıpları ve ilişkileri ortaya çıkarmada giderek daha önemli bir rol oynayacaktır. Doğal dil işleme, öneri sistemleri ya da yüksek boyutlu vektör uzaylarıyla ilgilenen herhangi bir alanda çalışıyor olun, kosinüs uzaklığını anlamak ve uygulamak değerli içgörüler sağlayabilir ve modellerinizin performansını iyileştirebilir. Bir sonraki adım olarak, mesafeye dayalı öğrenme ve gözetimsiz iş akışları üzerine bir bölüm barındıran kapsamlı etkileşimli kursumuz Python'da Makine Öğrenimi İş Akışları Tasarlama kursumuzu alın. 

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

Kosinüs benzerliği nedir?

Kosinüs benzerliği, iki vektörün büyüklükten bağımsız olarak yönelim açısından ne kadar benzer olduğunu ölçmek için kullanılan bir metriktir.

Kosinüs benzerliğinin aralığı nedir?

Kosinüs benzerliğinin aralığı -1 ile 1 arasındadır

Kosinüs benzerliği formülü nedir?
 

Kosinüs benzerliği formülü, iki vektör arasındaki açının kosinüsünü hesaplar ve vektörlerin skaler çarpımının büyüklüklerinin çarpımına bölünmesi olarak tanımlanır.

Skaler çarpım ile kosinüs benzerliği arasındaki fark nedir?

Skaler çarpım, iki vektörün karşılık gelen elemanlarının çarpımlarının toplamıdır ve hem büyüklüğü hem de yönelimi yansıtır. Buna karşılık kosinüs benzerliği, skaler çarpımın vektörlerin büyüklüklerinin çarpımına bölünmesiyle elde edilen, yalnızca yönelime odaklanan normalize edilmiş bir ölçüdür.

Kosinüs uzaklığı kosinüs benzerliğinden nasıl farklıdır?

Kosinüs uzaklığı ve kosinüs benzerliği tamamlayıcı ölçülerdir. Kosinüs benzerliği, -1 (tam zıt) ile 1 (tam aynı) arasında değişerek iki vektörün ne kadar benzer olduğunu ölçer. Öte yandan kosinüs uzaklığı, kosinüs benzerliğinin 1 eksiği olarak hesaplanır ve 0 (özdeş vektörler) ile 2 (zıt vektörler) arasında değişir.

Kosinüs uzaklığı formülü nedir?

Kosinüs uzaklığı formülü, çok boyutlu bir uzayda iki vektör arasındaki açıyı ölçer ve vektörler arasındaki açının kosinüsünün 1 eksiği olarak hesaplanır.

1 değerindeki kosinüs uzaklığı neyi ifade eder?

Kosinüs uzaklığının 1 olması, karşılaştırılan iki vektörün birbirine dik (ortogonal) olduğunu ve 90 derecelik bir açı oluşturduğunu gösterir. Bu, vektörlerin yönelimi açısından hiçbir benzerlik taşımadığı anlamına gelir; pratikte metin analizinde tamamen farklı temalar, öneri sistemlerinde ilgisiz öğeler veya makine öğreniminde belirgin biçimde farklı özellik vektörleri anlamına gelebilir.

Kosinüs uzaklığı ile açısal uzaklık arasındaki fark nedir?

Kosinüs uzaklığı ve açısal uzaklık yakından ilişkilidir ancak aynı şey değildir. Kosinüs uzaklığı, kosinüs benzerliğinin 1 eksiği olarak tanımlanırken; açısal uzaklık, kosinüs benzerliğinin ark-kosinüsü alınarak radyan cinsinden bulunan iki vektör arasındaki açıdır. Açısal uzaklık kosinüs uzaklığıyla orantılıdır ancak daha sezgisel bir geometrik yorum sunar.

Kosinüs uzaklığı ile Öklid uzaklığı arasındaki fark nedir?

Her ikisi de benzerlikten uzaklığı ölçse de, kosinüs uzaklığı büyüklüğü göz ardı ederek vektörler arasındaki açıya odaklanır. Öklid uzaklığı ise uzaydaki iki nokta arasındaki düz çizgi mesafesini ölçerek büyüklüğe odaklanır.

Metin analizinde kosinüs uzaklığı neden kullanışlıdır?

Kosinüs uzaklığı, kelimelerin (vektör boyutları olarak temsil edilen) mutlak sıklıklarından ziyade oranlarına odaklandığı için metin analizinde özellikle kullanışlıdır. Bu, farklı uzunluktaki belgeleri karşılaştırmada ve belge boyutundan bağımsız olarak tematik benzerlikleri belirlemede etkilidir.

Konular

İlgili