Logistics Regression算法小结

本文总结了Logistic Regression(LR)算法,包括模型原理、梯度下降优化以及为何不使用平方差作为损失函数。LR是分类模型,区别于线性回归,它利用sigmoid函数和交叉熵损失函数,而非线性回归的MSE。通过最大化似然概率,LR确保了模型的表达能力和损失函数的凸性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当目标变量时分类变量时,常常使用Logistic Regression(LR)算法。

例如:

  • 预测邮件是否为垃圾邮件(是垃圾邮件标记为1,否则为0)
  • 预测肿瘤是否为恶性的(是恶性的为1,否则为0)

模型

LR算法主要利用sigmoid函数,其图像如下:
在这里插入图片描述

模型的输入是 x i = ( x i 1 , x i 2 , . . . , x i m ) x_i=(x^1_i,x^2_i,...,x^m_i) xi=(xi1,xi2,...,xim) x i x_i xi是一个向量,其具体的计算方法如下:
h ( x ) = 1 1 + e − z , z = θ x + b h(x) = \frac{1}{1+e^{-z}}, \quad z = \theta x +b h(x)=1+ez1,z=θx+b
其中 θ = ( θ 1 , θ 2 , . . . , θ m ) , h ( x ) \theta = (\theta_1,\theta_2,...,\theta_m), h(x) θ=(θ1,θ2,...,θm),h(x)就是模型的输出结果。

LR算法的损失函数是:
C o s t ( h ( x ) , Y ) = { − l o g ( h ( x ) ) , i f y = 1 − l o g ( 1 − h ( x ) ) , i f y = 0 Cost(h(x),Y) = \begin{cases} &-log(h(x)), \quad &if \quad y=1 \\ &-log(1-h(x)),\quad &if \quad y=0 \end{cases} Cost(h(x),Y)={log(h(x)),log(1h(x)),ify=1ify=0
写在一起就是:
C o s t ( h ( x ) , y ) = − y l o g ( h ( x ) ) − ( 1 − y ) l o g ( 1 − h ( x ) ) Cost(h(x),y) = -ylog(h(x))- (1-y)log(1-h(x)) Cost(h(x),y)=ylog(h(x))(1y)log(1h(x))

那么为什么是这个损失函数呢?

假设,模型预测为1的概率如下(其实也就是将模型的输出概率值作为为1的概率值):
p ( y = 1 ∣ x ) = y ^ p(y=1|x) = \hat{y} p(y=1x)=y^
那么,预测为0的概率也就是:
p ( y = 0 ∣ x ) = 1 − y ^ p(y=0|x) = 1-\hat{y} p(y=0x)=1y^

那么可以将他们二者结合写起来就是:
p ( y ∣ x ) = y ^ y ⋅ ( 1 − y ^ ) 1 − y p(y|x) = \hat{y}^y \cdot (1-\hat{y})^{1-y} p(yx)=y^y(1y^)1y
也就是在输入x的情况下,y(y一直指的是真实值)出现的概率。

根据极大似然概率,我们希望他们出现的概率最大。对于有n个样本,那么一般的想法就是把这n个概率连乘,显然连乘容易导致下溢出,所以我们可以对其取对数:
L = ∑ i = 1 n log ⁡ ( y ^ y ⋅ ( 1 − y ^ ) 1 − y ) = ∑ i = 1 n ( y log ⁡ y ^ + ( 1 − y ) log ⁡ ( 1 − y ^ ) \begin{aligned} L=&\sum_{i=1}^n \log(\hat{y}^y \cdot (1-\hat{y})^{1-y}) \\ =&\sum_{i=1}^n (y\log \hat{y} +(1-y)\log(1-\hat{y}) \end{aligned} L==i=1nlog(y^y(1y^)1y)i=1n(ylogy^+(1y)log(1y^)

最大化上面的L,也就是最小化 − L -L L,把负号带进去,就是我们上面的 C o s t ( h ( x ) , y ) Cost(h(x),y) Cost(h(x),y).

梯度下降

一般采用梯度下降进行优化,那么需要求损失值对于参数 θ \theta θ,也可以说是参数 w 和 b w和b wb的梯度,具体的计算如下(主要就是利用链式法则和 σ ′ ( x ) = σ ( x ) ( 1 − σ ( x ) ) \sigma'(x)=\sigma(x)(1-\sigma(x)) σ(x)=σ(x)(1σ(x))):

在这里插入图片描述

在这里插入图片描述

为什么不使用平方差作为LR的损失函数

我们学习的第一个算法,以及我们潜意识里计算损失函数都是平方差(MSE)损失函数,那么LR为什么不使用MSE作为损失函数呢?

在讨论这个之前,我们需要知道,我们在使用梯度下降算法进行更新参数时,找到的都是局部极小值,那么如果我们希望找到的这个局部极小值就是全局最小值,那么我们需要保证损失函数是凸函数(凸函数可以保证局部极小值就是全局最小值)。

我们在线性回归中使用MSE最为损失函数,它是凸函数。而在LR中使用MSE就不是凸函数了。(要想证明一个函数是凸函数,可以对其进行二阶求导,只要二阶导数在定义域内一直大于等于0,那么他就是凸函数。)

下面是使用MSE作为LR的损失函数,然后对参数 θ \theta θ求二阶导的具体过程:
在这里插入图片描述

显然,如果二阶导结果中的 H ( y ^ ) H(\hat{y}) H(y^)再定义域内一直大于等于0,那么函数就是凸函数【因为 y ^ ( 1 − y ^ ) ∈ [ 0 , 1 / 4 ] \hat{y}(1-\hat{y}) \in [0,1/4] y^(1y^)[0,1/4]】,但这显然不成立。举一个反例就可以,假设y=0,那么上式可以写成:

在这里插入图片描述

y ^ 位 于 [ 2 / 3 , 1 ] \hat{y}位于[2/3,1] y^[2/3,1]区间内时, H ( y ^ ) ≤ 1 H(\hat{y}) \leq 1 H(y^)1,所以 f ( x ) f(x) f(x)的二阶导不是一直大于等于0的,所以他不是凸函数。
同理,可以假设y=1时,代入计算。

而当我们使用交叉熵作为损失函数时,再求损失函数的二阶导,可以保证在定义域内二阶导用于大于等于0:

在这里插入图片描述

所以,我们采用交叉熵作为损失函数(因为他是凸函数),而不是平方差损失函数。

LR与线性回归的区别

  • 线性回归是回归模型,逻辑回归是分类模型。
  • 线性回归要求输入特征x与输出y有联系,如果没有关系效果会很差,而逻辑回归引入了非线性函数sigma函数,增加了模型的表达能力。
  • 两者的损失函数不同,线性回归使用MSE,逻辑回归使用交叉熵(或者更本质的说,线性回归使用最小二乘法进行模型的求解,而逻辑回归使用最大似然的方法进行求解。)

参考地址:

Logistic Regression — Detailed Overview

Why not Mean Squared Error(MSE) as a loss function for Logistic Regression?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值