机器学习算法:逻辑回归
1. 基础概念
定义:
逻辑回归(Logistic Regression)是一种用于解决二分类问题的监督学习算法,通过概率预测样本属于某一类别的可能性。
-
核心特点:输出是概率值(0~1),通过阈值(如0.5)转换为类别标签。
-
注意:名字虽含“回归”,但实际是分类算法!
数学形式:
-
使用 Sigmoid函数 将线性回归结果映射到概率:
P(y=1) = 1 / (1 + e^(-z))
,其中z = w₁x₁ + w₂x₂ + ... + b
-
Sigmoid函数:将任意实数压缩到(0,1),如图: https://www.saedsayad.com/images/Logistic_curves.png
2. 核心原理
损失函数:交叉熵损失(Log Loss)
衡量预测概率与真实标签的差异: Loss = - [y_true * log(y_pred) + (1 - y_true) * log(1 - y_pred)]
目标是最小化总损失。
优化方法:
-
梯度下降(与线性回归类似,但需计算对数概率的梯度)。
-
牛顿法、拟牛顿法(如L-BFGS)。
评估指标:
-
准确率(Accuracy):正确分类的比例。
-
精确率(Precision):预测为正的样本中真实正类的比例。
-
召回率(Recall):真实正类中被正确预测的比例。
-
ROC-AUC:综合衡量分类性能的曲线下面积。
3. 实际生产中的例子
案例1:广告点击率预测(CTR预估)
-
场景:互联网广告平台预测用户是否会点击广告。
-
输入特征:用户历史行为、广告内容、上下文信息(如时间、设备)。
-
输出:点击概率(0~1)。
-
应用:根据概率对广告排序,优先展示高点击率广告。
案例2:金融风控(贷款违约预测)
-
场景:银行判断客户是否有违约风险。
-
输入特征:收入、信用评分、负债比、历史还款记录。
-
输出:违约概率。
-
应用:若概率>阈值(如0.7),则拒绝贷款申请。
案例3:医疗诊断(疾病预测)
-
场景:根据患者检查结果预测是否患病。
-
输入特征:年龄、血压、血糖、胆固醇指标。
-
输出:患病概率。
-
应用:辅助医生快速筛查高风险患者。
案例4:垃圾邮件分类
-
场景:自动过滤垃圾邮件。
-
输入特征:邮件文本的词频、发件人信誉、链接数量。
-
输出:垃圾邮件概率。
-
应用:若概率>0.5,标记为垃圾邮件。
4. 生产中的改进方法
处理类别不平衡
-
加权损失函数:对少数类样本赋予更高权重。
-
过采样(如SMOTE):生成少数类样本。
-
阈值调整:根据业务需求调整分类阈值(如医疗场景需高召回率)。
正则化(防止过拟合)
-
L1正则化(Lasso):稀疏化权重,自动特征选择。
-
L2正则化(Ridge):限制权重幅度,提升泛化能力。
特征工程
-
分箱(Binning):将连续特征(如年龄)分段为类别。
-
交叉特征:组合多个特征(如“收入*负债比”)。
-
文本特征:TF-IDF或词嵌入(Embedding)。
5. 与线性回归的区别
维度 | 线性回归 | 逻辑回归 |
任务类型 | 回归(预测连续值) | 分类(预测概率/类别) |
输出范围 | 任意实数 | 0~1之间的概率 |
损失函数 | 均方误差(MSE) | 交叉熵损失(Log Loss) |
激活函数 | 无 | Sigmoid函数 |
6. 优缺点
优点
-
✅ 输出为概率,适合需要概率解释的场景(如风控)。
-
✅ 可解释性强,权重反映特征对结果的影响方向(正/负)。
-
✅ 计算高效,适合大规模数据(如互联网广告的实时预测)。
缺点
-
❌ 假设特征与对数几率(Log Odds)呈线性关系,难以捕捉复杂非线性关系。
-
❌ 对特征相关性和异常值敏感。
-
❌ 默认只能处理二分类,多分类需扩展(如One-vs-Rest)。
7. 代码工具示例(Python)
8. 适用场景总结
-
推荐使用逻辑回归:
-
二分类问题且需要概率输出(如金融风控)。
-
特征与目标的对数几率呈近似线性关系。
-
需要快速部署和模型解释性(如医疗诊断报告)。
-
-
避免使用:
-
特征与目标存在复杂非线性关系(需用树模型或神经网络)。
-
数据维度极高且特征稀疏(如文本分类更适合用朴素贝叶斯或深度学习)。
-
一句话总结
逻辑回归是“用S形曲线做分类”的经典算法,凭借概率输出和可解释性,在金融、医疗、广告等领域广泛应用。