サポートベクターマシンを大きなデータで使用できますか?


13

SVMに関する知識が限られているため、短くて太いデータマトリックス(機能が多く、インスタンスが多すぎない)には適していますが、ビッグデータには適していません。X

1つの理由は、カーネルマトリックスがマトリックスであることを理解しています。ここで、はデータ内のインスタンスの数です。100Kデータと言った場合、カーネル行列は要素を持ち、約80Gのメモリを必要とする場合があります。Kn×nnK1010

大きなデータで使用できるSVMの変更はありますか?(100Kから100万のデータポイントのスケールで言うと?)


単に「大きなデータ」を超えてSVMの目的を議論する場合、潜在的な回答者を助けるでしょう。とはいえ、クエリについて他に何も知らない場合、SVMを分割統治アルゴリズムに活用できない理由はありますか?
マイクハンター

SVMを何に使用していますか?別の方法を使用できますか?
トム

回答:


12

先に述べたように、カーネルマトリックスを格納するには、データポイントの数に応じて2次スケーリングするメモリが必要です。従来のSVMアルゴリズムのトレーニング時間も、データポイントの数に応じて超線形にスケーリングされます。そのため、これらのアルゴリズムは大きなデータセットには適していません。

可能なトリックの1つは、カーネル化されたSVMを線形SVMとして再構成することです。カーネルマトリックスの各要素は、データポイントと間のドット積を、それらを(おそらく非線形に)特徴空間にマッピングした後を表します:。機能空間マッピングKijxixjKij=Φ(xi)Φ(xj)Φカーネル関数によって暗黙的に定義され、カーネル化されたSVMは特徴空間表現を明示的に計算しません。フィーチャスペースは非常に高次元である場合や、無限次元でさえある場合があるため、これは小規模から中規模のデータセットに対して計算上効率的です。しかし、上記のように、これは大規模なデータセットでは実行不可能になります。代わりに、データを非線形に特徴空間に明示的にマッピングし、特徴空間表現で線形SVMを効率的にトレーニングできます。特徴空間マッピングは、与えられたカーネル関数を近似するように構築できますが、「完全な」特徴空間マッピングよりも少ない次元を使用します。大規模なデータセットの場合、これでも豊富な特徴空間表現を提供できますが、データポイントよりも次元がはるかに少なくなります。

カーネル近似への1つのアプローチは、Nyström近似を使用します(Williams and Seeger 2001)。これは、小さい部分行列を使用して、大きい行列の固有値/固有ベクトルを近似する方法です。別のアプローチはランダム化された機能を使用し、「ランダムキッチンシンク」と呼ばれることもあります(Rahimi and Recht 2007)。

大きなデータセットでSVMをトレーニングするもう1つの方法は、最適化問題を一連の小さなサブ問題で近似することです。たとえば、主問題で確率的勾配降下法を使用することは(他の多くの方法の中でも)1つの方法です。最適化の面で多くの作業が行われました。Menon(2009)は良い調査をしている。

参考文献

ウィリアムズとシーガー(2001)。Nystroemメソッドを使用してカーネルマシンを高速化する。

Rahimi and Recht(2007)。大規模なカーネルマシン用のランダムな機能。

メノン(2009)。大規模サポートベクターマシン:アルゴリズムと理論。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.