SVM笔记

支持向量机包括 线性可分支持 --数据是线性可分的–硬间隔 /线性支持向量机----近似线性可分,软间隔 / 非线性支持向量机—线性不可分,核技巧。

当输入空间为欧式空间(n维),特征空间为希尔伯特空间时,核函数表示将输入从 输入空间 映射到 特征空间 得到的特征向量之间的 内积 。

红框标注的就是支持向量,直接求分类间隔两边的点与分类线的垂直距离。

在超平面 w * x +b = 0确定的情况下, w * x +b 的绝对值可以反映离超平面的距离,符号与类标签y的是否一致表示分类是否正确。
在这里插入图片描述

在这里插入图片描述
函数间隔到几何间隔,上面的公式表示的都是函数间隔,但是我们可以发现,如果w和b扩大两倍,那么间隔也扩大了两倍

只要w除以w的L2范数,就是根号下各维度的平方,那么无论w和b如何同时变化,最终的几何间隔都是一样的。

原本是最大化几何间隔,现在引入了函数间隔,也就是函数间隔/|w|,那函数间隔为什么取±1呢?因为,无论取什么数对最后的优化是都没有影响的。因为 我们总可以使得函数间隔的值为1,通过w和b的等比例变化,并且这个等比例变化是不会影响到几何间隔的。所以最后的优化问题就优化到了最后的原始问题。

举例: 其实很简单,|wx+b|是函数间隔,但是如果|2wx+2b|,那么他们的间隔就扩大了两倍。这样对定位最近的平面不利,所以我们用几何距离。把w和b都先除以w的L2范数: 函数间隔:|2x1 + 3x2 + 1| = 2 -------|4x1 + 6x2 + 2| = 4
几何间隔:
|2/√(22+33) x1 + 3/√(22+33) x2 + 1/√(22+33)| = 2
|4/√(44+66) x1 + 6/√(44+66) x2 + 2/√(44+66) | = 2
所以,此时不受系数倍数影响。

综上,支持向量机的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。
间隔最大化,就是支持向量与分类超平面距离最大的平面~~

公式的引出

在这里插入图片描述
几何间隔下的约束最优化条件:
在这里插入图片描述
上述的|w|乘到不等式的右边,右边就是函数间隔,w/b无论什么倍数变化,可以看到,都不会影响到几何间隔!所以,
所以,当函数间隔等于1的时候,上述的最优化问题依然是等价的。所以 max(1/|w|) 等价于 1/2 * min |w|*|w| (考虑到负数)

所以,最终的约束最优化问题就是:在这里插入图片描述

这里引入拉格朗日乘子,在求出min的同时,添加约束,构造出拉格朗日函数。
在这里插入图片描述
求出对L=原始问题的min,其实就是求出上述L的maxmin。
因为如果某个xi违反了约束条件,不满足在这里插入图片描述,那么其实只要让α无穷大,L就是-∞了。这种情况必须避免。可以看出,min的结果因此只有两种,等于

L = 1/2 ||w|| **2 / -∞
**所以,只要在求min之后求max,就可以得到我们要的 1/2 ||w|| **2。**所以minmax是等价原始问题的约束条件。

因为拉格朗日的对偶性质,maxmin也等价于minmax,更加方便求解。求min和max的过程也就是求导得到极值的过程。注意去掉负号就可以把求极小问题转化为求极大的问题。

#Import Library
from sklearn import svm
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
# Create SVM classification object 
model = svm.svc(kernel='linear', c=1, gamma=1) 
# there is various option associated with it, like changing kernel, gamma and C value. Will discuss more # about it in next section.Train the model using the training sets and check score
model.fit(X, y)
model.score(X, y)
#Predict Output
predicted= model.predict(x_test)

可用参数列表

sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma=0.0, coef0=0.0, shrinking=True, probability=False,tol=0.001, 
cache_size=200, class_weight=None, verbose=False, max_iter=-1, random_state=None)

不同参数的效果比较可见:
https://blog.csdn.net/u010665216/article/details/78382984

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值