zoukankan      html  css  js  c++  java
  • 【机器学习】Logistic Regression 的前世今生(理论篇)

    Logistic Regression 的前世今生(理论篇)


    本博客仅为作者记录笔记之用,不免有非常多细节不正确之处。

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

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

    如需转载,请附上本文链接,不甚感激!
    http://blog.csdn.net/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(Xx)=11+e(xμ)/γ
    f(x)=F(Xx)=e(xμ)/γγ(1+e(xμ)/γ)2
    上式中。μ 表示位置參数γ>0形状參数。

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

    此处输入图片的描写叙述

    有没有发现右边非常熟悉?没错。就是sigmoid 曲线。仅仅只是,这个曲线是以点( μ, 12) 为中心对称。

    从图中能够看出。曲线在中心附近增长速度较快,而形状參数 γ 值越小。曲线在中心附近增长越快,请自行脑补一下。


    二项逻辑回归模型

    之前说到,逻辑回归是一种二分类模型,由条件概率分布P(Y|X) 表示,形式就是參数化的逻辑斯蒂分布

    这里的自变量X取值为实数。而因变量Y为0或者1。二项LR的条件概率例如以下:

    P(Y=1|x)==ewx1+ewx
    P(Y=0|x)==11+ewx
    一个事件的几率(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:
    此处输入图片的描写叙述

    Beale’s Function:

    此处输入图片的描写叙述

    Saddle Point:

    此处输入图片的描写叙述

    以后会专门写一篇来讲求极值的方法。这是题外话了。我们还是继续回归逻辑吧,哈哈。


    以下介绍使用梯度下降法来求解逻辑回归问题。


    使用梯度下降法(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).

    逻辑回归的正则化

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

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

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

    此处输入图片的描写叙述

    显然,最右这张图overfitting了,原因可能是能影响结果的參数太多了。

    典型的做法在优化目标中增加正则项,通过惩处过大的參数来防止过拟合:

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

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

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

    那么。參数稀疏 有什么优点呢?

    一个关键原因在于它能实现 特征的自己主动选择

    一般来说,大部分特征 xi和输出 yi 之间并没有多大关系。

    在最小化目标函数的时候考虑到这些额外的特征 xi,尽管能够获得更小的训练误差,但在预測新的样本时。这些无用的信息反而会干扰了对正确 yi 的预測。稀疏规则化算子的引入就是为了完毕特征自己主动选择的光荣使命,它会学习地去掉这些没有信息的特征,也就是把这些特征相应的权重置为0。

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

    它的强大之处就是它能 解决过拟合 问题。我们让 L2 范数的规则项 ||w||2 最小。能够使得 w 的每一个元素都非常小。都接近于0,但与 L1 范数不同,它不会让它等于0,而是接近于0。这里还是有非常大差别的。而越小的參数说明模型越简单。越简单的模型则越不easy产生过拟合现象。

    ,你为啥说越小的參数表示的模型越简单呢? 事实上我也不知道,我也是猜,可能是由于參数小。对结果的影响就小了吧。

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

    此处输入图片的描写叙述

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

    一句话总结就是:L1 会趋向于产生少量的特征,而其它的特征都是0,而 L2 会选择很多其它的特征。这些特征都会接近于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的关系?

    逻辑回归跟最大熵模型究竟有啥差别呢?

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

    以下来具体地介绍一下:

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

    1. π(x)u 表示,输入时x, 输出的 y=u的概率;
    2. A(u,v) 是一个指示函数,若u=v。则 A(u,v)=1。否则 A(u,v)=0
    3. 我们的目标,就是从训练数据中,学习得到一个模型。使得 π(x)u 最大化,也就是输入x,预測结果是 y 的概率最大,也就是使得 π(x)y 最大。

    回想逻辑回归

    标准的逻辑回归是二类模型,有:

    P(Y=1|x)=π(x)1=ewx1+ewx
    P(Y=0|x)=π(x)0=1π(x)1

    我们用一个更加泛化的形式来表达 π(),(仅仅是在这里,k=2):

    π(x)v=ewvxku=1ewux

    回到我们的目标:令π(xi)yi 最大。能够用极大似然预计的方法来求解。


    L(w)=i=1nπ(xi)yi

    lnL(w)=i=1nln(π(xi)yi)

    lnL(w)求偏导,得到:

    δδwu,jlnL(w)=...=i=1,yi=unxiji=1nxijπ(xi)u

    令偏导等于0,能够得到:

    i=1nxijπ(xi)u=i=1,yi=unxij,(forallu,j)

    使用A(u,yi) 这个函数,我们能够重写等式:

    i=1nxijπ(xi)u=i=1nA(u,yi)xij,(forallu,j)

    回想最大熵模型

    想要证明逻辑回归跟最大熵模型是等价的,那么。仅仅要能够证明它们的 π() 是同样。结论自然就出来了。如今,我们不知道最大熵模型的 π(),可是我们知道以下的一些性质:

    π(x)v0always

    v=1kπ(x)v=1always

    i=1nxijπ(xi)u=i=1nA(u,yi)xij,(forallu,j)

    利用信息论的仅仅是,我们能够得到π()。定义例如以下:

    v=1ki=1nπ(xi)vlog[π(xi)v]

    如今,我们有了目标π() 最大,也有了上面的4个约束条件。求解约束最优化问题,能够通过拉格朗日乘子,将约束最优化问题转换为无约束最优化的对偶问题。

    我们的拉格朗日式子能够写成例如以下:

    L=j=1mv=1kwv,j(i=1nπ(xi)vxijA(v,yi)xij)

    +v=1ki=1nβi(π(xi)v1)

    v=1ki=1nπ(xi)vlog[π(xi)v]

    L求偏导。得到:

    δδπ(xi)uL=wuxi+βilog[π(xi)u]1

    令偏导=0,得到:wuxi+βilog[π(xi)u]1=0,从而得到:

    π(xi)u=ewuxi+βi1

    由于有约束条件:kv=1π(x)v=1,所以,

    v=1kewvxi+βi1=1

    因此。能够得到

    eβ=1/v=1kewvxi1

    eβ 代入π(),而且简化一下式子:

    π(x)u=ewuxkv=1ewvx

    有没有发现这就是逻辑回归中。提到的那个泛化的式子,这就证明了逻辑回归是最大熵模型的一个特殊样例(k=2)!

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

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

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

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

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

    Logistic Regression的理论部分讲的差点儿相同了。下一篇文章将介绍Logistic Regression的并行化 project问题。

    敬请期待…

    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.csdn.net/zouxy09/article/details/24971995
    [5]. http://www.tuicool.com/articles/auQFju
    
  • 相关阅读:
    机器学习概要
    Latex公式压缩
    MATLAB多项式运算
    利用MathType为公式编号并引用
    MATLAB符号对象与符号运算
    MATLAB矩阵运算
    MATLAB绘制函数图
    MATLAB程序控制语句
    MATLAB关系运算符和逻辑运算符
    Raspberry pi之wifi设置-3
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7392352.html
Copyright © 2011-2022 走看看