目录
一.本章专业词汇:
支持向量机(Support Vector Machines,SVM):是一个现成的分类器,“现成”是指分类器不加修改即可直接使用。SVM能够对训练集之外的数据点做出很好的分类决策。
序列最小优化(Sequential Minimal Optimization,SMO)算法:实现SVM的一个算法。
核函数(kernel):使用核函数可以将SVM扩展到更多数据集上
线性可分(linearly separable)数据:两组数据之间已经分隔得足够开,很容易就可以画出一条直线将两组数据点分开。
分隔超平面(separating hyperplane):将线性可分的数据集分隔开来的直线称为分隔超平面。
超平面(hyperplane):分类的决策边界。如果数据点离决策边界越远,那么其最后的预测结果也就越可信。
间隔(margin):点到分割面的距离被称为间隔。我们希望间隔尽可能的大。
支持向量(support vector):就是离分隔超平面最近的那些点。我们需要试着最大化支持向量到分隔面的距离。
松弛变量(slack variable):允许有些数据点可以处于分割面的错误一侧。
数组过滤(array filtering):数组过滤只对Numpy类型有用,不适用于python中的正则表(regular list)。例如:print(alphas[alphas > 0])
核函数(kernel):可以将数据转换成易于分类器理解的形式
径向基函数(radial basis function):核函数中的一种
内积(inner product)(也称点积):指两个向量相乘,之后得到单个标量或者数值的运算。
核技巧(kernel trick):将内积替换成核函数的方式被称为核技巧或者核“变电”(kernel substation)
支持向量机的基本思想:支持向量机从模型的思想上来说并不难理解,如下图所示,平面中有两种类型的点,一种是红色的X点,一种是蓝色的原点。我们现在要将这两种类型的点分开,存在这多种划分方法,我们可以从两类样本的中间化一条红色的直线,但是我们会发现两类样本点离分界线都很近,这样如果我们新输入一个样本点,可能会造成分错类的现象,所以我们的分界线不能随意的取。我们要取一条最优的分界线,既能把两类样本点分开,而且还要使得两类样本点中离分界线最近的点离分界线的距离尽可能的远。结合图像来说一下。如下图中我们圈起来的四个点x1,x2,x3,x4,我们在选取最优的分界线的时候,我们不可能去考虑x3和x4两个点,因为两个点之前的距离太大了,即使选取了分界线把这两个点很好的分开,但是不一定能把离得比较近的两类点分开。所以应该考虑两类点中离得最近的点,一方面只要保证这些点分开,那么其他离得远的点也很容易分开;另一方面,为了使分类的效果尽可能的好,又要保证这些最近的点离分界线的距离尽可能的远,如图中的x1,x2两点,是离得比较近的点,如果我们以红色的线作为分界面,那么样本点x1,x2到分界线的距离明显要小于x1,x2到图中最优分界线的距离。所以我们的目标就是找到如图中最有分界线这样的一条分界线。
二.支持向量机
- 优点:泛化错误率低,计算开销不大,结果易解释。
- 缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题。
- 适用数据类型:数值型和标称型数据
1.分类器求解的优化问题
分类,使用类似于海维赛德阶跃函数(即单位阶跃函数)的函数对:
wTx+b
wTx+b作用得到:
f ( u ) , u = w T x + b
其中,当u < 0时,f(u)输出-1,反之输出+1。
当计算数据点到分隔面的距离并确定分隔面的放置位置时,计算间隔通过:
label∗(wTx+b)
这时就能体现出-1和+1类的好处了,如果数据点处于正上方(即+1类),并且离分隔超平面很远的位置时,u会是一个很大的正数,同时 label * u 也会是一个很大的正数,而如果数据点处于负方向(-1类)并且离分隔超平面很远的位置时,此时由