【机器学习】Logistic Regression 学习笔记

时间:2022-11-01 16:33:12

 

逻辑回归模型

虽然逻辑回归姓 回归,不过其实它的真实身份是二分类器。介绍完了姓,我们来介绍一下它的名字,逻辑斯蒂。这个名字来源于逻辑斯蒂分布:

逻辑斯蒂分布

设X是连续随机变量,X服从逻辑斯蒂分布是指X具有下列的分布函数密度函数: 

【机器学习】Logistic Regression 学习笔记

上式中,μ 表示位置参数γ>0 为形状参数。

 

有没有发现F(x)是啥?有图你就知道真相了:

【机器学习】Logistic Regression 学习笔记

有没有发现右边很熟悉?没错,就是sigmoid 曲线,这个曲线是以点( μ, 0.5) 为中心对称。从图中可以看出,曲线在中心附近增长速度较快,而形状参数 γ 值越小,曲线在中心附近增长越快,请自行脑补一下。

 

 sigmoid曲线有几个特性:

1.x趋向正无穷时F(x)趋近于1

2.x趋向负无穷时F(x)趋近于0

3.x在0处为0.5

它的这些特性,决定它非常适合用于当作基于概率的二项分类函数。类似的还有正态分布的分布函数,和它非常类似,如果选用正态分布,则是贝叶斯逻辑回归(Bayesian logistic regression)。

  逻辑斯谛回归的采用的是最大似然估计的思想。对于给定的训练数据集T = {(x1, y1),(x2, y2),......(xn, yn)},我们找到它的似然函数(即它发生的概率),如果能使似然函数取得最大值,那么就是让这个样本发生的概率最大(这个概率是个联合概率)。

我们看一下逻辑回归的似然函数。

【机器学习】Logistic Regression 学习笔记

L(w)取得极大值,则需要yi为1时,P(Y = 1 | x)尽量的大,yi为0时,P(Y = 1 | x)尽量的小。

我们的概率函数P(Y = 1 | x)为

【机器学习】Logistic Regression 学习笔记

P (Y = 1 | x) 为sigmod函数(等价形式),为了使yi为1时,P(Y = 1 | x)尽量的大,yi为0时,P(Y = 1 | x)尽量的小。我们需要调整w⋅x,使得yi 为1时,w⋅x尽量取比较大的值,位于原点右侧较远的地方,yi为0时,w⋅x尽量位于原点左侧较远的地方,即它发生的概率尽量小。换句话说,我们调整w⋅x使得yi为1尽量发生,为0尽量不要发生。这个时候似然函数取得最大值

借用andrew ng老师的图

【机器学习】Logistic Regression 学习笔记        

【机器学习】Logistic Regression 学习笔记

 

我们要找到w⋅x = 0 这条曲线,使得样本x尽量被分成两部分,一类发生的概率尽量大,另一类概率尽量小。样本点与w⋅x = 0 的距离,即误差,服从逻辑斯谛分布。

二项逻辑回归模型

一个事件的几率(odds):指该事件发生与不发生的概率比值,若事件发生概率为p,那么事件发生的几率就是

odds=p1p

那么该事件的对数几率(log odds或者logit)就是: 

logit(p)=logp1p

那么,对逻辑回归而言,Y=1对数几率就是: 

logP(Y=1|x)1P(Y=1|x)=wx

 

也就是说,输出Y=1的对数几率是由输入x线性函数表示的模型,这就是 逻辑回归模型。当 wx的值越接近正无穷,P(Y=1|x) 概率值也就越接近1.

模型的数学形式确定后,剩下就是如何去求解模型中的参数。在统计学中,常常使用极大似然估计法来求解,即找到一组参数,使得在这组参数下,我们的数据的似然度(概率)最大。

设:

P(Y=1|x)=π(x),P(Y=0|x)=1π(x)

 

似然函数:

L(w)=[π(xi)]yi[1π(xi)]1yi

 

对数似然函数:

lnL(w)=[yilnπ(xi)+(1yi)ln(1π(xi))]
=[yilnπ(xi)1π(xi)+ln(1π(xi))]
=[yi(wxi)ln(1+ewxi)]

 

现在要求 w 使得L(w) 最大,有的人可能会有疑问:

在机器学习领域,我们更经常遇到的是损失函数的概念,其衡量的是模型预测错误的程度。常用的损失函数有0-1损失,log损失,hinge损失等。通常是最小化损失函数,这里为啥求极大似然估计?

实际上,对数似然损失在单个数据点上的定义为: 

ylnp(y|x)(1y)ln[1p(y|x)]=[yilnπ(xi)+(1yi)ln(1π(xi))]

 

如果取整个数据集上的平均对数似然损失,我们恰好可以得到: 

J(w)=1NlnL(w)

 

即在逻辑回归模型中,我们最大化似然函数最小化对数似然损失函数实际上是等价的。

接下来就是对L(w)求极大值(也可认为是求J(w)的最小值),得到w的估计值。逻辑回归学习中通常采用的方法是梯度下降法 和 牛顿法

[先跑个题],讲到求极值的方法,突然想到有几个可视化的gif图,能够很直观地体现各种算法的优劣,好东西当然要分享了。

Imgur 网友通过可视化方法,对比了SGD, momentum, Nesterov, AdaGrad, AdaDelta, 
RMSProp等优化算法在Long Valley, Beale’s Function及Saddle Point情况下的性质。

Long Valley: 
【机器学习】Logistic Regression 学习笔记

Beale’s Function:

【机器学习】Logistic Regression 学习笔记

Saddle Point:

【机器学习】Logistic Regression 学习笔记

以后会专门写一篇来讲求极值的方法,这是题外话了,我们还是继续回归逻辑吧,哈哈。 
下面介绍使用梯度下降法来求解逻辑回归问题。


使用梯度下降法(Gradient Descent)求解逻辑回归

算法(梯度下降法求解逻辑回归) 
输入:目标函数:J(w)(对数似然损失函数),梯度函数: g(w)=J(w), 计算精度ϵ 
输出J(w) 的极小值点 w 
过程: 
(1) 取初始值 w0Rn, 令k=0 
(2) 计算J(wk) 

J(wk)=1NlnL(wk)lnL(wk)
=[yi(wkxi)ln(1+ewkxi)]

 

(3) 计算梯度 gk=g(wk)=J(w) 

g(wk)=[xiyixiewkxi1+ewkxi]

 

 

=[xiyiπ(xi)]

 

||gk||<ϵ ,停止迭代,令

w=wk

 

否则,令pk=g(wk),求λk,使得

J(wk+λkpk)=min(J(wk+λpk))

 

(4) 令wk+1=wk+λkpk,计算 J(wk+1) 
||J(wk+1)J(wk)||<ϵ 或 ||wk+1wk||<ϵ,停止迭代,令

w=wk+1

 

(5) 否则,令k=k+1,转(3).

逻辑回归的正则化

当模型的参数过多时,很容易遇到过拟合的问题。而正则化是结构风险最小化的一种实现方式,通过在经验风险上加一个正则化项,来惩罚过大的参数来防止过拟合。

正则化是符合奥卡姆剃刀(Occam’s razor)原理的:在所有可能选择的模型中,能够很好地解释已知数据并且十分简单的才是最好的模型。

我们来看一下underfitting,fitting跟overfitting的情况:

【机器学习】Logistic Regression 学习笔记

显然,最右这张图overfitting了,原因可能是能影响结果的参数太多了。典型的做法在优化目标中加入正则项,通过惩罚过大的参数来防止过拟合: 

J(w)=>J(w)+λ||w||p

 

p=1或者2,表示L1 范数和 L2范数,这两者还是有不同效果的。

L1范数:是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。那么,参数稀疏 有什么好处呢?

 

L2范数:它有两个美称,在回归里面,有人把有它的回归叫“岭回归”(Ridge Regression),有人也叫它“权值衰减”(weight decay)。

接下来我们思考一下为什么L1范式会产生稀疏性。

假设代价函数 L 与某个参数 x 的关系如图所示:

【机器学习】Logistic Regression 学习笔记

则最优的 x 在绿点处,x 非零。

现在施加 L2 regularization,新的代价函数(【机器学习】Logistic Regression 学习笔记)如图中蓝线所示:

【机器学习】Logistic Regression 学习笔记

施加L2范式的实质是在原来函数曲线上上移一个抛物线的位移,虽然抛物线在0处取得最小值,但是抛物线在0处过于平缓。最优的 x 在黄点处,x 的绝对值减小了,但依然非零。

而如果施加 L1 regularization,则新的代价函数(【机器学习】Logistic Regression 学习笔记)如图中粉线所示:

【机器学习】Logistic Regression 学习笔记

施加L1范式的实质是在原来函数曲线上上移一个V形折线的位移,折线在0处取得最小值,只要系数C足够大,就能够使得代价函数在0处取得最小值。最优的 x 就变成了 0。这里利用的就是绝对值函数(L1)的尖峰。

两种 regularization 能不能把最优的 x 变成 0,取决于原先的费用函数在 0 点处的导数。
如果本来导数不为 0,那么施加 L2 regularization 后导数依然不为 0,最优的 x 也不会变成 0。
而施加 L1 regularization 时,只要 regularization 项的系数 C 大于原先费用函数在 0 点处的导数的绝对值,x = 0 就会变成一个极小值点。

上面只分析了一个参数 x。事实上 L1 regularization 会使得许多参数的最优值变成 0,这样模型就稀疏了。