计算线性SVM模型的决策边界


19

给定线性SVM的支持向量,如何计算决策边界方程?


w =我的总和(ai ti xi)。您必须最小化拉格朗日才能找到乘数ai的值。我不知道你如何得到支持向量的?同样的过程也应该给你人工智能的价值。
euphoria83 2010年

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])对不起是旧帖子,但我想问一下。
Nepze Tyson 2014年

欢迎使用该站点@Nepze Tyson。这不是OP的问题的答案。请仅使用“您的答案”字段提供答案。如果您有自己的问题,请单击[ASK QUESTION]页面顶部的,然后在此处提问,我们将为您提供适当的帮助。由于您是新手,因此您可能需要阅读我们的导览页面,其中包含新用户的信息。
gung-恢复莫妮卡

@Nepze谢谢您的感性评论,以及为使之投入的时间和精力。我希望它会在这里带来更好的答案。我也想加入gung欢迎您访问我们的网站。
ub

Answers:


29

Hastie等人的《统计学习要素》有一章完整的章节介绍了支持向量分类器和SVM(在您的情况下,请参见第二版的第418页)。另一个很好的教程是David Meyer 撰写的R中的Support Vector Machines

XŤβ+β0=0β=1个β02/β

从在线帮助的ksvm()kernlab [R包,但也见kernlab -一个S4软件包中的R核方法,这里是一个玩具例子:

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
美丽,正是我想要的。这两行:w <-colSums(coef(svp)[[1]] * x [unlist(alphaindex(svp)),])b <-b(svp)是天赐之物。谢谢!
dshin 2010年

@chi:它可能是有趣的,看看我的回答“如何计算的SVM的决策边界”:stats.stackexchange.com/questions/164935/...

4

它是支持向量的线性组合,其中系数由对应于这些支持向量的拉格朗日乘数给出。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.