逻辑回归算法详解

逻辑回归算法详解

一、基本概念

1.1 什么是逻辑回归?

逻辑回归(Logistic Regression)是一种监督学习的分类算法,主要用于解决二分类问题(也可扩展至多分类)。尽管名称中包含”回归”二字,但其本质是分类算法,而非回归算法。

1.2 核心定位

  • 算法类型:有监督学习、判别模型
  • 主要用途:二分类问题(是/否、正/负等)
  • 输出形式:概率值(0-1之间),可转换为类别标签

二、数学原理

2.1 Sigmoid函数(逻辑函数)

逻辑回归的核心是Sigmoid函数,将线性输出映射到概率空间:

$$ \sigma(z) = \frac{1}{1 + e^{-z}} $$

特性

  • 输出范围:[0, 1]
  • 当z→∞,σ(z)→1;当z→-∞,σ(z)→0
  • 在z=0时,σ(z)=0.5

2.2 模型公式

逻辑回归模型的完整表达式:

$$ P(y=1|x) = \sigma(w^Tx + b) = \frac{1}{1 + e^{-(w^Tx + b)}} $$

其中:

  • $x$:输入特征向量
  • $w$:权重向量
  • $b$:偏置项
  • $w^Tx + b$:线性组合

2.3 对数几率(Log Odds)

逻辑回归的另一种理解方式:

$$ \log\left(\frac{P(y=1|x)}{1-P(y=1|x)}\right) = w^Tx + b $$

这表明对数几率是输入特征的线性函数


三、损失函数

3.1 对数损失(Log Loss)

逻辑回归使用对数损失函数(也称交叉熵损失):

$$ J(w,b) = -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \log(\hat{y}^{(i)}) + (1-y^{(i)}) \log(1-\hat{y}^{(i)}) \right] $$

其中:

  • $m$:样本数量
  • $y^{(i)}$:真实标签
  • $\hat{y}^{(i)}$:预测概率

3.2 为什么不用均方误差?

  • 对数损失函数是凸函数,保证梯度下降能找到全局最优解
  • 对分类问题更合适,惩罚错误分类的力度更大

四、参数优化

4.1 梯度下降法

通过梯度下降更新参数:

$$ w := w - \alpha \frac{\partial J}{\partial w} $$

$$ b := b - \alpha \frac{\partial J}{\partial b} $$

梯度计算:

$$ \frac{\partial J}{\partial w} = \frac{1}{m} X^T(\hat{Y} - Y) $$

$$ \frac{\partial J}{\partial b} = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}^{(i)} - y^{(i)}) $$

4.2 优化算法

  • 批量梯度下降(Batch GD)
  • 随机梯度下降(SGD)
  • 小批量梯度下降(Mini-batch GD)
  • 牛顿法、拟牛顿法(如L-BFGS)

五、与线性回归的区别

特性 线性回归 逻辑回归
问题类型 回归问题 分类问题
输出 连续值 概率值(0-1)
激活函数 Sigmoid函数
损失函数 均方误差(MSE) 对数损失(交叉熵)
应用场景 预测数值 预测类别

六、多分类扩展

6.1 One-vs-Rest(OvR)

  • 为每个类别训练一个二分类器
  • 共训练K个模型(K为类别数)
  • 预测时选择概率最高的类别

6.2 Softmax回归

  • 直接扩展到多分类
  • 使用Softmax函数替代Sigmoid
  • 一次训练即可处理多分类

七、正则化

7.1 L1正则化(Lasso)

$$ J_{L1}(w) = J(w) + \lambda \sum_{i=1}^{n} |w_i| $$

  • 可产生稀疏解(特征选择)
  • 适用于高维数据

7.2 L2正则化(Ridge)

$$ J_{L2}(w) = J(w) + \lambda \sum_{i=1}^{n} w_i^2 $$

  • 防止过拟合
  • 保持所有特征

7.3 Elastic Net

结合L1和L2正则化,平衡两者优势。


八、应用场景

8.1 金融风控

  • 信用评分
  • 欺诈检测
  • 违约预测

8.2 医疗健康

  • 疾病诊断(糖尿病、癌症等)
  • 患者风险评估
  • 康复概率预测

8.3 互联网应用

  • 垃圾邮件识别
  • 用户流失预测
  • 点击率预测(CTR)

8.4 其他领域

  • 文本分类
  • 客户购买意向
  • 推荐系统

九、优缺点分析

9.1 优点

简单高效:计算复杂度低,训练速度快
可解释性强:权重可直接解释特征重要性
概率输出:不仅预测类别,还给出置信度
对数据要求低:不需要特征缩放也能工作
理论基础扎实:源于统计学,数学性质良好

9.2 缺点

线性决策边界:无法处理非线性可分问题
对异常值敏感:需要数据预处理
特征工程依赖:需要手动处理非线性特征
多重共线性问题:特征高度相关时性能下降


十、实现示例(Python)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
import numpy as np

# 1. 数据准备
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
y = np.array([0, 0, 1, 1, 1])

# 2. 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 3. 模型训练
model = LogisticRegression()
model.fit(X_train, y_train)

# 4. 预测
y_pred = model.predict(X_test)
y_proba = model.predict_proba(X_test)

# 5. 评估
print(f"准确率: {accuracy_score(y_test, y_pred)}")
print(f"分类报告:\n{classification_report(y_test, y_pred)}")
print(f"预测概率:\n{y_proba}")

十一、工程实践建议

  1. 数据预处理:处理缺失值、异常值、标准化特征
  2. 特征工程:创建多项式特征、交互特征以处理非线性
  3. 正则化选择:根据数据特点选择L1/L2正则化
  4. 超参数调优:使用交叉验证优化正则化强度
  5. 模型评估:不仅看准确率,还要关注精确率、召回率、F1分数
  6. 概率校准:使用Platt Scaling或Isotonic Regression校准概率

总结

逻辑回归作为机器学习中最基础且实用的分类算法,具有简单、高效、可解释的特点。虽然在处理复杂非线性问题时能力有限,但通过特征工程和正则化等技术,它仍然是许多实际应用中的首选算法,特别是在需要模型可解释性的场景中。