机器学习(2)——逻辑回归

发布于:2025-04-14 ⋅ 阅读:(23) ⋅ 点赞:(0)

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+ez1

  • 输入 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^)+(1y)log(1y^)]

其中, 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=1n[yilog(σ(zi))+(1yi)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αβjJ(β)

    • α:学习率。

    • 偏导数(梯度):
      ∂ 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} βjJ(β)=n1i=1n(σ(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)

网站公告

今日签到

点亮在社区的每一天
去签到