「次元の呪い」は実際のデータに本当に存在しますか?


17

「次元の呪い」とは何かを理解し、高次元の最適化問題をいくつか実行し、指数関数的可能性の課題を知っています。

しかし、ほとんどの現実世界のデータに「次元の呪い」が存在するかどうかは疑わしい(画像やビデオはしばらく置いておきましょう。顧客の人口統計データや購入行動データなどのデータについて考えています)。

数千の機能を持つデータを収集することはできますが、機能が数千の次元を持つ空間に完全に広がることはほとんど不可能です。これが、次元削減手法が非常に人気がある理由です。

言い換えると、データには指数レベルの情報が含まれていない可能性が非常に高いです。つまり、多くの特徴が高度に相関しており、多くの特徴が80〜20のルールを満たしています。

そのような場合、KNNのようなメソッドはまだ十分に機能すると思います。(ほとんどの本では、「次元の呪い」は次元> 10が問題になる可能性があると述べています。デモでは、エントロピーが非常に高いすべての次元で均一分布を使用します。

私の実際のデータの経験では、「次元の呪い」はテンプレートメソッド(KNNなど)にあまり影響を与えず、ほとんどの場合、次元〜100でも機能します。

これは他の人にも当てはまりますか?(私は本で説明されているように、「すべての距離のペアが同様の値を持っている」ということを観察したことはありませんでした。


1
画像と画像解析を特に除外したので、このフィールドは次元の呪いを非常に定期的に処理していると言って、コメントにプラグインを追加します。オーバーフィットソリューションを取得するのは非常に簡単です。
アッシュ

7
バイナリ/ダミー/ワンホットでエンコードされたカテゴリ機能は、距離ベースのモデルを簡単に爆破できます
シャドウトーカー

2
私の同僚は、サングラスの販売に携わっています。かなりの数の機能がカテゴリー化されており、多数の可能なレベル(たとえば、ブランド、メガネのさまざまな部分の材料など)がありました。私は間違いなくCoDを恐れていましたが、特定のデータセットに存在するかどうかを言うのは常に難しいです。さらに、この特定の分析タイプの専門家ではなく、おそらく多くの標準的なトリックを実行しませんでした。
S. Kolassa -復活モニカ

@StephanKolassaでは、距離ベースの方法はサングラスのユースケースで機能しましたか?
ハイタオデュ

あまりよくない。それはあまり成功したプロジェクトではありませんでした。
S. Kolassa -復活モニカ

回答:


15

この論文(1)は、次元の呪いへの対抗としての不均一性の祝福について議論しています。主なアイデアは、データが機能空間内に均一に分散されていないため、データが編成される方法を特定することで牽引力を得ることができるということです。

(1)ペドロ・ドミンゴス、「機械学習について知っておくべきいくつかの有用なこと」


7

機械学習における次元の呪いは、多くの場合、少数のデータポイント間の空きスペースを爆発させる問題です。多様なデータが少ないと、さらに悪化する可能性があります。これは、1つの近傍でkNNを実行しようとする10000サンプルのセットアップ例です。

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()

あなたは完全に均一な分布が好きではなかったので、これをscale最初の2つの座標の2D平面に散らばる小さな寸法(で縮小)の2D多様体にしました。たまたま、小さいディメンションの1つが予測的です(そのディメンションが正の場合、ラベルは1です)。

寸法が大きくなると、精度は急速に低下します。kNN精度

もちろん、precision = 0.5はランダムな推測になります。飛行機よりも複雑な意思決定面では、さらに悪化します。

kNNボールがあまりにもまばらであるため、滑らかな超平面の探査に役立ちません。より高い次元で、彼らはますます孤独を感じます。

一方、SVMのようなメソッドにはグローバルビューがあり、はるかに優れています。


5

たとえば、時系列(および画像、音声)を考慮してください。センサーの読み取り値(モノのインターネット)は非常に一般的です。

次元の呪いは、あなたが考えるよりもはるかに一般的です。そこには大きな冗長性がありますが、多くのノイズもあります。

問題は、多くの人々が単純に実際のデータのこれらの課題を回避し、何度も何度も繰り返しチェリーチェリーのUCIデータセットを使用することです。


P(X)=P(X1)n=2NP(Xn|Xn1)

1
たぶん、ほとんどの現実世界のデータ、画像、ビデオ、時系列のようなセンサーからのものでしょうか?
アノニムース

2
@ hxd1011 markovプロパティは、実際のデータとは関係のない抽象化です!
シコラックスは、モニカを復活させる

0

Breimanによる素晴らしい記事「Statistical Modeling:the two cultures」があります。彼は、データを扱う科学者の2つのグループと、それぞれが「次元」をどのように見ているかを説明します。あなたの質問への答えは、あなたがどのグループにいるかによって異なります。紙をチェックしてください。


おかげ@Zamir Akimbekov、大きな議論があり、ここで、別の興味深い論文こちら
ハイタオ・ドゥ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.