【机器学习笔记Ⅰ】12 逻辑回归
逻辑回归是机器学习中经典的分类算法,主要用于解决二分类问题(如预测是否患病、是否点击广告)。虽然名字含“回归”,但它实际是一种分类模型,通过概率输出(0到1之间)判断类别。
1. 核心思想
- 输入:特征向量 X(如年龄、收入)。
- 输出:属于正类( y=1 )的概率 P(y=1 | X)。
- 关键工具:Sigmoid函数,将线性回归的输出映射到 [0,1] 区间。
2. 数学模型
(1) Sigmoid函数
-
特性:
- 阈值通常设为0.5(概率≥0.5判为正类)。
(2) 逻辑回归方程
3. 训练与损失函数
(1) 最大似然估计(MLE)
逻辑回归通过最大化对数似然函数学习参数:
(2) 交叉熵损失(Cross-Entropy Loss)
上式即二元交叉熵损失,衡量预测概率与真实分布的差距:
- 梯度下降优化:通过求导更新参数(类似线性回归,但梯度不同)。
4. 代码实现(Python)
from sklearn.linear_model import LogisticRegression
import numpy as np# 示例数据
X = np.array([[1], [2], [3], [4]]) # 特征
y = np.array([0, 0, 1, 1]) # 标签(二分类)# 训练模型
model = LogisticRegression()
model.fit(X, y)# 预测概率
print(model.predict_proba([[1.5]])) # 输出 [[0.85, 0.15]](属于0类的概率85%)
print(model.predict([[1.5]])) # 输出 [0](类别标签)
5. 关键特性
(1) 决策边界
- 线性边界:逻辑回归的决策边界是线性的(在特征空间中的超平面)。
- 非线性扩展:可通过多项式特征或核方法处理非线性问题(类似多项式回归)。
(2) 概率解释
- 输出是校准后的概率(可直接用于风险评估)。
- 需注意:概率准确性依赖特征质量和模型校准。
(3) 正则化
- 防止过拟合:添加L1/L2惩罚项(如
penalty='l2'
)。 - 超参数
C
:控制正则化强度(C
越小,惩罚越强)。
6. 多分类扩展
- OvR(One-vs-Rest):训练K个二分类器(K为类别数),选择概率最高的类别。
- Softmax回归:直接输出多类概率分布(需用
multi_class='multinomial'
)。
# 多分类示例
X_multi = np.array([[1], [2], [3], [4], [5]])
y_multi = np.array([0, 0, 1, 1, 2]) # 3个类别model_multi = LogisticRegression(multi_class='ovr')
model_multi.fit(X_multi, y_multi)
7. 应用场景
- 医学:疾病预测(如癌症诊断)。
- 金融:信用评分(是否违约)。
- 营销:用户行为预测(是否购买)。
8. 优缺点
优点 | 缺点 |
---|---|
输出概率,可解释性强。 | 仅能处理线性可分或适度非线性数据。 |
计算高效,适合大规模数据。 | 对特征相关性和异常值敏感。 |
支持正则化,防止过拟合。 | 需特征工程(如缩放、处理共线性)。 |
9. 常见问题
Q1:逻辑回归为什么用交叉熵损失而非MSE?
- MSE的缺陷:非凸优化,易陷入局部最优;梯度在概率极端值时消失。
- 交叉熵的优势:凸函数,梯度更合理。
Q2:如何评估逻辑回归性能?
- 指标:准确率、精确率、召回率、AUC-ROC曲线。
- 代码:
from sklearn.metrics import classification_report print(classification_report(y_true, y_pred))
10. 总结
- 逻辑回归 = 线性回归 + Sigmoid激活 + 交叉熵损失。
- 核心输出:概率(需设定阈值转为类别)。
- 适用场景:二分类、概率预测、线性决策边界问题。
它是分类任务的“瑞士军刀”,理解其原理是掌握更复杂模型(如神经网络)的基础!