【机器学习】Logistic Regression 的前世今生(理论篇)

版权声明:如需转载,请附上本文链接。作者主页:http://blog.youkuaiyun.com/cyh_24    https://blog.youkuaiyun.com/cyh24/article/details/50359055
Logistic Regression 的前世今生(理论篇)
本博客仅为作者记录笔记之用,不免有很多细节不对之处。

还望各位看官能够见谅,欢迎批评指正。

博客虽水,然亦博主之苦劳也。

如需转载,请附上本文链接,不甚感激! 
http://blog.youkuaiyun.com/cyh_24/article/details/50359055

写这篇博客的动力是源于看到了下面这篇微博:

我在看到这篇微博的时候大为触动,因为,如果是rickjin来面试我,我想我会死的很惨,因为他问的问题我基本都回答不上来。所以,痛定思痛,我决定今后对一些算法的理解不能只是停留在表面,而应该至少往前推一步,尝试看得更远一些。 
对于学习机器学习的人来说,Logistic Regression可以说是一个入门的算法,算法本身不复杂,不过也正是因为这个原因,很多人往往忽略了这个算法的一些内在精髓。

这篇博客里,我打算就rickjin问的一些问题,进行总结:

1. LR原理 
2. LR的求解数学推导 
3. LR的正则化 
4. 为什么LR能比线性回归好? 
5. LR与MaxEnt的关系 
6. 并行化的LR

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

逻辑斯蒂分布
设X是连续随机变量,X服从逻辑斯蒂分布是指X具有下列的分布函数和密度函数: 
F(x)=P(X≤x)=11+e−(x−μ)/γ
F(x)=P(X≤x)=11+e−(x−μ)/γ
f(x)=F′(X≤x)=e−(x−μ)/γγ(1+e−(x−μ)/γ)2
f(x)=F′(X≤x)=e−(x−μ)/γγ(1+e−(x−μ)/γ)2
上式中,μμ 表示位置参数,γ>0γ>0 为形状参数。
有没有发现F(x)F(x)是啥?有图你就知道真相了:

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

二项逻辑回归模型
之前说到,逻辑回归是一种二分类模型,由条件概率分布P(Y|X)P(Y|X) 表示,形式就是参数化的逻辑斯蒂分布。这里的自变量XX取值为实数,而因变量YY为0或者1。二项LR的条件概率如下: 
P(Y=1|x)==ew⋅x1+ew⋅x
P(Y=1|x)==ew⋅x1+ew⋅x
P(Y=0|x)==11+ew⋅x
P(Y=0|x)==11+ew⋅x
一个事件的几率(odds):指该事件发生与不发生的概率比值,若事件发生概率为pp,那么事件发生的几率就是
odds=p1−p
odds=p1−p
那么该事件的对数几率(log odds或者logit)就是: 
logit(p)=logp1−p
logit(p)=logp1−p
那么,对逻辑回归而言,Y=1Y=1的对数几率就是: 
logP(Y=1|x)1−P(Y=1|x)=w⋅x
logP(Y=1|x)1−P(Y=1|x)=w⋅x
也就是说,输出Y=1Y=1的对数几率是由输入xx的线性函数表示的模型,这就是 逻辑回归模型。当 w⋅xw⋅x的值越接近正无穷,P(Y=1|x)P(Y=1|x) 概率值也就越接近1.

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

设:
P(Y=1|x)=π(x),P(Y=0|x)=1−π(x)
P(Y=1|x)=π(x),P(Y=0|x)=1−π(x)
似然函数:
L(w)=∏[π(xi)]yi[1−π(xi)]1−yi
L(w)=∏[π(xi)]yi[1−π(xi)]1−yi
对数似然函数:
lnL(w)=∑[yilnπ(xi)+(1−yi)ln(1−π(xi))]
lnL(w)=∑[yilnπ(xi)+(1−yi)ln(1−π(xi))]
=∑[yilnπ(xi)1−π(xi)+ln(1−π(xi))]
=∑[yilnπ(xi)1−π(xi)+ln(1−π(xi))]
=∑[yi(w⋅xi)−ln(1+ew⋅xi)]
=∑[yi(w⋅xi)−ln(1+ew⋅xi)]
现在要求 ww 使得L(w)L(w) 最大,有的人可能会有疑问:

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

实际上,对数似然损失在单个数据点上的定义为: 
−ylnp(y|x)−(1−y)ln[1−p(y|x)]=−[yilnπ(xi)+(1−yi)ln(1−π(xi))]
−ylnp(y|x)−(1−y)ln[1−p(y|x)]=−[yilnπ(xi)+(1−yi)ln(1−π(xi))]
如果取整个数据集上的平均对数似然损失,我们恰好可以得到: 
J(w)=−1NlnL(w)
J(w)=−1NlnL(w)
即在逻辑回归模型中,我们最大化似然函数和最小化对数似然损失函数实际上是等价的。

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

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

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

Long Valley: 


Beale’s Function:

Saddle Point:

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

使用梯度下降法(Gradient Descent)求解逻辑回归
算法(梯度下降法求解逻辑回归) 
输入:目标函数:J(w)J(w)(对数似然损失函数),梯度函数: g(w)=∇J(w)g(w)=∇J(w), 计算精度ϵϵ 
输出:J(w)J(w) 的极小值点 w∗w∗ 
过程: 
(1) 取初始值 w0∈Rnw0∈Rn, 令k=0k=0 
(2) 计算J(wk)J(wk) 
J(wk)=−1NlnL(wk)⇒−lnL(wk)
J(wk)=−1NlnL(wk)⇒−lnL(wk)
=∑[yi(wk⋅xi)−ln(1+ewk⋅xi)]
=∑[yi(wk⋅xi)−ln(1+ewk⋅xi)]
(3) 计算梯度 gk=g(wk)=∇J(w)gk=g(wk)=∇J(w) 
g(wk)=∑[xi⋅yi−xi⋅ewk⋅xi1+ewk⋅xi]
g(wk)=∑[xi⋅yi−xi⋅ewk⋅xi1+ewk⋅xi]
=∑[xi⋅yi−π(xi)]
=∑[xi⋅yi−π(xi)]
若||gk||<ϵ||gk||<ϵ ,停止迭代,令
w∗=wk
w∗=wk
否则,令pk=−g(wk)pk=−g(wk),求λkλk,使得
J(wk+λkpk)=min(J(wk+λpk))
J(wk+λkpk)=min(J(wk+λpk))
(4) 令wk+1=wk+λkpkwk+1=wk+λkpk,计算 J(wk+1)J(wk+1) 
当||J(wk+1)−J(wk)||<ϵ||J(wk+1)−J(wk)||<ϵ 或 ||wk+1−wk||<ϵ||wk+1−wk||<ϵ,停止迭代,令
w∗=wk+1
w∗=wk+1
(5) 否则,令k=k+1k=k+1,转(3).

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

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

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

显然,最右这张图overfitting了,原因可能是能影响结果的参数太多了。典型的做法在优化目标中加入正则项,通过惩罚过大的参数来防止过拟合: 
J(w)=>J(w)+λ||w||p
J(w)=>J(w)+λ||w||p
p=1或者2,表示L1L1 范数和 L2L2范数,这两者还是有不同效果的。

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

一个关键原因在于它能实现 特征的自动选择。一般来说,大部分特征 xixi和输出 yiyi 之间并没有多大关系。在最小化目标函数的时候考虑到这些额外的特征 xixi,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的信息反而会干扰了对正确 yiyi 的预测。稀疏规则化算子的引入就是为了完成特征自动选择的光荣使命,它会学习地去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。

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

它的强大之处就是它能 解决过拟合 问题。我们让 L2L2 范数的规则项 ||w||2||w||2 最小,可以使得 ww 的每个元素都很小,都接近于0,但与 L1L1 范数不同,它不会让它等于0,而是接近于0,这里还是有很大区别的。而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。咦,你为啥说越小的参数表示的模型越简单呢? 其实我也不知道,我也是猜,可能是因为参数小,对结果的影响就小了吧。

为了更直观看出两者的区别,我再放一张图:

为了简单,上图只考虑了ww为二维(w1,w2)(w1,w2)的情况。彩色等高线是(w1,w2)(w1,w2);而左边黑色矩形 ||w||1<C||w||1<C 和右边的圆形 ||w||2<C||w||2<C 是约束条件;相交的黑点就是最优解发生的地方。两者的区别可以从图中看出来,L1L1正则化(左图)倾向于使参数变为0,因此能产生稀疏解。而 L2L2 使 ww 接近0;

一句话总结就是:L1L1 会趋向于产生少量的特征,而其他的特征都是0,而 L2L2 会选择更多的特征,这些特征都会接近于0。

为什么逻辑回归比线性回归要好?
虽然逻辑回归能够用于分类,不过其本质还是线性回归。它仅在线性回归的基础上,在特征到结果的映射中加入了一层sigmoid函数(非线性)映射,即先把特征线性求和,然后使用sigmoid函数来预测。然而,正是这个简单的逻辑函数,使得逻辑回归模型成为了机器学习领域一颗耀眼的明星。

下面我们来谈谈逻辑回归与线性回归的异同点吧。

假设随Tumor Size变化,预测病人的肿瘤是恶性(malignant)还是良性(benign)的情况。给出8个数据如下(阈值为0.5):

![此处输入图片的描述][10]

图1.a中,粉色线是预测模型,可以看出,模型能够完全把结果预测对了,但是图1.b中蓝色线却预测的很差。

这主要是由于线性回归在整个实数域内敏感度一致,而分类范围,需要在[0,1]之内。而逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型,其回归方程与回归曲线如下图所示。逻辑曲线在z=0时,十分敏感,在z>>0或z<<0处,都不敏感,将预测值限定为(0,1)。

逻辑回归与最大熵模型MaxEnt的关系?
逻辑回归跟最大熵模型到底有啥区别呢?

简单粗暴 的回答是:逻辑回归跟最大熵模型没有本质区别。逻辑回归是最大熵对应类别为二类时的特殊情况,也就是当逻辑回归类别扩展到多类别时,就是最大熵模型。

下面来详细地介绍一下:

在进行下面推导之前,先上几个数学符号定义:

π(x)uπ(x)u 表示,输入时xx, 输出的 y=uy=u的概率;
A(u,v)A(u,v) 是一个指示函数,若u=vu=v,则 A(u,v)=1A(u,v)=1;否则 A(u,v)=0A(u,v)=0
我们的目标,就是从训练数据中,学习得到一个模型,使得 π(x)uπ(x)u 最大化,也就是输入xx,预测结果是 yy 的概率最大,也就是使得 π(x)yπ(x)y 最大;
回顾逻辑回归
标准的逻辑回归是二类模型,有: 
P(Y=1|x)=π(x)1=ew⋅x1+ew⋅x
P(Y=1|x)=π(x)1=ew⋅x1+ew⋅x
P(Y=0|x)=π(x)0=1−π(x)1
P(Y=0|x)=π(x)0=1−π(x)1
我们用一个更加泛化的形式来表达 π()π(),(只是在这里,k=2): 
π(x)v=ewv⋅x∑ku=1ewu⋅x
π(x)v=ewv⋅x∑u=1kewu⋅x
回到我们的目标:令π(xi)yiπ(xi)yi 最大,可以用极大似然估计的方法来求解。 
L(w)=∏i=1nπ(xi)yi
L(w)=∏i=1nπ(xi)yi
lnL(w)=∑i=1nln(π(xi)yi)
lnL(w)=∑i=1nln(π(xi)yi)
对lnL(w)lnL(w)求偏导,得到: 
δδwu,jlnL(w)=...=∑i=1,yi=unxij−∑i=1nxijπ(xi)u
δδwu,jlnL(w)=...=∑i=1,yi=unxij−∑i=1nxijπ(xi)u
令偏导等于0,可以得到: 
∑i=1nxijπ(xi)u=∑i=1,yi=unxij,(forallu,j)
∑i=1nxijπ(xi)u=∑i=1,yi=unxij,(forallu,j)
使用A(u,yi)A(u,yi) 这个函数,我们可以重写等式: 
∑i=1nxijπ(xi)u=∑i=1nA(u,yi)xij,(forallu,j)
∑i=1nxijπ(xi)u=∑i=1nA(u,yi)xij,(forallu,j)
回顾最大熵模型
想要证明逻辑回归跟最大熵模型是等价的,那么,只要能够证明它们的 π()π() 是相同,结论自然就出来了。现在,我们不知道最大熵模型的 π()π(),但是我们知道下面的一些性质: 
π(x)v≥0always
π(x)v≥0always
∑v=1kπ(x)v=1always
∑v=1kπ(x)v=1always
∑i=1nxijπ(xi)u=∑i=1nA(u,yi)xij,(forallu,j)
∑i=1nxijπ(xi)u=∑i=1nA(u,yi)xij,(forallu,j)
利用信息论的只是,我们可以得到π()π() 的熵,定义如下: 
−∑v=1k∑i=1nπ(xi)vlog[π(xi)v]
−∑v=1k∑i=1nπ(xi)vlog[π(xi)v]
现在,我们有了目标:∑π()∑π() 最大,也有了上面的4个约束条件。求解约束最优化问题,可以通过拉格朗日乘子,将约束最优化问题转换为无约束最优化的对偶问题。我们的拉格朗日式子可以写成如下: 
L=∑j=1m∑v=1kwv,j(∑i=1nπ(xi)vxij−A(v,yi)xij)
L=∑j=1m∑v=1kwv,j(∑i=1nπ(xi)vxij−A(v,yi)xij)
+∑v=1k∑i=1nβi(π(xi)v−1)
+∑v=1k∑i=1nβi(π(xi)v−1)
−∑v=1k∑i=1nπ(xi)vlog[π(xi)v]
−∑v=1k∑i=1nπ(xi)vlog[π(xi)v]
对LL求偏导,得到: 
δδπ(xi)uL=wu⋅xi+βi−log[π(xi)u]−1
δδπ(xi)uL=wu⋅xi+βi−log[π(xi)u]−1
令偏导=0,得到:wu⋅xi+βi−log[π(xi)u]−1=0wu⋅xi+βi−log[π(xi)u]−1=0,从而得到: 
π(xi)u=ewu⋅xi+βi−1
π(xi)u=ewu⋅xi+βi−1
因为有约束条件:∑kv=1π(x)v=1∑v=1kπ(x)v=1,所以, 
∑v=1kewv⋅xi+βi−1=1
∑v=1kewv⋅xi+βi−1=1
因此,可以得到
eβ=1/∑v=1kewv⋅xi−1
eβ=1/∑v=1kewv⋅xi−1
把eβeβ 代入π()π(),并且简化一下式子: 
π(x)u=ewu⋅x∑kv=1ewv⋅x
π(x)u=ewu⋅x∑v=1kewv⋅x
有没有发现这就是逻辑回归中,提到的那个泛化的式子,这就证明了逻辑回归是最大熵模型的一个特殊例子(k=2)!

到此,逻辑回归与最大熵模型的关系就解释完毕了,总结一下:

逻辑回归跟最大熵模型没有本质区别。逻辑回归是最大熵对应类别为二类时的特殊情况

指数簇分布的最大熵等价于其指数形式的最大似然。

二项式分布的最大熵解等价于二项式指数形式(sigmoid)的最大似然; 
多项式分布的最大熵等价于多项式分布指数形式(softmax)的最大似然。

假设分布求解最大熵,引入拉格朗日函数,求偏导数等于0,直接求出的就是sigmoid函数形式。还有很多指数簇分布都有对应的最大似然解。而单个指数簇分布往往表达能力有限,这就需要引入了多个指数簇分布的混合模型,比如高斯混合,从而引出EM算法。

Logistic Regression的理论部分讲的差不多了,下一篇文章将介绍Logistic Regression的并行化 工程问题。敬请期待…

Please feel free to contact me if you have any questions.

参考文献
[1]. 李航,《统计学习方法》 
[2]. John Mount. *"The equivalence of logistic regression and maximum entropy models"*
[3]. http://tech.meituan.com/intro_to_logistic_regression.html
[4]. http://blog.youkuaiyun.com/zouxy09/article/details/24971995
[5]. http://www.tuicool.com/articles/auQFju
--------------------- 
作者:仙道菜 
来源:优快云 
原文:https://blog.youkuaiyun.com/cyh_24/article/details/50359055 
版权声明:本文为博主原创文章,转载请附上博文链接!

### 回答1: 机器学习中的逻辑回归(Logistic Regression)是一种用于分类问题的监督学习算法。它被广泛应用于各种领域,如金融、医疗、社交网络等。 逻辑回归的基本原理是利用一个线性模型,将输入特征与输出结果之间的关系进行建模。然后通过在线性模型的基础上引入一个逻辑函数(sigmoid函数),将输出结果映射到一个概率值。 具体来说,逻辑回归算法通过对训练数据进行学习,估计出模型的参数,使得模型能够对新的输入样本进行分类预测。在训练过程中,逻辑回归通过最大化似然函数的方法来估计模型的参数。常用的优化算法有梯度下降法、牛顿法等。 逻辑回归的一个重要应用是二分类问题,其中输出结果只有两个类别。通过设置一个阈值,将模型输出的概率值映射为两个类别中的一个。 逻辑回归的优点包括简单、可解释性强、计算效率高。同时,逻辑回归对于处理大规模数据集和高维数据也具有较好的适应性。然而,逻辑回归也有一些不足之处,例如无法处理非线性关系以及对异常值比较敏感。 总之,逻辑回归是一种经典的机器学习算法,既简单又有效。它在各种分类问题中得到了广泛应用,并且在实际应用中表现良好。 ### 回答2: 机器学习中的逻辑回归(Logistic Regression)是一种常用的分类算法。它通过建立一个逻辑回归模型,将输入的特征与相应的类别进行关联。 逻辑回归可以处理二分类问题,也可以通过修改为多类别问题进行处理。它的核心思想是使用逻辑函数(也称为Sigmoid函数)将线性回归模型的输出映射到[0,1]之间,从而得到样本属于某个类别的概率。 逻辑回归的训练过程主要包括两个步骤:参数初始化和优化。参数初始化就是设置模型的初始权重和偏置,然后通过最优化算法(如梯度下降法)来迭代地更新参数,使得模型的损失函数最小化。 逻辑回归的优势在于它计算速度快、实现简单,且对大规模数据集的处理效果较好。它能够处理线性可分问题,并且可以通过引入正则化技术来防止过拟合。 然而,逻辑回归也有一些限制。由于它是基于线性模型的,对于非线性关系的分类问题,逻辑回归可能无法很好地适应。此外,逻辑回归对特征的选择和预处理较为敏感,需要进行适当的特征工程。 总的来说,逻辑回归是一种简单且有效的分类算法,特别适用于二分类问题。尽管有其局限性,但在实际应用中,逻辑回归仍然被广泛使用,并且可以作为其他更复杂模型的基础。 ### 回答3: 机器学习中的逻辑回归(logistic regression)是一种用于分类问题的机器学习算法。逻辑回归被广泛应用于各个领域,如医学诊断、金融风险评估、文本分类等。 逻辑回归的基本思想是通过对输入变量和输出变量之间的关系进行建模来进行分类。它用到了一个逻辑函数(logistic function),将输入变量的线性组合映射到0和1之间的概率值。逻辑函数通常是sigmoid函数,常用的形式是1 / (1 + exp(-z)),其中z是输入变量的线性组合。 训练逻辑回归模型的过程是通过最大似然估计来拟合模型参数。最大似然估计的目标是找到能最大化观测到的样本的条件概率的参数。为了实现这一点,通常使用梯度下降法来最小化损失函数。损失函数可以是似然函数的负对数,即对数损失函数。 逻辑回归有一些优点。首先,它是一种简单而直观的模型,易于理解和实现。其次,逻辑回归模型的参数可以通过梯度下降等优化算法进行有效求解。此外,逻辑回归模型具有较好的解释性,可以通过参数的符号和大小了解自变量与因变量的关系。 然而,逻辑回归也有一些限制。首先,它通常只适用于处理线性可分的问题。其次,逻辑回归模型对于特征之间的相关性比较敏感,如果特征之间具有高度相关性,可能导致模型出现过拟合现象。此外,逻辑回归模型的输出是概率值,对于某些任务可能不够精确。 总之,逻辑回归是一种常用的机器学习算法,用于解决分类问题。其简单而直观的思想和容易求解的特点使其在实际应用中非常有用。但需要注意逻辑回归的局限性,并结合具体问题选择合适的模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值