2015-01-12 5 views
16

documentationからscikit-learnは、データセット上でマルチクラス分類を実行できるクラスであるSVC、NuSVC、およびLinearSVCを実装します。一方、私はまた、scikitについて学び、ベクトルマシンアルゴリズムをサポートするためにlibsvmを使用することも学びました。私はSVCとlibsvmのバージョンの違いについて混乱しています。違いは、SVCはサポートされているベクトルマシンアルゴリズムであり、liblvmはバイナリクラスの問題です。誰も私がこの違いを理解するのを助けることができますか?scikit-learnにおけるSVCとSVMの違いは何ですか?

+1

docstringも参照してください。http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC SVCはlibsvmを囲む単なるラッパーです。 –

答えて

15

これらは同じアルゴリズムの異なる実装です。 SVMモジュール(SVC、NuSVCなど)はlibsvmライブラリのラッパーで、異なるカーネルをサポートし、LinearSVCliblinearに基づいており、リニアカーネルしかサポートしていません。だから、:

SVC(kernel = 'linear') 

は理論的には「同等」である:あなたは異なる結果が得られます実装が実際に異なっているので

LinearSVC() 

、最も重要なものLinearSVCだけ線形カーネルをサポートしていることであること、より速く、ずっと良いスケールにすることができます。

+6

SVCは1対1戦略を使用するため、これらは実際には同等ではありませんが、LinearSVCはマルチクラスに対して1対対立戦略を使用します。また、LinearSVCのデフォルト値は、L2損失(二乗ヒンジ損失)です。 –

+1

アンドレアスは彼らが同じではないことを指摘しています。私が「同等」と言ったとき、私は「似ている」または「それに対応している」という意味でした。実装が異なるとは、異なるデフォルトと他の多くの詳細を意味します。 – elyase

+0

マルチクラスの分類のために、あなたは私に(1対1対1対の)あなたにお勧めしていることを、あなたはSVCでうまくこの問題を攻撃できると思いますか? – tumbleweed

関連する問題