2 模型评估与选择
2.1 经验误差与过拟合
- 错误率
通常我们把分类错误的样本数占样本总数的比例称为错误率(error rate)
如:m个样本中,a个分类错误,错误率E=a/m - 精度
精度=1-错误率 即 精度为1-E=1-a/m - 误差
预测输出与样本的真实输出之间的差异称为误差- 训练误差
学习器在训练集上的误差称为训练误差or经验误差 - 泛化误差
在新样本上的误差称为泛化误差
- 训练误差
目标:希望误差最小化、错误率最低、精度高的学习器;
- 过拟合
当学习器把训练样本学得“太好”来的时候,很可能已经把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降。
(学习能力过于强大,将样本中不太一般的特性都学到了) - 欠拟合
指针对训练样本的一般性质尚未学好。
(学习能力低下造成)
过拟合是机器学习中的关键障碍
“模型选择”(modelselection)问题
在现实任务中,我们往往有多种学习算法可供选择,甚至对同一个学习算法,当使用不同的参数配置时,也会产生不同的模型.那么,我们该选用哪一个学习算法、使用哪一种参数配置?
理想的解决方案:是对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型。
2.2评估方法
通过测试集(testing set)的结果测试误差(testing error)来对学习器的泛化误差进行近似评估,来选择。
测试样本需要满足以下2个条件:
- 从样本真实分布中独立同分布采样
- 测试集需要尽可能与训练集互斥(主要避免过于“乐观”的统计结果)
一个数据集D,如何做到既要训练,又要测试呢?
2.2.1 留出法
留出法(hold-out)直接将数据集D划分为两个互斥的集合,其中一个集合为训练集S,另外一个作为测试集T,即D=S∪T,S∩T=∅
其中需要注意:
训练集/测试集 划分要尽可能的数据分布一致。避免因数据划分过程引入额外的偏差而对最终结果产生影响。
保留类别比例的采样方式通常称为分层采样(stratified)
如:D=1000个=500个正+500个反;训练集S占70%,测试集T占30%
则:S=700个=350个正+350个反;
T=300个=150个正+150个反;
但是即使采用分层采样,实际上先正or先反,不同划分,都有可能导致模型评估结果差异。
所以单次使用留出法结果不稳定可靠,一般使用若干次随机分布、重复试验后取平均值作为评估结果。
针对训练集S和测试集T常见分法:2/3~4/5样本用于训练集S,剩余用于测试集T。
2.2.2交叉验证法
- 将数据集D划分为K个大小相似的互斥子集,每个子集Di都尽可能与数据分布保持一致,即分层采样。
- 然后,每次使用k-1个子集的并集作为训练集,余下的那个子集作为测试集;
- 最终获得k组训练集/测试集,进行k次训练和测试,最终返回k次测试结果的均值。
因此交叉验证法又称K折交叉验证。K通常取10,称为10折交叉验证。
由于将数据集D划分为K个子集同样存在多种划分方式,为减少因样本不同而引入的差别,通常随机使用不同的划分重复P次,最终结果是P次k折结果的均值。
常见——10次10折交叉验证
特例:留一法
数据集D中包含m个样本,令k=m(即每个子集只包含一个样本),则每次只留1个测试。
优点:留一法不受随机样本分布,不需要所谓的P次;
缺点:数据量较大时,计算量太大。还是在未考虑算法调参的情况下。且未必永远比其他评估方法准确。
2.2.3自助法(bootstrapping)
以自助采样法(bootstrap sampling)为基础