第11章 支撑向量机SVM

支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。由简至繁的模型包括:

  • 当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;
  • 当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;
  • 当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机;

https://blog.csdn.net/sinat_20177327/article/details/79729551

Support Vector Machine

 

 问题:如果决策边界不唯一

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 s.t.(such that):之前都是全局最优化问题,这次是有条件的最优化问题

hard margin svm:首先保证能正确的分类

 

 

soft margin SVM:

 

 

 

 若是这种更不行了,:因此需soft margin SVM

 

 

 

 

 

 

此时称L1正则

 

 scikit-learn中的SVM

 实际使用SVM:和kNN一样,要做数据标椎化处理!

涉及距离!!!

 

 

def plot_decision_boundary(model, axis):
    x0, x1 = np.meshgrid(
        np.linspace(axis[0], axis[1], int((axis[1] - axis[0]) * 100)).reshape(-1,1),
        np.linspace(axis[2], axis[3], int((axis[3] - axis[2]) * 100)).reshape(-1,1)
    )
    X_new = np.c_[x0.ravel(), x1.ravel()]
    y_predict = model.predict(X_new)
    zz = y_predict.reshape(x0.shape)
    from matplotlib.colors import ListedColormap
    custom_cmp = ListedColormap(['#EF9A9A', '#FFF59D', '#90CAF9'])
    plt.contourf(x0, x1, zz,cmap=custom_cmp)

plot_decision_boundary(svc,axis=[-3,3,-3,3])
plt.scatter(X_standard[y==0,0],X_standard[y==0,1])
plt.scatter(X_standard[y==1,0],X_standard[y==1,1])
plt.show()
plot_decision_boundary

 什么是核函数?

 

 

 

 

 

 

 

 

 

 

 

高斯核函数亦称径向基函数:

 

 

 

 

 

 

 

 

 

 

 

 

 

 scikit-learn中的高斯核函数:

 

 

 

 SVM思想解决回归问题

 

 

posted @ 2020-04-24 20:42  aggressive2019  阅读(127)  评论(0编辑  收藏  举报