复习笔记 -机器学习 CH2模型评估
本文记录机器学习课程第二章复习笔记,主要内容包括机器学习的定义、任务类型、模型训练方法、模型评估核心概念(泛化、欠拟合、过拟合)以及模型选择方法(超参数、验证集、交叉验证)。通过线性回归的例子,详细介绍了损失函数、最小二乘法和梯度下降法,并讨论了回归评价指标(MSE 和 RMSE)。最后总结了本章的核心内容和必须掌握的知识点。
一、本章主线:机器学习到底在学什么?
机器学习可以用三个关键词概括:
任务 T + 经验 E + 性能 P
也就是说,机器学习不是让机器“凭空变聪明”,而是让机器通过数据或交互经验,提高它完成某类任务的能力。
| 核心概念 | 含义 | 例子 |
|---|---|---|
| T:任务 | 机器要完成什么 | 分类、回归、图像分割 |
| E:经验 | 机器从哪里学习 | 训练数据、环境反馈 |
| P:性能 | 怎么判断学得好不好 | 准确率、错误率、MSE、RMSE |
这一部分要记住一句话:
机器学习 = 利用经验 E,提高任务 T 上的性能 P。
二、机器学习的任务类型
这一章先介绍了机器学习能解决哪些问题。可以归成五类。
1. 分类
分类是从若干类别中选出一个类别。
例如:
- 判断图片是猫还是狗;
- 判断邮件是不是垃圾邮件;
- 判断一个样本属于哪一类。
数学形式:
\[f: \mathbb{R}^n \rightarrow \{1,2,\dots,k\}\]分类输出的是类别。
2. 数据缺失下的分类
有时候输入数据不完整,模型仍然要判断类别。
例如,人脸被遮挡了一部分,但仍要识别身份。
这种情况可以利用联合概率分布来建模。
重点理解:
输入不完整时,模型要根据已有信息和概率关系推断结果。
3. 回归
回归预测的是一个连续实数。
例如:
- 根据房屋面积预测房价;
- 根据气象数据预测温度;
- 根据学习时间预测考试成绩。
数学形式:
\[f: \mathbb{R}^n \rightarrow \mathbb{R}\]分类和回归最重要的区别是:
| 任务 | 输出 |
|---|---|
| 分类 | 类别 |
| 回归 | 实数 |
4. 序贯数据任务
序贯数据与时间顺序有关。
例如:
- 语音识别;
- 机器翻译;
- 文本分析;
- 时间序列预测。
这类任务中,当前输出不仅依赖当前输入,还可能依赖之前的信息。
例如:
“I am a student” 合理,
“I are an student” 不合理。
模型需要理解前后文关系。
5. 结构性输出
结构性输出不是输出一个简单类别或数字,而是输出一个复杂结构。
例如:
- 图像边缘检测;
- 图像分割;
- 图像去噪;
- 图像风格迁移。
这类任务的特点是:
输出本身也是一个向量、图像、序列或结构。
三、以线性回归为例:模型怎么训练?
这一章用线性回归说明机器学习模型如何训练。
1. 线性回归模型
线性回归的目标是根据输入 $x$ 预测实数 $y$。
模型形式:
\[h_\theta(x)=\theta^Tx\]其中:
- $x$:输入特征;
- $y$:真实值;
- $\hat{y}$:预测值;
- $\theta$:模型参数,也叫权重。
2. 损失函数
训练模型时,需要衡量预测值和真实值之间的差距。
常用损失函数是均方误差:
\[J(\theta)=\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2\]训练目标是:
\[\min_\theta J(\theta)\]也就是找到一组参数,让预测误差尽可能小。
3. 最小二乘法
最小二乘法的思想是:
让所有样本预测误差的平方和最小。
它可以通过求导、令梯度为 0 得到参数解。
矩阵形式下的解析解是:
\[\theta = (X^TX)^{-1}X^Ty\]这个方法适合理论推导,但在大规模数据中,直接求逆可能成本较高。
4. 梯度下降法
梯度下降法通过不断更新参数来降低损失函数。
更新公式:
\[\theta_j := \theta_j-\alpha \frac{\partial}{\partial \theta_j}J(\theta)\]其中:
- $\alpha$:学习率;
- 梯度方向表示损失函数变化最快的方向;
- 参数沿着负梯度方向更新,使损失逐渐减小。
学习率要适中:
| 学习率 | 结果 |
|---|---|
| 太大 | 可能震荡或不收敛 |
| 太小 | 收敛很慢 |
| 合适 | 稳定收敛 |
5. 回归评价指标
回归任务常用 MSE 和 RMSE。
MSE:均方误差
\[MSE=\frac{1}{m}\sum_{i=1}^{m}(y_i-\hat{y}_i)^2\]RMSE:均方根误差
\[RMSE=\sqrt{\frac{1}{m}\sum_{i=1}^{m}(y_i-\hat{y}_i)^2}\]二者都越小越好。
区别是:
| 指标 | 特点 |
|---|---|
| MSE | 对大误差更敏感 |
| RMSE | 单位与原变量一致,更直观 |
四、模型评估的核心:泛化、欠拟合、过拟合
这一部分是本章最重要的内容。
1. 泛化
泛化是指:
模型在未知数据上的表现。
机器学习真正关心的不是训练集上表现多好,而是测试集、未来数据、未知数据上的表现。
所以本章核心问题是:
怎样让模型在没见过的数据上也表现好?
2. 优化和机器学习的区别
优化问题关注:
在已知训练数据上误差最小。
机器学习关注:
在未知数据上误差最小。
因此:
优化是机器学习的工具,但机器学习不等于优化。
如果只追求训练误差最低,可能会导致过拟合。
3. 欠拟合
欠拟合是指模型太简单,连训练数据都学不好。
表现:
- 训练误差大;
- 测试误差也大;
- 模型复杂度不足。
解决方法:
- 增加模型复杂度;
- 选择更合适的模型;
- 增加有效特征;
- 训练更充分。
4. 过拟合
过拟合是指模型在训练集上表现很好,但在测试集上表现差。
表现:
- 训练误差小;
- 测试误差大;
- 模型过于贴合训练数据;
- 把噪声也学进去了。
解决方法主要有三类:
方法一:增加训练数据
数据越多,模型越不容易只记住个别样本。
方法二:正则化
在损失函数中加入正则项:
\[J(w)=MSE_{train}+\lambda w^Tw\]其中:
- $MSE_{train}$:训练误差;
- $w^Tw$:惩罚权重过大;
- $\lambda$:正则化强度。
正则化的作用是限制模型复杂度,提高泛化能力。
方法三:选择合适的假设空间
模型不能太简单,也不能太复杂。
例如:
| 模型 | 可能情况 |
|---|---|
| 一阶拟合 | 可能欠拟合 |
| 三阶拟合 | 可能比较合适 |
| 十阶拟合 | 可能过拟合 |
5. U 型曲线
随着模型复杂度增加:
- 一开始模型太简单,训练误差和测试误差都高;
- 模型复杂度适中时,测试误差最低;
- 模型太复杂时,训练误差继续下降,但测试误差上升。
所以要记住:
最好的模型不是训练误差最低的模型,而是泛化误差最低的模型。
五、如何选择模型:超参数、验证集、交叉验证
1. 参数与超参数
参数是模型自己学习出来的。
超参数是人为设置,用来控制模型训练和性能的。
| 类型 | 含义 | 例子 |
|---|---|---|
| 参数 | 训练中学出来 | 权重 $w$、$\theta$ |
| 超参数 | 人为调控 | 学习率、正则化系数 $\lambda$、模型阶数 |
一句话记忆:
参数是学出来的,超参数是调出来的。
2. 训练集、验证集、测试集
数据一般分成三部分:
| 数据集 | 作用 |
|---|---|
| 训练集 | 训练模型参数 |
| 验证集 | 调整超参数、选择模型 |
| 测试集 | 最终评估泛化能力 |
重点:
测试集不能用来调超参数,否则相当于作弊。
因为如果反复用测试集调参,模型就间接“看过”测试集了,最终测试结果会失真。
3. 交叉验证
当数据量有限时,可以使用 k 折交叉验证。
步骤:
- 把数据分成 $k$ 份;
- 每次拿 1 份做测试,其余做训练;
- 重复 $k$ 次;
- 把结果取平均。
作用:
- 更充分利用数据;
- 评估结果更稳定;
- 减少一次划分带来的偶然性。
六、估计器、偏差、方差与维度灾难
1. 点估计器
点估计器是用样本数据估计某个参数。
例如:
- 用样本均值估计总体均值;
- 用线性回归学到的权重估计真实权重。
形式上:
\[\hat{\theta}_m = g(x^{(1)},x^{(2)},\dots,x^{(m)})\]也就是说,估计器是样本数据的函数。
2. 估计偏差
估计偏差表示估计器的期望与真实参数之间的差距。
\[bias(\hat{\theta}_m)=E(\hat{\theta}_m)-\theta\]如果:
\[bias(\hat{\theta}_m)=0\]就叫无偏估计。
如果:
\[\lim_{m\to\infty}bias(\hat{\theta}_m)=0\]就叫渐进无偏。
3. 方差与标准差
方差表示估计器的波动程度:
\[Var(\hat{\theta})=E[\hat{\theta}^2]-E[\hat{\theta}]^2\]标准差是方差的平方根:
\[SE(\hat{\theta})=\sqrt{Var(\hat{\theta})}\]简单理解:
| 概念 | 含义 |
|---|---|
| 偏差 | 平均估得准不准 |
| 方差 | 每次估计稳不稳 |
4. 伯努利分布中的无偏估计
如果样本服从伯努利分布:
\[x^{(i)} \in \{0,1\}\]用样本均值估计参数:
\[\hat{\theta}_m=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}\]这是无偏估计,因为:
\[E[\hat{\theta}_m]=\theta\]它的方差是:
\[Var(\hat{\theta}_m)=\frac{1}{m}\theta(1-\theta)\]这说明:
样本数越多,估计越稳定。
5. 维度灾难
维度灾难是指:
随着特征维度增加,数据空间迅速变大,样本变得稀疏,学习难度急剧增加。
影响包括:
- 需要更多训练样本;
- 模型更容易过拟合;
- 距离度量变得不可靠;
- 计算复杂度增加。
应对方法:
- 降维;
- 特征选择;
- 正则化;
- 增加数据;
- 使用合适模型。
七、本章总表
| 模块 | 核心问题 | 必须掌握 |
|---|---|---|
| 机器学习内涵 | 机器学习是什么? | T、E、P |
| 任务类型 | 机器学习能做什么? | 分类、回归、序贯、结构输出 |
| 线性回归 | 模型怎么训练? | 损失函数、最小二乘、梯度下降、MSE/RMSE |
| 泛化问题 | 模型为什么不能只看训练误差? | 泛化、欠拟合、过拟合、正则化 |
| 模型选择 | 怎么选模型和超参数? | 验证集、测试集、交叉验证 |
| 统计基础 | 如何理解估计误差? | 点估计、偏差、方差、维度灾难 |