svmが同じデータのディシジョンツリーほど良くないのはなぜですか?


8

私は機械学習に慣れていないため、scikit-learn(sklearn)を使用して分類の問題に対処しようとしています。DecisionTreeSVMはどちらも、この問題の分類子をトレーニングできます。

私はとを使用sklearn.ensemble.RandomForestClassifiersklearn.svm.SVCて、同じトレーニングデータを適合させます(エントリあたり50個の機能を持つ約500,000エントリ)。RandomForestClassifierは約1分で分級して出てきます。SVCは、 24時間以上を使用し、まだ実行し続けます。

SVCのパフォーマンスが非効率的であるのはなぜですか?データセットはSVCに対して大きすぎますか?あるSVCは、このような問題のために不適切な?

回答:


12

可能性としては、不適切なカーネル(たとえば、非線形問題の線形カーネル)の使用、カーネルの選択の悪さ、および正則化ハイパーパラメーターが含まれます。適切なモデルの選択(カーネルとハイパーパラメーターのチューニングの選択は、SVMから良好なパフォーマンスを得る鍵です。正しく使用した場合にのみ、良好な結果が得られると期待できます)。

SVMはトレーニングに長い時間がかかることがよくあります。これは、カーネルと特に正則化パラメーターの選択が、ほとんどすべてのデータがサポートベクターになることを意味する場合に特に当てはまります(SVMのスパースは便利な副産物であり、それ以上はありません)。

最後に、無料ランチの定理は、どの分類システムにも他のアプリケーションよりも先験的な優位性はないと言うため、特定のタスクに最適な分類システムはそれ自体がタスクに依存します。ただし、SVMには、多くの問題に対して他の多くのアプローチよりも優れた選択である可能性が高いことを示唆する説得力のある理論があります。


2
1.問題が線形であるかどうかはどうすればわかりますか?訓練データによると?2.「カーネルを適切に選択し、ハイパーパラメータを調整する方法」に関する資料をいくつか教えていただけますか?
Java Xu

一般に、問題が線形であることを確実に知ることはできませんが、非線形分類子が常に非線形分類子よりもパフォーマンスが優れていることは、それが非線形タスクであることを明確に示しています。
Dikran Marsupial 2013

カーネルと正則化パラメーターを調整するには、グリッド検証またはいくつかの数値最適化方法(私はNelder Meadシンプレックスを使用します)を使用して、相互検証が妥当なアプローチです。SVMの場合、「スパンバウンド」は、leave-on-out相互検証エラーの有用な近似を提供します。ネストされた交差検証のようなものを使用する必要があることに注意してください。公平なパフォーマンス推定も必要です(他の質問に対する回答を参照してください)。
Dikran Marsupial 2013

1
500kデータポイントは、カーネルSVMがトレーニングするのにしばらく時間がかかる可能性が高いほど大きな問題です。線形分類器のみをサポートしますが、実行速度ははるかに速いLinearSVM、またはより高速なSGD分類器を試す価値があります。それがうまくいかない場合は、カーネル近似を使用してみてください。これにより、線形分類器を使用して非線形分類器を近似できます。つまり、ランダムフォレストも優れたアルゴリズムであり、データに最適な場合があります。
Dougal 2013

17

ディシジョンツリーとランダムフォレストは、実際には非常に優れた分類子です。SVM(サポートベクターマシン)はより複雑であるように見えますが、実際にはパフォーマンスが向上するわけではありません。

Rich Caruanaによる論文「教師付き学習アルゴリズムの経験的比較」は、 10の異なるバイナリ分類器、SVM、ニューラルネットワーク、KNN、ロジスティック回帰、ナイーブベイズ、ランダムフォレスト、ディシジョンツリー、バギングされたディシジョンツリー、ブーストされたディシジョンツリー、ブートストラップされたディシジョンを比較しました11の異なるデータセットのツリーと、8つの異なるパフォーマンスメトリックの結果を比較しました。

彼らは、ブーストされた決定木が最初にランダムフォレスト、2番目にBagged決定木、次にSVM

結果は、実際に分類しているクラスの数にも依存します。


5

「問題が線形かどうか」バイナリ分類の問題では、データセットを超平面で分離できる場合、それは線形問題です。

データセットが線形分離可能でない場合、線形分類子を試して、存在しない超平面を見つけても、アルゴリズムが永久に実行されているように見えることがあります。

1つの提案:データのごく一部をサンプリングし、これらのアルゴリズムを試して、小さなデータセットで機能するかどうかを確認できます。次に、データセットを増やして、これらの問題がいつ発生するかを確認します。

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