web-dev-qa-db-ja.com

Rでe1071パッケージの「svm」を使用してマルチクラス分類を実行する方法

e1071パッケージのsvm関数を使用してマルチクラス分類を実行したいと思います。しかし、svmのドキュメントから私が知ったことから、それは二項分類しか実行できません。ビネットドキュメントでは、マルチクラス分類について次のように説明しています。 "マルチクラス分類を可能にするために、libsvmは、すべてのバイナリサブ分類子をフィッティングし、次の方法で正しいクラスを見つけることにより、1対1の手法を使用します。投票メカニズム "。
私がまだ理解していないのは、Rでe1071svmを使用してマルチクラス分類を実行できるかどうかです。はいの場合、irisデータセットでそれを行う方法を説明してください。

11
StrikeR

アイリスデータセットには、「Iris setosa」、「Iris virginica」、「Irisversicolor」の3つのクラスラベルが含まれています。 svmでバランスの取れた1対1の分類戦略を採用するには、3つのバイナリ分類器をトレーニングできます。

最初の分類器のトレーニングセットには、「Irissetosa」と「Irisvirginica」のインスタンスのみが含まれています。 2番目の分類器のトレーニングセットには、「Irissetosa」と「Irisversicolor」のインスタンスのみが含まれています。 3番目の分類子のトレーニングセット(もうご存知だと思いますが)には、「Irisvirginica」と「Irisversicolor」のインスタンスのみが含まれています。

不明なインスタンスを分類するには、3つの分類子すべてを適用します。次に、単純な投票戦略で最も頻繁に割り当てられるクラスラベルを選択できます。より高度な方法では、割り当てられた各クラスラベルのsvm信頼スコアを考慮することもできます。

編集(この原則はsvmですぐに機能します):

# install.packages( 'e1071' )
library( 'e1071' )
data( iris )
model <- svm( iris$Species~., iris )
res <- predict( model, newdata=iris )
21
idleherb

R文書によると、「kレベル、k> 2のマルチクラス分類の場合、libsvmは「one-against-one」アプローチを使用します。このアプローチでは、k(k-1)/ 2のバイナリ分類子がトレーニングされます。適切なクラスが見つかります。投票スキームによって。」

1
Hima Bindu