大纲
Model Selection Problem
1 Model Selection Problem
在机器学习建立模型的过程中有很多选择,对于简单的二分类问题
我们的目标是选择最好的搭配,建立好模型,得到一个好的
g
,使
假设有M个模型,对应有 H1,H2,⋯,HM ,即有M个hypothesis set,演算法为 A1,A2,⋯,AM ,共M个。我们的目标是从这M个hypothesis set中选择一个模型 H∗m ,通过演算法 A∗m 对样本集D的训练,得到一个最好的矩 g∗m ,使其 Eout(g∗m) 最小。所以,问题的关键就是机器学习中如何选择到最好的矩 g∗m 。
2 Model Selection by Best Ein
对M个模型分别计算使
Ein
最小的矩g,再横向比较,取其中能使
Ein
最小的模型的矩
g∗m
这样会存在问题
这样会倾向于选择比较复杂的模型,可能会导致过拟合
假设演算法 A1 在 H1 中选择最小的 Ein ,演算法 A2 在 H2 中选择最小的 Ein ,这种“模型选择+学习训练”的过程,它的VC Dimension是 dVC(H1∪H2) ,模型复杂度增加.
总得来说这样做会导致泛化能力较差
3 Model Selection by Best Etest
假设有一个独立于训练样本的测试集
Dtest
,我们可以这样选择
这种测试集验证的方法,根据finite-bin Hoffding不等式,可以得到
由上式可以看出,模型个数M越少,测试集数目越大,那么 (logMNtest‾‾‾‾‾√) 越小,即 Etest(g∗m) 越接近于 Eout(g∗m) 。
因为 Dtest 数据是拿不到的,所以我们可以采取一种折中的办法,我们可以使用已有的训练集D来创造一个验证集validation set,即从D中划出一部分 Dval 作为验证集。D另外的部分作为训练模型使用, Dval 独立开来,用来测试各个模型的好坏,最小化 Eval ,从而选择最佳的 g∗m 。
Validation
1 Validation Set Dval
从 D 中随机抽样k个样本构成
Dval ,使 Dval 独立同分布与 p(x,y) ,这样可以使 Dval 与 Dout 联系起来剩下的 N−k 个样本构成 Dtrain
为了保证 Dval 是干净的,应该只用 Dtrain 做模型的训练
我们把用训练数据
Dval
训练得到的模型叫
gm¯
,那么我们就有
所以为了让 Eout(gm¯) 小,我们应该尽量让 Eval(gm¯) 小
2 Model Selection by Best Eval
假设有M种模型hypothesis set,
Dval
的数量为K,那么从每种模型m中得到一个在
Din
上表现最好的矩,再横向比较,从M个矩中选择一个在
Dval
最好的
m∗
作为我们最终得到的模型。
现在由于数量为N的总样本D的一部分K作为验证集,那么只有N-k个样本可供训练。从 Dtrain 中得到最好的 g∗m¯ ,而总样本D对应的最好的矩为 g∗m 。根据之前的leraning curve很容易知道,训练样本越多,得到的模型越准确,其hypothesis越接近target function,即D的 Eout 比 Dtrain 的 Eout 要小:
3 Validation in Practice
黑色的虚线表示用 Etest 来做选择,肯定是最优的。但实践中我们往往做不到
黑色的直线表示用 Ein 来做选择,会导致过拟合,所以泛化误差较高
红色的直线表示用 Eval 做选择,但选择的是 g∗m¯ ,它的变化趋势随着K增大是先减少后增大,当K大于一定值时,甚至会超过黑色的线
- 蓝色的直线表示用 Eval 做选择,但选择的是 g∗m ,其趋势是随着K的增加,它对应的$Eout先缓慢减小再缓慢增大,且一直位于红色曲线和黑色直线之下。从此可见,蓝色曲线对应的方法最好,符合我们之前讨论的使用验证集进行模型选择效果最好。
4 The Dilemma about K
当K比较大的时候, Eout≈Eval ,但是 g 和
g− 可能相差很多。当K比较小的时候, g≈g− ,但是 Eout 可能和 Eval 相差很多
一般k取值的经验值是 N5 ,值得一提的是,划分验证集通常不会增加整体的时间复杂度,反而会降低时间复杂度。
Leave-One-Out Cross Validation
1 Extreme Case
当验证集的大小k=1的时候,我们称之为留一交叉验证。
留一交叉验证的误差估计
我们希望 Eloocv(H,A)≈Eout(g)
2 Illustration of Leave-One-Out
如上图所示,要对二维平面上的三个点做拟合,上面三个图表示的是线性模型,下面三个图表示的是常数模型。对于两种模型,分别使用留一交叉验证法来计算 Eloocv ,计算过程都是每次将一个点作为验证集,其他两个点作为训练集,最终将得到的验证误差求平均值,就得到了 Eloocv(linear) 和 Eloocv(constant) ,比较两个值的大小,取值小对应的模型即为最佳模型。
3 Theoretical Guarantee of Leave-One-Out Estimate
接下来,我们从理论上分析Leave-One-Out方法的可行性,即 Eloocv(H,A) 是否能保证 Eout 的矩足够好?假设有不同的数据集D,它的期望分布记为 εD ,则其 Eloocv(H,A) 可以通过推导,等于 Eout(N−1) 的平均值。由于N-1近似为N, Eout(N−1) 的平均值也近似等于 Eout(N) 的平均值。具体推导过程如下:
所以我们可以得出结论
Eloocv(H,A)≈Eout(g)
4 Disadvantage of Leave-One-Out Estimate
计算量巨大
稳定性差,由于单个点估计得偏差
V-Fold Cross Validation
1 V-fold Cross Validation
把数据集 D 随机划分为V等分,取V-1份做训练,1份做验证
通过
Ecv(H,A)=1V∑Vv=1E(v)val(g−v) 作为模型选择的标准m∗=argmin1≤m≤MEm=Ecv(Hm,Am)
2 Selecting Validation Tool
V-Fold Validation通常比单个Validation好
5-Fold和10-Fold通常工作的会比较好