文章目录
1. 什么是逻辑回归?
逻辑回归(Logistic Regression) 是一种用于分类问题的统计方法,特别是用于二分类问题。尽管其名字中有“回归”二字,但逻辑回归实际上是一种分类模型。它通过一个线性模型来预测一个事件的发生概率,输出值在0到1之间。
2. 核心思想
逻辑回归的核心是通过一个线性模型来预测某个类别的概率。为了确保输出的结果在0到1之间,通过Sigmoid函数将线性回归的输出映射到概率空间(0到1之间),从而实现对类别的概率预测。
Sigmoid函数(Logistic函数)公式:
σ ( z ) = 1 1 + e − z σ(z)=\frac{1}{1+e^{-z}} σ(z)=1+e−z1
- 输入 z z z(线性组合): z = β 0 + β 1 x 1 + β 2 x 2 + ⋅ ⋅ ⋅ + β p x p z=β_0+β_1x_1+β_2x_2+···+β_px_p z=β0+β1x1+β2x2+⋅⋅⋅+βpxp
- 输出 σ ( z ) σ(z) σ(z):表示 P ( y = 1 ∣ x ) P(y=1|x) P(y=1∣x),即样本属于类别1的概率。
概率输出:
P ( y = 1 ∣ x ) = σ ( z ) , P ( y = 0 ∣ x ) = 1 − σ ( z ) P(y = 1 | x) = \sigma(z), \quad P(y = 0 | x) = 1 - \sigma(z) P(y=1∣x)=σ(z),P(y=0∣x)=1−σ(z)
3. 逻辑回归模型的训练:
逻辑回归的目标是通过训练数据找到最佳的权重和偏置,使得模型输出的概率能够尽可能准确地预测样本的类别。
训练逻辑回归模型通常使用 最大似然估计(Maximum Likelihood Estimation, MLE) 来估计参数。对于每个训练样本,模型会计算它属于某个类别的概率,然后通过这些概率来调整参数,使得预测结果与真实标签尽可能匹配。
4. 参数估计(损失函数与优化)
4.1. 损失函数:
逻辑回归的损失函数通常使用交叉熵损失函数(cross-entropy loss),也叫做对数损失函数,用来衡量预测概率与实际类别之间的差距。
对于二分类问题,交叉熵损失函数的公式为:
L ( y , y ^ ) = − [ y log ( y ^ ) + ( 1 − y ) log ( 1 − y ^ ) ] L(y,\hat y)=-[y\log(\hat y)+(1-y)\log(1-\hat y)] L(y,y^)=−[ylog(y^)+(1−y)log(1−y^)]
其中, y y y是真实标签(0或1), y ^ \hat y y^是模型预测的概率。
4.2. 极大似然估计(MLE)
目标:最大化观测数据的似然函数(即找到使当前数据最可能出现的参数)。
损失函数(对数损失/交叉熵损失):
J ( β ) = − 1 n ∑ i = 1 n [ y i log ( σ ( z i ) ) + ( 1 − y i ) log ( 1 − σ ( z i ) ) ] J(\beta) = -\frac{1}{n} \sum_{i=1}^{n} \left[ y_i \log(\sigma(z_i)) + (1 - y_i) \log(1 - \sigma(z_i)) \right] J(β)=−n1i=1∑n[yilog(σ(zi))+(1−yi)log(1−σ(zi))]- y i y_i yi :真实标签(0或1)。
- σ ( z i ) σ(z_i) σ(zi):模型预测的概率。
4.3. 优化方法
梯度下降:通过迭代更新参数 β β β 最小化损失函数:
β j : = β j − α ∂ J ( β ) ∂ β j \beta_j := \beta_j - \alpha \frac{\partial J(\beta)}{\partial \beta_j} βj:=βj−α∂βj∂J(β)α:学习率。
偏导数(梯度):
∂ J ( β ) ∂ β j = 1 n ∑ i = 1 n ( σ ( z i ) − y i ) x i j \frac{\partial J(\beta)}{\partial \beta_j} = \frac{1}{n} \sum_{i=1}^{n} \left( \sigma(z_i) - y_i \right) x_{ij} ∂βj∂J(β)=n1i=1∑n(σ(zi)−yi)xij
5. 决策边界
- 阈值:通常设为0.5(可调整)。
- 若 σ ( z ) ≥ 0.5 σ(z)≥0.5 σ(z)≥0.5,预测 y=1;
- 若 σ ( z ) < 0.5 σ(z)<0.5 σ(z)<0.5,预测 y=0。
- 边界形状:线性决策边界(在特征空间中是超平面)。
6. 模型评估指标
- 准确率(Accuracy):正确分类的比例。
- 精确率(Precision):预测为正类中实际为正类的比例。
- 召回率(Recall):实际为正类中被正确预测的比例。
- F1分数:精确率和召回率的调和平均。
- ROC-AUC:模型区分正负类的能力(AUC越接近1越好)。
7 . 假设与适用条件
- 二元输出:目标变量是二分类的。
- 线性关系:自变量与Logit(对数几率)呈线性关系。
- 独立性:样本间相互独立。
- 无多重共线性:自变量之间相关性不宜过高。
8. 逻辑回归的优缺点:
- 优点:
- 简单易懂,易于实现。
- 计算效率高,适合处理大规模数据。
- 可以输出概率,具有一定的解释性。
- 可通过正则化(L1/L2)防止过拟合。
- 缺点:
- 只能用于线性可分的数据,无法处理复杂的非线性关系。
- 对异常值比较敏感。
- 在特征之间存在高度相关性的情况下表现较差(多重共线性问题)。
9. 逻辑回归的常用应用:
- 二分类问题:
- 垃圾邮件分类(垃圾邮件或正常邮件)
- 疾病预测(有病或无病)
- 信贷风险评估(违约或不违约)等。
- 多分类问题:通过扩展为多项式逻辑回归(Multinomial Logistic Regression)或一对多(One-vs-Rest)方法,也可以处理多分类问题。
10. 示例代码
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 示例数据
X = [[1.2], [2.4], [3.1], [4.8]] # 特征
y = [0, 0, 1, 1] # 标签
# 训练模型
model = LogisticRegression()
model.fit(X, y)
# 预测概率
prob = model.predict_proba([[3.0]]) # 输出[[P(y=0), P(y=1)]]
print("Probability:", prob)
# 预测类别
pred = model.predict([[3.0]])
print("Predicted class:", pred)