一、章节思路
正如标题,本章的核心思想是:什么是好的模型,怎样选择好的模型。
2.1
什么是好的模型:泛化能力强。
2.2 怎样评估泛化能力:对数据集 D 进行划分,产生出训练集 S 和测试集 T,
用测试集上的
测试误差作为泛化误差的近似。常见的数据集划分方法有三种:留出法(2.2.1)、交叉验证法
(2.2.2)、自助法(2.2.3)。
2.3
用什么作为测试误差:性能度量。
性能度量方法
回归任务 1 均方误差
分类任务
错误率与精度
2 查准率、查全率与 F1
3 ROC 与 AUC
4 代价敏感错误率与代价曲线
2.4 评估方法和性能度量都有了,能否用算出来的性能度量直接比较学习器的性能:不能。
因为:(1)我们希望比较泛化性能,而实际求得的是测试性能,两者未必相同。
(2)测试性能与测试集本身的选择有关,不同的测试集(或即使相同测试集)算出的测试
性能有可能不同。
(3)机器学习算法有随机性,同样的参数多次运行的结果可能不同。
那怎样评估性能:统计假设检验(2.4)。具体方法包括:
1)单学习器评估:a
)假设检验(2.4.1)
2)两个学习器比较:a
)交叉验证 t 检验(2.4.2)(采用同一数据集)
b)McNemar
检验(2.4.3)(采用同一数据集)
3)多个学习器比较:a)Friedman
检验(多数据集)。若 Friedman 检验被拒绝,则需
要使用 Nemenyi
检验(2.4.4)进一步区分算法。
2.5
至此,我们已求出了学习器的泛化性能,但我们还希望知道学习器为什么具有这样的性
能,即怎样解释学习器的泛化性能:
偏差-方差分解。
二、算法原理
1 数据集划分:
1.1 留出法:
将数据集 D 划分为两个互斥的集合。一个作为训练集,一个作为测试集。
采用若干次随机划分/重复进行实验评估后取平均值作为评估结果。
训练集 S 过大,则测试集 T 过小,评估结果不够稳定准确。相反,训练集 S 过小,会造
成训练集 S 与样本 D 的差别太大,评估保真性(fidelity)过低。
1.2
交叉验证法:
将数据集 D 划分为 k 个大小相似的互斥子集。用 k-1 个子集的并集作为训练集,余下那
个子集作为测试集。这样获得了 k 组训练/测试集,从而进行 k 次训练和测试,最终返回 k 个
测试结果的均值。由于交叉验证的稳定性和保真性很大程度取决于 k 的取值,因此交叉验证
法又称为 k 折交叉验证(k-fold cross validation)。
与留出法类似,k 折交叉验证也要随机划分重复 p 次,取结果平均值。如常见的 10 次
10 折交叉验证。