SVM对偶问题手推以及代码实现
什么是Support Vector Machine
官方定义:
支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性和学习能力之间寻求最佳折衷,以期获得最好的泛化能力。
SVM一般用于解决二分类问题(也可以解决多分类和回归问题,本文暂不涉及),数学化语言概述如下:
样本数据:n个样本,p个输入
(LaTEX还不太熟悉,见谅。。)
,1个输出y
第i个样本的输入:
输出y:一般用1和-1作为两类样本的标签
那么怎么选取平面或者线呢
支持向量机中,对最好分类器的定义是:最大边界超平面,即距两个类别的边界观测点最远的超平面。在二维情况下,就是找最宽的马路,在三维问题中,就是找最厚的木板。
由于最大边界超平面仅取决于两类别的边界点,这些点被称为支持向量,因此这种算法被命名为支持向量机。
对偶问题公式推导
代码实现
import numpy as np
import pylab as pl
from sklearn import svm
# we create 40 separable points
X = np.r_[np.random.randn(20