私のデータは、e1071パッケージからRにsvmで奇妙な結果が生成されたので、R svmがWEKA(またはPython)と同じ結果を生成できるかどうかを確認しようとしました。過去のWEKA。RとWEKAのサポートベクターマシン
私は質問をして、私とまったく同じ混乱を持っているが、答えがないものを見つけました。 This is the question。
ここで回答が得られることを願っています。
私は虹彩データセットを使用して、虹彩データ全体を使ってモデル(WEKAのSMOとRパッケージe1071のsvm)を訓練し、それ自体をテストします。
WEKAパラメータ:
デフォルト以外のweka.classifiers.functions.SMO -C 1.0 -L 0.001 -P 1.0E-12 -N 0 -V 10 -W 1 -K "weka.classifiers.functions.supportVector.RBFKernel -G 0.01 -C 250007"
、私はそれがRのfucntionで一貫させるためにRBFKernelにカーネルを変更しました。
結果は次のとおりです。
a b c <-- classified as
50 0 0 | a = Iris-setosa
0 46 4 | b = Iris-versicolor
0 7 43 | c = Iris-virginica
Rスクリプト:
library(e1071)
model <- svm(iris[,-5], iris[,5], kernel="radial", epsilon=1.0E-12)
res <- predict(model, iris[,-5])
table(pred = res, true = iris[,ncol(iris)])
結果は次のとおりです。
true
pred setosa versicolor virginica
setosa 50 0 0
versicolor 0 48 2
virginica 0 2 48
私は人を機械学習ではないので、私は」これらの2つの方法では、デフォルトのパラメータを推測することは非常に異なります。たとえば、e1071のデフォルトはepsilon
、WEKAのデフォルトは1.0E-12です。マニュアルを読んでみると、すべてのパラメータを同一にしたかったのですが、多くのパラメータが私に匹敵するようには見えません。
ありがとうございました。
はいあなたは正しいです、カーネルKがありますカーネルの名前と帯域幅のガンマをリストとして表示します。 –
答えをありがとう!しかし、2クラスの問題については、パラメータを同じように設定しても、2つの全く異なる予測を得ることができます。実装が異なるからですか? – Yan
SVMとSMOによるマルチクラス分類に使用される戦略は同じであるようです(1対1)。バイナリ分類の場合、可能なすべてのパラメータ(デフォルトのものを含む)を調べて、それらのすべてを同じに設定すると、結果は多少異なるはずがありません。 –