机器学习模型评估方法

评估方法

通常,我们需要对学习器的泛化误差进行评估并进而做出选择。但是由于泛化误差无法直接得到,因此常用的方法都是用训练集上的一部分作为“测试集(testing set)”来测试学习器的泛化性能,并将得到的测试误差作为泛化误差的一种近似。为了实现这样的目的,产生了以下几种划分测试集的方法。

留出法

留出法(hold-out) ”直接将数据集 D \mathcal{D} D划分为两个互斥的集合,其中一个集合作为训练集 S \mathcal{S} S,另一个作为测试集 T \mathcal{T} T,即满足 D = S ∪ T , S ∩ T = ∅ \mathcal{D}= \mathcal{S} \cup \mathcal{T} ,\mathcal{S} \cap \mathcal{T} =\mathcal{\emptyset} D=ST,ST=,在 S \mathcal{S} S上训练出模型后,在 T \mathcal{T} T上得到测试误差,作为泛化误差的估计。

即意味着,用 D \mathcal{D} D中的训练集 S \mathcal{S} S得到的模型近似数据集 D \mathcal{D} D训练得到的模型,而用测试集 T \mathcal{T} T上的误差近似泛化误差。
请添加图片描述

需要注意的是,训练集和测试集的划分要尽可能一致,避免因数据划分的过程引入额外的偏差对最终结果产生影响。如果从采样(Sampling)的过程看待数据集的划分过程,那么保留类别的采样方式通常称为“分层采样(Stratified sampling)”。此外,单次留出法的结果往往不够可靠稳定,通常需要若干次随机划分,重复进行实验评估后取平均值作为留出法的评估结果。

但是留出法也存在一些问题:由于希望的是评估 D \mathcal{D} D训练出模型的性能,但是实际上留出法评估的是 S \mathcal{S} S训练出的性能。如果训练集包含的样本数目过少,那么通过 S \mathcal{S} S训练出的模型与通过 D \mathcal{D} D的模型差别会很显著;但是如果让 S \mathcal{S} S包含大多数数据,用于测试的 T \mathcal{T} T又会因为数据太少而不稳定。因此,通常选择4/5的数据用于训练,剩余1/5的数据用于测试。

交叉验证法

交叉验证法(Cross-validation)”法是先将数据集 D \mathcal{D} D划分为多个大小相似的互斥子集,即
D = D 1 ∪ D 2 ∪ ⋯ ∪ D k , D i ∩ D j = ∅ ( i ≠ j ) \mathcal{D}=\mathcal{D_1}\cup \mathcal{D_2}\cup \dots \cup \mathcal{D_k},\mathcal{D_i}\cap \mathcal{D_j}=\emptyset \quad(i\ne j) D=D1D2Dk,DiDj=(i=j)
在每一个子集中尽可能保持数据分布的一致性,即在每一个子集均通过分层采样的方式得到。每次使用 k − 1 k-1 k1个子集作为训练集,剩下的子集作为测试集。因此,每次可以获得k组训练/测试集。每次交叉验证可以进行k次训练和测试,返回值为k个测试结果的均值。可以看出,结果的稳定性和保真性很大程度上取决于k的取值,因此通常交叉验证法也被称为“k折交叉验证(k-fold cross validation)”。通常,k取10。因此,如果进行10次10折交叉验证,那么实际上进行了100次训练/测试。

假设数据集 D \mathcal{D} D中包含m个样本,若使 k = m k=m k=m,那么就得到了交叉验证的一个特例,即“留一法(Leave-One-Out)”。显然,留一法与样本的随机划分方式无关。由于此时训练集相较于整个数据集 D \mathcal{D} D只少一个样本,所以留一法评估的模型与实际需要评估的模型最为接近。因此,留一法通常被认为比较准确。

但是由于测试集每次只有一个样本,其经验误差与泛化误差偏差大,此处NFL定理仍然适用;此外,由于留一法需要遍历整个数据集,当数据集非常大时,所要花费的时间将是巨量的。

自助法

自助法(boostrapping)”是以自助采样为基础的方法。在包含m个样本的数据 D \mathcal{D} D中,对它采样产生数据集 D ′ \mathcal{D'} D:每次从数据集中挑选一个样本,拷贝放入数据集 D ′ \mathcal{D'} D中,然后放回样本数据,使得该样本数据在下次采样仍然有可能被采到。那么对于一个样本数目为m的数据集 D \mathcal{D} D,样本在m次采样中始终不被采到的概率为
lim ⁡ m → ∞ ( 1 − 1 m ) = 1 e ≈ 0.368 \lim_{m \to \infty}(1-\frac{1}{m} )=\frac{1}{e}\approx 0.368 mlim(1m1)=e10.368
也就是说,自主采样会有36.8%的数据未出现在采样集 D ′ \mathcal{D'} D中,于是可以将 D ′ \mathcal{D'} D作为训练集, D ∖ D ′ \mathcal{D} \setminus \mathcal{D'} DD作为测试集。这样实际评估的模型仍有1/3左右数据未出现在训练集中,可以用于测试。这种测试结果称为“包外估计(out-of-bag-estimate)”。

自助法也有其相应的优缺点:自助法从初始数据集中产生了多个不同的训练集,这对于集成学习等方法有很大的好处;但是由于它改变了初始数据集的分布,会产生估计偏差。

调参与最终模型

大多数学习算法需要调整参数(Parameter),参数的配置不同,学习算法的效果会天差地别。因此,在模型评估和选择时,需要对算法的参数进行设定,即,调参(Parameter tunning)

机器学习的参数大致有两类:算法自身的参数和模型的参数。前者亦称为超参数,数目通常在10以内,大多是根据经验人工设定;后者模型的参数可能非常多,如神经网络中神经元的相关参数,通常是根据学习来设定。

调参本质和算法选择本质没有区别:选择表现最好的模型参数或者算法作为结果。但是学习参数很多是在实数范围内取值,因此调参也与参数的范围和步长相关。如果步长较大,则有可能跳过最优参数。

模型在选择与评估过程中所用到的数据为“验证集(Validation set)”。
请添加图片描述

可以看出,模型的选择和评估是在训练的过程中进行的。

需要注意的,训练和验证过程都只用到了数据集的一部分,但是最终训练的模型应当是基于整个数据集 D \mathcal{D} D的模型。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值