一名合格的算法工程师,必须知道的模型验证方法

机器学习

在机器学习建模过程中,我们已经确定了模型的评估指标和样本数据,我们在训练模型通过根据最好的评估指标选择最佳模型,用来训练模型的数据叫做训练集,用于评估模型的数据叫做测试集,训练集上的误差叫做训练误差或者经验误差,测试集上的误差叫做测试误差。

在样本划分和模型验证的过程中,存在着不同的抽样方法和验证方法。关于样本相关的方法我们上一篇文章中已经写了,没有看的请回到主页看上一篇文章,本文主要聊一聊模型验证的方法。

模型验证的方法主要在于划分训练集和测试集,如何划分训练集和测试集的方法统称为交叉验证,交叉验证有很多种方法,不同方法适用于不同场景。我们主要看一看最常用几种:

1 Holdout检验

Holdout检验又叫留出法,是最简单也是最直接的验证方法,它将样本数据划分成互斥的两个部分,一部分作为训练集,一部分作为测试集,在训练集上训练模型,在测试集上测试模型,包括绘制ROC曲线、计算精确率和召回率等指标来评估模型性能。这种方法正因为它的简单直接,缺点也是很明显的,它不能充分利用数据去训练模型,而且模型的结果严重依赖于最初的训练集和测试集的划分。如果测试集越大,训练集就越小,得到的模型极大可能跟全量的数据训练出来的模型产生极大的偏差;如果训练集数据量越大,测试集就越小,得到的模型测试结果的可信度就比较低。实际工作中,一般把1/3的数据作为测试集,2/3的数据作为训练集。不仅仅是划分数据量,划分内容比例也会影响模型结果,这里具体要靠采样方法解决这个问题。

2 K-Fold交叉验证

K-Fold交叉验证将数据集划分成K的互斥的数据子集,依次遍历这K个子集,每次都把当前的子集作为测试集,其余所有的子集作为训练集,最后把K次评估指标的平均值作为最终的评估指标。K-Fold交叉验证的稳定性和K的取值有很大关系。K值太小实验稳定性不够,K值太大都可能导致建模成本提高,一般K值取10。

当数据样本量为N,且K=N时,就是留一法,每一条样本都当成是测试集,其余数据作为训练集。留一法的优缺点都很明显:首先计算成本很高,而且在测试数据时,一条数据的结果不太好绘制ROC曲线,计算精确率和召回率这些模型指标,但是留一法在数据稀疏的时候,还有很适用的。

3 自助法

不管是Holdout检验还是K-Flod交叉验证,都是基于划分训练集和测试集合方法进行模型评估的,然而,当样本规模比较小的时候,将样本进行划分会让训练集变得更小,这样可能会影响模型的训练结果。自助法就可以很好解决这种情况,以自主采样为基础,使用有放回的重复采样的方式进行训练集和测试集的构建。

Holdout检验和K-Flod交叉验证在训练模型时用的数据都只是整个数据集的一个子集,得到的模型会因为训练集大小不一致产生一定的偏差,而自助法能解决这个问题。但是自助法改变了初始数据集的分布,会引入估计偏差,所以在数据量足够多的时候,一般使用前两种放法,而在数据量比较小的时候,选择使用自助法。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();