首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机器学习基石15 Validation

转载时请标明本文链接和作者,谢谢合作!

微信号: 机器学习小蜜蜂

本篇介绍如何选择模型。引入验证技术来解决模型选择问题,此外,从理论上证明交叉验证的科学性。

无处不在的选择问题

机器学习中,选择问题无处不在。诸如:模型选择、迭代次数、学习率、特征转换、正则项 etc。

模型选择问题(Model Selection Problem)” 是机器学习中最实用的问题。

下面给出形式化定义。

给定M个模型 H1, H2, ..., Hm,每个模型对应一种演算法 A1, A2, ..., Am。

目标:选择m*, 对应 Hm*, gm* = Am*(D), 使得Eout(gm*) 最小,其中数据集 D 来自同一分布。

几种选择方式:

1. 人眼选择。不可,其一人眼有选择偏见,其二高维无法可视化。

2. by BestEin,。不可,很容易发生 overfitting 问题 (如 H2 发生 overfitting)。

其实可以从 VC 维角度解释这两种选择为什么不可行。

不论是人眼选择,还是 BestEin。只要涉及到选择,意味着模型的 VC 维增大(人眼选择也考虑其中大大的 Hypothesis Set),伴随着模型的复杂度增加,模型的泛化能力变差。

Validation

一种朴素的想法,寻找另外一份数据集 (test 数据集) 做测试,看看模型的效果,选择 bestEtest。

理论上可以保证当Etest 不大,Eout 也不会很大。不幸地是,test 数据集是未知的。

退而求其次,利用我们的训练集,拿出其中一部分数据作为验证集 (Validation Set) 做测试。如下图所示:

通过随机选择Dval,确保,将数据集划分为训练集 (Train Set) 和验证集 (Validation Set)。

选择策略(BestEval):

总结一下,Validation 如何做模型选择

1. 训练集和测试集划分。D=Dtrain UDval,确保Dval 和Dtrain 来自同一分布。

2. 使用 BestEval 策略选择出第 m* 号模型。

3. 将第 m* 号模型在数据集D上重新训练 (确定最终的模型参数)。

注意:Validation 只是为了模型选择,确定好模型后,还是得在 D 上重新训练。当然,实际过程中,如果数据集 D 很大,通常会省略第 3 步。

思考题巩固一下:

25 x (4N/5)^2 + N = 17N

Validation 的理论保证

1. 根据 BestEval 选择出的模型,记为 gm- (- 表示训练集相对于原始数据集偏少)。

可以保证Eout(gm-) 不会太大。

2. 使用BestEval 选择出的模型,重新在数据集 D 上训练。训练的数据集越大,Eout 会更小。

综上,理论上保证Eout(gm*) 不会太大。

不同选择策略Eout 的表现

optimal 是假定知道测试集(作弊),自然最小。

in-sample 表示利用 best Ein 策略,作为基准策略。

不言而喻。

重点关注:

1. sug-g 有时候比 in-sample 还差?

因为随着验证集越大,训练集就越小,误差会越来越高。

2. full-g 为什么不会比 in-sample 差?

因为 full-g 只是利用 sug-g 选择出来的 (最优) 模型。重新在数据集D上重新训练,自然比 in-sample 结果好。

验证的理论基础:

1. 要使得Eout(g-) ≈Eval(g-),K 越大越好。

2. 要使得Eout(g) ≈Eout(g-),K 越小越好。

交叉验证的理论基础

从K= 1 开始,假设验证集只有 1 个元素。不妨假定验证集,

那么。

leave-one-out cross validation estimate:

先抛出结论:理论上可以证明 根据 bestEloocv 选择模型,Eout 会更好

数学证明:Eloocv 的期望 =Eout 的期望

数学依据:

1. 期望是线性运算。

2.条件期望的公式E[X] = E(E[XY])。

以后在机器学习数学基础中详细讲解。总之得到:Eloocv 的期望 =Eout 的期望。

交叉验证的实施过程

假设有三个点,在 线性模型和常数模型,利用 bestEloocv 做选择。

可以发现,这个例子中,常数模型会更好。

对比 bestEin 和 bestEloocv。确实,bestEloocv 选择出来的模型,会更加平滑。

V-Fold 交叉验证

Leave-one-out Cross Validation 的缺点,主要有两个:

1. 模型不够稳定 (每次只选择一个点作为验证集)。

2. 当数据集很大时(设大小为N),交叉验证部分要训练 N 个模型,再做选择,训练成本大。

实际当中,通常使用V-Fold 交叉验证,通常是 5-Fold 或者 10-Fold 就很不错了,这样训练成本不会太大,鲁棒性也较好。

具体实施过程:

以上就是交叉验证的理论基础。

思考题:

单个模型,10 x (9N/10)^2 = 81N^2/10 => 每个模型需要训练10次,然后计算 Ecv。

模型选择: 25 * (81N^2 / 10) = 405N^2 /2。

选择出模型后,重新训练。 N^2。

综上,405N^2 /2 + N^2 = 407N^2 / 2。

小结

本篇介绍了使用验证解决模型选择问题,并且从理论上证明交叉验证的科学性。

下篇将是机器学习基石课的最后一节,主要介绍三个有效的机器学习原则。敬请期待!

参考:

1. 本文截图来自林田轩老师的课件

感谢你关注“机器学习小蜜蜂”,期待你的留言和建议。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171211G0XETN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券