机器学习学习笔记-多项式中的过拟合,泛化能力等
引用于
机器学习中模型泛化能力和过拟合现象(overfitting)的矛盾、以及其主要缓解方法正则化技术原理初探 - 郑瀚Andrew.Hann - 博客园 (cnblogs.com)
说在前面的一点东西
经验风险最小化最优模型
结构风险最小化 structure risk minimization,为防止过拟合提出的策略,等价于正则化(regularization),加入正则化项regularizer,或罚项 penalty term:
产生过拟合和(over-fitting)和效果不好的原因
我们以一个简单的回归问题开始,说明许多关键的概念。 假设我们观察到一个实值输入变量x,我们想使用这个观察来预测实值目标变量t的值。
对于这个目的,一个很好的方法是考虑一个使用已知的产生方式人工制造出的例子,因为这样我们就知道生成数据的精确过程(动力学过程),从而能够和我们学习到得模型进行比较。这个例子的数据由函数sin(2πx)产生,目标变量带有随机的噪声。
现在假设给定一个训练集。这个训练集由x的N次观测组成,写作:
x ≡ (x1,...,xN)T
伴随着对应的t的观测值,记作:
t ≡ (t1,...,tN)T
下图展示了由N = 10个数据点组成的图像:
目标数据集t的获得方式是:
- 首先计算函数sin(2πx)的对应的值。
- 然后给每个点增加一个小的符合高斯分布的随机噪声,从而得到对应的tn的值。
通过使用这种方式产生数据,我们利用了许多真实数据集合的一个性质,即它们拥有一个内在的规律,这个规律是我们想要学习的,但是独自的观察被随机噪声干扰。
这种噪声可能由一个本质上随机的过程产生,例如放射性衰变,但是更典型的情况是由于存在没有被观察到的具有变化性的噪声源。
我们的目标是利用这个训练集预测对于输入变量的新值 x 的目标变量的值 t。
这涉及到隐式地发现内在的函数sin(2πx)。这本质上是一个困难的问题,因为我们不得不从有限的数据中生成模型。
因为观察到的数据被噪声干扰,因此对于一个给定的 x,合适的 t 值具有不确定性。
现在,我们用一种相当非正式的、相当简单的方式来进行曲线拟合:
其中M是多项式的阶数(order),xj 表示 x 的 j 次幂。多项式系数 w0,...,wM 整体记作向量w。
注意,虽然多项式函数 y(x, w)是 x 的一个非线性函数,它是系数w的一个线性函数。这一点对后面我们理解因为训练集不充分导致最优解不唯一问题有帮助。
系数的值可以通过调整多项式函数拟合训练数据的方式确定。这可以通过最小化误差函数 (error function)的方法实现。
我们可以通过选择使得 E(w) 尽量小的 w 来解决曲线拟合问题。由于误差函数是系数 w 的二次函数,因此它关于系数的导数是 w 的线性函数,所以误差函数的最小值有一个唯一解,记作w∗,可以用解析的方式求出。
最终的多项式函数由函数y(x, w∗)给出。这是一个纯数学问题,没有什么好特别讨论的。我们本文的重点是讨论过拟合问题,过拟合问题和阶数 M 紧密相关。
在下图中,我 们给出了4个拟合多项式的结果。多项式的阶数分别为M = 0, 1, 3, 9:
不同阶数的多项式曲线,用红色曲线表示,绿色表示原始目标函数曲线
我们注意到:
- 常数(M = 0),和一阶(M = 1)多项式对于数据的拟合效果相当差,很难代表函数sin(2πx)。
- 三阶(M = 3)多项式似乎给出了对函数sin(2πx)的最好的拟合。
- 当我们达到更高阶的多项式(M = 9),我们似乎得到了对于训练数据的一个完美的拟合。事实上,多项式函数精确地通过了每一个数据点,E(w∗) = 0。然而,拟合的曲线剧烈震荡,就表达函数sin(2πx)而言表现很差。这种行为叫做过拟合(over-fitting)。
正如我们之前提到的,机器学习的目标是通过对新数据的预测实现良好的泛化性。
我们可以定量考察模型的泛化性与 M 的关系。考察的方式为:考虑一个额外的测试集,这个测试集由100个数据点组成,这100个数据点的生成方式与训练集的生成方式完全相同,但是在目标值中包含的随机噪声的值不同。对于每个M的选择,我们计算训练集和测试集的误差:
- 小的 M 值会造成较大的测试集误差,这可以归因于对应的多项式函数相当不灵活,不能够反映出sin(2πx)的震荡。
- 当 M 的取值为3 ≤ M ≤ 8时,测试误差较小,对于生成函数sin(2πx)也能给出合理的模拟。
- 对于 M = 9的情形,训练集的误差为0,这符合我们的预期,因为此时的多项式函数有10个自由度,对应于10个系数w0, . . . , w9,所以可以调节模型的参数,使得模型与训练集中的10个数据点精确匹配。然而,正如我们在上图中看到的那样,测试集误差变得非常大,对应的函数y(x, w∗)表现出剧烈的震荡。
发生这个情况的原因
题的原因可以被归纳为两句话:
- 训练集的不充分,导致了目标函数非唯一解的问题。这方面的讨论可以参阅另一个文章。
- 而随机噪声的存在,以及过度复杂的模型,导致了过拟合问题的发生,即模型过度地进行了调参。同时,训练集不充分问题,又加剧了过拟合。
由此,我们可以得出第一个直觉判断:
有效控制模型复杂度,可以有效缓解过拟合问题
很有趣的
对已一个给定的模型复杂度,当数据集的规模增加时,过拟合问题变得不那么严重
0. 什么是泛化能力?如何评估
泛化能力是模型对未知数据的预测能力。大白话来说就是,模型训好了,放到实际场景中去使用,会不会掉链子,还是能达到跟训练时一样的效果。泛化能力的本质就是反映模型有没有对客观世界做真实的刻画,还是发生了过拟合。
泛化能力的评估,说简单很简单,搞个测试集测一下就可以了。
作者:迪丽娜扎
链接:https://www.jianshu.com/p/849423297c7f
来源:简书
2. 偏差与方差 - 机器学习算法泛化性能分析
在一个项目中,我们通过设计和训练得到了一个model,该model的泛化可能很好,也可能不尽如人意,其背后的决定因素是什么呢?或者说我们可以从哪些方面去改进从而使下次得到的model更加令人满意呢?
”偏差-方差分解(bias-variance decomposition)“是解释学习算法泛化能力性能的一种重要工具。偏差-方差分解试图对学习算法的期望泛化错误率进行拆解。
假设测试样本为x,yd 为 x 在数据集中的标记(注意,有可能出现噪声使得 yd != y,即所谓的打标样本不纯),y 为 x 的真实标记,f(x;D)为在训练集 D 上训练得到的模型 f 在 x 上的预测输出。
以回归任务为例,学习算法的期望预测为:
上式可被分解为:
整理得:
即,泛化误差可分解为:偏差、方差、噪声之和。
机器学习学习笔记-多项式中的过拟合,泛化能力等相关推荐
- 深度学习笔记整理(五)——提高泛化能力的方法
1.训练样本 数据增强 方法:通过对样本图像平移.旋转或镜像翻转,增加样本数量: 优点:使有限的数据得到最大程度的有效利用. 使用大规模数据集 ImageNet:基于WorldNet,按层级图像分类, ...
- 吴恩达机器学习学习笔记第七章:逻辑回归
分类Classification分为正类和负类 (规定谁是正谁是负无所谓) 吴恩达老师举例几个例子:判断邮箱是否是垃圾邮箱 一个在线交易是否是诈骗 一个肿瘤是良性的还是恶性 如果我们用之前学习的lin ...
- R语言与机器学习学习笔记(分类算法)
转载自:http://www.itongji.cn/article/0P534092014.html 人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型.神经 ...
- 【机器学习笔记】可解释机器学习-学习笔记 Interpretable Machine Learning (Deep Learning)
[机器学习笔记]可解释机器学习-学习笔记 Interpretable Machine Learning (Deep Learning) 目录 [机器学习笔记]可解释机器学习-学习笔记 Interpre ...
- 机器学习学习笔记(一)绪论
机器学习学习笔记(一)绪论 声明在开头:本篇文章主要是针对周志华教授的<机器学习>的学习心得. A. 机器学习初见 ArthurArthurArthur SamuelSamuelSamue ...
- 天池龙珠训练营-机器学习学习笔记-03 LightGBM 分类
天池龙珠训练营-机器学习学习笔记-03 LightGBM 分类 本学习笔记为阿里云天池龙珠计划机器学习训练营的学习内容,学习链接为:训练营 一 原理简介: 它是一款基于GBDT(梯度提升决策树)算法的 ...
- 机器学习学习笔记(13)----岭回归(Ridge回归)
在<机器学习学习笔记(4)----线性回归的数学解析>,我们通过计算线性模型的损失函数的梯度,得到使得损失函数为最小值的的解析解,被称之为普通最小二乘法: (1) 公式(1)能够求得 ...
- [学习笔记]多项式指数函数
https://blog.csdn.net/semiwaker/article/details/73251486 已知$B(x)$求:$A(x)=e^{B(x)}$ 根据麦克劳林展开:$e^{B(x) ...
- r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数
在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//") > setwd("e:\桌面\") > ...
最新文章
- 吴恩达邀请9位AI大牛畅想2020:李开复看好医疗教育,LeCun强调自监督学习
- MVC中一个表单实现多个提交按钮(一个action搞定添删改)
- php 动态网格,php-动态更改引导网格方向(从ltr到rtl或reverese)
- Google Apps – Framework, Phonesky, GmsCore w/ AOSP Build.
- prometheus之DCGM监控GPU
- 使用LocalTestServer对HTTP调用进行单元测试
- diy直立双足机器人_Aelos Pro 机器人:让编程变得更有趣
- 为什么同样是读书,有人能让自己的收益提高50倍,而你只能成为文艺的中年大叔?
- 【数字逻辑设计】Logisim构建四位行波进位加法器
- Sql Server和oracle的函数区别总结
- 安卓窗口动画修改制作心得
- python如何在文本内排序_在python中对文本文件中的项进行排序
- Job for slapd.service failed because the control process exited with error code. See systemctl stat
- Windows 8 Metro中文件的操作及访问(读写删除复制)
- 【python快速入门】—唐宇迪课程笔记
- ZUCC计算机网络 网络安全
- Linux下的WPS安装
- android+动态隐藏图标,2018安卓手机怎么隐藏图标 进入隐藏应用界面
- python怎么选取不连续的列_用pandas中的DataFrame时选取行或列的方法
- 为什么夏天家里空调滴水