Rの線形SVMから決定境界を取得する方法


9

線形SVMモデルの方程式を提供できるパッケージが必要です。現在、私はe1071次のように使用しています:

library(e1071)
m = svm(data, labels, type='C', kernel='linear', cost=cost, probability=FALSE, scale=scale)
w = t(m$coefs) %*% data[m$index,]  #Weight vector
b = -model$rho #Offset

ただし、どのようにしてe1071::svm()ポジティブクラスとネガティブクラスを選択するのかわかりません。そのため、さまざまなデータセットで混乱する可能性があります。この関数がどのクラスがポジティブでどのクラスがネガティブであるかをどのように決定するか誰でも確認できますか?

また、これに適したパッケージはありますか?


1
これに関する情報を関連するスレッドで提供しました:線形SVMモデルの決定境界の計算
2012年

回答:


1

xd

d <- sum(w * x) + b

d>0x+11newdata

predict(m, newdata)

または

predict(m, newdata, decision.values = TRUE)

パッケージe1071からSVMを使用する場合は注意が必要です。e1071libsvmの問題を参照してください質問。Rの他のいくつかのSVMパッケージは、kernlab、klaRおよびsvmpathです。この概要を参照してください:Aのサポートベクターマシン A. KaratzoglouおよびD. Meyer。


2
ありがとう。でも私の質問は、w値とb値をどのように取得するかについてです。また、決定値については、e1071がどのように与えられたラベルがトレーニングデータに対して正と負であるかを決定する方法を尋ねます。
reisner 2012

1
私はe1071に詳しくありませんが、SVMは知っています。クラスが肯定的であるか否定的であるかは、結果に影響しません。任意のデータセットを取得してクラスラベルを交換しても、テストポイントの分類(同じパラメーターの場合)に関して同じ結果が得られるはずです。ポジティブとネガティブは、インスタンスが決定境界の右側にあるかどうかを決定するために使用されます。
karenu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.