Regularization and model selection
假设我们为了一个学习问题尝试从几个模型中选择一个合适的模型。例如,我们可能用一个多项式回归模型
在为某个learning problem选择模型的时候,我们假设存在一个有限的模型集合即,
Cross validation
第一个方法是cross validation,假设我们有一个训练集,并且给定了 empirical risk minimization (ERM),一个比较直观的方法就是利用ERM作为指标,测试每一个模型在训练集上的ERM,然后选择ERM最小的那个模型。但是实际上,这种方式选择的模型并不好,之前我们已经看到过,如果单纯地依靠ERM,会出现过拟合的问题,所以一个更加可靠的方式是hold-out cross validation,我们通过以下步骤实现模型的选择:
1:将训练集S随机分成
2: 只利用
3: 我们利用
通过这种方式,我们可以利用一些模型未曾见过的数据来测试模型的generalization error,这样对模型的generalization error 可以有更好的估计,通常我们选择训练集的
利用hold out cross validation 的一个缺陷是它“浪费”了30\%的数据,这些数据不能用于训练,如果数据量很大的话,这种“浪费”可以接受,但是如果数据本来就很少的时候,我们需要考虑换一种
方式来选择最优的学习模型,下面介绍的这种方式称为\textbf{k-fold cross validation},这种方式每次剔除出来的数据要少一点。
1:将含有m个训练样本的训练集S,随机分成没有交集的k组,每一组含有m/k个样本,我们称每一组为一个子集,即:
2:对于一个学习模型,我们每次剔除一组,剩下的k-1组用来训练这个学习模型,并且得到一个对应的决策函数,用得到的决策函数在事先剔除出来的哪一组上做测试,如此循环k次,我们可以得到这个学习模型在这个训练集上的平均误差。
3:对应每一个学习模型都采取这样的策略训练,最终在训练集上的平均误差最小的模型将被选择。
在实际应用中,k一般设为10,这样每次有1/10的数据被剔除出来做测试,剩下的90\%的数据可以用来训练,这种方式比起上一种方式,可以让更多的数据用来训练,不过这种方式需要花费更多的训练时间,因为每一个学习模型我们都要训练k次。
虽然k=10是一个比较常见的选择,但是有的时候,当数据样本非常稀少的时候,我们也会选择k=m以确保每次剔除的数据尽可能地少,在这种情况下,我们每次剔除一个样本,循环m次,然后用平均误差来估计学习模型的generalization error,这种方式也称为leave-one-out cross validation。
虽然我们介绍了这几种方法从模型集合中来选择一个合适的模型,但是这几种方法有的时候也可以直接用来评价一个模型或者算法的性能。而实际应用中,我们也经常
用这几种方法来评价一些算法的性能。
Feature Selection
模型选择的一个特殊而重要的应用是特征选择。想象一下,如果我们遇到一个supervised的学习问题,其输入特征的维数n远远大于样本数m,但是这些特征可能只有一部分与问题是有关系的,在这种情况下,可以设计一个特征选择的算法来降低特征的个数,如果一个训练样本含有n个特征,那么就有
1: 初始化
2: Repeat { \
(a) 对于
(b) 设定
}
3: 从整个循环过程中,选择最佳的训练子集。
这个方法给出了wrapper model feature selection的一个实例,因为这是一个不断用特征子集”warps”学习模型的过程,需要不断地调用学习模型以评估各个特征子集的性能,除了forward research,还有一种方法就是backward research,这个也很容易理解,forward research 就是从空集一点一点的增大,直到全部n个特征,而backward research恰恰相反,从全部n个特征开始,一点一点地减少,直到空集。虽然这两种特征选择的方法比较有效,但是非常耗时,通常来说,含有n个特征的训练集,
需要
Filter feature selection是一种相对来说更加高效的特征选择方法,这种方法的核心思想就是计算一些简单的指标
一个可能的选择就是将
其中,
上式也可以表示成Kullback-Leibler (KL) divergence:
KL-divergence 给出了衡量概率分布
Bayesian statistics and regularization
下面,我们再介绍一种防止overfitting的方法,之前我们介绍过利用最大似然估计来求参数的方法,我们会建立如下的目标函数:
我们接下来的讨论,会假设参数
上式中,
当我们需要对一个新输入的样本做预测的时候,我们可以利用参数
同样地,我们可以计算输出y关于x的期望:
实际应用中,由于对参数
上式相当于将参数