机器学习西瓜书:评估方法

通常,我们可以通过实验测试来对学习器的泛化误差进行评估并进而做出选择

留出法

“留出法”直接将数据集 D D D划分为两个互斥的集合,其中一个集合作为训练集 S S S,另一个作为测试集 T T T,即 D = S ∪ T D=S\cup T D=ST S ∩ T = ∅ S\cap T = \varnothing ST=

注意:训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。通常采用“分层采样”

“分层采样”是保留类别比例的采样。例如对数据集 D D D有1000个样例,其中包含500个正例,500个反例。70%样本作为训练集 S S S,30%样本作为测试集 T T T,则分层采样得到的 S S S应包含350个正例、350个反例, T T T应该包含150个正例和150个反例。

单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。

常把2/3~4/5的样本用于训练,剩余样本用于测试

交叉验证法(k折交叉验证)

“交叉验证法”先将数据集D划分为k个大小相似的互斥子集,即 D = D 1 ∪ D 2 ∪ . . . ∪ D k D=D_1 \cup D_2 \cup ... \cup D_k D=D1D2...Dk D i ∩ D j = ∅ ( i ≠ j ) D_i \cap D_j = \varnothing(i \not = j) DiDj=(i=j)。每个子集 D i D_i Di都尽可能保持数据分布的一致性,即从 D D D中通过分层采样得到。然后,每次用 k − 1 k-1 k1个子集的并集作为训练集,余下的那个子集作为训练集,这样就可以获得k组训练/测试集,从而可进行 k k k次训练和测试,最终返回的是这 k 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时,叫做留一法

自助法

“自助法”是给定包含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,这就是自助采样的结果。

  • 初始数据集 D D D中约有36.8%的样本未出现在采样数据集 D ′ D^{'} D
  • 数据量小的时候适合采用这种方式

调参与最终模型

调参:原则就是,对每个参数选定一个范围和变化步长。

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

你可能感兴趣的:(机器学习)