设想一个机器学习的问题,我们要从一系列不同的模型中进行挑选。例如,我们可能是用一个多项式回归模型 (polynomial regression model) h θ ( x ) = g ( θ 0 + θ 1 x + θ 2 x 2 + ⋯ + θ k x k ) h_\theta (x)=g(\theta_0+\theta_1x+\theta_2x^2+\cdots+\theta_kx^k) hθ(x)=g(θ0+θ1x+θ2x2+⋯+θkxk) 想要判定这里的多项式次数 k k k 应该是多少,0, 1, …, 或者10。那么我们怎么才能自动选择一个能够在偏差 (bias)/方差(variance)之间进行权衡的模型呢? 1
或者换一个说法,假如我们希望能够自动选出来一个带宽参数 (bandwidth parameter) τ \tau τ 来用于局部加权回归(locally weighted regression,所谓为 LWR,参考 note1的第2节),或 者要自动选出一个参数 C 用于拉格朗日正则化的支持向量机算法(l1-regularized SVM)。怎么来实现呢?
为了具体一些,咱们这一系列讲义中都假设备选集合的模型个数有限 M = M 1 , ⋯   , M d M = {M_1,\cdots,M_d} M=M1,⋯,Md。例如,在我们上面刚刚随便举的本章第一个例子中, M i M_i Mi 就是一个 i次多项式拟合模型(i-th order polynomial regression model)。(其实把 M 扩展到无穷集合 也不难的。2)换个说法就是,如果我们要从支持向量机算法 (SVM)、神经网络算法(neural network)、逻辑回归算法(logistic regression)当中三选一,那么这里的 M 就应该都 包含了这些模型了。
1 交叉验证(Cross Validation)
假如我们得到了一个训练集 S。我们已经了解了经验风险最小化(empirical risk minimization,缩写为 ERM),那么接下来就要通过使用 ERM 来进行模型选择来推导出一种新的算法:
- 对训练集 S S S 中的每一个模型 (model) M i M_i Mi 进行训练,得到某假设类 (hypothesis) h i h_i hi
- 从这些假设中选取训练误差最小的假设 (hypothesis)
上面这个算法是行不通的。比如考虑要选择多项式的阶(最高次项的次数)的情况。多项式的阶越高,对训练集 S 的拟合程度就越好,训练误差自然也就更小。然而,这个方法选出来 的总是那种波动非常强 (high-variance) 的高次多项式模型 (high-degree polynomial model) ,这种情况我们之前就讲过了,通常都是很差的选择。
下面这个算法就更好一些。这个方法叫保留交叉验证 (hold-out cross validation),也叫简单交叉验证 (simple cross validation),步骤如下:
- 随机拆分训练集 S S S 成 S t r a i n S_{train} Strain (例如,可以选择整体数据中 的 70% 用于训练) 和 S c v S_{cv} Scv (训练集中剩余的 30%用于验 证)。这里的 S c v S_{cv} Scv 就叫做保留交叉验证集(hold-out cross validation set)。
- 只对集合 S t r a i n S_{train} Strain 中的每一个模型 M i M_i Mi 进行训练,然后得到假设类(hypothesis) hi。
- 筛选并输出对保留交叉验证集有最小误差 ϵ ^ S c v ( h i ) \hat\epsilon_{S_{cv}}(h_i) ϵ^Scv(hi) 的假设hi 。(回忆一下,这里的 ϵ ^ S c v ( h i ) \hat\epsilon_{S_{cv}}(h_i) ϵ^Scv(hi) 表示的是假设 h h h 在保留交叉验证集 S c v S_{cv} Scv 中的样本的经验误差(empirical error)。)
这样通过在一部分未进行训练的样本集合 S c v S_{cv} Scv 上进行测试, 我们对每个假设 h i h_i hi 的真实泛化误差 (generalization error) 就能得到一个比上一个方法更好的估计,然后就能选择出来一个有最小估计泛化误差 (smallest estimated generalization error) 的假设了。通常可以选择 1/4 到 1/3 的数据样本用来作为保留交叉验证集(hold out cross validation set),30% 是一个很典型的选择。
还有另外一种备选方法,就是在第三步的时候,也可以换做选 择与最小估计经验误差 ϵ ^ S c v ( h i ) \hat\epsilon_{S_{cv}}(h_i) ϵ^Scv(hi