SVM(サポートベクターマシン)

ロジスティック回帰と同じように線形に分類を行うアルゴリズムです。 ですが、「カーネル化」という手法を組み合わせたカーネルSVMを使うことで非線形分離問題にも対応できます。

カーネルSVMも他の分類器と同様に、scikit-learnで簡単に扱えます。

from sklearn.svm import SVC
svm = SVC()
svm.fit(X, y)

この SVC も他の分類器と同様に、 .fit(...).score(...).predict(...) メソッドが使えます。

学習した領域をプロットすると、ロジスティック回帰とは違った非線形な領域が見られます。 このようにSVMは線形非分離な問題も解決できます。

実は前のクエストで、ロジスティック回帰でも線形非分離な問題を解決できると解説しました。 その時はXORデータの軸を掛け算して新しい軸を作って分類しました。

今回のカーネルSVMはそういった処理を自動でやってくれていると考えられます。 逐次自分で軸を追加するのは面倒なのでカーネルSVMを使うと良いでしょう。

詳細はscikit-learn公式ドキュメントの SupportVectorMachines を参照してください。 また、カーネルSVMのパラメーターのチューニングについてはこちらの SVM実践ガイド が参考になります。

詳しくは、sklearn.svm.SVCを参照ください。