20、机器学习实验的设计与分析

机器学习实验的设计与分析

1. 引言

在实际应用中,往往有多种学习算法可供选择。这就引发了两个关键问题:一是如何评估学习算法在某一问题上的预期误差,二是如何比较两个学习算法在特定应用中的误差。

不能仅依据训练集误差来做决策,因为训练集误差通常小于测试集误差,且复杂模型在训练集上的误差往往更小。为了更准确地评估和比较算法,需要使用验证集。但仅进行一次验证可能不够,原因有二:一是训练集和验证集可能较小,存在异常实例;二是学习方法可能受其他随机因素影响。

为了消除这些随机因素的影响,我们可以多次运行同一算法,生成多个学习器,并在多个验证集上进行测试,记录验证误差样本。我们基于这些验证误差的分布来评估学习算法,可用于评估算法的预期误差,或与其他算法的误差率分布进行比较。

在进行实验前,还需注意以下几点:
1. 分析结论依赖于给定的数据集,实验结果仅适用于特定应用。不存在“最佳”学习算法,不同算法在不同数据集上表现各异。
2. 数据集划分为训练集和验证集仅用于测试。完成测试并确定最终方法或超参数后,可使用所有标注数据来训练最终学习器。
3. 验证集用于测试,因此在确定最终算法并报告其预期误差时,应使用单独的测试集。通常,将数据集的三分之一留作测试集,其余用于训练和验证。
4. 除了误差率,实际决策还受其他因素影响,如风险、训练和测试的时间与空间复杂度、可解释性和易编程性等。

2. 实验的因素、响应和策略

在机器学习中,实验旨在获取有关学习过程的信息。实验涉及控制影响输出的因素,观察响应变化以提取信息。目标可能是确定最重要的因素、筛选不重要的因素,或找到优化响应的因素配置。

2.1 因素类型

  • 可控因素 :包括学习算法、算法的超参数(如多层感知机的隐藏单元数、k - 近邻的 k 值等)、数据集和输入表示。
  • 不可控因素 :如数据中的噪声、训练子集的随机性、优化过程中的随机性(如多层感知机的初始权重)等。

2.2 响应变量

响应变量可由输出生成,如测试集上的平均分类误差、使用损失函数的预期风险、精度和召回率等。

2.3 实验策略

  • 最佳猜测法 :从认为合适的因素配置开始,逐个调整因素并测试,直到达到满意状态。但该方法缺乏系统性,无法保证找到最佳配置。
  • 一次改变一个因素法 :为所有因素设定基线值,然后改变一个因素的不同水平,同时保持其他因素不变。但其缺点是假设因素之间无交互作用,这可能不符合实际情况。
  • 析因设计法 :同时改变多个因素,也称为网格搜索。虽然时间复杂度较高($O(L^F)$),但能更全面地探索因素组合。

以下是不同实验策略的对比表格:
| 实验策略 | 优点 | 缺点 | 时间复杂度 |
| — | — | — | — |
| 最佳猜测法 | 若实验者直觉好可能有效 | 无系统方法,无法保证最佳配置 | - |
| 一次改变一个因素法 | 简单直观 | 假设因素无交互作用,可能不准确 | $O(L · F)$ |
| 析因设计法 | 全面探索因素组合 | 时间复杂度高 | $O(L^F)$ |

3. 响应面设计

为减少实验次数,可采用部分析因设计,或利用先前实验的知识来估计可能有高响应的配置。

若假设响应通常为二次函数(有单一最大值),可采用迭代过程:从初始运行开始,拟合二次函数,解析计算其最大值作为下一个估计值,再次实验并更新数据,直至无进一步改进。

对于多个因素的情况,可使用响应面设计方法,拟合参数化响应函数:
$r = g(f_1, f_2, …, f_F|\varphi)$
其中,$r$ 是响应,$f_i$ 是因素,$\varphi$ 是参数。该方法通过拟合函数来估计因素配置对响应的影响。

4. 随机化、重复和分块

实验设计有三个基本原则:
1. 随机化 :实验运行顺序应随机确定,以确保结果独立。在软件实验中,顺序问题通常不严重。
2. 重复 :对于相同的可控因素配置,应多次运行实验,以平均不可控因素的影响。在机器学习中,通常通过对同一数据集进行多次重采样来实现,即交叉验证。
3. 分块 :用于减少或消除不感兴趣的干扰因素的变异性。在机器学习实验中,比较算法时,应确保它们使用相同的重采样子集,以准确测量算法之间的差异。

5. 机器学习实验指南

在开始实验前,需明确研究目标、选择响应变量、确定因素和水平、选择实验设计、进行实验并分析数据,最后得出结论和建议。

5.1 研究目标

  • 评估学习算法在特定问题上的预期误差,确保误差低于可接受水平。
  • 比较两个或多个学习算法在特定数据集或多个数据集上的泛化误差。

5.2 响应变量选择

最常用的是分类的误分类误差和回归的均方误差,也可使用风险度量、精度和召回率等。

5.3 因素和水平选择

因素取决于研究目标,如固定算法时,超参数是因素;比较算法时,学习算法本身是因素。因素水平应仔细选择,避免遗漏好的配置和进行不必要的实验。

5.4 实验设计选择

优先使用析因设计,除非确定因素之间无交互作用。重复次数取决于数据集大小,数据集大时可适当减少重复次数。同时,应避免使用小型合成数据,尽量使用真实数据集。

5.5 实验执行

在进行大规模实验前,可先进行一些随机设置的试运行,确保一切正常。实验过程中应保存中间结果,保证结果可重现。实验者应保持客观,避免编写自己的“库”,尽量使用可靠的代码。

5.6 数据统计分析

将问题转化为假设检验框架,检查样本是否支持假设。可使用可视化分析方法,如误差分布直方图、箱线图等。

5.7 结论和建议

实验结束后,应得出客观结论。若结果未达到预期,应分析原因,可能会得到改进算法的思路。但在进行下一步测试前,应确保充分分析当前数据。

以下是机器学习实验的流程 mermaid 图:

graph LR
    A[明确研究目标] --> B[选择响应变量]
    B --> C[确定因素和水平]
    C --> D[选择实验设计]
    D --> E[进行实验]
    E --> F[统计分析数据]
    F --> G[得出结论和建议]

6. 交叉验证和重采样方法

为了进行重复实验,需要从数据集(留出测试集后)中获取多个训练集和验证集对。由于数据集通常不够大,不能简单地随机划分,因此需要采用交叉验证或重采样方法。

6.1 K - 折交叉验证

将数据集随机划分为 K 个相等大小的部分,每次将其中一部分作为验证集,其余部分组合作为训练集,重复 K 次。K 通常为 10 或 30。该方法的问题是为了保持训练集较大,验证集可能较小,且训练集之间重叠较多。当 K 增大时,训练实例百分比增加,但验证集变小,训练成本也会增加。极端情况是留一法,每次只留一个实例作为验证集。

6.2 5×2 交叉验证

将数据集随机分为两部分,得到第一对训练集和验证集,然后交换两部分的角色得到第二对。重复这个过程五次,共得到十对训练集和验证集。该方法使用相等大小的训练集和验证集,但超过五折后,集合之间的重叠会导致统计数据过于依赖,无法提供新信息。

6.3 自助法

通过有放回地从原始样本中抽取实例来生成新样本。原始数据集作为验证集。自助法适用于非常小的数据集,但样本之间的重叠可能导致估计值更依赖。

以下是不同重采样方法的对比表格:
| 重采样方法 | 优点 | 缺点 | 适用场景 |
| — | — | — | — |
| K - 折交叉验证 | 训练实例百分比可调节 | 验证集可能小,训练集重叠多 | 一般数据集 |
| 5×2 交叉验证 | 训练集和验证集大小相等 | 超过五折后统计数据依赖 | 数据集适中 |
| 自助法 | 适用于小数据集 | 样本重叠,估计值依赖 | 非常小的数据集 |

7. 分类器性能度量

对于分类问题,特别是二分类问题,有多种性能度量方法。

7.1 混淆矩阵

二分类问题的混淆矩阵如下:
| 真实类别\预测类别 | 正类 | 负类 | 总计 |
| — | — | — | — |
| 正类 | tp(真正例) | fn(假负例) | p |
| 负类 | fp(假正例) | tn(真负例) | n |
| 总计 | p’ | n’ | N |

7.2 性能指标

  • 误差率 :$(fp + fn) / N$
  • 准确率 :$(tp + tn) / N = 1 - 误差率$
  • 真正例率(tp - rate) :$tp / p$
  • 假正例率(fp - rate) :$fp / n$
  • 精度 :$tp / p’$
  • 召回率 :$tp / p = tp - rate$
  • 灵敏度 :$tp / p = tp - rate$
  • 特异度 :$tn / n = 1 - fp - rate$

7.3 ROC 曲线和 AUC

通过改变决策阈值 $\theta$,可以得到一系列(tp - rate,fp - rate)值,连接这些值得到接收者操作特征(ROC)曲线。ROC 曲线可视为分类器在不同损失矩阵下的行为。曲线下面积(AUC)可将 ROC 曲线简化为一个数值,AUC 越接近 1 表示分类器性能越好。

7.4 精度 - 召回率曲线

在信息检索中,精度是检索到的相关记录数与总检索记录数的比值,召回率是检索到的相关记录数与总相关记录数的比值。可以绘制不同阈值下的精度 - 召回率曲线。

7.5 多分类情况

对于 K > 2 类的情况,可使用 0/1 误差,此时类混淆矩阵是一个 K×K 矩阵,可用于确定误分类类型。也可将其转化为 K 个二分类问题进行分析。

8. 区间估计

区间估计用于在一定置信度下确定参数所在的区间。以估计正态密度的均值 $\mu$ 为例,样本均值 $m$ 是 $\mu$ 的点估计。已知 $m \sim N(\mu, \sigma^2 / N)$,可定义统计量:
$\frac{(m - \mu)}{\sigma / \sqrt{N}} \sim Z$
其中 $Z$ 是标准正态分布。

8.1 双侧置信区间

对于 95% 的置信度,有 $P{-1.96 < Z < 1.96} = 0.95$,可推出 $\mu$ 的双侧置信区间为:
$P{m - 1.96\frac{\sigma}{\sqrt{N}} < \mu < m + 1.96\frac{\sigma}{\sqrt{N}}} = 0.95$
对于任意置信度 $1 - \alpha$,双侧置信区间为:
$P{m - z_{\alpha/2}\frac{\sigma}{\sqrt{N}} < \mu < m + z_{\alpha/2}\frac{\sigma}{\sqrt{N}}} = 1 - \alpha$

8.2 单侧置信区间

已知 $P{Z < 1.64} = 0.95$,可得 95% 的单侧上置信区间为:
$P{m - 1.64\frac{\sigma}{\sqrt{N}} < \mu} = 0.95$
对于任意置信度 $1 - \alpha$,单侧上置信区间为:
$P{m - z_{\alpha}\frac{\sigma}{\sqrt{N}} < \mu} = 1 - \alpha$

若方差 $\sigma^2$ 未知,可用样本方差 $S^2$ 代替,此时 $\frac{\sqrt{N}(m - \mu)}{S} \sim t_{N - 1}$,置信区间的计算需使用 $t$ 分布。

9. 假设检验

假设检验用于根据样本检验关于参数的特定假设。若样本与假设一致,则“未能拒绝”假设;否则,“拒绝”假设。

9.1 基本步骤

定义一个在假设正确时服从特定分布的统计量,若样本计算得到的统计量从该分布中抽取的概率很低,则拒绝假设;否则,未能拒绝假设。

9.2 示例:检验正态分布的均值

设样本来自正态分布,均值 $\mu$ 未知,方差 $\sigma^2$ 已知,要检验 $\mu$ 是否等于指定常数 $\mu_0$。
- 原假设 :$H_0: \mu = \mu_0$
- 备择假设 :$H_1: \mu \neq \mu_0$

若 $\mu_0$ 落在 $100(1 - \alpha)$ 置信区间内,则未能拒绝原假设;否则,拒绝原假设。这是双侧检验。

9.3 错误类型

  • 第一类错误 :拒绝正确的原假设,概率为 $\alpha$。
  • 第二类错误 :未能拒绝错误的原假设,概率为 $\beta(\mu)$。

9.4 单侧检验

可进行单侧检验,如 $H_0: \mu \leq \mu_0$ 对 $H_1: \mu > \mu_0$。若方差未知,使用样本方差代替,检验统计量服从 $t$ 分布。

以下是假设检验的错误类型表格:
| 决策\真实情况 | 原假设为真 | 原假设为假 |
| — | — | — |
| 未能拒绝原假设 | 正确 | 第二类错误 |
| 拒绝原假设 | 第一类错误 | 正确(功效) |

10. 评估分类算法的性能

10.1 二项检验

设训练集为 $T$,验证集为 $V$,分类器的误分类概率为 $p$。要检验 $p$ 是否小于等于指定值 $p_0$:
- 原假设 :$H_0: p \leq p_0$
- 备择假设 :$H_1: p > p_0$

若在 $N$ 个实例中观察到 $e$ 个或更多错误的概率很低,则拒绝原假设:
$P{X \geq e} = \sum_{x = e}^{N} \binom{N}{x} p_0^x (1 - p_0)^{N - x} < \alpha$

10.2 近似正态检验

点估计 $\hat{p} = X / N$,当 $N$ 足够大时,$\frac{X / N - p_0}{\sqrt{p_0(1 - p_0)}} \approx Z$。若该值大于 $z_{\alpha}$,则拒绝原假设。该近似在 $Np \geq 5$ 且 $N(1 - p) \geq 5$ 时效果较好。

10.3 t 检验

若多次运行算法,得到 $K$ 个误差百分比 $p_i$,可计算均值 $m$ 和样本方差 $S^2$。若 $\frac{\sqrt{K}(m - p_0)}{S} > t_{\alpha, K - 1}$,则拒绝原假设。

11. 比较两个分类算法

11.1 McNemar 检验

使用训练集和验证集训练两个分类器,计算误差,构建列联表。若 $\frac{(|e_{01} - e_{10}| - 1)^2}{e_{01} + e_{10}} > \chi^2_{\alpha, 1}$,则拒绝两个分类算法误差率相同的假设。

11.2 K - 折交叉验证配对 t 检验

使用 K - 折交叉验证得到 $K$ 对训练集和验证集,记录两个分类器的误差百分比 $p_1^i$ 和 $p_2^i$,计算差值 $p_i = p_1^i - p_2^i$。若 $\frac{\sqrt{K}m}{S}$ 落在 $(-t_{\alpha/2, K - 1}, t_{\alpha/2, K - 1})$ 之外,则拒绝两个算法误差率相同的假设。

11.3 5×2 交叉验证配对 t 检验

进行五次二折交叉验证,计算误差率差值 $p^{(j)} i$,平均 $p_i$ 和估计方差 $s^2_i$。若 $\frac{p^{(1)}_1}{\sqrt{\sum {i = 1}^{5} s^2_i / 5}}$ 落在 $(-t_{\alpha/2, 5}, t_{\alpha/2, 5})$ 之外,则拒绝假设。

11.4 5×2 交叉验证配对 F 检验

将 5×2 交叉验证配对 t 检验的结果扩展,计算统计量 $f = \frac{\sum_{i = 1}^{5} \sum_{j = 1}^{2} (p^{(j)} i)^2}{2 \sum {i = 1}^{5} s^2_i}$。若 $f > F_{\alpha, 10, 5}$,则拒绝假设。

以下是比较两个分类算法的检验方法对比表格:
| 检验方法 | 适用场景 | 统计量 | 拒绝条件 |
| — | — | — | — |
| McNemar 检验 | 单个训练集和验证集 | $\frac{(|e_{01} - e_{10}| - 1)^2}{e_{01} + e_{10}}$ | 大于 $\chi^2_{\alpha, 1}$ |
| K - 折交叉验证配对 t 检验 | K - 折交叉验证 | $\frac{\sqrt{K}m}{S}$ | 落在 $(-t_{\alpha/2, K - 1}, t_{\alpha/2, K - 1})$ 之外 |
| 5×2 交叉验证配对 t 检验 | 五次二折交叉验证 | $\frac{p^{(1)} 1}{\sqrt{\sum {i = 1}^{5} s^2_i / 5}}$ | 落在 $(-t_{\alpha/2, 5}, t_{\alpha/2, 5})$ 之外 |
| 5×2 交叉验证配对 F 检验 | 五次二折交叉验证 | $\frac{\sum_{i = 1}^{5} \sum_{j = 1}^{2} (p^{(j)} i)^2}{2 \sum {i = 1}^{5} s^2_i}$ | 大于 $F_{\alpha, 10, 5}$ |

12. 比较多个算法:方差分析

12.1 基本原理

对于 $L$ 个算法,在 $K$ 个训练集上训练并在 $K$ 个验证集上测试,记录误差率。方差分析(ANOVA)用于检验所有算法的均值是否相等。
- 原假设 :$H_0: \mu_1 = \mu_2 = \cdots = \mu_L$
- 备择假设 :$H_1: \mu_r \neq \mu_s$,至少有一对 $(r, s)$

12.2 计算过程

计算组间平方和 $SS_b$ 和组内平方和 $SS_w$,统计量 $F_0 = \frac{SS_b / (L - 1)}{SS_w / (L(K - 1))}$ 服从 $F_{L - 1, L(K - 1)}$ 分布。若 $F_0 > F_{\alpha, L - 1, L(K - 1)}$,则拒绝原假设。

12.3 事后检验

若原假设被拒绝,需进行事后检验确定差异所在。Fisher 最小二乘差异检验(LSD)用于两两比较。进行多次比较时,需进行 Bonferroni 校正。

以下是方差分析的流程 mermaid 图:

graph LR
    A[收集多个算法的误差数据] --> B[计算组间平方和 SSb 和组内平方和 SSw]
    B --> C[计算统计量 F0]
    C --> D{F0 > Fα, L - 1, L(K - 1)?}
    D -- 是 --> E[拒绝原假设,进行事后检验]
    D -- 否 --> F[未能拒绝原假设]

13. 跨多个数据集的比较

13.1 非参数检验的必要性

当比较多个算法在多个数据集上的性能时,由于算法在不同数据集上的误差分布可能不服从正态分布,需使用非参数检验。

13.2 比较两个算法

  • 符号检验 :若两个算法误差相等,在每个数据集上第一个算法误差小于第二个算法的概率应为 1/2。定义 $X_i$ 表示第一个算法在第 $i$ 个数据集上误差更小的情况,$X = \sum_{i = 1}^{N} X_i$。根据 $X$ 的值进行假设检验。
  • Wilcoxon 符号秩检验 :除了考虑差异的符号,还考虑差异的大小。计算差异的绝对值并排序,赋予秩,计算正秩和 $w^+$ 和负秩和 $w^-$。若 $w = \min(w^+, w^-)$ 很小,则拒绝原假设。

13.3 比较多个算法

Kruskal - Wallis 检验是 ANOVA 的非参数版本。对所有观察值排序并赋予秩,计算检验统计量 $H$。若 $H$ 超过 $\chi^2_{\alpha, L - 1}$,则拒绝原假设。若原假设被拒绝,可使用 Tukey 检验进行事后检验。

以下是跨多个数据集比较算法的方法总结表格:
| 比较情况 | 检验方法 | 特点 |
| — | — | — |
| 两个算法 | 符号检验 | 仅考虑差异符号 |
| 两个算法 | Wilcoxon 符号秩检验 | 考虑差异符号和大小 |
| 多个算法 | Kruskal - Wallis 检验 | ANOVA 的非参数版本 |

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值