K-kosinüs benzerlikleri anlamına gelir Öklid mesafesi (LSA)


10

Daha düşük boyutlu uzayda bir belge topluluğunu temsil etmek için gizli anlamsal analiz kullanıyorum. Bu belgeleri k-araçlarını kullanarak iki gruba ayırmak istiyorum.

Birkaç yıl önce, bunu Python'un gensim'ini kullanarak ve kendi k-ortalama algoritmamı yazdım. Öklid mesafesini kullanarak küme sentroidlerini belirledim, ancak daha sonra her bir belgeyi sentroidin kosinüs benzerliğine dayanarak kümelendirdim. Çok iyi çalışıyor gibiydi.

Şimdi bunu çok daha büyük bir belgeler topluluğunda yapmaya çalışıyorum. K-araç yakınsama değil ve kodumda bir hata olup olmadığını merak ediyorum. Son zamanlarda, kosinüs benzerliğini kullanarak kümelenmemeniz gerektiğini okudum , çünkü k-araçları sadece Öklid mesafesinde çalışır. Bahsettiğim gibi, daha küçük test durumumda işe yaradı.

Şimdi LSA Wikipedia sayfasında bununla karşılaşıyorum :

Belgeler ve terim vektörü gösterimleri, kosinüs gibi geleneksel kümeleme algoritmaları kullanılarak, kosinüs gibi benzerlik ölçümleri kullanılarak kümelenebilir.

Peki hangisi? Kosinüs benzerliğini kullanabilir miyim?


Bu konu gerçekten bu sitede uzun süredir devam ediyor. Son soru: stats.stackexchange.com/q/120085/3277 (oradaki diğer bağlantılara bakın). Çok ilginç olan , kosinüsleri işleyen k-araçlarını nasıl uyguladığınızdır. Sorgunuzda algoritmanızı açıklarsanız, yanıtlayanlara yardımcı olur.
ttnphns

@ttnphns Aslında Öklid mesafesini (her bir boyutun ortalaması) kullanarak küme sentroidleri oluşturdum. Ancak daha sonra her belgeyi Öklid mesafesinden ziyade kosinüs benzerliğine dayalı bir kümeye tayin ettim.
Jeff

I then assigned each document to a cluster based on cosine similarity- Bir doktor ve bir sentroid arasındaki kosinüs? Ve tüm dokümanlar atandıktan sonra, sentroidleri normal (Öklid) bir şekilde güncellersiniz, çünkü uzaydaki dokümanların koordinatları bilinir. Öyle mi?
ttnphns

1
h

1
Düşünmeye başladığım, uzayda değil, bir küre üzerinde gerçekleştirilen k-araçlarını arıyor olabileceğinizdir. Açısal k-demek, tabiri caizse. Sanırım bu mümkün, ama asla böyle okumadım ya da kullanmadım.
ttnphns

Yanıtlar:


4

Evet, kullanabilirsiniz. Sorun şu ki, kosinüs benzerliği bir mesafe değildir, bu yüzden buna benzerlik denir. Bununla birlikte, burada açıklandığı gibi bir mesafeye dönüştürülebilir .

Aslında, sadece herhangi bir mesafeyi kullanabilirsiniz. Yüksek boyutlu uzaylarda mesafe fonksiyonlarının özellikleri üzerine çok güzel bir çalışma (genellikle bilgi alımında olduğu gibi), Yüksek Boyutlu Uzaydaki Mesafe Metriklerinin Şaşırtıcı Davranışı Üzerine . Yine de Öklid ile kosinüsü karşılaştırmaz.

Yüksek boyutlu alanlarda, her iki mesafenin de benzer şekilde davrandığını iddia ettikleri bu çalışmaya rastladım .


1
Bu cevap nasıl yapılacağını açıklarsa iyi bir cevap olabilir Yes, you can use it. (Benim benzer Öklid uzaklığının dönüştürme kosinüse fikir mi cevap ?)
ttnphns

K-araçlarına ilişkin anlayışım farklı. Öklid mesafesi ile sınırlı değildir ( stat.uni-muenchen.de/~leisch/papers/Leisch-2006.pdf ). Ayrıca ikinci referansımı veya bu R paketine de bakın ( cran.r-project.org/web/packages/cclust/cclust.pdf ). Gerçekten wikipedia sitesinde gibi demek istedim. Sadece bir mesafe fonksiyonu gerekir. Buna "açısal benzerlik" derler.
jpmuc

1
Belki (ve kağıdı paylaştığın için teşekkürler!). Ama sonra, k-araçlarından farklı olan k-araçlarının tüm bu "modifikasyonları", Centroid'i Öklid uzayında aritmetik ortalama olarak tanımlamaması nedeniyle k-aracı olarak adlandırılmamalıdır .
ttnphns

1

Öklid mesafesi belgeleri veya belge kümelerini karşılaştırmak için uygun değildir. Belgeleri karşılaştırırken, önemli bir sorun belge uzunluğuna göre normalleştirmektir. Kosinüs benzerliği bu tür bir normalleşmeyi başarır, ancak öklid mesafesi yapmaz. Dahası, belgeler genellikle çok terimli olasılık dağılımları (sözlerin torbası olarak adlandırılır) olarak modellenir. Kosinüs benzerliği, benzerlik için istatistiksel olarak doğrulanmış bir yöntem olan JS-diverjansına bir yaklaşımdır. Belgeler ve kosinüs ile ilgili önemli bir konu, sayılara uygun tf-idf normalizasyonu uygulanması gerektiğidir. LSA temsilini türetmek için gensim kullanıyorsanız, gensim zaten bunu yapar.

2 küme kullanım durumunuz için bir başka yararlı gözlem, LSA'nın sadece SVD olması nedeniyle rastgele olmayan iyi bir başlatma yapabilmenizdir. Bunu aşağıdaki şekilde yaparsınız:

  • Her belgenin sadece ilk bileşenini alın (ilk bileşenin en iyi tekil vektör olduğu varsayılarak).
  • Her bir değer için belge kimliklerini izleyerek bu değerleri sıralayın.
  • küme 1 = örneğin 1000 (veya daha fazla) değere karşılık gelen belge kimlikleri
  • küme 2 = en alta karşılık gelen belge kimlikleri, örneğin 1000 (veya daha fazla) değer
  • sadece her küme için vektörleri ortalayın ve vektör uzunluğuna göre normalleştirin.
  • Şimdi bu başlatmaya k-araçlarını uygulayın. Bu sadece yineleme (1) mevcut en yakın sentroide belge atama ve (2) yeniden atamadan sonra yeni sentroidlerin ortalamasını alma ve normalleştirme anlamına gelir

1

Evet, vektör ortalamasına göre aynı centroid güncellemesi çalışıyor.

Bu makalenin 2.2. Bölümündeki m = 1 durumuna bakınız . w'ler ağırlıklardır ve ağırlıklar temel k-ortalama algoritmaları için 1'dir.

Bu makale, k-mean için maliyet fonksiyonunu en aza indiren koşulu belirlemek için Cauchy-Schwartz eşitsizliğinin özelliklerini kullanmaktadır.

Ayrıca kosinüs benzerliğinin bir vektör mesafesi olmadığını unutmayın. Kosinüs benzerliği . (Bu iyi bir arama terimi olmalıdır.) Eğer bölüm güncellemek zaman Dolayısıyla, aradığınız arg maxaksine arg min.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.