第二章. 模型评估与选择
2.1 经验误差与过拟合
基本术语
中文 | 英文 | 含义 |
---|---|---|
错误率 | error rate | 分类错误的样本数占样本总数的比例 |
精度 | accuracy | =1 - error rate |
误差 | error | 预测输出与真实输出之间的差异 |
泛化误差 | generalization | 在新样本上的误差 |
过拟合 | overfitting | 将训练样本的一些特性当成了一般性质 |
欠拟合 | underfitting | 训练样本的一般性质尚未学好 |
学习器的目标:得到泛化误差小的学习器
过拟合是机器学习面临的关键障碍,是无法彻底避免的:
机器学习面临的问题通常是NP难甚至更难,而有效的学习算法必然是在多项式时间内运行完成,若可彻底避免过拟合,则通过经验误差最小化就能获得最优解,这意味着"P = NP"; 因此,只要相信“P ≠ NP”,过拟合就不可避免。
2.2评估方法
为了对学习器的性能进行评估,需要使用一个 testing set 来测试学习器的泛化误差,然后以测试集上的testing error 作为泛化误差的近似。
下面是几种常见做法:
2.2.1 留出法 hold out
将数据集划分为两个互斥的集合,一个作为训练集S,一个作为测试集T,即
D= S ∪ T ,S ∩ T = ∅
训练/测试集的划分要尽可能的保持数据分布的一致性。
通常将大约 2/3 - 4/5 的样本用于训练,其他用于测试。
2.2.2 交叉验证法 cross validation
将数据集D划分为k个大小相似的互斥子集,即
D = D1 ∪ D2 ∪ · · · ∪ Dk
Di ∩ Dj =∅ ( i ≠ j)
每个子集Di都尽可能保证数据分布的一致性。
然后,每次用 k-1 个子集的并集作为训练集,余下的那个子集作为测试集,这样可以获得 k 组训练/测试集,从而进行k次训练和测试
交叉验证法评估结果的稳定性和保真性在很大程度上取决于 k 的取值,又称为“k折交叉验证”(k-fold cross validation)。k最常用取值是10
将数据集D划分为 k 个子集同样存在多种划分方式,为减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复 p次,常见有“10次10折交叉验证”
若k = 样本数m ,则得到一个特例,留一法(Leave-One-Out)LOO,该方法不受随机样本划分方式影响。
2.2.3 自助法 bootstrapping
以自助采用(bootstrap samping)为基础,给定数据集D,对它进行采样产生数据集 D’:每次随机从D中挑选一个样本。将其拷贝放入D’,然后再将该样本放回D,重复执行每次。
样本在m次采样中始终不被采到的概率是(1-1/m)^m,取极限为0.38
自助法在数据集小,难以划分训练/测试集时很有用,但是,自助法产生的数据集改变了原始数据集的分布,在初始数据量足够时,留出法与交叉验证法更加常用。
2.2.4 调参 parameter tuning
通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集通常称为“验证集”validation set
2.3 性能度量 performance measure
性能度量是衡量模型泛化能力的评价标准,反映了任务需求,模型好坏不仅取决于算法和数据,还决定于任务需求
回归任务中常见的性能度量是“均方误差”(mean squared error)
E(f;D) = 1 m \frac{1}{m} m1 ∑ i = 1 m \sum_{i=1}^m ∑i=1m(f( x i x_i xi)- y i y_i yi)^2
E(f;D) = ∫ x ∈ D ( f ( x ) − y ) 2 p ( x ) d x \int^{}_{x∈D}{(f(x)-y)^2p(x)dx} ∫x∈D(f(x)−y)2p(x)dx
2.3.1 错误率与精度
错误率与精度是分类任务中最常用的两种性能度量。
错误率定义为