1. 比较检验
比较检验用于比较多个模型或算法的性能差异。通过计算均值、方差等统计量,我们可以判断这些模型之间的差异是否具有统计显著性。常见的比较检验方法包括 假设检验、t 检验、Friedman 检验 和 Nemenyi 检验 等。
1.1 假设检验
假设检验是一种用于验证数据是否符合某一假设的统计方法。常用于评估模型的错误率是否符合预期,主要包括二项式检验、t 检验等。
1.1.1 二项式检验
二项式检验是一种用于二分类问题的统计方法,常用于分析分类模型的错误率是否显著偏离预期。假设我们期望模型的泛化错误率为 ( e ),通过二项式检验,我们可以计算模型的测试错误率与期望泛化错误率之间的关系。
1.1.1.1 正确的公式
二项式检验公式为:
[
P(e_i = e) = \binom{m}{m \cdot e_i} e^{m \cdot e_i} (1 - e)^{m(1 - e_i)}
]
公式解析:
- ( P(e_i = e) ):表示模型的泛化错误率 ( e ) 恰好等于测试错误率 ( e_i ) 的概率。
- ( \binom{m}{m \cdot e_i} ):表示 ( m ) 次试验中 ( m \cdot e_i ) 次错误发生的不同排列方式。
- ( e^{m \cdot e_i} ):模型的泛化错误率 ( e ) 出现 ( m \cdot e_i ) 次错误的概率。
- ( (1 - e)^{m(1 - e_i)} ):模型正确分类的概率。
1.1.1.2 使用示例
问题:假设我们有一个模型,测试错误率 ( e_i = 0.4 )(40%),期望的泛化错误率 ( e = 0.3 )(30%)。我们进行了10次试验,想知道模型的泛化错误率为30%的情况下,测试错误率为40%的概率是多少?
解法:
- 组合数的计算:
[
\binom{10}{4} = 210
] - 成功和失败的概率:
[
e^{m \cdot e_i} = 0.3^4 = 0.0081, \quad (1 - e)^{6} = 0.7^6 = 0.1176
] - 组合结果:
[
P(e_i = e) = 210 \times 0.0081 \times 0.1176 = 0.2003
]
结果表明,在10次试验中,模型的泛化错误率为30%时,观察到测试错误率为40%的概率大约为20.03%。
1.1.2 t 检验
t 检验是一种用于比较两个模型之间性能差异是否显著的统计方法,特别是当数据集较小或标准差未知时。t 检验主要用于通过模型的均值误差和方差来分析它们的表现差异。
1.1.2.1 均值误差计算
均值误差 ( \mu ) 的公式如下:
[
\mu = \frac{1}{k} \sum_{i=1}^k e_i
]
1.1.2.2 方差计算
方差 ( \sigma^2 ) 的公式为:
[
\sigma^2 = \frac{1}{k-1} \sum_{i=1}^k (e_i - \mu)^2
]
1.1.2.3 t 统计量计算
t 统计量用于评估两个模型之间误差差异是否显著。公式为:
[
t_{\epsilon} = \frac{\mu}{\sqrt{\sigma^2 / k}}
]
1.1.2.4 t 检验使用示例
问题:假设我们有两个分类算法 ( A ) 和 ( B ),它们在5个不同的数据集上测试后,分别产生了以下误差(错误率):
- 算法 A 的误差:0.1、0.2、0.15、0.3、0.25
- 算法 B 的误差:0.2、0.25、0.2、0.35、0.3
我们想使用 t 检验 来确定这两个算法的平均误差差异是否显著。
解法:
-
均值误差计算:
- 算法 A 的均值误差:( \mu_A = 0.2 )
- 算法 B 的均值误差:( \mu_B = 0.26 )
-
方差计算:
- 算法 A 的方差:( \sigma_A^2 = 0.00625 )
- 算法 B 的方差:( \sigma_B^2 = 0.00475 )
-
t 统计量计算:
[
t = \frac{0.2 - 0.26}{\sqrt{\frac{0.00625}{5} + \frac{0.00475}{5}}} \approx -1.28
] -
判断显著性:根据 t 分布表,临界值为 2.306,( |t| = 1.28 ) 小于 2.306,表示这两个算法的误差差异没有显著性。
1.2 Friedman 检验
Friedman 检验 是一种非参数统计检验,用于比较多个相关样本(即同一组数据上不同模型的表现),例如在多个数据集上评估多个算法的性能。它用于评估多个算法的性能差异,适用于当数据不满足正态性假设时。
1.2.1 计算步骤
- 排序:对每个数据集上的算法进行性能排序,表现最好为1,次好为2。
- 平均排名:计算每个算法的平均排名。
- 检验统计量 ( Q ):
[
Q = \frac{12N}{k(k+1)} \left[ \sum_{j=1}^k R_j^2 - \frac{k(k+1)^2}{4} \right]
]
1.3 Nemenyi 检验
当 Friedman 检验表明算法之间存在显著差异时,使用 Nemenyi 检验 来确定具体哪些算法之间存在显著差异。Nemenyi 检验计算每对算法之间的平均排名差,并与临界差距 ( CD ) 进行比较。
1.3.1 临界差距 ( CD ) 的计算公式
[
CD = q_{\alpha} \sqrt{\frac{k(k+1)}{6N}}
]
1.4 使用示例:Friedman 检验与 Nemenyi 检验
假设我们有三个算法 ( A )、( B )、( C ),在五个数据集上测试,得到以下准确率:
数据集 | 算法 A | 算法 B | 算法 C |
---|---|---|---|
1 | 0.85 | 0.80 | 0.78 |
2 | 0.90 | 0.87 | 0.85 |
3 | 0.92 | 0.91 | 0.89 |
4 | 0.88 | 0.85 | 0.83 |
5 | 0.91 | 0.90 | 0.86 |
第一步:对每个数据集进行排名
数据集 | 算法 A (Rank) | 算法 B (Rank) | 算法 C (Rank) |
---|---|---|---|
1 | 1 | 2 | 3 |
2 | 1 | 2 | 3 |
3 | 1 | 2 | 3 |
4 | 1 | 2 | 3 |
5 | 1 |
2 | 3 |
第二步:计算每个算法的平均排名
- 算法 A 的平均排名为 1.0,算法 B 为 2.0,算法 C 为 3.0。
第三步:计算 Friedman 检验的统计量 ( Q )
根据计算公式 ( Q = 10 ),显著性水平 ( \alpha = 0.05 ) 下的临界值为 5.991。因为 ( Q > 5.991 ),我们拒绝零假设,认为至少有一个算法存在显著差异。
第四步:Nemenyi 检验的事后分析
计算临界差距 ( CD = 1.481 ),比较排名差异:
- ( |A - B| = 1.0 ),没有显著差异;
- ( |A - C| = 2.0 ),有显著差异;
- ( |B - C| = 1.0 ),没有显著差异。
结论:算法 A 和 C 之间存在显著差异。
2. 偏差-方差分解与泛化误差
在机器学习中,模型的泛化误差可以通过偏差-方差分解来解释。这种分解将模型在测试数据上的误差(泛化误差)分为三部分:偏差、方差 和 噪声。通过调节模型的复杂度,我们可以在偏差和方差之间进行权衡,从而找到泛化误差最小的模型。
2.1 泛化误差的数学公式
模型的期望平方误差(泛化误差)分解为三部分:
[
\mathbb{E}[(y - \hat{f}(x))^2] = (\text{Bias})^2 + \text{Variance} + \sigma^2
]
其中:
- ( \mathbb{E}[(y - \hat{f}(x))^2] ):模型的泛化误差,即模型预测值与真实值之间的期望平方误差。
- ( (\text{Bias})^2 ):偏差平方,表示模型预测的期望值与真实值之间的差距。
- Variance:方差,表示模型预测结果在不同训练集上的波动性。
- ( \sigma^2 ):噪声,表示数据中无法消除的随机误差。
2.2 偏差(Bias)
偏差反映了模型对真实数据的拟合能力,表示模型的期望预测值与真实值之间的差距。高偏差意味着模型欠拟合,即模型过于简单,无法捕捉数据中的复杂模式。
数学定义:
[
\text{Bias}^2 = (\mathbb{E}[\hat{f}(x)] - f(x))^2
]
示例:
- 使用线性回归拟合复杂的非线性数据。线性回归模型无法捕捉数据中的非线性模式,导致模型的预测结果与真实值差距很大。此时偏差较高,模型欠拟合。
- 例如:真实房价为 500,000 元,模型预测的期望房价为 350,000 元,说明偏差很大。
2.3 方差(Variance)
方差反映了模型预测值在不同训练集上的变化程度。高方差表示模型过拟合,即模型过于复杂,过度依赖训练数据,对训练数据中的噪声和细节非常敏感,导致预测结果波动较大。
数学定义:
[
\text{Variance} = \mathbb{E}[(\hat{f}(x) - \mathbb{E}[\hat{f}(x)])^2]
]
示例:
- 使用高阶多项式回归模型拟合数据。模型对每一个训练数据点都做了精确的拟合,导致它对训练数据的微小变化非常敏感,从而在不同训练集上预测结果差异很大,表现为高方差。
- 例如:同样的房子,训练集 1 的模型预测 480,000 元,训练集 2 的模型预测 520,000 元,说明模型的方差较大。
2.4 噪声(Noise)
噪声是数据中的随机误差,无法通过模型的调整来减少。噪声通常来自数据中的测量误差、现实中的随机性等因素。即使我们有一个完美的模型,也无法消除噪声。
数学定义:
[
\text{Noise} = \sigma^2
]
示例:
- 在房价预测中,房价不仅受房子特征(如面积、位置)影响,还受市场波动、经济状况等随机因素的影响。这些因素构成了噪声,即使模型再好也无法消除这些随机误差。
- 例如:房价可能会因市场波动发生变化,即使模型准确预测房价为 500,000 元,但实际市场卖出价可能是 510,000 元或 490,000 元。这部分误差是噪声。
2.5 偏差-方差权衡
在训练模型时,偏差和方差往往是相互对立的:
- 高偏差,低方差:模型过于简单,难以拟合数据,表现为欠拟合。虽然模型对训练数据的波动不敏感(低方差),但它无法捕捉数据中的复杂模式(高偏差)。
- 低偏差,高方差:模型过于复杂,过度拟合训练数据,表现为过拟合。虽然模型能很好地拟合训练数据(低偏差),但在新数据上表现不稳定(高方差)。
如何找到平衡?
目标是找到一个模型复杂度的平衡点,使模型既不过度拟合(方差低),又不过度简单(偏差低)。通过这个平衡,我们可以最小化泛化误差。