分隔超平面: 将数据集分隔开来的直线(推及三维空间,就是一个平面), 也就是分类的决策边界。在超平面一侧的数据属于某一类, 在另一侧的数据属于另外一类。
我们希望能采用这种方式来构建分类器,即如果数据点离决策边界越远,那么其最后的预测,结果也就越可信。多个超平面它们都能将数据分隔开,但是其中哪一个最好呢?是否应该最小化数据点到分隔超平面的平均距离?来求最佳直线如果是那样,是不是有点寻找最佳拟合直线的感觉? 是的,上述做法确实有点像直线拟合,但这并非最佳方案。我们希望找到离分隔超平面最近的点,确保它们离分隔面的距离尽可能远。这里点到分隔面的距离被称为间隔°( margin)。我们希望间隔尽可能地大,这是因为如果我们犯错或者在有限数据上训练分类器的话,我们希望分类器尽可能的健壮。
1.2.1、分类器求解的优化问题
前面已经提到了分类器,但还没有介绍它的工作原理。理解其工作原理将有助于理解基于优化问题的分类器求解过程。输入数据给分类器会输出一个类别标签 ,这相当于一个类似于Sigmoid的函数在作用。下面将使用类似海维赛德阶跃函数(即单位阶跃函数)的函数对作用得到,其中当u<0时f(u)输出-1,反之则输出+1。这和前一章的Logistic回归有所不同,那里的类别标签是0或1。这里的类别标签为什么采用 -1和+1 ,而不是0和1呢?这是由于1和+1仅仅相差-个符号,方便数学上的处理。我们可以通过一个统一公式来表示间隔或者数据点到分隔超平面的距离,同时不必担心数据到底是属于-1还是+1类。
当计算数据点到分隔面的距离并确定分隔面的放置位置时,间隔通过来计算,这时就能体现出-1和+1类的好处了。如果数据点处于正方向(即+1类)并且离分隔超平面很远的位置时, 会是一个很大的正数,同时 也会是一个很大的正数。而如果数据点处于负方向(-1类)并且离分隔超平面很远的位置时,此时由于类别标签为-1,则 仍然是一个很大的正数。
【注: 点到分割面的函数距离 , 是点到分割面的几何距离】
其约束条件:
至此,一切都很完美,但是这里有个假设:数据必须10%线性可分。目前为止,我们知道几乎所有数据都不那么“干净”。这时我们就可以通过引人所谓松弛变量(slack variable),来允许有些数据点可以处于分隔面的错误一侧。这样我们的优化目标就能保持仍然不变,但是此时新的约束条件则变为:
这里的常数C用于控制“最大化间隔”和“保证大部分点的函数间隔小于1.0”这两个目标的权重。在优化算法的实现代码中,常数C是一个参数,因此我们就可以通过调节该参数得到不同的结果。一旦求出了所有的alpha,那么分隔超平面就可以通过这些alpha来表达。这一结论十分直接,SVM中的主要工作就是求解这些alpha。
1.3.1、Platt 的SMO算法
1996年,John Platt发布了一个称为SMO”的强大算法,用于训练SVM。SM0表示序列最小优化( Sequential Minimal Optimization )。Platt的SMO算法是将大优化问题分解为多个小优化问题来求解的。这些小优化问题往往很容易求解,并且对它们进行顺序求解的结果与将它们作为整体来求解的结果是完全一致的。在结果完全相同的同时,SMO算法的求解时间短很多。
SMO算法的目标是求出一系列alpha和b, 且求出了这些alpha,就很容易计算出权重向量w并得到分隔超平面。
SMO算法的工作原理是:每次循环中选择两个alpha进行优化处理。一旦找到一对合适的alpha,那么就增大其中-个同时减小另一个。这里所谓的“合适”就是指两个alpha必须要符合一定的条件, ,条件之- -就是这两个alpha必须要 在间隔边界之外,而其第二个条件则是这两个alpha还没有进行过区间化处理或者不在边界上。