第二章: 机器学习与神经网络概述
第三部分:类算法理论与实践
第一节:逻辑回归(Logistic Regression)
内容:Sigmoid函数、损失函数、梯度下降优化。
一、逻辑回归简介
逻辑回归是一种用于二分类任务的统计学习方法。尽管名字中带有“回归”,但逻辑回归本质是分类算法,其输出是一个概率值,通过设定阈值来判定类别。
二、模型表达形式
逻辑回归模型如下:
其中
-
:预测结果,表示属于“正类”的概率
-
x:输入特征向量
-
w:权重参数
-
b:偏置项
-
:Sigmoid 激活函数
三、Sigmoid 函数
Sigmoid 函数将任意实数映射到 (0,1) 区间,公式如下:
性质:
-
当 z→+∞,σ(z)→1
-
当 z→−∞,σ(z)→0
-
σ(0)=0.5
它保证输出可以解释为“概率”。
上图展示了 Sigmoid 函数 的曲线形状:
-
当 z→+∞z 时,函数值趋近于 1;
-
当 z→−∞z 时,函数值趋近于 0;
-
在 z = 0 处,函数值为 0.5,曲线最陡。
四、损失函数(对数似然损失)
逻辑回归使用的损失函数是对数损失函数(Log Loss),其目标是最大化似然函数,等价于最小化负对数似然:
在整体样本上取平均作为总损失:
上图展示了对数损失函数(Log Loss)随预测概率的变化曲线:
-
红线:真实标签 y = 1,预测越接近 1,损失越低;
-
蓝线:真实标签 y = 0,预测越接近 0,损失越低;
-
当预测概率极端错误(如接近 1 但实际为 0),损失会迅速升高。
这是逻辑回归训练中优化目标的重要基础之一。
五、参数优化:梯度下降(Gradient Descent)
为最小化损失函数,使用梯度下降算法不断更新参数:
-
权重更新:
-
偏置更新:
其中 α 是学习率。
常见优化策略:
-
Batch Gradient Descent(全量)
-
Stochastic Gradient Descent(SGD,单样本)
-
Mini-batch Gradient Descent(小批量)
六、Python 示例(使用 sklearn)
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
import matplotlib.pyplot as plt
import numpy as np
# 创建数据
X, y = make_classification(n_samples=200, n_features=2, n_redundant=0, random_state=1)
# 拟合逻辑回归模型
model = LogisticRegression()
model.fit(X, y)
# 绘制决策边界
x_min, x_max = X[:,0].min(), X[:,0].max()
y_min, y_max = X[:,1].min(), X[:,1].max()
xx, yy = np.meshgrid(np.linspace(x_min, x_max, 300),
np.linspace(y_min, y_max, 300))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.3)
plt.scatter(X[:,0], X[:,1], c=y, edgecolor='k')
plt.title("逻辑回归分类边界")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.grid(True)
plt.show()
七、逻辑回归的优点与局限
优点 | 说明 |
---|---|
模型简单 | 易于理解与实现 |
输出概率 | 可以根据概率灵活设定阈值 |
训练快速 | 适合大规模数据 |
局限 | 说明 |
---|---|
线性模型 | 对于非线性问题效果较差 |
易受异常值影响 | 需预处理数据 |
多分类需扩展 | 需要 One-vs-Rest 或 Softmax 扩展 |
八、逻辑回归的应用场景
-
垃圾邮件检测(是否垃圾)
-
广告点击预测
-
医疗诊断(是否患病)
-
用户是否流失预测