模型选择与评估

在现实任务中,我们往往有多种学习算法可供选择,甚至对同一个学习算法,当使用不同的参数配置时,也会产生不同的模型.。那么,我们该选用哪一个学习算法、使用哪一种参数配置呢?这就是机器学习中的"模型选择" (model selection) 问题。

我自己总结的模型选择具体分为以下几步

1)选择训练集、测试集;

测试集应该尽可能与训练集互斥, 即测试样本尽量不在训练集中出现、未在训练过程中使用过;

2)选择学习算法;

3)调参;

大多数学习算法都有些参数(parameter) 需要设定,参数配置不同,学得模型的性能往往有显著差别。

4)模型评估


1. 选择训练集、测试集

当我们只有一个包含m 个样例的数据集D={(叫, Yl) , (X2 , Y2) , … ,(Xm , Ym)} , 既要训练,又要测试,怎样才能做到呢?答案是:通过对D 进行适当的处理,从中产生出训练集S 和测试集T。

1) 留出法

直接将数据集D 划分为两个互斥的集合:其中一个集合作为训练集S,另一个作为测试集T;

需注意的是,训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响,例如在分类任务中至少要保持样本的类别比例相似,即“分层抽样”;

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

常见做法是将大约2/3 ~ 4/5 的样本用于训练,剩余样本用于测试;

2) 交叉验证法

将数据集 D 划分为 k 个大小相似的互斥子集,D = D1 U D2 U... U Dk, Di ∩ Dj = ø ( i ≠ j ) . 每个子集Di尽可保持数据分布的致性,即从D 中通过分层采样得到;

然后,每次用 k-1 个子集的并集作为训练集,余下 的那个子集作为测试集;这样就可获得 k 组训练/测试集,从而可进行 k 次训练和测试,最终返回的是这 k 个测试结果的均值;

显然,交叉验证法评估结果的稳定性和保真性在很大程度上取决于k的取值,为强调这一点,通常把交叉验证法称为" k 折交叉验证";

k 最常用的取值是10 ,此时称为10折交叉验证;

与留出法相似,将数据集D 划分为k 个子集同样存在多种划分方式,为减小因样本划分不同而引入的差别, k 折交叉验证通常要随机使用不同的划分重复p 次,最终的评估结果是这p 次k 折交叉验证结果的均值;

特例:留一法(Leave-One-Out,简称LOO):

留一法中被实际评估的模型与期望评估的用D 训练出的模型很相似,因此,留一法的评估结果往往被认为比较准确

然而,留一法也有其缺陷:在数据集比较大时,训练m 个模型的计算开销可能是难以忍受的(例如数据集包含1 百万个样本,则需训练1 百万个模型),而这还是在未考虑算法调参的情况下。

3) 自助法

我们希望评估的是用D 训练出的模型。但在留出法和交叉验证法中,由于保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比D 小,这必然会引入一些因训练样本规模不同而导致的估计偏差。

给定包含m 个样本的数据集D ,我们对它进行采样产生数据集D': 每次随机从D 中挑选一个样本将其拷贝放入D' ,然后再将该样本放回初始数据集D 中,使得该样本在下次采样时仍有可能被采到,这个过程重复执行 m 次后,我们就得到了包含 m 个样本的数据集D';

显然, D 中有一部分样本会在D'中多次出现,而另一部分样本不出现;

样本在 m 次采样中始终不被采到的概率是(1 一1/m)的m次方 , 取极限得到0.368;

于是我们可将D' 用作训练、集, D\D' 用作测试集;

适用场景:自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。

缺点:自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。

在初始数据量足够时,留出法和交叉验证法更常用一些。

2. 选择学习算法

3. 调参

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

4. 模型评估

评估一个模型,理想的解决方案当然是对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型;

通常,我们可通过实验测试来对学习器的泛化误差进行评估进而做出选择。为此,需使用一个"测试集" (testing set)来测试学习器对新样本的判别能力,然后以测试集上的"测试误差" (testing error)作为泛化误差的近似。

对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量(下节会详细学习);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值