Logistic 回归分类算法原理分析和实战

Logistic 回归分类算法原理分析和实战

前言

前面咱们已经学习完了KNN、决策树、朴素贝叶斯算法,这些都是解决分类问题的。今天,咱们要讲的也是解决分类问题,叫做Logistic 回归分类算法。

源代码已上传至Github,有需要的自取 Logistic 回归分类算法

Logistic 回归方程原理

如果大家了解线性回归,一定知道,在线性回归中,我们使用差平方和来计算损失值,使用梯度下降法来优化参数。

如果之前没有了解,没关系,咱们就说的慢一点、多一点。

一、梯度下降法

偏导数

img

从图中,我们可以很容易的去找到该图像的最低点,也就是图中大概T点的位置。但是,假如你不知道呢,如何去慢慢的找到这个最低点呢?咱们先来看P0点的切线斜率,也等于该点的导数值,设为α。因为这个切线与x轴的角度小于90°,所以p0点的倒数值大于0.我们有了这个讯息,相当于知道了方向,于是就有了这个公式:X = X-a * α a 为步长。由于α>0,所以x的值在慢慢减小,逐渐靠近T。当X在T点时,该点的切线为水平线,即导数为0,所以此时X=X-a * 0,x值不再变化,此时X为该函数的最小值的取值点。

上面说的都是x,y二维坐标系,扩展为多维坐标系时,导数的概念就变成了偏导数,但是原理都是一样的,朝着最低点的方向前进。然后上述过程在多维时就变成了梯度下降法

梯度下降法

梯度的方向,表示图形增长最快的方向。正如上图所示,每一点的切线方向,就是函数值变化最快的方向。

举个例子,一个想从山峰走向山底的盲人,他看不见坡谷在哪,但可以伸脚探索身边的坡度(当前点的导数值,也称为梯度)。那么,求解Loss函数最小值可以“从当前的参数取值,一步步的按照下坡的方向下降,直到走到最低点”实现。

梯度下降公式:

在这里插入图片描述

J(Θ)为代价函数,
在这里插入图片描述是线性模型的的权值,与后面公式中的w作用一样(y =w0+x * w1+x * w2 )

二、Sigmoid函数的引入

Sigmoid函数图像和公式如下图所示:

在这里插入图片描述
从图中我们可以看到,函数值的范围在0-1之间,并且z等于0时,函数值为0.5.当变量z无限大时,函数值g趋近于1,当变量z无限小时,函数值g趋近于0.

在我们处理分类问题时,我们需要模型输出一个0-1之间的数来表示属于某一类的概率,这里我们假设某一类为第一类。当输出值大于0.5时,可认为该输入数据属于第一类,当输出值小于0.5时,可认为该输入数据不属于第一类。

**为什么要使用Sigmoid函数,而不是直接判定模型值是否大于零?**从公式上来看,z作为g函数的变量,同时也是模型的输出值,那么我直接判断z>0 or z<0 就好了,为什么还要使用这个Sigmoid进行转化一下呢?

  1. 方便计算损失值,衡量模型精准度。在进行分类任务中,数据集的标签是以0、1这样的数字来表示所属的分类(这里以二分类作为例子),如果我们不使用Sigmoid函数,模型输出值就会超过0-1之间范围。假设有一个数据属于1类,模型输出值z特别大,如果使用Sigmoid函数,输出g就会很趋近于1,计算损失值的时候就会很小。但是如果不适用这个函数的话,使用输出值z计算损失值,会很大,再进行反向优化参数的时候,就会认为模型不精准,其实并不是这样。
  2. 上面我们使用Sigmoid函数处理模型最终输出值,这整个模型称之为广义线性模型。有大佬给出了一些推导,结论是当因变量(y)符合伯努利分布(y值取值在0-1)时,广义线性回归模型属于逻辑回归。推导过程

三、代价函数

在线性回归中,我们使用差平方和作为代价函数,公式为:
在这里插入图片描述
,有的没有前面的1/2n,也没关系,这对于我们的结果没有什么影响,只是为了后面公式推导更加方便一些。

如果使用图像表示的话,就是下图中黄色线的长度平方和(红色点为数据点,灰色线是我们需要拟合的直线)
在这里插入图片描述

但是在逻辑回归中,差平方和公式就不适用了,原因如下:

  • 由于Sigmoid函数在自变量很大的时候,图形趋近于一条直线,表明其导数值趋近于0。如果使用差平方和公式最为代价函数,我们就需要求Sigmoid函数的偏导数,这就会导致在进行参数更新时,参数更新速度会变得非常慢。
  • 而使用交叉熵损失函数作为代价函数,不仅在求偏导中能够将Sigmoid函数给消除掉,而且该函数是凸函数,只有一个最优解。带有Sigmoid函数的差平方和公式不是一个凸函数,会有很多局部最优解。
  • 由信息论中KL散度推导出来,更能衡量数据分布与数据在模型中分布的不同。知乎大佬写的交叉熵的理解为什么交叉熵(cross-entropy)可以用于计算代价?

四、参数更新公式推导

Sigmoid 公式[1]为:

在这里插入图片描述
前面我们使用交叉熵作为损失函数,交叉熵的公式[2]为:
在这里插入图片描述
损失函数公式[3]为:
在这里插入图片描述

梯度下降参数更新公式[4]为:

在这里插入图片描述
将公式1 、公式2 、公式3带入公式4中,求得最终结果公式[5]为:

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值