台湾大学林轩田机器学习基石课程学习笔记15 -- Validation
来源:互联网 发布:数据采集系统101data 编辑:程序博客网 时间:2024/06/01 20:09
上节课我们主要讲了为了避免overfitting,可以使用regularization方法来解决。在之前的
一、Model Selection Problem
机器学习模型建立的过程中有许多选择,例如对于简单的二元分类问题,首先是算法A的选择,有PLA,pocket,linear regression,logistic regression等等;其次是迭代次数T的选择,有100,1000,10000等等;之后是学习速率
假设有M个模型,对应有
考虑有这样一种方法,对M个模型分别计算使
但是
另外一种方法,如果有这样一个独立于训练样本的测试集,将M个模型在测试集上进行测试,看一下
这种测试集验证的方法,根据finite-bin Hoffding不等式,可以得到:
由上式可以看出,模型个数M越少,测试集数目越大,那么
下面比较一下之前讲的两种方法,第一种方法使用
但是,我们拿到的一都是训练集D,测试集是拿不到的。所以,寻找一种折中的办法,我们可以使用已有的训练集D来创造一个验证集validation set,即从D中划出一部分
二、Validation
从训练集D中抽出一部分K个数据作为验证集
假如D共有1000个样本,那么可以选择其中900个
假设有M种模型hypothesis set,
现在由于数量为N的总样本D的一部分K作为验证集,那么只有N-k个样本可供训练。从
所以,我们通常的做法是通过
总结一下,使用验证集进行模型选择的整个过程为:先将D分成两个部分,一个是训练样本
不等式关系满足:
下面我们举个例子来解释这种模型选择的方法的优越性,假设有两个模型:一个是5阶多项式
图中,横坐标表示验证集数量K,纵坐标表示
这里提一点,当K大于一定的值时,红色曲线会超过黑色直线。这是因为随着K的增大,
那么,如何设置验证集K值的大小呢?根据之前的分析:
当K值很大时,
三、Leave-One-Out Cross Validation
假如考虑一个极端的例子,k=1,也就是说验证集大小为1,即每次只用一组数据对
这样求平均的目的是为了让
下面用一个例子图解留一法的过程:
如上图所示,要对二维平面上的三个点做拟合,上面三个图表示的是线性模型,下面三个图表示的是常数模型。对于两种模型,分别使用留一交叉验证法来计算
接下来,我们从理论上分析Leave-One-Out方法的可行性,即
最终我们得到的结论是
举一个例子,使用两个特征:Average Intensity和Symmetry加上这两个特征的非线性变换(例如高阶项)来进行手写数字识别。平面特征分布如下图所示:
Error与特征数量的关系如下图所示:
从图中我们看出,随着特征数量的增加,
很明显可以看出,使用
四、V-Fold Cross Validation
接下来我们看看Leave-One-Out可能的问题是什么。首先,第一个问题是计算量,假设N=1000,那么就需要计算1000次的
针对Leave-One-Out的缺点,我们对其作出了改进。Leave-One-Out是将N个数据分成N分,那么改进措施是将N个数据分成V份(例如V=10),计算过程与Leave-One-Out相似。这样可以减少总的计算量,又能进行交叉验证,得到最好的矩,这种方法称为V-折交叉验证。其实Leave-One-Out就是V-折交叉验证的一个极端例子。
所以呢,一般的Validation使用V-折交叉验证来选择最佳的模型。值得一提的是Validation的数据来源也是样本集中的,所以并不能保证交叉验证的效果好,它的模型一定好。只有样本数据越多,越广泛,那么Validation的结果越可信,其选择的模型泛化能力越强。
五、总结
本节课主要介绍了Validation验证。先从如何选择一个好的模型开始切入,例如使用
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程
- 台湾大学林轩田机器学习基石课程学习笔记15 -- Validation
- 台湾大学林轩田机器学习基石课程学习笔记14 -- Regularization
- 台湾大学林轩田机器学习基石课程学习笔记
- 台湾大学林轩田机器学习基石课程学习笔记2 -- Learning to Answer Yes/No
- 台湾大学林轩田机器学习基石课程学习笔记3 -- Types of Learning
- 台湾大学林轩田机器学习基石课程学习笔记4 -- Feasibility of Learning
- 台湾大学林轩田机器学习基石课程学习笔记5 -- Training versus Testing
- 台湾大学林轩田机器学习基石课程学习笔记6 -- Theory of Generalization
- 台湾大学林轩田机器学习基石课程学习笔记7 -- The VC Dimension
- 台湾大学林轩田机器学习基石课程学习笔记8 -- Noise and Error
- 台湾大学林轩田机器学习基石课程学习笔记9 -- Linear Regression
- 台湾大学林轩田机器学习基石课程学习笔记10 -- Logistic Regression
- 台湾大学林轩田机器学习基石课程学习笔记11 -- Linear Models for Classification
- 台湾大学林轩田机器学习基石课程学习笔记12 -- Nonlinear Transformation
- 台湾大学林轩田机器学习基石课程学习笔记13 -- Hazard of Overfitting
- 台湾大学林轩田机器学习基石课程学习笔记16(完结) -- Three Learning Principles
- 台湾大学林轩田机器学习基石课程学习笔记1 -- The Learning Problem
- 台湾大学林轩田机器学习基石课程学习笔记2 -- Learning to Answer Yes/No
- 关于Android studio 导入速度慢的问题(说的就是你gradle)
- WEB安全-伪造X-Forwarded-For绕过服务器IP地址过滤
- hdoj1047 Integer Inquiry(大整数的相加)
- golang日記
- Sword框架解析——知识采集流程页面初始化
- 台湾大学林轩田机器学习基石课程学习笔记15 -- Validation
- HashSet的去重问题
- Socket编程
- Android ROM的制作与烧录
- 石子合并(NOI1995)
- win7 下tensorflow安装
- TCP udp数据传输协议
- 2017.5.27测试 1. 排队
- Codeforces 809A Do you want a date?