V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
linglingk
V2EX  ›  算法

分享 | 机器学习算法之逻辑回归 LR

  •  
  •   linglingk · 2018-12-22 17:36:44 +08:00 · 721 次点击
    这是一个创建于 2161 天前的主题,其中的信息可能已经有所发展或是发生改变。

    pic

    逻辑回归又称 LR,是一种广义的线性回归分析模型,它是分类中极为常用的手段,因此,掌握其内在原理是非常必要的。

    • 什么是逻辑回归?

    逻辑回归就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,最后测试验证这个求解模型的好坏。

    逻辑回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别)。

    回归模型中,y 是一个定性变量,比如 y = 0 或 1,logistic 方法主要应用于研究某些事件发生的概率。

    • 逻辑回归过程

    假设有一个二分类问题,输出为 y 属于 {0,1},而线性回归模型产生的预测值为 z = w^T * x + b 是实数值,我们希望有一个理想的阶跃函数来帮我们实现 z 值到 0/1 值的转化:

    pic1

    然而该函数不连续,我们希望有一个单调可微的函数来供我们使用,这时我们就可以使用 Sigmoid 函数来代替:

    pic2

    sigmoid 函数图像如下:

    pic3

    使用了 Sigmoid 函数之后,由于其取值在 [0, 1] 之间,我们就可以将其视为类 1 的后验概率估计 p(y=1|x)。通俗的说,就是如果有了一个测试点 x,那么就可以用 Sigmoid 函数算出来的结果来当做该点 x 属于类别 1 的概率大小。于是,在分类的时候,当计算的结果大于 0.5 时,我们则以高概率将其归为 1 类,否则则归为 0 类。

    • 逻辑回归的代价函数

    知道了什么是逻辑回归后,我们就需要训练模型,找到模型对应的参数,这时候我们就需要把模型对应的代价函数定义出来,以优化此目标函数。

    这里如果我们像线性回归一样,利用误差的平方和来作为代价函数:

    pic4

    这里的 i 代表第 i 个样本,如果将 sigmoid 函数代入此代价函数里会发现这是目标函数是一个非凸函数,这就意味着代价函数有着许多的局部最小值,这不利于我们的求解:

    非凸函数与凸函数函数图像如下:

    pic5

    这时候我们可以使用最大似然法去计算代价函数。前面,我们提到了 sigmoid 函数可以视为类 1 的后验估计,所以我们有:

    pic6

    其中,p(y = 1 | x;w) 表示给定 w,那么样本 x 为类 1 的概率大小。因此有:

    pic7

    接下来使用极大似然估计来根据给定的训练集估计出参数 w:

    pic8

    为了让训练出来的模型很好,则对于已知的样本,对于类 1 的样本,则以高概率偏向 1 ( sigmoid 函数值大),对于类 0 的样本,则以高概率偏向 0 ( 1 - sigmoid 函数的值大),这样则表示 L(w) 的值应该尽可能的大。

    为了简化计算,我们对上面的等式两边取一个对数:

    pic9

    我们现在要求的是使得 j(w) 取得最大值时的 w。这时候我们在 l(w) 前面加个负号就变成取最小值,这就是我们最终的代价函数:

    pic10

    • 利用梯度下降法求解参数

    对于 sigmoid 函数有一个很重要的性质,下面的推导会利用此性质:

    pic11

    这里我们要明确一点,梯度的负方向就是代价函数下降最快的方向。这样我们就可以使用梯度下降求解参数 w:

    pic12

    对于每一个参数,则有:

    pic13

    所以,在使用梯度下降法更新权重时,只要根据下式即可:

    pic14

    此式与线性回归时更新权重用的式子极为相似,也许这也是逻辑回归要在后面加上回归两个字的原因吧。

    当然,在样本量极大的时候,每次更新权重会非常耗费时间,这时可以采用随机梯度下降法,这时每次迭代时需要将样本重新打乱,然后用下式不断更新权重。 如是去掉了求和,针对每个样本点都进行更新,即:

    pic15

    pic16

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5314 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 01:27 · PVG 09:27 · LAX 17:27 · JFK 20:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.