本文依照《机器学习从原理到应用》(卿来云、黄庆明编著,人民邮电出版社,2020 年第一版)的目录顺序整理,为系列的第二篇,覆盖监督学习中的线性模型部分。结构沿用系列统一格式:知识地图 → 考点详解 → 对比表 → 自测题 → 复习建议。
〇、本章知识地图
线性模型是监督学习的起点,一条主线贯穿本章:
回归问题:线性回归
模型形式 → 损失函数(最小二乘)→ 求解(正规方程 / 梯度下降)→ 正则化(岭回归 / LASSO)
分类问题:Logistic 回归
Sigmoid 函数 → 对数几率 → 交叉熵损失 → 极大似然求解 → 多分类扩展(Softmax)
二者的共同点是"线性决策 + 凸损失 + 可解析或迭代求解",区别仅在于输出空间与损失函数的选择。
一、线性回归(Linear Regression)
1.1 模型形式
给定 维特征向量
,线性回归假设输出为特征的线性组合:
![]()
其中 为权重向量,b 为偏置。学习的任务就是依据训练样本确定
。
考点:线性回归的"线性"指对参数线性,而非对特征线性。因此可以通过特征变换(如多项式特征
拟合非线性关系,模型本身仍是线性模型。

1.2 损失函数:最小二乘
以均方误差(MSE)为经验损失:

使该损失最小化即"最小二乘法"。其概率解释:在噪声服从零均值高斯分布的假设下,最小二乘等价于极大似然估计——这是常见的简答题采分点。

1.3 求解方法
方法一:正规方程(解析解)
将偏置并入权重(增广特征),令设计矩阵为 X,令梯度为零可得闭式解:

适用条件: 可逆(特征数不多、无严重共线性)。缺点:矩阵求逆复杂度约为特征数的三次方,特征维度高时不可行。
方法二:梯度下降(迭代解)
沿负梯度方向迭代更新(公式与复习(1) 第五节一致)。均方误差是凸函数,梯度下降保证收敛到全局最优——这是线性回归采用梯度下降的理论保证,常考。
对比要点:特征少、样本少 → 正规方程;特征多、样本大 → 梯度下降(或小批量梯度下降)。
1.4 正则化:岭回归与 LASSO
为防止过拟合,在损失函数上加入结构损失(呼应复习(1) 第 2.3 节):
| 岭回归(Ridge) | LASSO | |
|---|---|---|
| 正则项 | ||
| 效果 | 权重整体缩小,趋于平滑 | 部分权重被压缩为恰好 0 |
| 附加价值 | 缓解共线性 | 特征选择(稀疏解) |
记忆口诀:L2 缩小,L1 置零。\lambda 控制正则化强度,\lambda 越大模型越简单。

1.5 回归问题的评价指标
- MAE(平均绝对误差):对异常值不敏感;
- MSE / RMSE(均方误差及其开方):放大较大误差,最常用;
(决定系数):
,越接近 1 越好,表示模型解释方差的比例。
二、Logistic 回归(Logistic Regression)
2.1 从回归到分类:Sigmoid 函数
Logistic 回归是分类模型(名称中的"回归"是历史遗留)。做法是将线性输出 压缩到 (0,1) 区间,解释为"正类的概率":

Sigmoid 函数 的性质(常考):
- 值域 (0,1),
,单调递增;
- 导数简洁:
,这一性质使梯度推导非常规整。
决策规则:概率 判为正类,等价于
,因此 Logistic 回归的决策边界仍是线性的。

2.2 对数几率(Logit)
将几率(odds)取对数,可以发现 Logistic 回归的线性本质:

即"对数几率是特征的线性函数",这也是 Logistic 回归被称为对数几率回归的原因。
2.3 损失函数:交叉熵
为什么不能沿用均方误差?因为 Sigmoid 与 MSE 组合后损失函数非凸,存在大量局部极小。改用极大似然估计,对数似然取负即得交叉熵损失:
![]()
交叉熵是凸函数,可用梯度下降求全局最优。其单样本形式 的含义:预测越自信且正确,损失越接近 0;预测越自信却错误,损失趋于无穷大。

2.4 多分类扩展:Softmax 回归
二分类扩展到 K 类:将 Sigmoid 推广为 Softmax 函数

各类概率归一化(和为 1),损失函数相应推广为多类交叉熵。

三、线性回归 vs Logistic 回归(核心对比表)
| 维度 | 线性回归 | Logistic 回归 |
|---|---|---|
| 任务类型 | 回归 | 分类 |
| 输出 | 连续值 | 概率 (0,1) |
| 输出函数 | 恒等 | Sigmoid |
| 损失函数 | 均方误差(最小二乘) | 交叉熵(负对数似然) |
| 解析解 | 有(正规方程) | 无,只能迭代求解 |
| 决策边界 | 无此概念 | 线性边界 |
| 概率解释 | 高斯噪声下的极大似然 | 伯努利分布下的极大似然 |
附:代码实践(动手 10 分钟)
片段 1:线性回归与两种正则化——观察 LASSO 将部分权重压为 0 的特征选择效果。
from sklearn.datasets import load_diabetes
from sklearn.linear_model import LinearRegression, Ridge, Lasso
from sklearn.model_selection import train_test_split
X, y = load_diabetes(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
for name, model in [("普通最小二乘", LinearRegression()),
("岭回归(L2)", Ridge(alpha=1.0)),
("LASSO(L1)", Lasso(alpha=0.1))]:
model.fit(X_train, y_train)
n_zero = int((abs(model.coef_) < 1e-6).sum())
print(f"{name:<10} 测试R2={model.score(X_test, y_test):.3f} 权重为0的特征数={n_zero}")
预期现象:三者测试得分接近,但 LASSO 的"权重为 0 的特征数"明显大于另外两个——直观验证"L1 产生稀疏解"。
片段 2:Logistic 回归二分类——注意系数可解释性与概率输出。
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
clf = make_pipeline(StandardScaler(), LogisticRegression(max_iter=2000))
clf.fit(X_train, y_train)
print("测试准确率:", round(clf.score(X_test, y_test), 3))
print("前5个样本的正类概率:", clf.predict_proba(X_test[:5])[:, 1].round(3))
两点观察:predict_proba 输出即 2.1 节 Sigmoid 给出的概率;Logistic 回归对特征缩放敏感,务必先标准化(Pipeline 写法可顺带防止数据泄漏)。
四、本章自测题
- 写出线性回归的模型形式与最小二乘损失函数,并说明最小二乘的概率解释。
- 推导正规方程(提示:对
求梯度并令其为零)。
- 岭回归与 LASSO 的区别是什么?为什么 LASSO 能用于特征选择?
- Logistic 回归为什么不用均方误差作损失函数?
- 写出 Sigmoid 函数及其导数,说明 Logistic 回归的决策边界为什么是线性的。
- 由 Sigmoid 推导对数几率表达式,解释"对数几率回归"名称的由来。
- 写出二分类交叉熵损失,并解释其随预测置信度变化的趋势。
- 比较线性回归与 Logistic 回归的异同(从至少四个维度作答)。
五、复习建议
- 本章的核心是"模型形式 + 损失函数 + 求解方法"三件套,任何一种模型都按此框架记忆,后面 SVM、神经网络同样适用;
- 第三节对比表是最高频考点,务必能默写;
- 推导题集中在两处:正规方程、交叉熵梯度(提示:利用 Sigmoid 导数性质,最终结果为
,形式极其简洁,值得亲手推一遍)。

5212

被折叠的 条评论
为什么被折叠?



