支持向量机

支持向量机的概念

支持向量机是一种二分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器;支持向量机还包括核技巧,这使它成为非线性分类器。
SVM学习策略:SVM的学习策略为间隔最大化,可形式化为一个凸二次规划问题的求解,也等价于正则化的合页损失函数的最小化问题。
支持向量机的学习算法是求解凸二次规划的最优化算法

支持向量机和感知机的区别

感知机采用了误分类最小策略来求得分离超平面,由于选取不同的初值或不同的误分类点,解可以不同。
线性可分支持向量机利用间隔最大化求最优分离超平面,来使得解具有唯一性

支持向量机的类别

线性可分支持向量机
  • 线性可分支持向量机:给定线性可分训练数据集,通过硬间隔最大化,学习一个线性的分类器。线性可分支持向量机函数间隔为: 2||w|| 2 | | w | |
    学习得到的分离超平面为: wx+b=0 w ∗ x + b ∗ = 0
    以及相应的分类决策函数: f(x)=sign(wx+b) f ( x ) = s i g n ( w ∗ x + b ∗ )

    当分离超平面 f(x)=0 f ( x ) = 0 时, x x 位于分离超平面上;f(x)>0的点对应 y=1 y = 1 的数据点; f(x)<0 f ( x ) < 0 的点对应 y=1 y = − 1 的数据点。
确定超平面方法:函数间隔和几何间隔

样本点 (xi,yi) ( x i , y i ) 的被超平面 (w,b) ( w , b ) 正确分类时,点 xi x i 与超平面 (w,b) ( w , b ) 的函数间隔和几何间隔为别为:
函数间隔( γ̂ i γ ^ i ): γ̂ i=yi(wxi+b)=yif(xi) γ ^ i = y i ( w x i + b ) = y i f ( x i )
几何间隔: γi=yi(w||w||xi+b||w||) γ i = y i ( w | | w | | x i + b | | w | | )
函数间隔和几何间隔的关系:若 ||w||=1 | | w | | = 1 ,那么函数间隔和几何间隔相等;如果超平面参数 w w b成比例的改变,函数间隔也成比例改变几何间隔不变
线性可分支持向量机:利用拉格朗日对偶性首先求 L(w,b,α) L ( w , b , α ) w,b w , b 求极小,在对 α α 求极大。

线性支持向量机
  • 线性支持向量机:当训练数据近似线性可分时,通过软间隔最大化,得到的分类器。
    线性支持向量机对每个样本点 (xi,yi) ( x i , y i ) 引入松弛变量 ξi0 ξ i ≥ 0 ,使得函数间隔加上松弛变量大于等于1。
  • 非线性支持向量机:当训练数据线性不可分时,通过使用核技巧软间隔最大化得到的非线性支持向量机。
    1. 将核技巧应用到支持向量机:通过一个非线性变换输入空间对应于一个特征空间,使得在输入空间中的超曲面模型对应于特征空间中的超平面模型。这样转换为:在特征空间中求解线性支持向量机就可以完成。
    2. 常用的核函数有多项式核函数高斯核函数字符串核函数
from sklearn import svm
import numpy as np
import matplotlib.pyplot as plt
x=np.r_[np.random.randn(20,2)-[2,2],np.random.randn(20,2)+[2,2]] #生成2*(20*2)的数据
y=[0]*20+[1]*20
clf = svm.SVC(kernel='linear')
clf.fit(x,y)

w=clf.coef_[0]  #获取w
a=-w[0]/w[1] #斜率
xx=np.linspace(-5,5)  #默认生成50个数
yy=a*xx - (clf.intercept_[0]/w[1])  #xx带入y,Ax+By+C=0,y=(-A/B)*x-(C/B)
                                    #这里的B=w[1],C=clf.intercept_[0],clf.intercept_表示常数C*
#画出与点相切的线
b=clf.support_vectors_[0]
yy_down=a*xx+(b[1]-a*b[0])
b=clf.support_vectors_[-1]
yy_up=a*xx+(b[1]-a*b[0])
plt.figure(figsize=(8,4))
plt.plot(xx,yy)
plt.plot(xx,yy_down)
plt.plot(xx,yy_up)
plt.scatter(x[:,0],x[:,1])
plt.scatter(clf.support_vectors_[:,0],clf.support_vectors_[:,1],s=80)
plt.show()

参考:https://blog.csdn.net/v_july_v/article/details/7624837
拉格朗日对偶:https://www.cnblogs.com/90zeng/p/Lagrange_duality.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值