Day 3:逻辑回归与分类预测

Day 3:逻辑回归与分类预测

逻辑回归,虽然名字里带有"回归",但它却是解决分类问题最基础、最重要的算法之一。

📋 目录

  1. 逻辑回归基础原理
  2. Sigmoid函数详解
  3. 决策边界与分类
  4. 交叉熵损失函数
  5. 优化算法
  6. 多分类扩展
  7. 评估指标回顾

第一部分:逻辑回归基础原理(1.5小时理论)

1.1 为什么需要逻辑回归?

典型的分类问题,我们的目标不是预测一个连续的数值(比如房价),而是预测一个离散的类别标签。

如果我们强行使用之前学过的线性回归来解决这个问题,会遇到什么麻烦呢?

  1. 输出值范围不对 :线性回归的输出是任意实数,范围是 (−∞,+∞)(-\infty, +\infty)(−∞,+∞)。但分类问题,特别是二分类,我们希望得到的是"是"或"否"(通常用1和0表示)。
  2. 对异常值敏感:假设我们用0表示"否",1表示"是"。线性回归的拟合直线可能会被极端的异常值轻易地拉偏,导致分类阈值(比如0.5)的判断完全失效。

因此,我们需要一种新的模型,它能将线性模型的输出"压缩"到一个固定的范围内,比如(0, 1),并将其解释为概率。这就是逻辑回归诞生的原因。

逻辑回归的优势

  • 输出可以解释为概率 P(y=1∣x)P(y=1|x)P(y=1∣x)
  • 自然处理二分类问题
  • 计算效率高,可解释性强
  • 是许多量化策略的基准模型

1.2 从线性回归到逻辑回归

逻辑回归的本质,可以看作是"线性回归 + 一个特殊的函数"。逻辑回归先通过线性模型计算一个得分,再用Sigmoid函数把这个得分转换成概率。

第一步:线性组合
z=β0+β1x1+β2x2+⋯+βnxn=xTβ z = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \dots + \beta_n x_n = \boldsymbol{x}^T \boldsymbol{\beta} z=β0+β1x1+β2x2+⋯+βnxn=xTβ
第二步:通过Sigmoid函数转换为概率
p=P(y=1∣x)=σ(z)=11+e−z p = P(y=1|\boldsymbol{x}) = \sigma(z) = \frac{1}{1+e^{-z}} p=P(y=1∣x)=σ(z)=1+e−z1
第三步:决策规则
y^={1if p≥0.50if p<0.5 \hat{y} = \begin{cases} 1 & \text{if } p \geq 0.5 \\ 0 & \text{if } p < 0.5 \end{cases} y^={10if p≥0.5if p<0.5

1.3 逻辑回归的假设

假设 说明 金融数据中的处理
二分类输出 因变量是0/1 涨跌、买卖信号
独立性 样本相互独立 时间序列需谨慎
线性决策边界 特征线性组合 可添加多项式特征
无多重共线性 特征相关性低 使用正则化

第二部分:Sigmoid函数详解

2.1 Sigmoid函数公式与性质

数学表达式
σ(z)=11+e−z \sigma(z) = \frac{1}{1+e^{-z}} σ(z)=1+e−z1

重要性质

  1. 值域 :(0,1)(0, 1)(0,1)
  2. 对称性 :σ(−z)=1−σ(z)\sigma(-z) = 1 - \sigma(z)σ(−z)=1−σ(z)
  3. 单调递增 :zzz越大,σ(z)\sigma(z)σ(z)越接近1
  4. 可导性 :σ′(z)=σ(z)(1−σ(z))\sigma'(z) = \sigma(z)(1 - \sigma(z))σ′(z)=σ(z)(1−σ(z))

2.2 Sigmoid的导数推导

ddzσ(z)=ddz(11+e−z)=e−z(1+e−z)2=σ(z)(1−σ(z)) \frac{d}{dz}\sigma(z) = \frac{d}{dz}\left( \frac{1}{1+e^{-z}} \right) = \frac{e^{-z}}{\left(1+e^{-z}\right)^2} = \sigma(z)\bigl(1 - \sigma(z)\bigr) dzdσ(z)=dzd(1+e−z1)=(1+e−z)2e−z=σ(z)(1−σ(z))

重要性:导数可以用函数值本身表示,简化梯度计算。

2.3 Sigmoid的饱和问题

从图像上我们可以看到,当 z 的值非常大(比如 > 5)或非常小(比如 < -5)时,函数曲线变得非常平缓,几乎是一条水平线。这个区域被称为饱和区

在饱和区,函数的导数 σ′(z)\sigma'(z)σ′(z) 趋近于0。这在梯度下降优化时会导致梯度消失 问题,使得参数 β\boldsymbol{\beta}β 的更新变得极其缓慢,从而影响模型的训练效率。这是Sigmoid函数的一个主要缺点。


第三部分:决策边界与分类

3.1 决策边界的概念

决策边界 :决策边界是特征空间中的一个超平面,它将不同类别的样本分隔开。对于逻辑回归,我们通常以0.5作为阈值:
σ(xTβ)=0.5  ⟹  xTβ=0 \sigma(\boldsymbol{x}^T\boldsymbol{\beta}) = 0.5 \implies \boldsymbol{x}^T\boldsymbol{\beta} = 0 σ(xTβ)=0.5⟹xTβ=0

这是一个线性决策边界(超平面)。

3.2 线性与非线性决策边界

标准的逻辑回归模型产生的是线性决策边界。这意味着它只能解决线性可分的问题。

但是,我们可以通过特征工程 来创造非线性边界。例如,我们可以增加多项式特征。

例如:原始特征是 x1x_1x1,我们可以构造新特征 x12x_1^2x12。这样,决策边界 β0+β1x1+β2x2+β3x12=0\beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 x_1^2 = 0β0+β1x1+β2x2+β3x12=0 在原始特征空间中就变成了一条曲线。

特征形式 决策边界 例子
原始特征 线性 β0+β1x1+β2x2=0\beta_0 + \beta_1 x_1 + \beta_2 x_2 = 0β0+β1x1+β2x2=0
多项式特征 非线性(曲线) β0+β1x1+β2x2+β3x12=0\beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 x_1^2 = 0β0+β1x1+β2x2+β3x12=0
交互特征 非线性 β0+β1x1+β2x2+β3x1x2=0\beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 x_1 x_2 = 0β0+β1x1+β2x2+β3x1x2=0

3.3 概率输出的解释

逻辑回归的强大之处在于它不仅给出分类结果,还给出了置信度(即概率)。

  • p=0.9p = 0.9p=0.9:模型有90%的把握认为这个样本是正类。
  • p=0.51p = 0.51p=0.51:模型只是略微倾向于正类,把握不大。

应用场景

  • 阈值调整:根据风险偏好调整决策阈值
  • 置信度评估:高概率信号更可靠
  • 仓位管理:概率越高,仓位可以越大

第四部分:交叉熵损失函数

现在我们知道如何预测了,接下来要解决的核心问题是:如何衡量预测的好坏,并据此优化模型参数?这就需要一个损失函数。

4.1 为什么不使用MSE?

均方误差(MSE)是线性回归的损失函数。如果我们把它直接用在逻辑回归上,会有以下问题:

  1. 非凸性:容易陷入局部最优
  2. 梯度消失:预测错误时梯度小,学习慢
  3. 概率解释差:惩罚方式不合理

4.2 交叉熵损失推导

为了得到一个凸的损失函数,我们使用交叉熵损失(也称为对数损失)。它的思想来源于最大似然估计。

单个样本的损失
L(y,p)={−log⁡(p)if y=1−log⁡(1−p)if y=0 L(y, p) = \begin{cases} -\log(p) & \text{if } y = 1 \\ -\log(1 - p) & \text{if } y = 0 \end{cases} L(y,p)={−log(p)−log(1−p)if y=1if y=0
统一形式
L(y,p)=−[ylog⁡(p)+(1−y)log⁡(1−p)] L(y, p) = -\left[ y \log(p) + (1 - y) \log(1 - p) \right] L(y,p)=−[ylog(p)+(1−y)log(1−p)]
直觉理解

  • 当 y=1y=1y=1 时:ppp 越接近1,损失越小
  • 当 y=0y=0y=0 时:ppp 越接近0,损失越小

4.3 批量交叉熵损失

J(β)=−1m∑i=1m[y(i)log⁡(p(i))+(1−y(i))log⁡(1−p(i))] J(\boldsymbol{\beta}) = -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \log\left(p^{(i)}\right) + \left(1 - y^{(i)}\right) \log\left(1 - p^{(i)}\right) \right] J(β)=−m1i=1∑m[y(i)log(p(i))+(1−y(i))log(1−p(i))]

其中 p(i)=σ(x(i)β)p^{(i)} = \sigma(\boldsymbol{x}^{(i)}\boldsymbol{\beta})p(i)=σ(x(i)β)

4.4 梯度计算

对参数的偏导
∂J∂βj=1m∑i=1m(p(i)−y(i))xj(i) \frac{\partial J}{\partial \beta_j} = \frac 1m \sum_{i=1}^{m}(p^{(i)} - y^{(i)})x_j^{(i)} ∂βj∂J=m1i=1∑m(p(i)−y(i))xj(i)
观察 :与线性回归的梯度形式相同!只是预测值 ppp 不同。


第五部分:优化算法

5.1 梯度下降更新规则

βj:=βj−α1m∑i=1m(p(i)−y(i))xj(i) \beta_j := \beta_j - \alpha \frac{1}{m} \sum_{i=1}^{m} \left( p^{(i)} - y^{(i)} \right) x_j^{(i)} βj:=βj−αm1i=1∑m(p(i)−y(i))xj(i)

5.2 与线性回归的对比

方面 线性回归 逻辑回归
输出范围 (−∞,∞)(-\infty, \infty)(−∞,∞) (0,1)(0, 1)(0,1)
激活函数 线性 Sigmoid
损失函数 MSE 交叉熵
梯度形式 (h−y)x(h-y)x(h−y)x (h−y)x(h-y)x(h−y)x
优化目标 预测连续值 预测类别概率

5.3 优化技巧

1. 特征缩放(必需)

和线性回归一样,对特征进行标准化或归一化可以大大加速梯度下降的收敛。

python 复制代码
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

2. 学习率调度

  • 使用自适应优化器(Adam, RMSprop)
  • 学习率衰减

3. 正则化(L1/L2)

为了防止过拟合,我们可以在损失函数中加入正则化项。

  • L2正则化 (Ridge) :它会倾向于让参数 βj\beta_jβj 的值变小,但不会变为0。LogisticRegression 中的 C 参数就是正则化强度的倒数。
  • L1正则化 (Lasso) :它倾向于让一些不重要的特征参数 βj\beta_jβj 变为0,从而实现特征选择。
python 复制代码
from sklearn.linear_model import LogisticRegression
# L2正则化
lr_l2 = LogisticRegression(penalty='l2', C=1.0)
# L1正则化(特征选择)
lr_l1 = LogisticRegression(penalty='l1', solver='saga', C=1.0)

第六部分:多分类扩展

6.1 One-vs-Rest (OvR)

策略 :假设有 K 个类别。我们为每个类别 k (k=1, 2, ..., K) 训练一个二分类逻辑回归模型。

  • 在训练第 k 个模型时,我们将所有属于类别 k 的样本作为正例(y=1),其余所有类别的样本作为负例(y=0)。
  • 这样我们就得到了 K 个模型。

预测 :对于一个新的样本 x,我们让它通过这 K 个模型,得到 K 个概率值。我们选择概率值最高的那个模型所对应的类别作为最终的预测结果。

python 复制代码
# sklearn默认使用OvR
lr_multi = LogisticRegression(multi_class='ovr')

6.2 Softmax回归(Multinomial)

Softmax回归是逻辑回归在多分类问题上的直接推广,也称为多项逻辑回归。

策略 :它不再训练 K 个独立的分类器,而是直接输出一个 K 维的概率向量。

对于一个样本 x\boldsymbol{x}x,模型会计算它属于每个类别 k 的得分 xTβ(k)\boldsymbol{x}^T \boldsymbol{\beta^{(k)}}xTβ(k)。然后通过 Softmax函数 将这些得分转换为概率:
p(y=k∣x)=exTβ(k)∑j=1KexTβ(j) p(y=k∣\boldsymbol{x}) = \cfrac{e^{\boldsymbol{x}^T \boldsymbol{\beta^{(k)}}}}{\sum_{j=1}^K e^{\boldsymbol{x}^T \boldsymbol{\beta^{(j)}}}} p(y=k∣x)=∑j=1KexTβ(j)exTβ(k)
特点

  • 直接输出多类概率
  • 参数更多,但更优雅
python 复制代码
# 使用softmax
lr_softmax = LogisticRegression(multi_class='multinomial', solver='lbfgs')

第七部分:评估指标回顾

7.1 核心指标

指标 公式 适用场景
准确率 (TP+TN)/总数 类别平衡
精确率 TP/(TP+FP) 减少误报
召回率 TP/(TP+FN) 减少漏报
F1 2PR/(P+R) 平衡指标
AUC ROC曲线下面积 类别不平衡

7.2 为什么AUC适合量化?

优点

  • 不受类别不平衡影响
  • 评价排序能力(概率输出的质量)
  • 单一指标,易于比较

量化应用

  • 涨跌预测的排序能力比绝对准确率更重要
  • AUC越高,说明模型能更好地区分上涨和下跌股票
相关推荐
tankeven4 小时前
HJ176 【模板】滑动窗口
c++·算法
网域小星球4 小时前
C 语言从 0 入门(十二)|指针与数组:数组名本质、指针遍历数组
c语言·算法·指针·数组·指针遍历数组
冰糖拌面5 小时前
二叉树遍历-递归、迭代、Morris
算法
碧海银沙音频科技研究院5 小时前
虚拟机ubuntu与windows共享文件夹(Samba共享)解决WSL加载SI工程满卡问题
人工智能·深度学习·算法
CoovallyAIHub5 小时前
ICLR 2026 | VLM自己学会调检测器:VTool-R1用强化学习教视觉模型使用工具推理
算法·架构·github
CoovallyAIHub5 小时前
RK3588上111 FPS:轻量YOLOv8+异步视频处理系统实现无人机自主电力巡检
算法·架构·github
炽烈小老头5 小时前
【每天学习一点算法 2026/04/13】两数相除
学习·算法
嘻嘻哈哈樱桃6 小时前
俄罗斯套娃信封问题力扣--354
算法·leetcode·职场和发展
田梓燊6 小时前
2026/4/12 leetcode 1320
算法·leetcode·职场和发展