2.2.5 支持向量机算法
在逻辑回归算法中,用Sigmoid函数来划分1和0两类,而在支持向量机算法中,则用是否能使预定义的函数大于1来划分+1和-1两类。
支持向量机算法是最著名的机器学习方法之一。支持向量机算法需要通过计算找到一个分割超平面。在二维坐标系中,超平面是一条线;在三维坐标系中,超平面就是一个平面;在更高维度的坐标系中,超平面就是在N维空间里的一个N-1维的存在。在支持向量机算法中,分割超平面是指能够区分两类数据的一个决策边界。好的支持向量机算法能让分割超平面尽量远离任何一类数据。
那么应该如何判断超平面是否远离任何一类数据呢?方法是用w转置后乘以数据x,再加上一个常量b,可得到数据x到决策边界的距离。如图2.5所示的超平面就是三维坐标系中的分割超平面,分割超平面上面的数据和分割超平面下面的数据是两类数据。
图2.5 超平面示意图
逻辑回归算法通过Sigmoid(wTx)是否大于或等于0.5来划分1类和0类,支持向量机算法则通过label×(wTx+b)是否大于或等于1来划分+1类和-1类,label是+1或-1。wTx+b定义了分割超平面,即能够区分两类数据的决策边界。分割超平面到数据的距离是数据与label相乘,也就是和+1或-1相乘,距离大于0表示分类正确,距离小于0表示分类错误。
用数学语言来表述,|wTx+b|表示数据x到分割超平面的距离,通过观察wTx+b的符号与label的符号是否一致可判断分类是否正确,因此可以用label×(wTx+b)的正负性来判定分类的正确性。
支持向量机算法需要寻找的参数是w和b,首先需要找到与分割超平面距离最小的数据,也就是寻找一个到决策边界距离最小的x,用数学语言来表述,就是找到(wTx+b)/||w||最小值对应的x;然后寻找能让这个距离最大化的w和b。在寻找使距离最大化的w和b时,主要采用序列最小化算法,将最大化问题分解为多个小的优化问题。简单地说,就是把w转置后与x相乘的过程,变为一些α与x相乘的过程。首先将全部α定义为0,从中挑出两个α,其他α不变,尝试找到能达到最好效果的α,以此类推找到全部α和b;然后将新数据输入距离公式计算其到决策边界的距离。如果这个距离为正数,就判断新数据为+1类;如果这个距离为负数,就判断新数据为-1类。
用一句话来概括支持向量机算法,就是让分割超平面尽量远离任何一类数据。作为最著名的机器学习分类方法之一,支持向量机算法具有直观、准确等优点,但也存在计算量大等缺点。