逻辑回归简介
逻辑回归(Logistic Regression)是一种广泛应用于分类问题 的统计学习方法,尽管名字中含有"回归",但它实际上主要用于二分类任务(也适用于多分类)。
核心思想
逻辑回归通过将线性回归的输出映射到 [0, 1] 区间,来预测样本属于某一类别的概率。
基本形式:
-
线性部分 :
z = w\^T x + b
其中 (x) 是特征向量,(w) 是权重,(b) 是偏置。
-
Sigmoid 函数(逻辑函数) :
\\hat{y} = \\sigma(z) = \\frac{1}{1 + e\^{-z}}
将 (z) 转换为 0~1 之间的概率值。
-
分类决策 :
通常取阈值 0.5:
- 若 (\hat{y} \ge 0.5),预测为正类(1)
- 若 (\hat{y} < 0.5),预测为负类(0)
损失函数
逻辑回归使用对数损失(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
]
通过梯度下降等优化算法最小化该损失函数,得到最优参数 (w, b)。
特点与优缺点
优点:
- 模型简单,计算效率高
- 输出具有概率意义,可解释性强
- 不易过拟合(尤其在正则化后)
- 对线性可分问题效果好
缺点:
- 对特征空间中的非线性关系拟合能力有限
- 对异常值敏感
- 需要特征独立或相关性较低(虽然比朴素贝叶斯更鲁棒)
常见应用
- 信用评分(是否违约)
- 医疗诊断(是否患病)
- 垃圾邮件识别
- 点击率预估(CTR)
- 用户流失预测
简单示例(Python + scikit-learn)
python
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
# 加载数据
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练模型
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
# 预测
accuracy = model.score(X_test, y_test)
print(f"Accuracy: {accuracy:.4f}")
与线性回归的区别
| 特性 | 线性回归 | 逻辑回归 |
|---|---|---|
| 任务类型 | 回归(预测数值) | 分类(预测类别/概率) |
| 输出范围 | ((-\infty, +\infty)) | ([0, 1]) |
| 损失函数 | 均方误差(MSE) | 交叉熵损失 |
| 激活函数 | 无(恒等映射) | Sigmoid |