模型评估方法

在机器学习中, 我们通常把样本分为训练集和测试集, 训练集用于训练模型, 测试集用于评估模型。 在样本划分和模型验证的过程中, 存在着不同的抽样方法和验证方法。

Holdout检验

Holdout 检验是最简单也是最直接的验证方法, 它将原始的样本集合随机划分成训练集和验证集两部分。 比方说, 我们把样本按照70%~30% 的比例分成两部分, 70% 的样本用于模型训练; 30% 的样本用于模型验证, 包括绘制ROC曲线、 计算精确率和召回率等指标来评估模型性能。

Holdout 检验的缺点很明显, 即在验证集上计算出来的最后评估指标与原始分组有很大关系。 为了消除随机性, 研究者们引入了“交叉检验”的思想。

交叉检验

k-fold交叉验证: 首先将全部样本划分成k个大小相等的样本子集; 依次遍历这k个子集, 每次把当前子集作为验证集, 其余所有子集作为训练集, 进行模型的训练和评估; 最后把k次评估指标的平均值作为最终的评估指标。 在实际实验中, k经常取10。

留一验证: 每次留下1个样本作为验证集, 其余所有样本作为测试集。 样本总 数为n, 依次对n个样本进行遍历, 进行n次验证, 再将评估指标求平均值得到最终的评估指标。 在样本总数较多的情况下, 留一验证法的时间开销极大。 事实上,留一验证是留p验证的特例。 留p验证是每次留下p个样本作为验证集, 而从n个元素中选择p个元素有\(C_{n}^{p}\)种可能, 因此它的时间开销更是远远高于留一验证, 故而很少在实际工程中被应用。

自助法

不管是Holdout检验还是交叉检验, 都是基于划分训练集和测试集的方法进行模型评估的。 然而, 当样本规模比较小时, 将样本集进行划分会让训练集进一步减小, 这可能会影响模型训练效果。

自助法是基于自助采样法的检验方法。 对于总数为n的样本集合, 进行n次有放回的随机抽样, 得到大小为n的训练集。 n次采样过程中, 有的样本会被重复采样, 有的样本没有被抽出过, 将这些没有被抽出的样本作为验证集, 进行模型验证, 这就是自助法的验证过程。

**在自助法的采样过程中, 对n个样本进行n次自助抽样, 当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}=\mathrm{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}}\)

\(=\frac{1}{\lim _{n \rightarrow \infty}\left(1+\frac{1}{n-1}\right)^{n-1}} \cdot \frac{1}{\lim _{n \rightarrow \infty}\left(1+\frac{1}{n-1}\right)}\)

\(=\frac{1}{\mathrm{e}} \approx 0.368\)

因此, 当样本数很大时, 大约有36.8%的样本从未被选择过, 可作为验证集 。

posted @ 2019-04-21 15:43  youngliu91  阅读(1106)  评论(0)    收藏  举报