逻辑回归
一、概念与定位
-
类型 :监督学习、分类任务(虽叫"回归",但实际是分类算法)
-
定义 :预测一个事件发生的概率 P(y=1|x),输出值在 [0, 1] 之间
-
核心思想 :在线性回归的基础上,套上 Sigmoid 函数,将预测值压缩到 0~1 之间,变成概率
一句话:逻辑回归 = 线性回归 + Sigmoid 激活函数
二、模型形式
第一步:线性组合
z = w₁x₁ + w₂x₂ + ... + wₙxₙ + b = WᵀX + b
第二步:Sigmoid 压缩
ŷ = σ(z) = 1 / (1 + e⁻ᶻ)
最终输出
-
ŷ 表示样本属于正类的概率
-
通常以 0.5 为阈值:
-
ŷ ≥ 0.5 → 预测为类别 1
-
ŷ < 0.5 → 预测为类别 0
-
Sigmoid 函数特点
| 特点 | 说明 |
|---|---|
| 值域 | (0, 1),可解释为概率 |
| 单调性 | 单调递增,z越大,输出越接近1 |
| 可导性 | 处处可导,导数 σ(z)·(1-σ(z)),方便梯度下降 |
| 对称性 | σ(-z) = 1 - σ(z) |
三、决策边界
逻辑回归的决策边界是线性的。
-
当 WᵀX + b = 0 时,σ(z) = 0.5,这就是分类边界
-
在特征空间中,这是一条直线(二维)或超平面(高维)
逻辑回归只能学习线性决策边界。对于线性不可分的数据,需要特征工程(多项式、交互项)来间接实现非线性。
四、损失函数
为什么不用 MSE?
MSE 配合 Sigmoid 会导致损失函数非凸,存在多个局部最小值,梯度下降难以找到全局最优。
交叉熵损失(Log Loss)
这是逻辑回归的标准损失函数,凸函数,保证梯度下降能找到全局最优。
二分类交叉熵公式
L = -[y·log(ŷ) + (1-y)·log(1-ŷ)]
| 真实值 y | 预测值 ŷ | 损失计算 | 直观理解 |
|---|---|---|---|
| 1 | 接近1 | 接近0 | 预测对了,损失小 |
| 1 | 接近0 | 非常大 | 预测错了,损失大 |
| 0 | 接近0 | 接近0 | 预测对了,损失小 |
| 0 | 接近1 | 非常大 | 预测错了,损失大 |
本质:预测越准,损失越小;预测越离谱,损失指数级增长。
五、求解方法
梯度下降
与线性回归类似,但梯度公式不同。
梯度公式
∂L/∂wⱼ = (ŷ - y)·xⱼ
参数更新
wⱼnew = wⱼold - α · (ŷ - y)·xⱼ
| 参数 | 含义 | 说明 |
|---|---|---|
| α | 学习率 | 超参数,控制步长 |
| ŷ - y | 预测误差 | 正/负决定更新方向 |
| xⱼ | 第j个特征值 | 误差按特征值加权分配 |
与线性回归梯度下降的对比
| 对比项 | 线性回归 | 逻辑回归 |
|---|---|---|
| 预测值 | ŷ = WᵀX | ŷ = σ(WᵀX) |
| 梯度 | (ŷ - y)·xⱼ | (ŷ - y)·xⱼ |
| 公式形式 | 完全相同 | 完全相同 |
形式上梯度公式一样,但逻辑回归的 ŷ 经过了 Sigmoid 压缩。
六、评估指标
分类问题常用指标
| 指标 | 说明 | 适用场景 |
|---|---|---|
| 准确率 | 预测正确的比例 | 类别平衡时 |
| 精确率 | 预测为正例中实际为正例的比例 | 看重"猜对的有多准" |
| 召回率 | 实际为正例中被预测出来的比例 | 看重"漏掉了多少" |
| F1分数 | 精确率和召回率的调和平均 | 类别不平衡时 |
| AUC-ROC | 模型区分正负类的能力 | 排序能力评估 |
混淆矩阵
| 预测为正 | 预测为负 | |
|---|---|---|
| 实际为正 | TP(真正例) | FN(假负例) |
| 实际为负 | FP(假正例) | TN(真负例) |
七、优缺点与适用场景
优点
| 优点 | 说明 |
|---|---|
| 简单高效 | 模型结构简单,训练和预测都快 |
| 可解释性强 | 权重 w 直接反映特征对概率的影响方向和程度 |
| 输出概率 | 不仅给分类结果,还给出置信度 |
| 不容易过拟合 | 模型表达能力有限,适合高维稀疏数据 |
| 小数据友好 | 数据量不大时表现稳定 |
缺点
| 缺点 | 说明 |
|---|---|
| 只能线性决策边界 | 对线性不可分数据无能为力 |
| 对异常值敏感 | 异常点可能拉偏决策边界 |
| 特征相关性敏感 | 多重共线性会导致权重不稳定 |
| 类别平衡敏感 | 类别严重不平衡时需特殊处理(采样/加权) |
适用场景
-
需要概率输出的业务(风控、医疗诊断)
-
需要强可解释性的场景(金融审批、信用评分)
-
特征与标签存在近似线性关系
-
在线学习场景(可配合 SGD 增量更新)
-
作为深度学习输出层(二分类任务的标准选择)
八、API
from sklearn.linear_model import LogisticRegression
# 常用参数
model = LogisticRegression(
penalty='l2', # 正则化:l1 / l2
C=1.0, # 正则化强度的倒数(越小正则越强)
solver='lbfgs', # 求解器:lbfgs / liblinear / saga
max_iter=100, # 最大迭代次数
class_weight='balanced' # 类别不平衡处理
)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
y_proba = model.predict_proba(X_test) # 输出概率
九、逻辑回归 vs 线性回归
| 对比项 | 线性回归 | 逻辑回归 |
|---|---|---|
| 任务类型 | 回归(预测连续值) | 分类(预测离散类别) |
| 输出范围 | (-∞, +∞) | (0, 1) 概率 |
| 激活函数 | 无(恒等连接) | Sigmoid |
| 损失函数 | MSE | 交叉熵 |
| 求解方式 | 正规方程 / 梯度下降 | 梯度下降(不能用正规方程) |
| 参数解释 | 特征每变化1单位,y变化w | 特征每变化1单位,对数几率变化w |
十、总分总总结
总
逻辑回归是一种用于二分类任务的监督学习算法,核心是在线性回归的基础上套上 Sigmoid 函数,将输出压缩为 [0,1] 之间的概率,并以 0.5 为阈值进行分类。
分
模型形式
z = WᵀX + b → ŷ = 1/(1+e⁻ᶻ)
损失函数
交叉熵损失,凸函数,保证能找到全局最优
求解方法
梯度下降,梯度公式与线性回归形式相同
决策边界
线性边界(WᵀX + b = 0)
评估指标
准确率、精确率、召回率、F1、AUC-ROC
优缺点
-
优点:简单高效、可解释强、输出概率、不易过拟合
-
缺点:只能线性边界、对异常值敏感、类别不平衡敏感
适用场景
需要概率输出和可解释性的二分类任务(风控、医疗、金融)
总
逻辑回归是分类任务的入门算法和基准模型,也是深度学习中二分类输出层的标准选择。优点是简单、可解释、输出概率;缺点是不能处理非线性边界。作为线性分类器的代表,逻辑回归与线性回归共同构成了监督学习的基石。