第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思想解决回归问题