統計ER

統計ソフトRの使い方を中心に、統計解析方法の解説をするブログ。ありそうでなかなか見つからないサンプルサイズ計算などニッチな方法について紹介しています。

統計ソフトRでサポートベクターマシンを使ってみよう!

ブログランキングに参加しています。
まずはぽちぽちっとお願いします。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
にほんブログ村 科学ブログ 数学へ

統計ソフトRでサポートベクター分類器・サポートベクターマシンを使って機械学習させるにはどうすればよいか?

サポートベクター分類器・サポートベクターマシンとは?

サポートベクター分類器とか、サポートベクターマシンとか、何?という場合はまず過去記事参照。

toukeier.hatenablog.com

統計ソフトRでサポートベクターマシンを使うのに必要なパッケージは?

e1071パッケージを使う。

まず最初一回インストール。

install.packages("e1071")

呼び出して使う準備をする。

library(e1071)

統計ソフトRを使ってサポートベクター分類器で分類するには?

例として、irisデータで分類器を作ってみる。

svm()という関数を使う。

Speciesを分類するサポートベクター分類器を作って分類させてみる。

kernel="linear"で、サポートベクター分類器を指定している。

cross=5は5-fold cross validationを実施するように指示している。

model <- svm(Species ~ ., data = iris, kernel="linear", cross=5)

予測値を算出し、Confusion matrixを作り、正答率を計算する。

pred <- fitted(model)
(svc.confusion <- table(iris$Species, pred))
sum(diag(svc.confusion))/sum(svc.confusion)

誤分類は150例中3例、正答率は96.7%だった。

> (svc.confusion <- table(iris$Species, pred))
            pred
             setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         46         4
  virginica       0          1        49
> sum(diag(svc.confusion))/sum(svc.confusion)
[1] 0.9666667

統計ソフトRを使ってサポートベクターマシンで分類するには?

先ほどのkernel="linear"を削除して、デフォルト値を使う。

デフォルトはkernel="radial"で、これはradial basisという方法。

model1 <- svm(Species ~ ., data = iris, cross=5)
pred1 <- fitted(model1)
(svm.confusion <- table(iris$Species, pred1))
sum(diag(svm.confusion))/sum(svm.confusion)

誤分類は5例から4例に減り、正答率は97.3%になった。

> (svm.confusion <- table(iris$Species, pred1))
            pred1
             setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         48         2
  virginica       0          2        48
> sum(diag(svm.confusion))/sum(svm.confusion)
[1] 0.9733333

まとめ

統計ソフトRではe1071パッケージで、サポートベクターマシンを実行できる。 

関連記事

toukeier.hatenablog.com