テストエンジニアが機械学習してみた備忘録

広島とジト目が好きなテストエンジニアが機械学習に手を出した備忘録。

SVMで多クラス分類

ちょっとプライベートやらなんやらでしばらく時間が取れなかったのですが、久々に触ったので備忘録。 最後に取り組んだのがSVMによる2クラスの分類だったみたいなのですが、ちょうど多クラス分類をやってみたくなることがあったので、復習がてら取り上げてみます。

処理の仕方

とは言え、処理内容自体は2クラス分類の場合と同様で、教師データの正解ラベルの種類を増やすだけで良いみたいです。例えば前回、Kaggleのタイタニックに取り組んだ際は、生存か死亡かの2クラスを0と1で表していましたが、仮に無傷、負傷、死亡の3クラスに分けるとしたら、それぞれ0、1、2に割り当てて正解ラベルを作ることになります。

ovrとovo

多クラス分類する場合は、ovr (one-vs-rest)かovo (one-vs-one)かを選択します。両者の違いは以下の記事にまとまっています。

qiita.com

scikit-learnのドキュメントでもovrが推奨されており、デフォルトはovrのようです。

classification_report

多クラス分類の結果は、sklearn.metricsのclassification_reportを用いると簡単に評価できます。この辺りの話は、私も以前整理していました。

gratk.hatenablog.jp

参考