1.1多项式拟合

生成目标数据

目标数据集的生成方式:
  • 首先计算函数sin (2πx) 的对应的值
  • 然后给每个点增加一个小的符合高斯分布的随机噪声
  • 通过使用这种方式产生数据,它们拥有一个内在的规律,这个规律是我们想要学习的。同时也包含随即噪声,这种噪声可能由随机的过程产生,也可能是由于存在没有被观察到的具有变化性的噪声源。

训练数据和测试数据:

  • 训练数据用来训练多项式模型,来学习数据中的规律
  • 测试数据,测试模型在新数据上的泛化能力(测试集由100个数据点组成,这100个数据点的生成方式与训练集的生成方式完全相同,但是在目标值中包含的随机噪声的值不同.)

1.2数据可视化:

  • 10 个数据点组成的训练集的图像,用蓝色圆圈标记.
  • 100 个数据点组成的测试数据集,用黄色的圆圈标记.
  • 红色曲线给出了用来生成数据的sin (2πx) 函数.
  • 我们的目标是对于某些新的 x 值,预测 y 的值.

1.3 多项式函数拟合

f(x,w)=w0+w1x+w2x2+...+wMxM=∑j=0Mwjxjf(x, w) = w_0 + w_1x + w_2x^2 + ... + w_Mx^M = \sum^{M}_{j=0} w_jx^j f(x,w)=w0​+w1​x+w2​x2+...+wM​xM=j=0∑M​wj​xj

  • MMM : 多项式的阶数
  • www : 代表系数向量, w0,w2,w3,....wmw_0,w_2,w_3,....w_mw0​,w2​,w3​,....wm​

1.4 误差函数

  • 误差函数衡量了对于任意给定的 www 值,函数 f(x,w)f(x, w)f(x,w) 与训练集数据目标值的差别。

E(w)=12∑i=1N(f(xi,w)−y)2E(w) = \frac{1}{2} \sum^{N}_{i=1} (f(x_i, w) - y)^2 E(w)=21​i=1∑N​(f(xi​,w)−y)2

  • www : 系数向量,通过最小化误差函数来确定
  • f(x,w)f(x, w)f(x,w) : 从数据中学习得到的函数
  • 12\frac{1}{2}21​ : 系数为了方便计算
  • NNN : 样本的数量

1.5 多项式特征

例如,如果输入样本是二维的并且形式为[a,b][a,b][a,b],则2次多项式特征是[1,a,b,a2,ab,b2][1,a,b,a^2,ab,b^2][1,a,b,a2,ab,b2]。

sklearn,提供了多项式特征的方法:
from sklearn.preprocessing import PolynomialFeaturesX = np.arange(6).reshape(3, 2)poly = PolynomialFeatures(2)
poly.fit_transform(X)>>> array([[ 1.,  0.,  1.,  0.,  0.,  1.],[ 1.,  2.,  3.,  4.,  6.,  9.],[ 1.,  4.,  5., 16., 20., 25.]])

1.6 LinearRegression拟合多项式特征

1.6.1 拟合结果

  • ( M = 0 )和一阶( M = 1 )多项式对于数据的拟合效果相当差
  • 三阶( M = 3 )多项式似乎给出了对函数sin (2πx) 的最好的拟合
  • 当我们达到更高阶的多项式( M = 9 ),我们得到了对于训练数据的一个完美的拟合事实上,E(w∗)=0E(w^*) = 0E(w∗)=0。
  • 高阶多项式特征虽然完美拟合,然而,但是,拟合的曲线剧烈震荡,就表达函数sin (2πx) 而言表现很差。
  • 图四这种行为叫做过拟合( over-fitting )

1.7 测试

测试:通过对新数据的预测情况判断模型(f(x,w)f(x, w)f(x,w))的泛化性。

测试的方式为:
  • 通过一个额外的测试集,这个测试集由100个数据点组成,这100个数据点的生成方式与训练集的生成方式完全相同,但是在目标值中包含的随机噪声的值不同。我们可以定量考察模型的泛化性与 M(阶数) 的关系,对于每个 M ,计算测试集的 E(w)E(w)E(w) 。

有时候使用根均方(RMS)误差更方便。这个误差由下式定义:
Erms=2E(w∗)NE_{rms} = \sqrt{\frac{2E(w^*)}{N}} Erms​=N2E(w∗)​​

  • N : (样本点的数量)以相同的基础对比不同大小的数据集,
  • 平方根确保了ErmsE_{rms}Erms​与目标变量yyy使用相同的规模和单位进行度量。
     
学习曲线

1.7.1 测试结果

  • M(阶数)过大过小都会造成测试误差很大
  • 当 M 的取值为 3 ≤ M ≤ 6 时,测试误差较小

1.8 不同阶多项式的系数

0 1 2 3 4 5 6 7 8 9
0 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1 0.0 -1.438176 -0.985530 12.997090 17.383902 5.641664 -0.256404 1.924420 -4.560926 -215.451195
2 0.0 0.000000 -0.452646 -37.304887 -59.458286 38.420548 111.186592 75.201286 205.987591 5077.185412
3 0.0 0.000000 0.000000 24.568161 60.101335 -216.569502 -529.761376 -316.364404 -1302.830510 -45179.500599
4 0.0 0.000000 0.000000 0.000000 -17.766587 299.360835 904.596578 301.203617 4022.592501 210149.339158
5 0.0 0.000000 0.000000 0.000000 0.000000 -126.850969 -665.218737 214.704064 -7532.869930 -569098.691158
6 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 179.455923 -459.109693 8579.726633 928109.751580
7 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 182.447319 -5351.534105 -897238.544636
8 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1383.495356 473256.605051
9 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -104860.691043

系数分析:

  • 对于 M = 9,训练集的误差为0,此时的多项式函数有10个自由度,对应于10个系数w0,...w9w_0,...w_9w0​,...w9​,所以可以调节模型的参数,使得模型与训练集中的10个数据点精确匹配。
  • 因为高阶多项式包含了所有低阶的多项式函数作为特殊情况。 M = 9 的多项式因此能够产生至少与 M = 3 一样好的结果。
  • 随着 M 的增大,系数的大小通常会变大。对于 M = 9 的多项式,通过调节系数,让系数取相当大的正数或者负数,多项式函数可以精确地与数据匹配,但是对于数据之间的点(尤其是临近区间端点处的点),函数表现出剧烈的震荡。直觉上讲,发生了这样的事情:有着更大的 M 值的更灵活的多项式被过分地调参,使得多项式被调节成了与目标值的随机噪声相符。

1.9 曾加训练数据的数量

  • 给定同样的阶数(即模型的复杂度)
  • 对比在相同阶数和测试数据下,不同规模数据上模型的泛化情况
  • 红色模型的拟合曲线
增加训练数据.10倍,100倍

不同量级训练集对模型权重的影响


 

1.9.1结果分析

  • 给定的模型复杂度,当数据集的规模增加时,过拟合问题减弱
  • 数据集规模越大,我们能够用来拟合数据的模型就越复杂(即越灵活)
  • 数据点的数量不应该小于模型的可调节参数的数量的若干倍(比如5或10)
  • 因此,我们需要根据训练数据的规模来限制模型的复杂度(即参数的数量),根据待解决的问题的复杂性来选择模型的复杂性

1.10 正则化(regularization)

  • 正则化是一种控制过拟合现象的技术(即可以在不限制模型复杂度的情况下,降低过拟合)
  • 一般给误差函数增加一个惩罚项,使得系数不会达到很大的值(减小系数的值)
增加L2正则项后的误差函数

E(w)=12∑i=1N(f(x,w)−y)2+λ2∥w2∥E^~(w) = \frac{1}{2} \sum^{N}_{i=1} (f(x, w) - y)^2 + \frac{\lambda}{2}\parallel w^2 \parallelE (w)=21​i=1∑N​(f(x,w)−y)2+2λ​∥w2∥

  • ∥w2∥=w02+w12+w22+....wM2\parallel w^2 \parallel = w^{2}_0 + w^{2}_1 + w^{2}_2 + .... w^{2}_M∥w2∥=w02​+w12​+w22​+....wM2​
  • λ\lambdaλ : 控制正则化的程度,λ\lambdaλ越大,www的值越小.
  • 注意,通常系数w0w_0w0​从正则化项中省略

不同正则化系数对模型泛化效果的影

...未完待续

多项式拟合,模型的复杂度以及权重的变化相关推荐

  1. python 数据拟合 预测_GitHub - wanng-ide/Python-WeChat-Predict: 用现有的数据对微信公众号的一些数据做一个预测,主要采用多项式拟合来构建模型。...

    Python-WeChat-Predict 用现有的数据对微信公众号的一些数据做一个预测,主要采用多项式拟合来构建模型. 概述 项目主要内容是对32个微信公众号在30天的数据进行处理,初始数据全部保存 ...

  2. java 多项式拟合最多的项数_机器学习(1)--线性回归和多项式拟合

    机器学习(1)--线性回归和多项式拟合 机器学习(2)逻辑回归 (数学推导及代码实现) 机器学习(3)softmax实现Fashion-MNIST分类 一 线性回归 线性回归,顾名思义是利用线性模型对 ...

  3. 机器学习实验一-多项式拟合

    一.实验目的 掌握最小二乘法求解(无惩罚项的损失函数).掌握加惩罚项(2范数)的损失函数优化.梯度下降法.共轭梯度法.理解过拟合.克服过拟合的方法(如加惩罚项.增加样本) 实验要求及实验环境 实验要求 ...

  4. 线性回归+逻辑回归+过拟合+模型评估笔记

    笔记 什么是线性回归 具体的内容 参数计算 什么是逻辑回归?(什么问题) 具体的内容(怎么解决的?) 建立预测函数(线性回归再套一个函数) Sigmoid函数(Logistic函数) 损失函数 逻辑回 ...

  5. python多项式拟合问题

    某次项目中遇到,需要预测某个值.数据大概是这样的: 有4个特征,特征之间数据差异较大,根据四个特征预测需要预测一个值,数据量是24条.其实就是一个多项式的拟合问题.刚开始,我想着用一些简单的模型去拟合 ...

  6. 回归概述——多项式拟合

    数据生成 假设当观察到一个实值的输入变量 x\mathcal xx,而想利用这些观测数据来预测实值变量 ttt.数据由以一个带有噪声的由函数 sin(2πx)sin(2\pi\mathcal x)si ...

  7. 多项式模型与多项式拟合

    3. 多项式模型 (一元多次方程) 3.1 多项式拟合 在有些数据分布中,使用一条曲线比直线能更好拟合数据,这就需要用到多项式拟合.如下图所示分布: 多项式的一般形式: y=p0xn+p1xn−1+p ...

  8. 机器学习——多项式拟合

    文章目录 一.多项式拟合 1.1 多项式函数拟合 1.2 过拟合与正则化 1.3 维数灾难 二.基于概率的曲线拟合 2.1 高斯分布 2.2 重新理解曲线拟合 最大似然 最大化后验概率(maximum ...

  9. 利用numpy对已知样本点进行多项式拟合

    0.导入相关包: import matplotlib.pyplot as plt import numpy as np 1.假设有如下样本点: #使用随机数产生样本点 x=[1,2,3,4,5,6,7 ...

  10. matlab练习程序(最小二乘多项式拟合)

    最近在分析一些数据,就是数据拟合的一些事情,用到了matlab的polyfit函数,效果不错. 因此想了解一下这个多项式具体是如何拟合出来的,所以就搜了相关资料. 这个文档介绍的还不错,我估计任何一本 ...

最新文章

  1. 针对BCH阵营对立,BU开发组提出投票妥协策略
  2. python【数据结构与算法】对python抽象的再探索(看不懂你来打我)
  3. log4j的配置参数
  4. zigbee协议栈学习(二)
  5. 在django中使用django_debug_toolbar
  6. java jvm崩溃_IObjects java 代码导致jvm崩溃了
  7. MySQL的root默认密码修改
  8. codeforces1167 E. Range Deleting(双指针)
  9. Objective-C 一些很基础的总结
  10. 【Vue2.0】—过滤器(七)
  11. php生成超链接完整代码_PHP自动把网站自动添加超链接怎么写
  12. Tensorflow-gpu运行时报错Non-OK-status: GpuLaunchKernel
  13. 【UEFI基础】PCD
  14. 华硕S400装win7
  15. axios处理特大数据碰到的问题
  16. 十年前你绝对没有看懂的《大话西游》.
  17. 浏览器未连接到互联网
  18. 4月5号-4月11号
  19. [Swift]LeetCode1031. 两个非重叠子数组的最大和 | Maximum Sum of Two Non-Overlapping Subarrays...
  20. TensorFlow实现多层感知机

热门文章

  1. JavaSE总结(适合Java期末考试复习,JavaSE部分知识回顾)
  2. 4.json字符串转换集json对象、json对象转换json字符串
  3. 程序员找工作?只凭感觉去面试?不要做白日梦了,程序员必备面试题,脱口而出的专业语言,让你的薪水翻一番,建议收藏
  4. sql 怎么查一个账号连续登录失败的次数_黑客到底是怎么入侵的,我展示给你看...
  5. 华为云盘里面的照片怎么导出来_华为手机误删照片,怎么恢复?别急!只需点击这里...
  6. C#+TaskScheduler(定时任务)实现定时自动下载
  7. spring security实战 3-使用授权码模式( Authorization Code grant)保护资源
  8. ECS 还是轻量应用服务器,看完评测你就知道了?
  9. 基于OSSIM平台下华为交换机日志收集插件的开发
  10. 国都企信通短信平台发送手机短信的python脚本一例