サポートベクターマシンを R で実装する方法について。
目次
サポートベクターマシンとは?
サポートベクターマシンについては、過去記事参照。
サポートベクターマシンとは?ごく簡単に解説
機械学習の分類手法の一つ、サポートベクターマシンとは何か? サポートベクターマシンの前に最大マージン分類器について サポートベクターマシンを説明する前に最大マ…
サポートベクターマシンを R で実装するのに必要なパッケージ
e1071パッケージを使う。
まず最初一回インストール。
install.packages("e1071")
呼び出して使う準備をする。
library(e1071)
サポートベクターマシンの前にサポートベクター分類器で分類する方法
例として、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パッケージで、サポートベクターマシンを実行できる。
関連記事
サポートベクターマシンとは?ごく簡単に解説
機械学習の分類手法の一つ、サポートベクターマシンとは何か? サポートベクターマシンの前に最大マージン分類器について サポートベクターマシンを説明する前に最大マ…
コメント