机器学习之模型评估与选择(一)

1、模型评估

现实中,可供选择的算法有很多,参数不同,每个算法也有不同的形式,我们应该如何选择最优的那个?如果按照泛化误差最小来选择是最好,但我们又不能得到未知的数据,不能直接计算泛化误差。如果仅仅使用训练集来选择,我们不能知道该模型是否对于泛化误差也最小。

1.验证方法与采样

为了能够在训练集中获得泛化误差的近似,我们需要将训练集划分为训练集和测试集,用测试集误差近似泛化误差,但要保证测试集是从样本真实分布中独立同分布采样而得,且尽可能与训练集互斥,即测试样本不曾在训练样本中出现过。

如何对数据集划分,产生训练集和测试集呢?

  • 留出法(hand-out)

hand-out检验是最简单最直接的方法,直接将数据集随机划分为训练集S和测试集T,二者互斥。在S上训练模型后,在T上评估其测试误差,作为对泛化误差的估计。

训练集和测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差对最后的结果造成影响。

此外还应该注意即使在给定训练集和测试集的比例后,还有多种划分方式对初始数据集划分,即在原始数据集中如何选择的。比如排序后,从前往后选择,或者从后往前选择等。

单次使用留出法的估计结果往往不是稳定可靠的,最后经过多次随机划分,重复进行实验评估后取平均值作为留出法的评估结果。

hand-out检验的缺点是很明显的,即在测试集上计算出来的最后评估指标与原始分组有很大关系。常建做法是将大约2/3~4/5的样本用于训练,剩余样本用于测试。

  • 交叉验证法

为了消除留出法中的随机性,引入了交叉验证法。

交叉验证是首先将全部样本划分为K个大小相似的互斥子集,每个子集尽可能保持数据分布的一致性。依次遍历这K个子集,每次将当前子集作为验证集,其余子集作为训练集,进行模型的训练和评估;最后将K次评估指标的平均值作为最终的评估指标。实际实验中,K常常取10,其他常用有5/20。

为减少因样本划分不同而引入的差别,K折交叉验证通常要随机使用不同的划分重复p次,最终的评估结果是这p次K折交叉验证结果的均值。常见的有10次10折交叉验证。

每次留下一个样本作为测试集,其余所有样本作为测试集,依次对样本进行遍历,再将评估指标均值作为最终的评估指标,这种方法叫做留一法。留一法的评估结果往往被认为比较准确,然而在样本总数较多的情况下,留一法的计算开销是难以忍受的。

留一法是留p法的特例。留p法是每次留下p个样本作为测试集,其余作为训练集,而从n个元素中选择p个元素有C_{n}^{p}种,计算开销更是远远高于留一法,在实际中很少被使用。

  • 自助法

使用留出法和交叉验证,都需要留出一部分样本用于测试。试想如果一个原始数据集本身就很小,再划分为训练集和测试集,那么训练出来的模型必然会有估计偏差,那么应该怎么解决呢?

自助法又称为”可重复采样“或“有放回采样”,每次随机从包含n个样本的原始数据集中挑选一个样本,放入另一个数据集D'中,然后将样本放回,换句话说,就是该样本在下一次随机挑选中仍然有可能被选中。重复样本个数次后,D'中也包含n个样本,其中有些样本是相同的。

一个样本在一次抽样过程中从未被抽中的概率为\left(1-\frac{1}{n}\right),n次抽样均未抽中的概率为\left(1-\frac{1}{n}\right)^{n}。当n趋于无穷大时,概率为\lim _{n \rightarrow \infty}\left(1-\frac{1}{n}\right)^{n}

根据重要极限\lim _{n \rightarrow \infty}\left(1+\frac{1}{n}\right)^{n}=e可知,\lim _{n \rightarrow \infty}\left(1-\frac{1}{n}\right)^{n}=

                                                                  \lim _{n \rightarrow \infty} \frac{1}{\left(1+\frac{1}{n-1}\right)^{n}}=\lim _{n \rightarrow \infty} \frac{1}{\left(1+\frac{1}{n-1}\right)^{n-1}}*\lim _{n \rightarrow \infty} \frac{1}{\left(1+\frac{1}{n-1}\right)}=\frac{1}{e}\approx 0.368

当样本很大时,会有36.8%的样本不会出现在D'中,这样就可以将D'作为训练集,未出现的样本作为测试集,这样的测试结果,又称为“包外估计”。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值