返回介绍

数学基础

统计学习

深度学习

工具

Scala

五、泛化能力评估

发布于 2023-07-17 23:38:26 字数 10402 浏览 0 评论 0 收藏 0

  1. 模型泛化能力的评估:用测试集对模型进行评估。通常有下列方法:

    • 留出法hold-out
    • K 折交叉验证法cross validation
    • 留一法Leave-One-Out:LOO
    • 自助法bootstrapping

5.1 留出法

  1. 留出法:直接将数据切分为三个互斥的部分(也可以切分成两部分,此时训练集也是验证集),然后在训练集上训练模型,在验证集上选择模型,最后用测试集上的误差作为泛化误差的估计。

  2. 数据集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。若训练集、验证集、测试集中类别比例差别很大,则误差估计将由于训练/验证/测试数据分布的差异而产生偏差。

    如:在分类任务中至少要保持样本的类别比例相似。如果从采样的角度来看到数据集的划分过程,则保留类别比例的采样方式称作“分层采样“(strafified sampling)。

  3. 即使进行了分层采样,仍然存在多种划分方式对数据集进行划分(比如排序后再划分、随机划分...)。这些不同的划分将导致不同的训练集/验证集/测试集。因此单次留出法得出的估计结果往往不够稳定可靠。

    在使用留出法时,往往采用若干次随机划分、重复进行实验评估后,取平均值作为留出法的评估结果。

5.2 K 折交叉验证

  1. K 折交叉验证法:数据随机划分为K 个互不相交且大小相同的子集,利用 K-1 个子集数据训练模型,利用余下的一个子集测试模型(一共有CKK1=K$ C_K^{K-1} =K $ 种组合)。

    K 种组合依次重复进行,获取测试误差的均值,将这个均值作为泛化误差的估计。

  2. 与留出法相似,将数据集划分为 K 个子集同样存在多种划分方式。为了减少因为样本划分不同而引入的差别, K 折交叉验证通常需要随机使用不同划分重复p 次,这 pK 折交叉验证的测试误差均值作为最终的泛化误差的估计。

5.3 留一法

  1. 留一法:假设数据集中存在N$ N $ 个样本,令K=N$ K=N $ 则得到了 K 折交叉验证的一个特例。

  2. 优点:由于训练集与初始数据集相比仅仅少一个样本,因此留一法的训练数据最多。

    缺点:在数据集比较大时,训练N$ N $ 个模型的计算量太大。

5.4 自助法

  1. 在留出法和 K 折交叉验证法中,由于保留了一部分样本用于测试,因此实际训练模型使用的训练集比初始数据集小,这必然会引入一些因为训练样本规模不同而导致的估计偏差。

    留一法受训练样本规模变化的影响较小,但是计算复杂度太高。

    自助法是一个以自助采样法(bootstrap sampling)为基础的比较好的解决方案。

  2. 自助采样法:给定包含N$ N $ 个样本的数据集D$ \mathbb D $ ,对它进行采样产生数据集D$ \mathbb D^{\prime} $ :

    • 每次随机从D$ \mathbb D $ 中挑选一个样本,将其拷贝放入D$ \mathbb D^{\prime} $ 中,然后再将该样本放回初始数据集D$ \mathbb D $ 中(该样本下次采样时仍然可以被采到)。
    • 重复这个过程N$ N $ 次,就得到了包含N$ N $ 个样本的数据集D$ \mathbb D^{\prime} $ 。
  3. 显然,D$ \mathbb D $ 中有些样本会在D$ \mathbb D^{\prime} $ 中多次出现了;D$ \mathbb D $ 中有些样本在D$ \mathbb D^{\prime} $ 中从不出现。D$ \mathbb D $ 中某个样本始终不被采到的概率为(11N)N$ (1-\frac 1N)^{N} $ 。

    根据极限limN(11N)N=1e0.368$ \lim_{N\rightarrow \infty}(1-\frac 1N)^{N}=\frac 1e \simeq 0.368 $ ,即通过自助采样,初始数据集D$ \mathbb D $ 中约有 36.8% 的样本未出现在采样数据集D$ \mathbb D^{\prime} $ 中。

    D$ \mathbb D^{\prime} $ 用作训练集,DD$ \mathbb D-\mathbb D^{\prime} $ 用作测试集,这样的测试结果称作包外估计out-of-bag estimate

  4. 自助法在数据集较小时很有用。

    • 优点:能从初始数据集中产生多个不同的训练集,这对集成学习等方法而言有很大好处。
    • 缺点:产生的数据集改变了初始数据集的分布,这会引入估计偏差。因此在初始数据量足够时,留出法和折交叉验证法更常用。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文