给定线性 SVM 的支持向量,我如何计算决策边界方程?
计算线性 SVM 模型的决策边界
机器算法验证
机器学习
支持向量机
2022-02-05 02:10:51
2个回答
Hastie 等人的《统计学习要素》有一章完整介绍了支持向量分类器和 SVM(在您的情况下,从第 2 版的第 418 页开始)。另一个很好的教程是R 中的支持向量机,作者 David Meyer。
除非我误解了您的问题,否则决策边界(或超平面)由(和, 和截距项),或者正如@ebony 所说的支持向量的线性组合。边距是,继 Hastie 等人之后。符号。
来自kernlabksvm()
R 包中的在线帮助,但另请参阅kernlab – An S4 Package for Kernel Methods in 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)
这里是:
它是支持向量的线性组合,其中系数由对应于这些支持向量的拉格朗日乘数给出。
其它你可能感兴趣的问题