我是标题党【doge】······
最近在看SVM算法的原理,之前只知道用,但是对理论推导并不是很明白,这次算是复习一下,加深理解。
从感知机说起
要深入理解SVM,首先要从感知机说起。
什么是感知机呢?
感知机(perceptron)是二类分类的线性分类模型。
假设输入空间为 χ⊆Rn χ ⊆ R n ,输出空间是 y=−1,+1 y = − 1 , + 1 .由输入空间到输出空间的如下函数 f(x)=sign(ω⋅x+b) f ( x ) = s i g n ( ω ⋅ x + b ) 称为感知机。
也就是说,我的 ω ω 参数和 b b 参数,确定了一个分离超平面,将训练数据集划分为两个部分,分别为正类和负类。因此,我们需要知道 和b的值,确定这个超平面,那么来了一个新的数据,通过计算和这个超平面的距离,就知道它属于哪个类别了。
因此,我们的任务就变成了求 ω ω 和 b b 的值是什么,从而确定分离超平面。
在这里,我们有一个前提条件,就是数据集是线性可分的。
那么如何求这两个参数呢?我们需要确定一个学习策略,即定义经验损失函数并将其极小化。也就是我们常说的loss.
在感知机中,我们选择的loss为误分类点到超平面的总距离,让这个总距离最小,这就是我们的优化目标。特征空间中任意一点
到超平面的距离为:
1∥ω∥|ω⋅x0+b| 1 ‖ ω ‖ | ω ⋅ x 0 + b |
对于误分类的数据 (xi,yi) ( x i , y i ) 来说, yi