【漫话机器学习系列】112.逻辑回归(Logistic Regression)

逻辑回归(Logistic Regression)详解

1. 逻辑回归简介

逻辑回归(Logistic Regression)是一种广泛用于二分类任务 的统计和机器学习方法,尽管它的名字中带有"回归",但它实际上是一种分类算法

在逻辑回归中,我们希望根据输入特征 xxx 预测某个事件发生的概率 P(y=1∣x),并通过逻辑函数(Sigmoid) 将输出值限制在 (0,1) 之间,使其可以被解释为概率。


2. 逻辑回归的数学原理

2.1 线性回归的不足

假设我们使用线性回归来做二分类问题:

然后我们希望通过某个阈值来决定类别:

  • 如果 y ≥ 0.5,分类为 1;
  • 如果 y < 0.5,分类为 0。

但这样有以下问题:

  1. 输出值没有限制:yyy 的取值范围是 (−∞,+∞),但概率的范围应该是 (0,1)。
  2. 缺乏概率解释 :二分类问题需要输出概率,但线性回归的输出无法自然解释为概率。

2.2 逻辑回归的核心思想

逻辑回归通过Sigmoid 函数(S 形函数) 来将线性回归的输出转换为概率:

P(y=1∣x)=σ(wTx+b)P(y=1 | x) = \sigma(w^T x + b)P(y=1∣x)=σ(wTx+b)

其中,Sigmoid 函数定义为:

性质:

  • 当 z → +∞,σ(z) → 1;
  • 当 z → −∞,σ(z) → 0;
  • 当 z = 0,σ(z) = 0.5。

这个函数的形状如下:

这样,我们可以将输出值映射到 (0,1) 之间,并解释为概率。

2.3 逻辑回归的概率解释

逻辑回归实际上是在建模事件发生的概率

可以改写为对数几率(Log-Odds)

其中:

  • 左边是对数几率(log-odds),即事件发生和不发生的比值取对数;
  • 右边是线性回归模型

这说明逻辑回归是对数几率的线性模型,也是它名称中带有"回归"的原因。


3. 逻辑回归的损失函数

在训练逻辑回归模型时,我们需要找到合适的参数 w 和 b,使得模型对数据的预测概率尽可能接近真实值。

3.1 交叉熵损失

由于逻辑回归的输出是一个概率,我们不能直接使用均方误差(MSE) ,而是使用交叉熵损失(Cross Entropy Loss)

其中:

  • 是真实标签(0 或 1);
  • 是模型预测的概率。
损失函数的直觉理解
  • 如果真实标签是 1 ,那么只有第一项 起作用,即希望模型预测的 尽可能接近 1,否则损失较大。
  • 如果真实标签是 0 ,那么只有第二项 起作用,即希望模型预测的 尽可能接近 0,否则损失较大。

因此,最优的 w 和 b 是使得交叉熵损失最小的参数。


4. 逻辑回归的优化

为了找到最优参数 w 和 b,我们通常使用**梯度下降法(Gradient Descent)**进行优化。

4.1 梯度下降法

我们需要计算损失函数对参数的梯度,然后更新参数:

其中:

  • α 是学习率(learning rate)。
  • 是损失函数的梯度。

梯度计算如下:

然后使用梯度下降进行迭代更新,直到收敛。

4.2 其他优化方法

  • 批量梯度下降(BGD):使用整个训练集计算梯度,适用于小规模数据。
  • 随机梯度下降(SGD):每次随机选取一个样本更新参数,适用于大规模数据。
  • 小批量梯度下降(Mini-Batch SGD):每次使用一个小批量的数据计算梯度,是最常用的方法。

5. 逻辑回归的应用

逻辑回归广泛应用于二分类问题,包括:

  • 医学诊断(如判断患者是否患病)
  • 信用评分(如判断贷款申请人是否违约)
  • 垃圾邮件检测(如判断邮件是否是垃圾邮件)
  • 广告点击率预测(如预测用户是否会点击广告)

此外,逻辑回归还可以扩展到多分类问题(Softmax 回归),用于处理多个类别的分类任务。


6. Python 代码实现

可以使用 sklearn 直接实现逻辑回归:

python 复制代码
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 生成数据集
X, y = make_classification(n_samples=1000, n_features=5, random_state=42)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 计算准确率
print("Accuracy:", accuracy_score(y_test, y_pred))

7. 结论

  • 逻辑回归是用于二分类问题的概率模型
  • 使用 Sigmoid 函数将线性回归的输出映射到 (0,1) 之间
  • 使用交叉熵损失函数来优化参数
  • 可以使用梯度下降进行优化,在实际应用中广泛使用。

逻辑回归虽然简单,但在许多实际任务中表现良好,尤其适用于可解释性要求较高的任务。

相关推荐
背心2块钱包邮2 小时前
第7节——积分技巧(Integration Techniques)-代换积分法
人工智能·python·深度学习·matplotlib
无心水2 小时前
【分布式利器:大厂技术】4、字节跳动高性能架构:Kitex+Hertz+BytePS,实时流与AI的极致优化
人工智能·分布式·架构·kitex·分布式利器·字节跳动分布式·byteps
阿正的梦工坊2 小时前
DreamGym:通过经验合成实现代理学习的可扩展化
人工智能·算法·大模型·llm
湘-枫叶情缘2 小时前
人脑生物芯片作为“数字修炼世界”终极载体的技术前景、伦理挑战与实现路径
人工智能
Aaron15882 小时前
侦察、测向、识别、干扰一体化平台系统技术实现
人工智能·fpga开发·硬件架构·边缘计算·信息与通信·射频工程·基带工程
维维180-3121-14552 小时前
作物模型的未来:DSSAT与机器学习、遥感及多尺度模拟的融合
人工智能·生态学·农业遥感·作物模型·地理学·农学
阿杰学AI3 小时前
AI核心知识38——大语言模型之Alignment(简洁且通俗易懂版)
人工智能·安全·ai·语言模型·aigc·ai对齐·alignment
xier_ran3 小时前
关键词解释:对比学习(Contrastive Learning)
人工智能·深度学习·学习·机器学习·对比学习
Jay20021113 小时前
【机器学习】27 异常检测(密度估计)
人工智能·机器学习
ziwu3 小时前
【岩石种类识别系统】Python+TensorFlow+Django+人工智能+深度学习+卷积神经网络算法
人工智能·深度学习·图像识别