web-dev-qa-db-ja.com

LibSVMとLibLinearの違いは何ですか

libsvm および liblinear は、どちらもサポートベクターマシンを実装するソフトウェアライブラリです。違いは何ですか?そして、その違いはどのようにしてliblinearをlibsvmよりも速くするのでしょうか?

28
ukessi

実際には、libsvmに実装されているSMOアルゴリズム(カーネルと線形SVMの両方で機能する)の複雑さはO(n ^ 2)またはO(n ^ 3)ですが、liblinearはO(n)ですがカーネルSVMをサポートしていません。 nは、トレーニングデータセット内のサンプルの数です。

したがって、中規模から大規模の場合は、カーネルを忘れてliblinearを使用します(または、 LaSVM などの近似カーネルSVMソルバーを参照してください)。

編集:実際には、libsvmは10kサンプルで痛々しいほど遅くなります。

36
ogrisel

SVMは サポートベクターマシン です。これは基本的に線形分類器ですが、多くのカーネル変換を使用して、非線形問題を事前に線形問題に変換します。

上記のリンクから、これらのカーネル変換がなければ、liblinearはほとんど同じもののようです。したがって、彼らが言うように、カーネル変換が必要ない場合(彼らはドキュメント分類について言及しています)、それはより速くなります。

10
mlepage

差出人: http://www.csie.ntu.edu.tw/~cjlin/papers/liblinear.pdf

これは、L2正則化ロジスティック回帰(LR)、L2損失およびL1損失線形サポートベクターマシン(SVM)をサポートします(Boser et al。、1992)。人気のSVMライブラリLIBSVMの多くの機能を継承しています

また、作成者の1人からの有用な情報もここに表示される場合があります。 http://agbs.kyb.tuebingen.mpg.de/km/bb/showthread.php?tid=71

主なアイデアは、liblinearは線形分類を処理するために最適化されている(つまり、カーネルは必要ない)のに対し、線形分類は1つにすぎないということです。 libsvmの多くの機能があるため、論理的には分類精度の点でliblinearと一致しない場合があります。明らかに、私はここでいくつかの大まかな一般化を行っています。違いの正確な詳細は、おそらく上記でリンクしたペーパーと、libsvmWebサイトからのlibsvmへの対応するユーザーガイドでカバーされています。

3
TakeS