11
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PythonのSVMで多クラス分類をする

Last updated at Posted at 2018-02-05

記事の主旨

「SVMで多クラス分類がしたい。__手持ちのデータ__を手軽に分類したい」
そんな人のための学習リソースを集めた記事です。

既存のライブラリ(scikit-learnとLIBSVM)を使って、ちゃちゃっと分類しちゃいましょう。

事前知識

SVMによる多クラス分類には、代表的な2種類の手法があります。

  • 1対1分類法(OvO:One versus the One)
  • 1対他分類法(OvR:One versus the Rest)

今回はこれらを2つの手法を扱ったライブラリを使います。
詳しくは、以下の記事が参考になります。

参考サイト:
 ・SVMを使いこなす! - 多クラス分類

scikit-learnでSVM (OvOとOvR)

1. scikit-learnライブラリをインストール

  • pip install scikit-learnでインストール

2. 簡単な事例でHello world!

付属データセットを用いた事例:
 ・OvOとOvRによる手書き文字の分類
 ・Jupyter Notebookを用いた手書き文字の分類

3. 手持ちのデータを当てはめる

公式リファレンス:
 ・sklearn.multiclass.OneVsOneClassifier(OvO)
 ・sklearn.multiclass.OneVsRestClassifier(OvR)

LIBSVMでSVM (OvOのみ)

1. LIBSVMライブラリをインストール

LIBSVMライブラリのダウンロード&インストール方法
 (makeコマンドでインストールするところまで)
LIBSVM - Github

2. 簡単な実装記事でHello world!

簡単なテストデータを用いた事例:
 ・SVM図解 + LIBSVM実装の手順とその解説

3. 手持ちのデータを当てはめる

公式情報(英語):
 ・公式サイト
 ・公式FAQ
公式情報の日本語訳
 ・[設定パラメータ表(日本語)]
(http://hy-adversaria.blogspot.jp/2011/04/pythonlibsvm.html)
 ・公式FAQの日本語訳(一部)

応用: 筆者がやったこと

1. 主成分分析に線形SVMを載せて描画

主成分分析(PCA)の第一主成分(PC1)と第二主成分(PC2)による超平面上に、線形SVMを描画しました。
PC1とPC2の寄与率が高い場合は、この図で色々と直感的な説明ができます。

参考サイト:
 ・Multilabel classification(公式)
 ・Intro to scikit-learn の Multilabel classification

2. 線形SVMの特徴量の重みをパス図として描画

多数の特徴量で構成した数式モデルを、パス図として描画しました。
視覚的にモデル式を説明したい時に使えます。

参考サイト:
 ・LIBSVMの学習モデルを用いた特徴量の重み計算スクリプト
  (学習モデルの取得方法はここに載ってます)
 ・パス図描画ライブラリ「graphviz」- Examples

11
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?