一、逻辑回归核心概念1.1 什么是逻辑回归逻辑回归Logistic Regression是一种分类算法而非回归算法核心目标是预测样本属于某一类别的概率特别适用于二分类问题如 “是否违约”“是否患病”也可扩展到多分类场景。1.2 与线性回归的核心区别二、逻辑回归核心原理2.1 Sigmoid 函数从线性到概率的转换逻辑回归的核心是通过 Sigmoid 函数将线性回归的连续输出映射到 [0,1] 区间从而表示 “属于正类” 的概率。函数定义2.2 损失函数与优化逻辑回归使用对数似然损失函数也叫交叉熵损失衡量模型预测概率与真实标签的偏差损失化函数优化方法梯度下降梯度下降的核心思想是 “沿损失函数下降方向调整参数”类比 “蒙眼下山找最低点”通过迭代更新参数 θ最小化损失函数三、正则化技术解决过拟合的核心手段3.1 正则化的本质正则化是在损失函数中加入权重惩罚项强迫模型参数权重变小降低模型复杂度从而避免过拟合模型 “死记硬背” 训练集泛化能力差。3.2 两种常用正则化正则化法则1L1 正则化特征选择神器惩罚项特点会让部分权重直接变为 0相当于自动筛选重要特征适合高维数据如电商用户特征、文本特征。2L2 正则化最常用的权重衰减惩罚项特点让所有权重都变小且均匀不会直接置 0能有效降低模型复杂度是工业界最常用的正则化方式也叫 “权重衰减”。3.3 正则化强度 C 的选择核心实战在 sklearn 中C是正则化强度 λ 的倒数C1/λC 越小 → λ 越大 → 正则化越强 → 模型越简单防止过拟合C 越大 → λ 越小 → 正则化越弱 → 模型越复杂易过拟合。1手动选择思路按业务目标优化如果业务核心目标是召回率Recall如风控场景 “不漏掉坏样本”步骤如下1. 定义 C 的搜索范围按对数尺度选取覆盖强→弱正则化如[0.01, 0.1, 1, 10, 100]2. 交叉验证评估对每个 C 值做 5/10 折交叉验证计算召回率平均值3. 绘制 C-Recall 曲线找到召回率峰值对应的 C 值C 太小欠拟合、太大过拟合。2自动化选择网格搜索 交叉验证推荐通过代码自动遍历候选 C 值结合交叉验证选择最优值是工业界最稳健的方法from sklearn.model_selection import GridSearchCV from sklearn.linear_model import LogisticRegression # 1. 定义基础模型 model LogisticRegression(penaltyl2, solverliblinear, class_weightbalanced) # 2. 定义C的搜索范围 param_grid {C: [0.01, 0.1, 1, 10, 100]} # 3. 5折交叉验证按召回率优化可替换为accuracy/precision grid_search GridSearchCV(model, param_grid, cv5, scoringrecall) grid_search.fit(X_train, y_train) # 4. 输出最优参数 print(最佳正则化强度C:, grid_search.best_params_[C]) print(最优模型召回率:, grid_search.best_score_)四、Sklearn 实战逻辑回归参数配置4.1 核心参数说明from sklearn.linear_model import LogisticRegression # 核心参数配置 model LogisticRegression( penaltyl2, # 正则化方式l1/l2 C1.0, # 正则化强度越小正则化越强 solverliblinear, # 优化算法关键根据数据规模选择 max_iter100, # 最大迭代次数确保模型收敛 class_weightbalanced # 处理类别不平衡如正样本占1%负样本占99% )4.2 优化算法solver选择场景推荐 solver原理小数据集liblinear坐标下降法稳定大数据集sag/saga随机平均梯度下降快多分类问题lbfgs拟牛顿法支持多分类五、过拟合 / 欠拟合与数据量不足的处理5.1 过拟合 vs 欠拟合问题表现核心原因欠拟合训练集 / 测试集效果都差模型太简单没学到特征过拟合训练集好测试集差模型太复杂过度拟合5.2 过拟合解决方法1. 增加正则化强度减小 C 值如从 1→0.1强迫模型简化2. 交叉验证将数据分成训练集 验证集 测试集用验证集调参测试集仅做最终评估常用 10 折交叉验证将数据分 10 份轮流用 9 份训练、1 份测试取平均值评估减少数据划分的随机性偏差3. 减少特征维度删除冗余 / 噪声特征降低模型复杂度。5.3 数据量不足的处理1. 精简测试集仅留 10% 数据做最终测试90% 用于训练 交叉验证2. 数据增强对现有数据做轻微变换如数值特征加噪声、类别特征重采样from sklearn.utils import resample # 重采样增强数据示例 X_resampled, y_resampled resample(X_train, y_train, n_samples10000, random_state42)3.结合强正则化数据少易过拟合选择更小的 C 值如 0.01。六、完整实战代码import numpy as np import pandas as pd from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, recall_score from sklearn.preprocessing import StandardScaler # 1. 数据准备替换为你的数据路径 data pd.read_csv(your_data.csv) X data.drop(target, axis1) # 特征 y data[target] # 标签0/1 # 2. 数据标准化逻辑回归对特征尺度敏感必须做 scaler StandardScaler() X_scaled scaler.fit_transform(X) # 3. 划分训练集90%和测试集10% X_train, X_test, y_train, y_test train_test_split( X_scaled, y, test_size0.1, random_state42 # 少留测试集解决数据量不足 ) # 4. 网格搜索选择最优C值按召回率优化 param_grid {C: [0.01, 0.1, 1, 10, 100]} base_model LogisticRegression(penaltyl2, solverliblinear, class_weightbalanced) grid_search GridSearchCV(base_model, param_grid, cv10, scoringrecall) grid_search.fit(X_train, y_train) best_C grid_search.best_params_[C] # 5. 用最优C值训练最终模型 final_model LogisticRegression( penaltyl2, Cbest_C, solverliblinear, class_weightbalanced, max_iter200 ) final_model.fit(X_train, y_train) # 6. 模型评估 y_pred final_model.predict(X_test) print(f最优C值: {best_C}) print(f测试集准确率: {accuracy_score(y_test, y_pred):.4f}) print(f测试集召回率: {recall_score(y_test, y_pred):.4f})Sigmoid 函数是逻辑回归的核心将线性输出转换为 [0,1] 区间的概率是分类的基础正则化通过惩罚权重解决过拟合L2 更常用C 值越小正则化越强需结合交叉验证选择实战关键数据标准化、按业务目标如召回率调参、用交叉验证避免过拟合小数据集需精简测试集 强正则化。