線形SVMモデルの決定境界の計算


19

線形SVMのサポートベクトルが与えられた場合、決定境界の方程式をどのように計算できますか?


w = iの合計(ai ti xi)。乗数aiの値を見つけるには、ラグランジアンを最小化する必要があります。どのようにサポートベクターを入手したのだろうか?同じプロセスでuにaiの値を与える必要があります。
euphoria83

2
私はまだコメントできませんが、受け入れられた答えでは、決定線とマージンは次のようにすべきではないと思います:abline(b / w [2]、-w [1] / w [2])abline((b + 1)/ w [2]、-w [1] / w [2]、lty = 2)abline((b-1)/ w [2]、-w [1] / w [2]、lty = 2)ablineはそれぞれ切片と勾配として入力しますか?wx-b = 0の意味: w1.x1 + w2.x2 = bの意味(x2は "y"であるため) abline(b / w [2]、-w [1] / w [2])ごめんなさいは古い投稿ですが、私は尋ねたいと思いました。
ネプツェタイソン14年

@Nepze Tysonのサイトへようこそ。これは、OPの質問に対する答えではありません。[回答]フィールドのみを使用して回答を提供してください。質問がある場合[ASK QUESTION]は、ページ上部のをクリックして質問してください。適切なサポートを提供できます。ここは初めてなので、新しいユーザー向けの情報を含むツアーページをご覧ください
GUNG -復活モニカ

@Nepze知覚的なコメントと、それを作成するために時間と注意を払ってくれてありがとう。ここで回答が改善されると思います。また、私たちのサイトにあなたを歓迎するために、gungに参加したいと思います。
whuber

回答:


29

Hastie et al。のElements of Statistics Learningには、サポートベクトル分類子とSVMに関する完全な章があります(あなたの場合、第2版の開始ページ418)。別の優れたチュートリアルは、David MeyerによるSupport Vector Machines in Rです。

あなたの質問を誤解しない限り、決定境界(または超平面)は(で、は切片項)によって、または@ebonyが言ったように定義されますサポートベクトルの線形結合。マージンは、Hastie et al。表記法。xTβ+β0=0β=1 2 /β β02/β

kernlab Rパッケージのオンラインヘルプからですksvm()が、kernlab – Rのカーネルメソッド用のS4パッケージも参照してください。おもちゃの例を次に示します。

set.seed(101)
x <- rbind(matrix(rnorm(120),,2),matrix(rnorm(120,mean=3),,2))
y <- matrix(c(rep(1,60),rep(-1,60)))
svp <- ksvm(x,y,type="C-svc")
plot(svp,data=x)

わかりやすくするために、サンプルのトレーニングとテストは考慮していないことに注意してください。結果を以下に示します。色の濃淡は、適合した決定値の視覚化に役立ちます。0付近の値は決定境界にあります。

代替テキスト

呼び出しattributes(svp)により、アクセスできる属性が与えられます。例えば

alpha(svp)  # support vectors whose indices may be 
            # found with alphaindex(svp)
b(svp)      # (negative) intercept 

そのため、対応するマージンで決定境界を表示するには、前にJean-Philippe Vertによって作成されたSVMのチュートリアルから大いに影響を受けた、次の(再スケーリングされた空間で)を試してみましょう。

plot(scale(x), col=y+2, pch=y+2, xlab="", ylab="")
w <- colSums(coef(svp)[[1]] * x[unlist(alphaindex(svp)),])
b <- b(svp)
abline(b/w[1],-w[2]/w[1])
abline((b+1)/w[1],-w[2]/w[1],lty=2)
abline((b-1)/w[1],-w[2]/w[1],lty=2)

そして、ここにあります:

代替テキスト


4
美しい、まさに私が探していたもの。2行:w <-colSums(coef(svp)[[1]] * x [unlist(alphaindex(svp))、])b <-b(svp)は天の恵みでした。ありがとうございました!
dshin

@chi:「SVMの決定境界を計算する方法」への私の答えを見てみると面白いかもしれ:stats.stackexchange.com/questions/164935/...

4

サポートベクトルの線形結合であり、係数はこれらのサポートベクトルに対応するラグランジュ乗数によって与えられます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.