机器学习之支持向量机(SVM)学习笔记

it2025-01-28  20

 

支持向量机是一种二分类算法,算法目的是找到一个最佳超平面将属于不同种类的数据分隔开。当有新数据输入时,判断该数据在超平面的哪一侧,继而决定其类别。

具体实现思路:

  训练过程即找到最佳的分隔超平面的过程。当数据特征数是2时,超平面就是一条直线;当数据的特征数是3时,超平面就是一个平面;当数据特征数为1024时,就需要一个2013维的超平面来对其分类。分隔超平面的形式可以写为:wTx+b

  最佳超平面的判断依据是,希望离超平面最近的点离超平面尽可能远。支持向量就是指那些离超平面最近的点。

  分类函数:

  使用单位跃阶函数作用到wTx+b上得到f(wTx+b),当wTx+b大于0时函数输出为1,反之为-1,而不是像LR之类算法输出1或0。使用这个函数的好处是当计算数据点到分隔超平面的距离来确定超平面的位置时,间隔通过label*(wTx+b)来计算,那么不管是正分类还是负分类的数据点,其间隔都是正数。

  优化目标函数:

  ——公式(1)

  上式为优化的目标函数。是点到分割面的函数间隔,当wT和b等比例放大时,函数间隔的值可以随之变大,因此不具有优化价值。所以优化目标函数中使用点到分割面的几何间隔

  直接对公式(1)进行求解十分困难,因此考虑固定一个因子而最大化其它因子。令支持向量的函数间隔为1,最大化1/||w||来求得最终解。因为除支持向量外的其他点的函数间隔都大于1,所以约束条件是,所以可以得到新的目标函数(最小化||w||2和最大化1/||w||是一样的,y就是x对应的label):

——公式(2)

  拉格朗日对偶:

  目标函数公式(2)的求解可以用拉格朗日对偶思想进行优化。首先定义广义拉格朗日函数为:

  

  然后令:

  ,其中

  当所有约束条件均满足,即时,α均为0时取得最大值,此时。

  所以目标函数变为

  

  当函数在满足KKT条件时,可以转化为其对偶问题,即上式可以转化为

  ——公式(3)

  做对偶化的原因是这样可以简化求解过程,且经过验证本问题中的函数满足KKT条件。至于KKT条件是什么,这里就不详细介绍了,反正就是一个数学条件。

  至此,我们求最优间隔面的问题成功地转化为了公式(3)。

 

  目标函数求解:

  首先固定αi ,让L取得关于w和b的最小值。分别对w和b求偏导数(这可能就是进行拉格朗日对偶化的原因吧),并令导数为0可得:

  

   

  将上面两个式子代入公式(3),化简得到目标函数为(因为有两个w,所以alpha、x、y的下标用 i 和 j 来区分):

  ——公式(4)

  此时决策规则变为:

  若,则样本u为正分类样本。

  而b可以用wT*x+b=0来求,所以现在的问题就只剩下求解满足公式(4)的alpha。

  SMO算法:

  SMO算法是将大优化问题分解为多个小优化问题来求解。

  其工作原理是:每次循环选择两个α进行优化处理。一旦找到一对合适的α,就增大其中一个同时减小另一个。

  SMO算法能求出一系列alpha,一旦求出了这些alpha,就很容易计算出权重向量w和b并得到分隔超平面。

核函数——将低维数据映射到高维空间:

  当遇到数据集线性不可分的情况时,就无法在本维度进行求解。但利用核函数将数据映射到高维空间,就有可能成为线性可分的数据集。根据公式6可知需要求极值的L函数只与 xi 和 xj 的点积有关,所以核函数需要做的只是提供空间变换后两向量的点积,我们甚至不需要知道这个空间变换是什么。常用的核函数有线性核函数和指数核函数:

——线性核函数

——指数核函数

 

转载于:https://www.cnblogs.com/yingying7/p/9202615.html

最新回复(0)