“Boyutsallığın laneti” gerçek verilerde gerçekten var mı?


17

"Boyutsallığın laneti" nin ne olduğunu anlıyorum ve bazı yüksek boyutlu optimizasyon problemleri yaptım ve üstel olasılıkların zorluklarını biliyorum.

Ancak, gerçek boyutların çoğunda "boyutsallığın laneti" mevcutsa şüphe ediyorum.

Binlerce özelliğe sahip veri toplayabiliriz ancak özelliklerin binlerce boyuta sahip bir alana tam olarak yayılması mümkün değildir. Boyut azaltma tekniklerinin bu kadar popüler olmasının nedeni budur.

Başka bir deyişle, verilerin üstel bilgi seviyesini içermemesi çok muhtemeldir, yani birçok özellik yüksek derecede ilişkilidir ve birçok özellik 80-20 kurallarını karşılar (birçok örnek aynı değere sahiptir).

Böyle bir durumda, sanırım KNN gibi yöntemler hala oldukça iyi işleyecektir. (Çoğu kitapta "boyutsallığın laneti" boyut> 10'un sorunlu olabileceğini söylüyor. Demolarında entropinin gerçekten yüksek olduğu tüm boyutlarda düzgün dağılım kullanıyorlar. Gerçek dünyada bunun olacağından şüpheliyim.)

Gerçek verilerle ilgili kişisel deneyimim, "boyutsallığın laneti" nin şablon yöntemini (KNN gibi) çok fazla etkilememesi ve çoğu durumda ~ 100 boyutları hala işe yarayacaktır.

Bu diğer insanlar için geçerli mi? (5 yıl boyunca farklı sektörlerde gerçek verilerle çalıştım, "tüm mesafe çiftlerinin benzer değerlere sahip olduğunu" kitapta açıklandığı gibi gözlemlemedim.)


1
Görüntüleri ve görüntü analizini özellikle hariç tuttuğunuz için, bu alanın boyutsallığın lanetiyle oldukça düzenli bir şekilde uğraştığını söyleyerek yorumları bir tıklatacağım. Bir overfit çözümü elde etmek çok kolay.
Ashe

7
İkili / kukla / tek sıcak kodlanmış kategorik özellikler kolayca mesafe tabanlı bir modeli
patlatabilir

2
Bir meslektaşım güneş gözlüğü satışı ile çalıştı. Oldukça fazla özellik, çok sayıda olası seviyeyle (örneğin markalar, gözlüklerin farklı bölümlerinin malzemeleri vb.) Kategorikti. CoD'den kesinlikle korkuyordum, ancak belirli bir veri kümesinde mevcut olup olmadığını söylemek her zaman zor, artı muhtemelen bu özel analiz türünde uzman olmamakla birlikte çok fazla standart numara yapmadık.
S.Kolassa - Monica'yı

@StephanKolassa Peki, güneş camı kullanım durumunda mesafe tabanlı yöntemler işe yaradı mı?
Haitao Du

Aşırı iyi değil. Çok başarılı bir proje değildi.
S.Kolassa - Monica'yı Yeniden Başlat

Yanıtlar:


15

Bu makale (1) , boyutsallığın lanetine bir karşıtlık olarak üniform olmama nimetini tartışmaktadır . Ana fikir, verilerin özellik alanı içinde düzgün bir şekilde dağılmamasıdır, böylece verilerin düzenlenme biçimlerini belirleyerek çekiş elde edilebilir.

(1) Pedro Domingos, "Makine Öğrenmesi Hakkında Bilmeniz Gereken Birkaç Yararlı Şey"


7

Makine öğreniminde boyutsallığın laneti, sahip olduğunuz birkaç veri noktası arasında boş alanın patlaması sorunudur. Düşük manifold verileri bunu daha da kötüleştirebilir. İşte 1 komşu ile kNN yapmaya çalıştığım 10000 örnek ile bir örnek kurulum.

from numpy.random import normal
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import precision_score
import matplotlib.pyplot as plt
import numpy as np
from math import sqrt
from scipy.special import gamma

N=10000
N_broad=2
scale=20

dims=[]
precs=[]


def avg_distance(k):
    return sqrt(2)*gamma((k+1)/2)/gamma(k/2)

for dim in range(N_broad+1,30):
    clf = KNeighborsClassifier(1, n_jobs=-1)

    X_train=np.hstack([normal(size=(N,N_broad)), normal(size=(N,dim-N_broad))/avg_distance(dim-N_broad)/scale])
    y_train=(X_train[:,N_broad]>0).astype(int)
    clf.fit(X_train, y_train)

    X_test=np.hstack([normal(size=(N,N_broad)), normal(size=(N,dim-N_broad))/avg_distance(dim-N_broad)/scale])
    y_test=(X_test[:,N_broad]>0).astype(int)
    y_test_pred=clf.predict(X_test)

    prec=precision_score(y_test, y_test_pred)
    dims.append(dim)
    precs.append(prec)
    print(dim, prec)

plt.plot(dims, precs)
plt.ylim([0.5,1])
plt.xlabel("Dimension")
plt.ylabel("Precision")
plt.title("kNN(1) on {} samples".format(N))
plt.show()

Tamamen düzgün dağılımları sevmediniz, bu yüzden bunu scaleilk iki koordinatın 2D düzleminin etrafına serpilmiş daha küçük boyutlara sahip (azaltılmış ) bir 2D manifold yaptım . Olduğu gibi, daha küçük boyutlardan biri öngörücüdür (bu boyut pozitif olduğunda etiket 1'dir).

Hassasiyet artan boyutla birlikte hızla düşer.kNN hassasiyeti

Tabii ki, hassasiyet = 0.5 rasgele tahmin olacaktır. Bir uçaktan daha karmaşık bir karar yüzeyi ile daha da kötüleşecekti.

KNN topları pürüzsüz bir hiper düzlemi araştırmakta yardımcı olmak için çok seyrek gibi. Yüksek boyutları ile giderek daha yalnız hissederler.

Öte yandan, SVM gibi yöntemler küresel bir görüşe sahiptir ve daha iyisini yapar.


5

Örneğin zaman serilerini (ve görüntüler ve ses) düşünün . Sensör okumaları (Nesnelerin İnterneti) çok yaygındır.

Boyutsallığın laneti düşündüğünüzden çok daha yaygındır. Orada büyük bir artıklık var, aynı zamanda çok fazla gürültü var.

Sorun, birçok insanın gerçek verilerin bu zorluklarından kaçınması ve sadece aynı kirazla kaplı UCI veri setlerini tekrar tekrar kullanmasıdır.


Evet katılıyorum. Bir dizi modeli söyleP(X)=P(X1)Πn=2N-P(Xn|Xn-1). Markov özelliği, boyutsallığın lanetini düzenli hale getirmenin ve üzerinden gelmenin bir yoludur. Ancak zaman serileri görüntü veya videoya benzer.
Haitao Du

1
Belki en gerçek dünya veri olan resim, video ve zaman serileri gibi sensörlerden?
QUIT - Anony-Mousse

2
@ hxd1011 markov özelliği, gerçek verilerle ilgisi olmayan bir soyutlamadır!
Sycorax, Reinstate Monica'yı

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.