zoukankan      html  css  js  c++  java
  • 机器学习四--分类-支持向量机(SVM Support Vector Machine)

    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

  • 相关阅读:
    25款有用的桌面版博客编辑器
    iOS开发- &quot;duplicate symbol for architecture i386&quot; 解决的方法
    中国眼下拥有的人造卫星的种类及其作用
    深入浅出JMS(一)——JMS简单介绍
    android之【本地通知Notification】
    蓝牙设计
    html5中的容器标签和文本标签
    amaze ui中的icon button
    amaze ui表格斑马纹效果
    amaze ui响应式表格
  • 原文地址:https://www.cnblogs.com/daacheng/p/8094824.html
Copyright © 2011-2022 走看看