回答:
カーネルメソッドは、監視ありおよび監視なしの問題に使用できます。よく知られている例は、それぞれサポートベクターマシンとカーネルスペクトルクラスタリングです。
カーネルメソッドは、変換が通常非線形(およびより高次元の空間)である変換されたフィーチャ空間で線形アルゴリズムを使用する構造化された方法を提供します。このいわゆるカーネルトリックがもたらす主な利点は、合理的な計算コストで非線形パターンを見つけることができることです。
計算コストは妥当であるが、無視できないと述べたことに注意してください。カーネルメソッドは、通常、カーネルマトリックスし、はトレーニングインスタンスの数です。したがって、カーネルメソッドの複雑さは、入力次元の数ではなく、トレーニングインスタンスの数の関数です。たとえば、サポートベクターマシンはと間のトレーニングの複雑さを持っています。が非常に大きい問題の場合、この複雑さは現在非常に困難です。 N O (N 2)O (N 3)N
これにより、次元数が多く、サンプル数が比較的少ない(たとえば、100万未満)場合に、計算の観点からカーネルメソッドが非常に興味深いものになります。
関連:サポートベクターマシンの線形カーネルと非線形カーネル?
以下のために非常にのような高次元の問題、10000
あなたは質問に言及寸法、より高次元の特徴空間にマッピングする必要がしばしばありません。入力スペースはすでに十分です。そのような問題の場合、線形法は桁違いに速く、ほぼ同じ予測性能です。これらの方法の例は、LIBLINEARまたはVowpal Wabbitにあります。
高次元の入力空間に多くのサンプルがある場合、線形法は特に興味深いものです。サンプル数がしかない場合、非線形カーネルメソッドを使用するとコストも低くなります(が小さいため)。たとえば、次元のサンプルがある場合、カーネルメソッドは実行不可能です。N 5.000.000 10.000
多くのトレーニングインスタンスを含む低次元の問題(いわゆるラージスモール問題)では、線形法では予測精度が低くなる可能性があります。このような問題に対して、EnsembleSVMなどのアンサンブルメソッドは、標準のSVMと比較して大幅に削減された計算コストで非線形の決定境界を提供します。p
gamma
RBFカーネルでは、すべてのパラメーターを調整することが非常に重要です。の最適値gamma
は、入力次元の数に関連しています。最も一般的な調整アプローチは、相互検証です。gamma
次元削減の有無にかかわらず同じ値を使用した場合、おそらく間違いを犯しています。
grid.py
にlibsvm
パッケージ内を使用します。また、ほとんどの状況では、高次元データの場合、このレベルのgamma
ように常に非常に小さい0.00001
です。
EnsembleSVM
クロス検証手続きをマルチスレッド化する必要がありますか?そして、私は予測段階で、バッチとマルチスレッドまたはマルチマシンで巨大なデータを予測するのは良いことだと思いますか?
esvm-train
およびではデフォルトで有効になっていますesvm-predict
。マルチスレッドを無効にするには、これらのツールで次のフラグを使用します-threads 1
。
RBF
カーネルをで使用した場合libsvm
、それは常に過剰適合であり、分類器はテストセットで高精度を実現しますが、低精度を実現します。そして、分類器の前に次元削減を行い、削減された次元がトレーニングサンプルの数に近い場合、分類器はトレーニングとテストセットの間で良い利益を達成する可能性があります。結果はほとんどの経験的結果に適合しますか?ありがとう。