libsvmとliblinearはどちらもサポート ベクター マシンを実装するソフトウェア ライブラリです。違いは何ですか?また、この違いにより、liblinear が libsvm よりも高速になるのはなぜですか?
3 に答える
実際には、libsvm に実装されている SMO アルゴリズム (カーネルと線形 SVM の両方で機能する) の複雑さは O(n^2) または O(n^3) ですが、liblinear は O(n) ですが、カーネル SVM をサポートしていません。n はトレーニング データセットのサンプル数です。
したがって、中規模から大規模の場合は、カーネルを忘れて liblinear を使用します (または、LaSVMなどの近似カーネル SVM ソルバーを調べてください)。
編集: 実際には、libsvm は 10k サンプルで非常に遅くなります。
SVM はサポート ベクター マシンであり、基本的には線形分類器ですが、多くのカーネル変換を使用して事前に非線形問題を線形問題に変換します。
上記のリンクから、これらのカーネル変換がなければ、liblinear はほとんど同じものであるように見えます。したがって、彼らが言うように、カーネル変換が必要ない場合 (ドキュメントの分類について言及されています)、より高速になります。
から: 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=710
主な考え方は、liblinear は線形分類を処理するように最適化されている (つまり、カーネルは必要ない) ということですが、線形分類は libsvm の多くの機能の 1 つにすぎないため、論理的には liblinear とは一致しない可能性があります。分類精度。明らかに、私はここでいくつかの広範な一般化を行っています。違いの正確な詳細は、おそらく上記でリンクした論文と、libsvm Web サイトの対応する libsvm のユーザー ガイドで説明されています。