逻辑回归(Logistic Regression)详解:从原理、模型评价到 Python 实战

发布时间:2026/7/31 5:05:34
逻辑回归(Logistic Regression)详解:从原理、模型评价到 Python 实战 一、逻辑回归简介1. 什么是逻辑回归逻辑回归Logistic Regression是一种经典的机器学习分类算法主要用于解决二分类和多分类问题。虽然名字中包含回归但逻辑回归本质上是一种分类模型。常见应用银行贷款风险预测医疗疾病检测垃圾邮件分类用户流失预测信用评分例如银行需要判断用户是否存在贷款风险0正常用户 1违约用户输入用户信息年龄 收入 负债情况 信用评分 历史还款记录模型输出用户违约概率例如正常概率0.2 违约概率0.8由于违约概率大于 0.5最终预测用户 违约二、逻辑回归的数学原理1. 线性计算逻辑回归首先计算输入特征的线性组合z w₁x₁ w₂x₂ ... wₙxₙ b其中符号含义x输入特征w模型权重b偏置z线性结果例如贷款预测z w₁ × 年龄 w₂ × 收入 w₃ × 信用评分 b但是z 的范围(-∞, ∞)无法直接作为概率。因此需要使用2. Sigmoid 函数Sigmoid 函数σ(z) 1 / (1 e⁻ᶻ)作用将任意数值转换到0 ~ 1例如z概率50.9900.5-50.006最终输出一个概率值。三、逻辑回归模型评价指标在实际项目中不能只看准确率。1. 为什么准确率不可靠例如银行贷款预测10000 个用户正常用户9990 个 违约用户10 个模型所有用户预测正常结果预测正确9990 个准确率9990 / 10000 99.9%但是10 个违约用户全部漏掉。这种模型没有实际价值。因此需要混淆矩阵PrecisionRecallF1-score四、混淆矩阵混淆矩阵用于比较真实结果 VS 模型预测结果。预测正类预测负类真实正类TPFN真实负类FPTN1. TPTrue Positive真正例。含义真实 1 预测 1例如用户确实违约模型判断违约。2. TNTrue Negative真负例。真实 0 预测 0例如正常用户被正确识别。3. FPFalse Positive假正例。真实 0 预测 1也叫误报。例如正常用户被认为违约。4. FNFalse Negative假负例。真实 1 预测 0也叫漏报。例如违约用户没有被发现。五、分类评价指标1. Precision精确率公式Precision TP / (TP FP)含义模型预测为正类的数据中有多少是真的正类。例如模型预测 100 人违约其中 80 人真的违约。Precision80%关注减少误报。2. Recall召回率公式Recall TP / (TP FN)含义所有真实正类中有多少被模型找到。例如实际有 100 个违约用户模型发现 90 个。Recall90%关注减少漏报。3. 为什么业务更关注 Recall医疗场景疾病检测误诊健康人被判断患病。影响需要复查。漏诊患者没有发现疾病。可能导致严重后果。所以医疗更关注 Recall。银行风控预测贷款违约漏掉一个老赖损失 100 万元。误拒一个正常用户损失 5 万元。因此银行更关注Recall。4. F1-scorePrecision 和 Recall 存在矛盾。因此使用F1-score。公式F1 2PR / (P R)它综合考虑精确率召回率六、Python 实现逻辑回归1. 导入库import pandas as pd from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import classification_report from sklearn.metrics import confusion_matrix七、加载数据使用 sklearn 自带鸢尾花数据集。iris load_iris() X iris.data y iris.target数据X: 花萼长度 花萼宽度 花瓣长度 花瓣宽度 y: 花的类别八、划分训练集和测试集X_train, X_test, y_train, y_test train_test_split( X, y, test_size 0.2, random_state 42 )作用80% 训练20% 测试九、训练逻辑回归模型创建模型model LogisticRegression()训练model.fit( X_train, y_train )训练过程中模型学习每个特征的重要程度也就是权重 w。十、模型预测y_pred model.predict(X_test)得到预测类别。十一、模型评价1. 混淆矩阵cm confusion_matrix( y_test, y_pred ) print(cm)输出[[10 0 0] [0 9 1] [0 0 10]]表示模型大部分预测正确。2. 分类报告print( classification_report( y_test, y_pred ) )输出precision recall f1-score support说明模型综合表现。十二、过拟合与正则化1. 什么是过拟合过拟合模型在训练数据上表现很好训练准确率99%但是测试数据准确率70%原因模型记住了训练数据中的噪声。十三、正则化解决过拟合正则化思想在损失函数中加入惩罚项。公式Loss 原始损失 λR(W)目的限制模型复杂度。十四、L1 和 L2 正则化L1 正则化公式R(W) ∑|w|特点部分权重变为 0。作用自动选择重要特征。L2 正则化公式R(W) ∑w²特点让权重整体变小。优点模型更加稳定。sklearn 默认penalty l2十五、LogisticRegression 重要参数1. penalty正则化方式penalty l22. C 参数C 表示正则化强度的倒数。关系C 值正则化小强大弱例如LogisticRegression(C 0.1)正则化更强。3. solver优化算法solver特点liblinear小数据lbfgs默认sag大数据saga大数据4. max_iter最大迭代次数max_iter 1000防止模型无法收敛。5. class_weight解决类别不平衡class_weight balanced自动提高少数类别权重。十六、交叉验证进行参数优化为什么不能使用测试集调参错误测试不同 C 值 选择测试集效果最高的问题测试集参与模型选择。相当于提前看答案。十七、K 折交叉验证例如10 折交叉验证。步骤数据分 10 份1 2 3 4 5 6 7 8 9 10循环第一次训练1-9验证10第二次训练1-8 10验证9最终计算平均结果。十八、完整机器学习流程数据收集 ↓ 数据清洗 ↓ 划分训练集测试集 ↓ 建立逻辑回归模型 ↓ 交叉验证调参 ↓ 训练最终模型 ↓ 测试模型 ↓ 上线应用