05 逻辑斯蒂回归(Logistic Regression)
2026/6/15 23:54:59 网站建设 项目流程

核心问题:如何用回归的思路解决分类问题?
逻辑回归虽然名字里有“回归”,但它是一种分类算法,尤其擅长二分类(如是否欺诈、是否患病)。


一、为什么不能用线性回归做分类?

1.1 线性回归的输出范围问题

  • 线性回归:,输出范围是 (−∞,+∞)。

  • 分类问题需要输出概率,范围应该在 [0,1] 之间。

  • 直接用线性回归,预测结果可能大于1或小于0,没有概率意义。

1.2 解决方案:套上一个“压缩函数”

我们需要一个函数,能把线性回归的输出(任意实数)映射到 (0,1)区间。
这个函数就是Sigmoid 函数(也叫逻辑斯蒂函数)。

逻辑斯蒂回归 = 线性回归 + Sigmoid 函数


二、Sigmoid 函数(核心)

2.1 公式与图像

形状:S 形曲线,关于点 (0, 0.5) 中心对称。

2.2 导数性质(重要)

这个性质在梯度下降推导中非常有用。

2.3 为什么用它?

  • 输出天然是概率值

  • 光滑可导,适合梯度下降优化

  • 在 z=0附近变化最敏感,远离0时趋于饱和


三、逻辑斯蒂回归模型定义(二分类)

3.1 模型表达式

3.2 对数几率(Logit)

左边是“正类概率 / 负类概率”的对数,称为对数几率(log-odds)
这揭示了逻辑回归的本质:对数几率是输入特征的线性函数

3.3 预测规则


四、如何学习参数 w 和 b?—— 最大似然估计


五、梯度下降求解

5.1 梯度公式

5.2 参数更新(梯度下降)

5.3 学习率的选择

学习率表现问题
过小收敛极慢训练时间长
适中稳定收敛
过大震荡甚至发散无法收敛

常用策略:学习率衰减、自适应优化器(Adam、RMSprop)。


六、决策边界

6.1 线性决策边界

由预测规则决定。
在二维空间中是一条直线,在高维空间中是一个超平面。

例子:0.5x1+0.8x2−1=0 是一条直线,一侧预测为 1,另一侧为 0。

6.2 局限性

逻辑回归的决策边界始终是线性的。如果数据本身是非线性可分的(如圆形、螺旋形),原始逻辑回归无法正确分类。

6.3 如何实现非线性决策边界?


七、模型评估(分类标准指标)

7.1 混淆矩阵

真实\预测正类 (1)负类 (0)
正类 (1)TPFN
负类 (0)FPTN

7.2 核心指标

  • 准确率 (Accuracy)= (TP+TN) / 总样本 —— 整体正确率,但易受不平衡数据影响。

  • 精确率 (Precision)= TP / (TP+FP) —— 预测为正的样本中实际为正的比例。

  • 召回率 (Recall)= TP / (TP+FN) —— 实际为正的样本中被找出的比例。

  • F1 分数= 2 × (精确率×召回率) / (精确率+召回率) —— 两者的调和平均。

  • ROC 曲线与 AUC

    • ROC 横轴 FPR = FP/(FP+TN),纵轴 TPR = TP/(TP+FN)

    • AUC 是 ROC 曲线下面积,值越大模型排序能力越强,且对不平衡数据鲁棒。

详情可参考前一章《ROC曲线与AUC手动计算》。


八、正则化(防止过拟合)

8.1 为什么需要正则化?

逻辑回归中,如果特征很多或数据线性可分,权重会变得非常大,导致模型对输入微小变化极其敏感(过拟合)。正则化通过对权重施加惩罚,控制模型复杂度。

8.2 L1 与 L2 正则化

带有正则化的损失函数:

8.3 参数 C(scikit-learn 中的用法)

sklearn 中使用C而不是 λ,关系为 C=1/λ:

  • C 很大→ 正则化弱 → 模型复杂 → 可能过拟合

  • C 很小→ 正则化强 → 模型简单 → 可能欠拟合

实践中通过交叉验证(LogisticRegressionCV)选择最优 C。


九、多分类扩展

9.1 一对其他(One-vs-Rest, OvR)

  • 对 k 个类别训练 k 个二分类器。第 i 个分类器将类别 i 作为正类,其余所有类别作为负类。

  • 预测时,选择概率最高的分类器对应的类别。

  • 优点:只需 k 个分类器。

  • 缺点:训练集不平衡(负类样本远多于正类)。

9.2 一对一(One-vs-One, OvO)

  • 对每对类别训练一个二分类器,共 k(k−1)/2 个。

  • 预测时,所有分类器投票,得票最多的类别获胜。

  • 优点:每个分类器训练数据少,边界更精细。

  • 缺点:分类器数量随 k 平方增长,存储和预测开销大。

9.3 Softmax 回归(多类别逻辑回归)

sklearn 逻辑回归默认使用 OvR,可通过multi_class='multinomial'切换为 Softmax。


十、Python 实战(鸢尾花分类)

10.1 基本代码

from sklearn.datasets import load_iris from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report, confusion_matrix # 加载数据 iris = load_iris() X, y = iris.data, iris.target # 三分类 # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=42, stratify=y ) # 创建模型(Softmax 多分类) model = LogisticRegression(multi_class='multinomial', solver='lbfgs', max_iter=200) model.fit(X_train, y_train) # 预测与评估 y_pred = model.predict(X_test) print("准确率:", model.score(X_test, y_test)) print(confusion_matrix(y_test, y_pred)) print(classification_report(y_test, y_pred))

10.2 重要参数说明

参数说明常用值
penalty正则化类型'l2'(默认)、'l1''elasticnet'
C正则化强度的倒数正浮点数,默认 1.0,越小正则化越强
solver优化算法'lbfgs'(小数据)、'liblinear'(大数据)、'saga'(支持 L1)
multi_class多分类策略'ovr'(默认)、'multinomial'(Softmax)
max_iter最大迭代次数默认 100,复杂问题需增大
class_weight类别权重'balanced'自动平衡,或手动指定

十一、逻辑回归的优缺点总结

优点

  • 简单、高效、训练速度快

  • 输出具有概率意义,可解释性强(权重直接反映特征影响方向和大小)

  • 配合正则化不容易过拟合

  • 支持在线学习(增量更新)

缺点

  • 决策边界是线性的,对非线性数据需要手动做特征工程

  • 对异常值敏感

  • 特征之间存在多重共线性时,系数估计不稳定

  • 对类别不平衡数据敏感(需用class_weight或采样方法)


十二、核心公式速记卡

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询