逻辑回归(Logistic Regression, LR)
具体过程:
(1) 找到一个合适的预测函数,一般表示为h函数,该函数就是要找的分类函数,它用来预测输入数据的判断结果。
(2) 构造一个Cost函数(损失函数),该函数表示预测的输出(h)与训练数据类别(y)之间的偏差。综合考虑所有训练数据的“损失”,将Cost求和或者求平均,记为J(θ)函数,表示所有训练数据预测值和实际类别的偏差。
(3) J(θ)函数的值越小表示预测的函数越准确,即函数h越准确,所以需要找到J(θ)函数的最小值,通过梯度下降法(Gradient Descent)。
构造预测函数
Logistic Regression用于两分类问题,即找到一个预测函数(h),该函数的输出必须是两个值(二分类),所以利用了Logistic函数(或称为Sigmoid函数),函数形式为:
g(z)=1/(1+e^(-z))
对应的函数图像是一个取值在(0,1)的S型曲线:
逻辑回归模型假设:
这里g(h)是上边提到的sigmoid函数,对应的决策函数为
y* = 1, if P(y=1|x)>0.5
选择0.5作为阈值是一个一般的做法,实际应用时特定的情况可以选择不同的阈值,如果对正例的判别准确性要求高,可以选择阈值大一些,对于正例的找回要求高,则可以选择阈值小一些。
参数求解
最大似然估计:找到一组参数,使得在这组参数下,数据的相似度(概率)最大。
在逻辑回归中,相似度表示为:
取对数得到对数似然度:
梯度下降求解步骤:
(1) 选择下降方向(梯度方向,)
(2) 选择步长,更新参数:
(3) 重复以上两步直到满足终止条件
其中损失函数的梯度计算方法为:
沿梯度负方向选择一个较小的步长可以保证损失函数是减小的,另一方面,逻辑回归的损失函数是凸函数(加入正则项后是严格凸函数),可以保证找到的局部最优质同时是全局最优。
分类边界
从sigmoid函数中可以看出,当时,y=1,否则y=0。是模型隐含的分类面(在高维空间中是超平面)。逻辑回归本质上是一个线性模型,但是这并不意味着只有线性可分的数据能通过LR求解,实际上,可以通过特征变换的方式把低维空间转换到高维空间,而在低维空间不可分的数据,到高维空间中线性可分的几率会高一些。
正则化
当模型的参数过多时,容易出现过拟合。因此需要一种方法来控制模型的复杂度,典型的做法是在优化目标中加入正则项,通过惩罚过大的参数来防止过拟合:
一般情况下,取p=1或p=2,分别对应L1,L2正则化,两者的区别见下图:
左图:L1正则化,倾向于使参数变为0,因此能产生稀疏解。
实际应用时,由于数据的维度可能非常高,L1正则化因为能产生稀疏解,使用的更为广泛一些。
支持向量机(Support Vector Machine ,SVM)
SVM是一种二分类模型,基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。SVM模型由支持向量(Support Vector)决定,因此SVM对outliers不敏感。
SVM原理是VC维理论和最小化结构风险。
如上图所示,有一堆训练数据的正负样本,标记为,假设有一个超平面H:,可以把这些样本分隔开。同时存在两个平行于H的超平面H1和H2:
使离H最近的正负样本刚好分别落在H1和H2上,这样的样本就是支持向量。那么其他所有的训练样本都将位于H1和H2之外,也就满足以下约束:
写成统一的式子就是:
(1)
SVM的任务是寻找超平面H把样本分割成两部分,并且使H1和H2的距离最大。要找到这样的超平面,只需要最大化间隔margin,即最小化,于是可以构造如下的条件极值:
(2)
对于不等式约束的条件极值问题,可以采用拉格朗日方法求解。拉格朗日方程的构造规则是:用约束方程乘以非负的量格朗日系数,然后再从目标函数中减去,于是得到拉格朗日方程如下:
其中:
要处理的规划问题变为:
(5)
逻辑回归和支持向量机异同点
相同点:
(1)都可以用来分类。
(2)在不考虑核函数时,LR和SVM都是线性分类算法,也就是它们的决策面都是线性的。
(3)LR和SVM都是有监督学习算法。
(4)LR和SVM都是判别模型。判别模型会生成一个表示P(Y|X)的判别函数(或预测模型),而生成模型先计算联合概率P(X,Y),然后通过贝叶斯公式转化为条件概率。生成算法尝试去找到底这个数据是怎么生成的(产生的),然后再对一个信号进行分类。基于你的生成假设,那么那个类别最有可能产生这个信号,这个信号就属于那个类别。判别模型不关心数据是怎么生成的,它只关心信号之间的差别,然后用差别来简单对给定的一个信号进行分类。
不同点:
(1)损失函数不同:
LR损失函数:
SVM损失函数:
(2)支持向量机只考虑局部的边界线附近的点,逻辑回归考虑全局
影响SVM决策面的样本点只有少数的结构支持向量,当在支持向量外添加或减少任何样本点对分类决策面没有任何影响;而在LR中,每个样本点都会影响决策面的结果。
改变支持向量机样本不一定会引起决策面的变化:
逻辑回归中改变任何样本都会引起决策面的变化:
(3)在解决非线性问题时,支持向量机采用核函数的机制,LR通常不采用核函数的方法。
SVM算法里只有少数几个代表支持向量的样本参与了计算,也就是只有少数几个样本需要参与核计算(即kernal machine解的系数是稀疏的)。然而,LR算法里,每个样本点都必须参与决策面的计算过程,也就是说,假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。
(4)线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受影响。
(5)SVM损失函数自带正则,(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因!!!而LR必须另外在损失函数上添加正则项!!!
SVM叫做结构风险最小化算法,所谓结构风险最小化,意思就是在训练误差和模型复杂度之间寻求平衡,防止过拟合,从而达到真实误差的最小化。未达到结构风险最小化的目的,最常用的方法就是添加正则项。
参考:
[1] http://www.cnblogs.com/zhizhan/p/5038747.html