基础概念
- 错误率:分类错误的样本数占总数的比例。
- 准确率/精度:分类正确的样本占总数的比例。
- 误差:学习器的实际预测输出与样本的真实输出之间的差异。
- 训练误差/经验误差:学习器在训练集上的误差。
- 泛化误差:在新样本上的误差。
- 测试集:测试学习器对新样本的判别能力。测试集应该尽量与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。
- 测试误差:作为泛化误差的近似。
- 验证集:模型评估与选择中用于评估测试的数据集常称为验证集。用来进行模型选择和调参(挑选超参数)。
- 超参数:开始学习过程之前设置值的参数,不是通过学习算法本身学习出来的。
- 过拟合:把训练样本自身的特点当作所有潜在样本都会有的一般性质,导致泛化能力下降。过拟合同样指的是训练误差和测试误差之间的差距过大。
- 欠拟合:对训练样本的一般性质尚未学好。模型不能在训练集上获得足够低的误差。
留出法
- 概念:将数据集D划分为两个互斥的集合,其中一个集合为训练集S,另一个为测试集T,在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
- 训练/测试集的划分要尽可能保持数据分布的一致性(即类别比例相似),避免因数据划分过程中引入的额外的偏差而对最终结果产生影响。如果从采样的角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为分层采样。
- 在使用留出法的时候,一般要采用若干次随即划分、重复进行实验评估后取平均值作为留出法的结果。
- 一般来说,大约2/3~4/5的样本用于训练,其余用于测试。
交叉验证法/k折交叉验证
- 概念:先将数据集D划分为k个大小相似的互斥子集。每一次用k-1个子集的并集作为训练集,剩下的一个子集作为测试集;这样就可以获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。
- 每一个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到。
- k折交叉验证通常要随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的均值。目的是减小因为样本不同而引入的差别。
- 特例:留一法LOO
- 假定数据集D中包含m个样本,若令k=m,则为交叉验证法的一个特例,留一法。
- 优点:留一法不受随机样本划分方式的影响,因为m个样本只有唯一的方式划分为m个子集,即每一个子集包含一个样本;留一法使用的训练集与初始数据集相比只少了一个样本,也就是说留一法中被实际评估的模型与期望评估的用D训练出的模型很相似。
- 缺点:在数据集比较大的时候,训练m个模型的计算开销可能是难以忍受的;留一法的估计结果也未必永远比其他评估方法准确。
自助法/可重复采样/有放回采样
- 概念:以自主采样法为基础,给定包含m个样本的数据集D,对它进行采样产生数据集D’:每次随机从D中挑选一个样本,将其拷贝放入D',然后将该样本放回数据集D中,使该样本在下次采样时仍优可能被;重复m次后,得到包含m个样本的数据集D’。
- 样本不被采到的概率:
[lim_{m
ightarrowinfty}(1-frac{1}{m})^m = frac{1}{e} ≈ 0.368
]
- 包外估计:有一部分没有在训练集中出现的样本用于测试产生的结果称为包外估计。
- 优点:自助法在数据集较小、难以有效划分训练/测试集时很有用;自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。
- 缺点:自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。
调参与最终模型
机器学习的两类参数
- 算法的参数,也称为超参数。数目一般在十个以内。通常由人工设定多个参数候选值后产生模型。
- 模型的参数。数目一般很多。通常是通过学习来产生多个候选模型。
调参的常规做法:对每一个参数选定一个范围和变化步长,例如在[0,0.2]范围内以0.05为步长,则实际要评估的候选参数值有5个。
最终提交的模型:给定包含m个样本的数据集,为了进行评估测试,事实上我们只用了一部分的数据训练模型。当模型选择完毕后,应该用数据集D重新训练模型,使用所有的m个样本,这就是最终提交的模型。