Bu sorunun başlığının her şeyi söylediğine inanıyorum.
Bu sorunun başlığının her şeyi söylediğine inanıyorum.
Yanıtlar:
Boyutsallığın Laneti'nin ne olduğunu düşünmeye yardımcı olur . CV üzerinde okumaya değer birkaç çok iyi konu vardır. İşte başlayacağınız yer: Bir çocuğa “boyutsallığın Laneti” ni açıklayın .
Bunun kümelenme için nasıl geçerli olduğu ile ilgilendiğinizi not ediyorum . araçlarının kareli Öklid mesafesini en aza indirmek için (sadece) bir arama stratejisi olduğunun farkında olmakta fayda var. Bunun ışığında, Öklid mesafesinin boyutsallığın laneti ile nasıl ilişkili olduğunu düşünmeye değer (bkz: Öklid mesafesi neden yüksek boyutlarda iyi bir metrik değildir? ).
Bu ipliklerin kısa cevabı, alan hacminin (boyutunun) boyut sayısına göre inanılmaz bir oranda artmasıdır. boyut bile (ki bu benim için çok 'yüksek boyutlu' gibi görünmüyor) laneti getirebilir. Verileriniz bu alana eşit olarak dağıtıldıysa, tüm nesneler birbirlerinden yaklaşık olarak eşit uzaklıkta olurlar. Ancak, @ Anony-Mousse bu soruya cevabında belirttiği gibi, bu fenomen verilerin alan içinde nasıl dizildiğine bağlıdır; eğer tek tip değilse, bu problemin olması gerekmez. Bu, düzgün dağılmış yüksek boyutlu verilerin hiç de çok yaygın olup olmadığı sorusuna yol açar (bkz: “boyutsallığın laneti” gerçek verilerde gerçekten var mı? ).
Önemli olan değişkenlerin sayısı (verilerinizin gerçek boyutsallığı) değil, verilerinizin etkili boyutsallığı olduğunu iddia ediyorum. boyutun araçları için 'çok yüksek' olduğu varsayımı altında , en basit strateji sahip olduğunuz özelliklerin sayısını saymak olacaktır. Ancak etkili boyutsallık açısından düşünmek istiyorsanız, bir temel bileşen analizi (PCA) yapabilir ve özdeğerlerin nasıl düştüğüne bakabilirsiniz. Varyasyonun çoğunun (genellikle veri kümenizin orijinal boyutlarını kesen) birkaç boyutta olması oldukça yaygındır. Bu , etkili boyutluluğunuzun aslında çok daha küçük olması anlamında ile ilgili bir sorun yaşamanızın daha az olası olduğu anlamına gelir .
Bundan daha kapsamlı bir yaklaşım çizgisinde kümenizdeki ikili mesafeler dağılımını incelemek olacağını @ hxd1011 onun önerdiklerini cevap . Basit marjinal dağılımlara bakmak, olası tekdüzelik hakkında bazı ipuçları verecektir. Tüm değişkenleri aralığında olacak şekilde normalleştirirseniz , çift mesafeler aralığında olmalıdır . Çok konsantre olan mesafeler sorun yaratacaktır; Öte yandan, çok modlu bir dağılım umutlu olabilir (cevabımda bir örnek görebilirsiniz: İkili ve sürekli değişkenlerin kümelenmede birlikte kullanılması? ).
Ancak, araçlarının 'işe yarayıp yaramayacağı' hala karmaşık bir sorudur. Verilerinizde anlamlı gizli gruplamalar olduğu varsayımı altında, bunların tüm boyutlarınızda veya varyasyonu en üst düzeye çıkaran yapılandırılmış boyutlarda (yani, temel bileşenler) bulunması gerekmez. Kümeler daha düşük varyasyon boyutlarında olabilir (bkz: Düşük varyansa sahip PC'lerin “faydalı” olduğu PCA örnekleri ). Yani, boyutlarınızın sadece birkaçında veya daha düşük varyasyonlu PC'lerde yakın ve iyi ayrılmış noktaları olan kümeleriniz olabilir, ancak araçlarına neden olabilecek yüksek varyasyonlu PC'lerde uzaktan benzer değildir. peşinde olduğunuz kümeleri görmezden gelmek ve bunun yerine sahte kümeleri seçmek için (bazı örnekler burada görülebilir:K-araçlarının dezavantajları nasıl anlaşılır ).
Cevabım K ile sınırlı değil, herhangi bir mesafe tabanlı yöntem için boyutsallık lanetimizin olup olmadığını kontrol edin. K-araçları bir mesafe ölçüsüne dayanır (örneğin, Öklid mesafesi)
Algoritmayı çalıştırmadan önce, mesafe metriği dağılımını, yani verilerin tüm çiftleri için tüm mesafe metriklerini kontrol edebiliriz. Eğer varsa, veri noktaları, sahip olmalıdır mesafe ölçümlerini. Veriler çok büyükse, bunun bir örneğini kontrol edebiliriz.
Boyutsallık sorununun laneti varsa, göreceğiniz şey, bu değerlerin birbirine çok yakın olmasıdır. Bu çok karşı-sezgisel görünüyor, çünkü her birinin her birine yakın veya uzak olduğu ve mesafe ölçüsünün temelde faydasız olduğu anlamına geliyor.
İşte size bu tür sezgisel sonuçları göstermek için bazı simülasyonlar. Tüm özellikler eşit olarak dağıtılmışsa ve çok fazla boyut varsa, her mesafe metriği olan yakın olmalıdır. . Eşit dağılımları diğer dağıtımlara değiştirmekten çekinmeyin. Normal dağılıma (değişiklik değiştirmek, örneğin, için ), bu çok sayıda boyutlara sahip başka bir numaraya yakınsar.runif
rnorm
İşte 1'den 500'e kadar boyut için simülasyon, özellikler 0'dan 1'e eşit dağılımdır.
plot(0, type="n",xlim=c(0,0.5),ylim=c(0,50))
abline(v=1/6,lty=2,col=2)
grid()
n_data=1e3
for (p in c(1:5,10,15,20,25,50,100,250,500)){
x=matrix(runif(n_data*p),ncol=p)
all_dist=as.vector(dist(x))^2/p
lines(density(all_dist))
}