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


     

    逻辑回归模型

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

    逻辑斯蒂分布

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

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

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

    此处输入图片的描述

    有没有发现右边很熟悉?没错,就是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)},我们找到它的似然函数(即它发生的概率),如果能使似然函数取得最大值,那么就是让这个样本发生的概率最大(这个概率是个联合概率)。

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

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

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

    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老师的图

            

    我们要找到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: 
    此处输入图片的描述

    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).

    逻辑回归的正则化

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

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

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

    此处输入图片的描述

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

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

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

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

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

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

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

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

    现在施加 L2 regularization,新的代价函数(L + Cx^2)如图中蓝线所示:

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

    而如果施加 L1 regularization,则新的代价函数(L + C|x|)如图中粉线所示:

    施加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,这样模型就稀疏了。
  • 相关阅读:
    .NET 3.54.0 并行计算的支持
    温故知新ASP.NET 2.0(C#)(5) Localization(本地化,多语言)
    [翻译]asp.net 2.0中通过压缩ViewState改善性能
    C# 2.0 泛型
    温故知新ASP.NET 2.0(C#)(8) DataSourceControl(数据源控件)
    温故知新ASP.NET 2.0(C#)(1) MasterPage(母版页)
    [翻译]asp.net 2.0中页的生存周期(Lifecycle)和动态控件
    [翻译]ASP.NET AJAX之内部揭秘
    乐在其中设计模式(C#) 命令模式(Command Pattern)
    [翻译]ASP.NET AJAX调用Web Service
  • 原文地址:https://www.cnblogs.com/chyl411/p/5647657.html
Copyright © 2020-2023  润新知