目录
LR vs SVM
LR和SVM的相同点
- 都是监督学习算法(都需要有样本进行训练)
- 如果不考虑核函数,LR和SVM都是线性分类算法
- 都是判别模型(判别模型会生成一个表示P(y|x)的判别函数)
LR和SVM的不同点
- 损失函数不同,LR采用对对数损失函数,SVM采用hinge损失函数
- SVM损失函数自带正则项,LR必须另在损失函数上添加正则项
- SVM 只考虑局部的分界线附近的点(支持向量),LR考虑全局(每个样本点都必须参与决策面的计算过程)
- LR对异常值敏感,SVM对异常值不敏感
- 在解决非线性问题时,SVM采用核函数机制,而LR通常不采用核函数的方法(SVM只有几个样本点参与核计算,而LR如果要使用核函数,则所有样本点都要参与核计算,计算复杂度太高,不划算)
- 线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受影响。(线性SVM寻找最大间隔分类器时是依据数据的距离测量的,如果不对数据进行正则化,会对结果有所影响,然而,LR虽然也会用到正则化,却是为了方便优化过程的起始值,LR求解的过程是与距离测量无关的,所以归一化对于LR的求解结果是没有影响的)
逻辑回归LR
LR中虽然有‘回归’字样,但是它其实是一种最常见的分类模型,主要被用于二分类问题。LR的目的就是从特征中学习出一个0/1分类模型,这个模型将特征的线性组合作为自变量,然后使用Logistic函数(即sigmoid函数,如下图所示)将自变量映射到(0,1)区间中,映射后的值被认为是y=1的概率。用公式表示就是。LR的输出并不是类别0或者1,而是一个概率值。当我们想要判定一个新的数据点的类别时,只需要求出,如果大于0.5,则为类别y=1,否则则为类别0。
LR损失函数
在LR中,应用极大似然估计法估计模型参数。假设有n个独立的样本,那每一个样本出现的概率为
从上式可以看出,当时,那么此样本概率取值为,反之,当的,此样本的概率取值为,所以对于整个样本集,也就是n个独立样本出现的似然函数为
取对数后就是
LR公式推导
首先作一个假设,依据贝叶斯公式,可做如下推导:
合并常数项,最后化简则化的损失函数为:,当我们在后添加L1正则化项时,相当于对做了一个约束。此时我们的任务就变成在L1正则化约束下求出取最小值的解。考虑二维的情况,在有两个权值和的情况下,此时L1为,对于梯度下降方法,求解的过程用等值线表示,如下图所示。黑色方形是L1正则化的图形,五彩斑斓的等值线是的等值线。在图中,等值线与黑色方形首次相交的,又因为
上述两个公式计算,就可以得到LR公式为:
支持向量机SVM
假若要识别一个邮件是正常信息的邮件还是垃圾邮件,如下图所示,绿色的圆圈表示正常邮件,红色的圆圈表示垃圾邮件,如下图中的红色,黄色,紫色和黑色实线都能够很好地将这两类区分开来,这些实线为分界线,也就是“决策面”,每一个决策面对应一个线性分类器。就目前的数据来看,这些分类器的分类结果是一样的,但是如果考虑到潜在的其他数据,或者说异常点,这些分类器的性能还是有所差异。主观上,我们会认为黑色的实现的分类性能要优于其他颜色的分类器,下面就以理论证明我们的主观臆测是正确的。
如上图所示,两类数据中到黑色直线的分割超平面的最小距离要比要其他颜色直线的分割超平面的最小距离要大,在这里,引入支持向量机(SVM)算法,SVM的目标就是要希望找到距离分割超平面最近的点,让它们距离超平面距离尽可能大,这个距离被称为间隔(margin),也就是SVM通过最大分类间隔来设计分类决策面,可以看到,SVM中最重要的两步,一是寻找距离超平面最近的那些点,被称为支持向量,二是寻找最大间隔,下面,我们详细讲解margin和支持向量 Support Vector。
间隔和支持向量
一般而言,一个点距离超平面的远近可以表示为分类预测的确信或准确程度
在超平面确定的情况下,能够相对地表示点x到距离超平面的远近,而的符号与类标记的符号是否一致表示分类是否正确,所以用量的正负性来判定或表示分类的正确性和确信度。(首先声明一下,SVM不同于LR将两类数据的类别标签设为0和1,而是将类别标签设为1和-1,是因为当分类正确时,的值总是正数)
对于某个训练样本,定义其到超平面的函数间隔(functional margin)为, 如果, 那么我们需要的取值为一个大正数;如果,那么就需要的值为一个大负数;如果,那么我们对这个样例的预测是正确的。越大的函数间隔表示对一个样本的预测分类的准确率和确信度越高。
所以对一个有n个训练样本集合T,定义超平面对一整个训练集合T的函数间隔为。虽然上面函数间隔的寓意很不错,但是对于某个样本例子,如果成比例地改变和b,虽然超平面没有改变,可是函数间隔却相应的按比例增大或缩小。 接下来对法向量进行规范化,引出真正定义点到平面的距离概念---几何间隔。
对一个点A,其横坐标为,令其投影到决策面对应的点B的横坐标为,那么点A和点B的横坐标之间的关系为,其中为点A到决策面的距离。因为点B为决策面上的点,满足决策方程,带入方程进行计算,所以,按上述思想加上类标记,定义几何间隔为。由此可见,函数间隔和几何间隔相差一个的缩放因子。
对一个数据点进行分类时,要求间隔越大越好,因为分类间隔越大,分类的正确的概率就越大;然而对包含n个数据点的数据集,则要求数据集到决策面的间隔为这n个点中间隔最小的间隔(min)。显而易见,这是一个max min问题。用公式表示就是:
在训练的时候,一般令,如下图,黑色虚线上的点到黑色实线上的点距离为1,那么公式就相应地变成了:
求解这个公式我们就能能到一个最大间隔的分类器。求解的最大值等价于求的最小值。所以就可以将上述的公式转变成如下凸优化问题:
为什么要将目标公式进行转换呢?原因就是凸优化有个非常重要的定理,即任何局部最优解即为全局最优解。
支持向量机SVM通过使用最大分类间隔来设计决策最优分类超平面,选择最大分类间隔而不是最小分类间隔的原因是最大分类间隔能够获得最大稳定性能和区分的确信度,从而泛化能力更强。
那么到底什么是支持向量呢?从下图中可以看到,除了中间黑色的实线是我们所要求的超平面,旁边还有两个黑色的虚线,而且这两个虚线到实线的距离是相等的,即我们所能得到的最大几何间隔,而这些虚线上有一些样本数据,这些样本数据就是所谓的支持向量点。它们满足。
对偶问题
虽然上述得到的目标函数是个二次优化问题,可以用现成的QP(Quadratic Programming)的优化包进行求解,。但是它有它的特殊结构,可以通过Lagrange对偶变换到对偶变量的优化问题之后,用一种更加有效的且高效的方式进行求解。应用Lagrange对偶性,通过求解对偶问题得到最优解,这就是线性可分条件下支持向量机的对偶算法。
使用Lagrange对偶性的好处在于:一方面是因为对偶问题往往更容易求解。另一方面,可以添加核函数,进而推广到非线性分类问题。
接下来,通过给每一个约束条件加上一个Lagrange乘子构造拉格郎日函数,这样就能将目标函数和约束条件融合到一个函数中,则对应的拉格郎日函数为:,然后令
。当某个约束条件不满足的时候,例如,那么只要适当设置的值,可以取值到正无穷,然而当所有约束条件都满足的时候,则有,即是上面公式要最小化的量。所以现在的目标函数就变成了
其中表示这个问题的最优解。其对偶形式为。显而易见,最大值中的最小值一定不小于最小值中的最大值,所以,当满足某些条件(在这里是指KKT条件)时,。这样就能够通过求解对偶问题的最优解来间接地求解原问题的最优解。进过论证,是满足KKT条件的,这里省略。
下面是求解对偶问题,先将目标方程化为对单一因子变量的求解,然后使用SMO算法求解,进而用表示和b,得出参数值。需要三步,首先让关于和b最小化,再次求对的极大,最后利用SMO算法求解对偶因子
1. 首先固定,对和b进行求偏导,并让偏导数等于零。可以得到:
将上述两个推导公式带入函数中,则(推导化简略),现在可以看到拉格朗日函数中只有一个因变量,求出,就能相对应地导出和b。
2. 求对的极大,即是关于对偶变量的优化问题,从上面公式中可以得到:
求解上述公式的最高效的优化算法是SMO
3. SMO算法求解
SMO算法采用了一种启发式的方法。它每次只有优化两个变量,例如,将其他常量都看做常量。由于,而且被看做常量,那么这么一个复杂的优化算法就被转换成一个比较简单的两个变量的优化问题。然后不断选择一对和,保持其他的不变,将目标函数对和进行优化
最后由SMO得出 是对偶优化问题的最优解,并且满足,那么就可有
则超平面方程为,所以决策方程为
至此,SVM的过程可以概括为:为确定分类函数中的参数和,借助最大分类间隔,导出,二次凸优化,为了快速计算二次凸优化问题,继而引入拉格郎日函数,化为对单一因子对偶变量的求解,而求解的算法为SMO,最后依据求出的,导出参数参数和。
核函数
在假设训练样本是现行可分时候,可以寻找到一个线性的超平面将训练样本进行正确分类,由于是线性方法,所以对非线性的数据就不能处理。所以在线性不可分的情况下,SVM的处理办法就是选择一个核函数,将输入变量映射到一个高维度特征空间。在高维特征空间中对训练数据通过超平面进行分类,避免了直接在原输入空间中寻找非线性函数来进行分类。例如,二维平面上现行不可分的数据,通过映射到更高维的特征空间中,就会变得线性可分。SVM的分类函数是一组以支持向量为参数的非线性函数的线性组合,分类函数的表达式仅仅与支持向量的数量有关,而独立于空间的维度,尤其是在处理高维度输入空间的分类时,此种方法更加有效。
如果不使用核函数,用原始的方法将样本从原始空间映射到一个更高维的特征空间,如下图所示,定义一个非线性映射函数,将输入数据映射到一个特征空间(Feature Space),那么在特征空间里的划分超平面所对应的模型就可以表示为,但是如果直接采用这种技术在高维空间进行分类或回归,则存在确定非线性映射函数的形式和参数、特征空间维数等问题,而最大的障碍则是在高维特征空间运算时存在的"维数灾难"。而核函数就可以有效的解决这个问题。核函数是在特征空间中直接计算内积,使用核函数的好处在于它是在低维上进行计算,而实际上的分类效果表现在高维上。
定义核函数为, 那么分类函数就变为其中由如下的对偶问题求得:
下面列出常见的几种核函数:
核函数名称 | 公式 | 备注 |
线性核 | 线性核函数 | |
多项式核 | 非线性核函数 | |
高斯核 | 非线性核函数,也被称为径向基函数(Radial Basis Function 简称RBF)。它能够把原始特征映射到无穷维 |
软间隔和正则化
假定样本数据是线性可分的,我们可以通过SVM找到一个可行的超平面;当样本数据是非线性的,可以使用核函数将原始数据映射到高维空间,然而,事实上,大多数收集到的样本数据并不是像我们假设的那样完美,样本数据或多或少都有些噪音。例如下图中在蓝色圆点区域的红色圆点和在红色区域的蓝色圆圈,这些偏离正常位置很远的样本数据点,我们称它们为离群点。因为SVM中起作用的仅仅是几个支持向量,如果这些支持向量中又存在离群点的话,那么则会对生成的SVM模型造成很大的影响。
为了处理这种情况,SVM允许数据点在一定程度上偏离一下超平面,引入松弛变量(slack variable),对应数据点被允许偏离的函数间隔的量,所以约束条件就变成,那么目标方程就变成如下形式:
同样,引入Lagrange乘子和,则可以得到如下目标函数。
对参数进行求偏导并令偏导数为0,则可以得到
类似的,将上述推导的三个公式带入,则可以得到与没有添加松弛变量前的目标函数,由于和,所以,原对偶问题就可以记为:
可以看到现在的对偶变量多了一个上限C。