2.1 经验误差与过拟合
概念
概念 | 解释 | 页码 |
---|---|---|
错误率 | 分类错误的样本数占样本总数的比例 | 23 |
精度 | 精度 = ( 1-错误率 ) x 100% | 23 |
误差 | 学习器的实际预测输出与样本的真实输出之间的差异称为"误差"(误差期望) | 23 |
训练误差 | 学习器在训练集上的误差称为"训练误差" | 23 |
泛化误差 | 学习器在新样本上的误差称为"泛化误差" | 23 |
过拟合 | 欠拟合 |
---|---|
训练样本学得“太好",泛化性能下降 | 对训练样本的一般性质尚未学好 |
过配 | 欠配 |
通常学习能力过于强大导致 | 通常学习能力低下导致 |
学习能力是否"过于强大",由学习算法和数据内涵共同决定的。
过拟合是机器学习面临的关键障碍
过拟合问题的理论思考:
机器学习面对的通常是NP难甚至更难
有效的学习算法可以理解为P
如果通过经验误差最小化就能获得最优解,意味着构造性证明了 P = N P P=NP P=NP
只要相信 P ≠ N P \mathrm{P} \neq \mathrm{NP} P=NP,那么就难以避免过拟合
模型选择
-
包括
- 学习算法的选择
- 参数的配置
-
评估方法
- 实验测试对学习器的泛化误差进行评估
-
评价标准
- 性能度量
2.2 评估方法
测试集 T T T
- 测试学习器对新样本的判别能力
- 以"测试误差"作为泛化误差的近似
- 假设
- 从样本真实分布中独立同分布采样而得
- 要求
- 尽可能与训练集互斥
数据集 D D D划分出 训练集 S S S 和 测试集 T T T (验证集)的方法
- 留出法
- 交叉验证法
- 自助法
(模型评估中用于测试的数据集通常称为验证集)
补充
在模型评估与选择的过程中留出一部分数据进行评估测试,在模型选择完成后,学习算法和参数配置已选定,再用全量的数据进行训练,这个才是最终提交给用户的模型
2.2.1 留出法
将数据集 D D D划分为两个互斥的集合
D = S ∪ T S ∩ T = ∅ D=S \cup T\\ S \cap T=\varnothing D=S∪TS∩T=∅
- 在 S S S训练模型
- 在 T T T评估测试误差
注意点
- 数据分布
- 尽可能保证训练/测试集的数据分布保持一致
- “分层采样”:保留类别比例
- 尽可能保证训练/测试集的数据分布保持一致
- 估计结果的可靠性
- 可若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果
- 划分比例
- 常用2/3~4/5的样本用于训练,剩余用于测试
- 一般测试集至少包含30个样例
- 常用2/3~4/5的样本用于训练,剩余用于测试
- 测试集和验证集划分比例的trade-off
- 测试集小,评估结果的方差较大
- 训练集小,评估结果的偏差较大
2.2.2 交叉验证法
将数据集 D D D划分为 k k k个大小相似的互斥子集,同时每个子集尽可能保证数据分布的一致性
D = D 1 ∪ D 2 ∪ … ∪ D k D i ∩ D j = ∅ ( i ≠ j ) D=D_{1} \cup D_{2} \cup \ldots \cup D_{k}\\ D_{i} \cap D_{j}=\varnothing(i \neq j) D=D1∪D2∪…∪DkDi∩Dj=∅(i=j)
每次使用 k − 1 k-1 k−1个自己的并集作为训练集,余下的那个子集作为测试集
- 获得 k k k组训练/测试集
- 进行 k k k次训练和测试
返回结果为 k k k个测试结果的均值
交叉验证也称为 k k k折交叉验证, k k k倍交叉验证
- k k k常取10
- 评估结果的稳定性和保真性很大程度上取决于 k k k的取值
留一法(Leave-One-Out,LOO)
数据集 D D D中包含 m m m个样本,令 k = m k=m k=m
- 特点
- 不受随机样本话费呢的影响
- 实际评估的模型与期望评估的用 D D D训练出的模型很相似
- 缺点
- 当数据集比较大,计算开销是难以忍受的
在交叉验证法中,数据集 D D D划分为 k k k个子集同样存在多种划分方式,可将交叉验证重复划分 p p p次,最终结果为 p p p次 k k k次交叉验证结果的均值
- 常见10次10折交叉验证
交叉验证法和留出法
“10次10折交叉验证” 与 “100次留出法” 都是进行了100次训练
2.2.3 自助法
以自助采样法(bootstrap)为基础
给定包含 m m m个样本的数据集 D D D
- 每次随机从 D D D中挑选一个样本,将其拷贝放入 D ′ D^{\prime} D′
- 然后再将该样本放回到初始数据集
D
D
D中
- 使得该样本在下采样时仍可能被采到
- 重复执行 m m m次后,就得到了包含 m m m个样本的数据集 D ′ D^{\prime} D′
D D D中有一部分样本会在 D ′ D^{\prime} D′中多次出现,而另一部分样本不出现
做简单的估计,样本在 m m m次采样中始终不被采到的概率是 ( 1 − 1 m ) m \left(1-\frac{1}{m}\right)^{m} (1−m1)m
取极限可以得到
lim m ↦ ∞ ( 1 − 1 m ) m ↦ 1 e ≈ 0.368 \lim _{m \mapsto \infty}\left(1-\frac{1}{m}\right)^{m} \mapsto \frac{1}{e} \approx 0.368 m↦∞lim(1−m1)m↦e1≈0.368
初始数据集 D D D中约有 36.8 36.8% 36.8%的样本未出现在采样数据集 D ′ D^{\prime} D′中,剩余的这36.8%样本作为测试集
包外估计(out-of-bag)
实际评估的模型和期望评估的模型都使用了 m m m个训练样本,但仍有约1/3没在训练集中出现,用于测试,这样的测试结果称为包外估计
留出法 v.s. 交叉验证法 v.s. 自助法
- 初始数据量足够
- 交叉验证法和留出法更常用
- 自助法会引入估计偏差
- 数据集较小难以划分训练/测试集时
- 自助法很有用
- 集成学习的应用场景下
- 自助法能从初始数据集中产生多个不同的训练集,对此有好处
2.2.4 调参与最终模型
参数调节/调参
对算法参数进行设定
参数的选择方法
- 设定范围和变化步长
- 在计算开销和性能估计之间进行折中
基于验证集上的性能来进行模型选择和调参
2.3 性能度量
性能度量
- 衡量模型泛化能力的评价标准
- 反映了任务需求
- 模型"好坏"是相对的,不仅取决于算法和数据,还决定于任务需求
回归任务的性能度量
均方误差
E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f ; D)=\frac{1}{m} \sum_{i=1}^{m}\left(f\left(\boldsymbol{x}_{i}\right)-y_{i}\right)^{2} E(f;D)=m1i=1∑m(f(xi)−yi)2
对于数据分布 D D D和概率密度函数 p ( ⋅ ) p(·) p(⋅),均方误差
E ( f ; D ) = ∫ x ∼ D ( f ( x ) − y ) 2 p ( x ) d x E(f ; \mathcal{D})=\int_{\boldsymbol{x} \sim \mathcal{D}}(f(\boldsymbol{x})-y)^{2} p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x} E(f;D)=∫x∼D(f(x)−y)2p(x)dx
分类任务的性能度量
2.3.1 错误率与精度
适用范围
二分类和多分类
定义
-
错误率
- 分类错误的样本数占样本总数的比例
- E ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) ≠ y i ) E(f ; D)=\frac{1}{m} \sum_{i=1}^{m} \mathbb{I}\left(f\left(\boldsymbol{x}_{i}\right) \neq y_{i}\right) E(f;D)=m1i=1∑mI(f(xi)=yi)
-
精度
- 分类正确的样本数占样本总数的比例
- acc ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) = y i ) = 1 − E ( f ; D ) \begin{aligned} \operatorname{acc}(f ; D) &=\frac{1}{m} \sum_{i=1}^{m} \mathbb{I}\left(f\left(\boldsymbol{x}_{i}\right)=y_{i}\right) \\ &=1-E(f ; D) \end{aligned} acc(f;D)=m1i=1∑mI(f(xi)=yi)=1−E(f;D)
更一般的描述
E ( f ; D ) = ∫ x ∼ D I ( f ( x ) ≠ y ) p ( x ) d x E(f ; \mathcal{D})=\int_{\boldsymbol{x} \sim \mathcal{D}} \mathbb{I}(f(\boldsymbol{x}) \neq y) p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x} E(f;D)=∫x∼DI(f(x)=y)p(x)dx
acc ( f ; D ) = ∫ x ∼ D I ( f ( x ) = y ) p ( x ) d x = 1 − E ( f ; D ) \begin{aligned} \operatorname{acc}(f ; \mathcal{D}) &=\int_{\boldsymbol{x} \sim \mathcal{D}} \mathbb{I}(f(\boldsymbol{x})=y) p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x} \\ &=1-E(f ; \mathcal{D}) \end{aligned} acc(f;D)=∫x∼DI(f(x)=y)p(x)dx=1−E(f;D)
2.3.2 查准率、查全率与F1
分类结果混淆矩阵
预测结果 | ||
---|---|---|
真实情况 | 正例 | 反例 |
正例 | TP真正例 | FN假反例 |
反例 | FP假正例 | TN真反例 |
准确率 P P P
- 查准率
- P = T P T P + F P P=\frac{T P}{T P+F P} P=TP+FPTP
召回率 R R R
- 查全率
- R = T P T P + F N R=\frac{T P}{T P+F N} R=TP+FNTP
准确率和召回率之间的trade-off
一个高的情况下,另一个指标就会相对下降,通常只有在一些简单任务上,才可能使得两者都很高,具体需要那儿一指标比较高,需要根据具体的应用来进行设定
P-R曲线(P-R图)
召回率作为横轴,精确率作为纵轴
现实任务中P-R曲线常是非单调、不平滑的,在很多局部都有上下波动
不同P-R曲线之间的比较方法
(1) 包围情况
(2) 平衡点(Break-Event Point ,BEP)
(3) F1
包围情况下,即曲线A完全包围了曲线B,那么学习器A的性能优于学习器B的性能
平衡点
-
准确率
=
召回率
准确率=召回率
准确率=召回率 时的取值
- 当学习器A的平衡点取值大于学习器B的平衡点,则任务学习器A的性能优于学习器B
F 1 F1 F1
-
基于准确率和召回率的调和平均(harmonic mean)
- 1 F 1 = 1 2 ⋅ ( 1 P + 1 R ) \frac{1}{F 1}=\frac{1}{2} \cdot\left(\frac{1}{P}+\frac{1}{R}\right) F11=21⋅(P1+R1)
-
F 1 = 2 × P × R P + R = 2 × T P 样例总数 + T P − T N F 1=\frac{2 \times P \times R}{P+R}=\frac{2 \times T P}{\text { 样例总数 }+T P-T N} F1=P+R2×P×R= 样例总数 +TP−TN2×TP
F 1 F1 F1 v.s. 算术平均 v.s. 几何平均
算术平均 P + R 2 \frac{P+R}{2} 2P+R
几何平均 P × R \sqrt{P \times R} P×R
F β F_{\beta} Fβ
- F 1 F1 F1的一般形式
- 1 F β = 1 1 + β 2 ⋅ ( 1 P + β 2 R ) \frac{1}{F_{\beta}}=\frac{1}{1+\beta^{2}} \cdot\left(\frac{1}{P}+\frac{\beta^{2}}{R}\right) Fβ1=1+β21⋅(P1+Rβ2)
-
F
β
=
(
1
+
β
2
)
×
P
×
R
(
β
2
×
P
)
+
R
F_{\beta}=\frac{\left(1+\beta^{2}\right) \times P \times R}{\left(\beta^{2} \times P\right)+R}
Fβ=(β2×P)+R(1+β2)×P×R
- β = 1 \beta=1 β=1退化为标准的 F 1 F1 F1
- β > 1 \beta >1 β>1 召回率有更大的影响
- β < 1 \beta <1 β<1 准确率有更大的影响
n n n个二分类混淆矩阵上综合考虑准确率和召回率
宏
macro- P = 1 n ∑ i = 1 n P i macro- R = 1 n ∑ i = 1 n R i macro- F 1 = 2 × macro- P × macro- R macro- P + macro- R . \begin{array}{c} \text { macro- } P=\frac{1}{n} \sum_{i=1}^{n} P_{i} \\ \text { macro- } R=\frac{1}{n} \sum_{i=1}^{n} R_{i} \\ \text { macro- } F 1=\frac{2 \times \text { macro- } P \times \text { macro- } R}{\text { macro- } P+\text { macro- } R} . \end{array} macro- P=n1∑i=1nPi macro- R=n1∑i=1nRi macro- F1= macro- P+ macro- R2× macro- P× macro- R.
微
micro- P = T P ‾ T P ‾ + F P ‾ , micro- R = T P ‾ T P ‾ + F N ‾ , micro- F 1 = 2 × micro- P × micro- R micro- P + micro- R . \begin{array}{c} \text { micro- } P=\frac{\overline{T P}}{\overline{T P}+\overline{F P}}, \\ \text { micro- } R=\frac{\overline{T P}}{\overline{T P}+\overline{F N}}, \\ \text { micro- } F 1=\frac{2 \times \text { micro- } P \times \text { micro- } R}{\text { micro- } P+\text { micro- } R} . \end{array} micro- P=TP+FPTP, micro- R=TP+FNTP, micro- F1= micro- P+ micro- R2× micro- P× micro- R.
错误率 v.s. 精度 v.s. 查准率 v.s. 查全率
常用错误率和精度,但在一些应用中如信息检索、Web搜索等应用中需要查准率和查全率的需求
2.3.3 ROC与AUC
2.3.4 代价敏感错误率与代价曲线
2.4比较检验
2.4.1假设检验
2.4.2交叉检验t检验
2.4.3McNemar检验
2.4.4 Friedman检验与Nemenyi后续检验
2.5 偏差与方差
参考资料
[1]周志华. 《机器学习》[J]. 中国民商, 2016, 03(No.21):93-93.