周志华西瓜书笔记 2.2 评估方法

2.2 评估方法

  通常, 可以通过实验测试来对学习器的泛化误差进行评估并进而做出选择. 为此, 需使用一个 “测试集”(testing set) 来测试学习器对新样本的判别能力, 然后以测试集上的 “测试误差”(testing error) 作为泛化误差的近似. 通常假设测试样本也是从样本真实分布中独立同分布采样而得. 测试集应尽可能与训练集互斥.

只有一个包含 m m m个样例的数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\} D={(x1,y1),(x2,y2),...,(xm,ym)}, 如何从中产生出训练集 S S S和训练集 T T T:

2.2.1 留出法

  “流出法”(hold-out) 直接将数据集 D D D划分为两个互斥的集合, 其中一个集合作为训练集 S S S, 另一个作为训练集 T T T, 即 D = S ⋃ T D=S\bigcup T D=ST, S ⋂ T = ∅ S\bigcap T=\emptyset ST=. 在 S S S上训练出模型后, 用 T T T来评估其测试误差, 作为对泛化误差的估计.

  训练/测试集的划分要尽可能保持数据分布的一致性, 避免因数据划分过程引入额外的偏差而对最终结果产生影响, e . g . e.g. e.g., 在分类任务中至少要保持样本的类别比例相似. 如果从采样(sampling) 的角度来看待数据集的划分过程, 则保留类别比例的采样方式称为"分层采样"(stratified sampling).

  单次使用留出法得到的估计结果往往不够稳定可靠, 在使用留出法时, 一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果. 此外, 常见的划分做法是将大约 2 / 3   4 / 5 2/3~4/5 2/3 4/5的样本用于训练, 剩余样本用于测试.

2.2.2 交叉验证法

  “交叉验证法”(cross validation) 先将数据集 D D D划分为 k k k个大小相似的互斥子集, 即 D = D 1 ⋃ D 2 ⋃ . . . ⋃ D k , D i ⋂ D j = ∅ ( i ≠ j ) . D=D_1\bigcup D_2\bigcup ...\bigcup D_k, D_i\bigcap D_j=\emptyset(i\not=j). D=D1D2...Dk,DiDj=(i=j).每个子集 D i D_i Di都尽可能保持数据分布的一致性, 即从 D D D中通过分层采样得到. 然后, 每次用 k − 1 k-1 k1个子集的并集作为训练集, 余下的那个子集作为测试集; 这样就可获得 k k k组训练/测试集. 从而可进行 k k k次训练和测试, 最终返回的是这 k k k个测试结果的均值. 通常把交叉验证法称为 “ k k k折交叉验证”( k k k-fold cross validation). k k k最常用的取值是10.
在这里插入图片描述
  与留出法相似, 为减小因样本划分不同而引入的差别, k k k折交叉验证通常要随机使用不同的划分重复 p p p次, 最终的评估结果是这 p p p k k k折交叉验证结果的均值, 常见的有"10次10折交叉验证".

  假定数据集 D D D中包含 m m m个样本, 若令 k = m k=m k=m, 则得到了交叉验证法的一个特例: 留一法(Leave-One-Out, 简称LOO).留一法不受随机样本划分方式的影响, 因为 m m m个样本只有唯一的方式划分为 m m m个子集–每个子集包含一个样本. 在绝大多数情况下, 留一法被实际评估的模型与期望评估的用 D D D训练出的模型很相似, 因此留一法的评估结果往往被认为比较准确.

2.2.3 自助法

  “自助法” 直接以自助采样法(bootstrap sampling) 为基础. 给定包含 m m m个样本的数据集 D D D, 对它进行采样产生数据集 D ′ D' D: 每次随机从 D D D中挑选一个样本, 将其拷贝放入 D ′ D' D, 然后再将该样本放回初始数据集 D D D中, 使得该样本在下次采样时仍有可能被采到; 这个过程重复执行 m m m次后, 就得到了包含 m m m个样本的数据集 D ′ D' D, 这就是自助采样的结果. 样本在 m m m次采样中始终不被采到的概率是 ( 1 − 1 m ) m (1-\frac1m)^m (1m1)m, 取极限得到 lim ⁡ m ↦ ∞ ( 1 − 1 m ) m ↦ 1 e ≈ 0.368 , \lim _{m\mapsto \infty}(1-\frac1m)^m\mapsto \frac1e\approx0.368, mlim(1m1)me10.368,
即通过自助采样, 初始数据集 D D D中约有 36.8 36.8% 36.8的样本还未出现在采样数据集 D ′ D' D中; 这样, 实际评估的模型与期望评估的模型都使用 m m m个训练样本, 而仍有数据总量约 1 / 3 1/3 1/3的、没在训练集中出现的样本用于测试. 这样的测试结果亦称 “包外估计”(out-of-bag estimate).

  自助法在数据集较小、难以有效划分训练/测试集时很有用; 此外, 自助法能从初始数据集中产生多个不同的训练集, 这对集成学习等方法有很大的好处. 然而, 自助法产生的数据集改变了初始数据集的分布, 这会引入估计偏差. 因此, 在初始数据量足够时, 留出法和交叉验证法更常用一些.

2.2.4 调参与最终模型

  大多数学习算法都有些参数(parameter) 需要设定, 参数配置不同, 学得模型的性能往往有显著差别. 因此, 在进行模型评估与选择时, 除了要对使用学习的算法进行选择, 还需对算法参数进行设定, 这就是通常所说的 “参数调节” 或简称 “调参”(parameter tuning).

  算法选择和调参的区别: 学习算法的很多参数实在实数范围内取值, 因此, 对每种参数配置都训练出模型来是不可行的. 现实中常用的做法, 是对每个参数选定一个范围和变化步长, 例如在 [ 0 , 0.2 ] [0,0.2] [0,0.2]范围内以 0.05 0.05 0.05为步长, 则实际要评估的候选参数值有 5 5 5个, 最终是从这 5 5 5个候选值中产生选定值.

  在模型选择完成后, 学习算法和参数配置已选定, 此时应该用数据集 D D D重新训练模型, 这个在训练过程中使用了所有 m m m个样本的模型, 才是最终提交给用户的模型.

  另外, 通常把学得模型在实际使用中遇到的数据称为测试数据, 而模型评估与选择中用于评估测试的数据集常称为 “验证集”(validation set). 例如, 在研究对比不同算法的泛化性能时, 我们用测试集上的判别效果来估计模型在实际使用时的泛化能力, 而把训练数据另外划分为训练集和验证集, 基于验证集上的性能来进行模型选择和调参.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值