您的位置:首页 > 其它

机器学习四--分类-支持向量机(SVM Support Vector Machine)

2020-02-06 14:59 295 查看

1、线性可区分(linear separable)和线性不可区分(linear inseparable)两种情况。

SVM算法寻找两类的超平面(hyper plane),使边际(margin)最大。也就是找最大超平面MMH(Max Margin Hyperplane )

超平面定义公式:WX+b=0   

  W={w1,w2,w3,……}为Weight Vector 权重向量 ;

  X为训练实例;

  b为偏向Bias

二维情况下:X=(x1,x2)

超平面方程:w1*x1+w2*x2+w0=0

超平面两侧:w1*x1+w2*x2+w0>0

      w1*x1+w2*x2+w0<0

调整weight,用超平面定义边际的两边:H1=w1*x1+w2*x2+w0>=1;  yi=1

                  H2=w1*x1+w2*x2+w0<=-1;  yi=-1

所以: yi*(w1*x1+w2*x2+w0)>=1;

所有坐落在边际的两边的超平面上被称为支持向量Support Vector,

分界的超平面离边界上任意一点距离为   1/||W||,最大边际为2/||W||

Max Margin Hyperplane表示公式:

 

yi是支持向量点Xi的类别标记。XT是测试实例。ai和b0为单一数值参数,l为支持向量的个数。

1、训练好的模型的算法复杂度是由支持向量的个数决定,而不是由数据的维度决定,所以SVM不太容易产生过拟合overfitting

2、SVM训练出的模型完全依赖于支持向量,即使训练集中所有非支持向量的点全部去除,仍然会训练处一样的模型。

3、一个SVM如果训练得到的支持向量的个数比较少,SVM训练的模型就容易被泛化。

from sklearn import svm
x=[[2,0],[1,1],[2,3]]#特征向量
y=[0,0,1]#特征对应的label
clf=svm.SVC(kernel='linear')
clf.fit(x,y)
print(clf)
print(clf.support_vectors_)#支持向量
print(clf.support_)#支持向量在x中的索引
print(clf.n_support_)#针对每个标签label找到了几个支持向量
print(clf.predict([[2,0]]))#预测这个点属于哪一类标签label

转载于:https://www.cnblogs.com/daacheng/p/8094824.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
aochong6817 发布了0 篇原创文章 · 获赞 0 · 访问量 223 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐