统计学习方法——模型的选择与评估(过拟合、泛化能力)
来源:互联网 发布:python re group 编辑:程序博客网 时间:2024/06/08 03:03
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
- 训练误差与测试误差
- 泛化能力
- 泛化误差
- 泛化误差上界
- 过拟合
参考书目及论文:《统计学习方法》——李航、A Tutorial on Support Vector Machine for Pattern Recognition
监督学习的目的是找到一个输入输出映射(模型),使得这个模型不仅对训练数据有很好的拟合能力,对于未知数据,它也有很好的预测能力。这篇博客介绍选择和评估模型的标准。本篇博客一共有以下几个重点:训练误差与测试误差、泛化能力、过拟合。
训练误差与测试误差
训练误差是模型关于训练集的平均损失来表示:
其中为训练集中数据的个数;损失函数在上一篇博客:统计学三要素中有介绍,同时我们可以看到,训练误差也就是该篇文章所提到的经验损失函数。训练误差的大小,可以说明问题是不是一个容易学习的问题。
测试误差是模型关于测试集数据的平均损失:
其中为测试集中数据的个数。测试误差反应了学习模型对于未知的测试集中数据的预测能力。由于测试误差只是表征了对于测试集中数据的预测能力,我们可以更一般的引申一下,由此引入了模型对于所有未知数据预测能力——泛化能力。
泛化能力
泛化误差
泛化能力用来表征学习模型对于未知数据的预测能力。
很显然,我们没有办法对所有的数据进行预测然后判断来计算一个模型的模型的泛华能力,所以在实际应用当中,我们一般还是用的测试集中的数据来近似泛化能力。
但是,我们大统计学习也在理论上试图对学习方法的泛化能力进行了分析,首先给出泛化误差的定义:
泛化误差越小,学习模型的泛化能力越好。可以看到,泛化误差实际上就是统计学三要素这篇博客中介绍的风险函数。由上篇博客我们可知,泛化误差(风险函数)不可计算。那么,我们该如何来衡量泛化能力呢?下面将介绍泛化误差上界。
泛化误差上界
对于二分类问题,当假设空间是有限个函数组成的集合时,对假设空间里的任意一个函数,存在一个满足的,至少以概率,下面的不等式成立:
(这个公式是我综合书和论文自己推导的,如果有问题,请批评指正。)
(需要注意的是,是先有有限个函数组成的假设空间,才有后面的这个式子,具体推导过程见:细(戏)说vc维)
其中:为VC维。VC维反应了模型的复杂程度,VC维越大,模型越是复杂。
对于泛化上界,有三个关键点:
基于以上三点,这就跟我们提供了一个方法,我们既然算不了左边的风险函数,那么我们可以选择使得右边最小的模型。1.泛化上界与无关,它只假定训练集合测试集都是独立的根据服从某一个分布。
//关于上面的这个,其实我是不认同的。我认为在计算平均损失函数时,由于其中用到的损失函数中包含了服从分布的点,所以我并不认为泛化误差上界是independent of 。
2.我们呢,基本上不可能算出等式的左边,也就是风险函数。
3.但是呢,如果我们知道了,我们就可以算出右边。
关于泛化上界的证明,如有兴趣请看:泛化上界的证明。
过拟合
前面我们介绍了训练误差和测试误差的概念。如果我们在学习模型的时候,一味的最小化训练误差,所选的模型的复杂度可能会很高,这种现象称为过拟合。出现过拟合的原因是因为训练集中的数据本身就存在有噪声,一味的追求训练误差的最小化,会导致对未知数据的预测能力降低。它一般表现在参数过多的模型上。我们在选择模型的时候注意避免过拟合,并且提高模型的预测能力。毕竟学习模型的最终目的还是针对对未知数据的预测。
T^T(个人觉得对过拟合的阐述很不清楚,好想抽不擅长表达的自己一巴掌)
- 统计学习方法——模型的选择与评估(过拟合、泛化能力)
- 统计学习方法——模型的选择与评估(过拟合、泛化能力)
- 统计学习方法——模型的选择与评估(过拟合、泛化能力)
- 《统计学习方法》学习笔记(2)--模型选择、泛化能力
- 第1章 统计学习方法概论——第4~6节 模型选择、正则化和交叉验证、泛化能力
- 机器学习(六) - - 模型评估和选择①经验误差与过拟合
- 《机器学习》第二章 模型评估与选择 笔记2 泛化误差的评估方法
- 克服过拟合和提高泛化能力的20条技巧和诀窍
- 克服过拟合和提高泛化能力的20条技巧和诀窍
- 机器学习—模型评估与选择
- 正则化方法:防止过拟合,提高泛化能力
- 正则化方法:防止过拟合,提高泛化能力
- 正则化方法:防止过拟合,提高泛化能力
- 神经网络中的过拟合、泛化能力、L2正则化
- 正则化方法:防止过拟合,提高泛化能力
- 机器学习模型的容量,过拟合与欠拟合
- LSTM 模型的过拟合与欠拟合
- 神经网络优化方法(避免过拟合,提高模型泛化性)
- C++创建多级目录
- 腾讯云CVM服务器安装宝塔面板 快速安装可视化网站管理环节
- 1.2.在linux环境实践,使用vim编写一个程序,然后使用gcc查看【预处理】、【编译】、【汇编】、【链接】各阶段文件的内容。并熟悉相关指令。
- javascript----原型总结(2)(显示原型与隐式原型)
- 发布包到应用市场前,检验版本号等信息
- 统计学习方法——模型的选择与评估(过拟合、泛化能力)
- 2017沈阳站现场赛打表程序 F Heron and his Triange
- 字节和字符
- 01-linux命令
- 学习心得
- 斐波那契额数列 矩阵快速
- Linux网络编程——tcp并发服务器(多进程)
- java中各种集合的用法和比较
- Builder模式的误区:将复杂对象的构建进行封装,就是Builder模式了吗?