zoukankan      html  css  js  c++  java
  • 【PRML读书笔记-Chapter1-Introduction】1.1 Example:Polynomial Curve Fitting

    image

    书中给出了一个典型的曲线拟合的例子,给定一定量的x以及对应的t值,要你判断新的x对应的t值多少.

    任务就是要我们去发现潜在的曲线方程:sin(2πx)

    这时就需要概率论的帮忙,对于这种不确定给t赋何值的情况,它可以通过一种精确和量化的方式来提供一种框架,

    而对于决策理论,为了根据适当的度量方式来获取最优的预测,它允许我们挖掘一种概率模型.


    下面对于上面的例子展开讨论:

    假设曲线的多项式方程为:image

    系数怎么求?

    通过把多项式去拟合训练数据,我们需要设定一个error function,通过最小化这个error functions,可以求的系数.

    errorfunctions有很多种定义,书中给出一种:

    image

    (1/2是为了后面计算方便设定的)

    image

    当error functions为0时,说明最小,也就是说这个函数用在训练集中的所有数据点上都是准确的.在这里,如果这个error functions是一个二次函数的话,要最小化这个函数,也就是说这个函数具有唯一解.假设为w*(这是一个向量),那么最终的多项式就是y(x,w*).

    多项式的幂M设为多少合适?

    书中 以M=0,1,3,9来计算:

    image

    可以观察到,M=3时表现的最好.M=9的时候,过拟合了,显然不是我们想要的.

    因此对于M的选择,我们可以采用其他一些量化的方法,采用100个数据点:

    新的指标:image——均方根

    我们可以发现,这里有除以N这一项,通过除以N,我们可以把100个数据点的数据和10个数据点的数据平等地对待.平方根确保Erms是在相同的规模内,单元内测量得到的.

    对于不同的M,Erms被测的:

    image

    可以发现,对于M=9(w0,w1,…,w8,w9)的时候,对训练集的拟合度很高,但对于测试集的拟合度很差.

    随着M的增大,多项式的幂不断增大,尽管多项式变得更灵活,但是它所带来的随机噪声也在随机增大;

    其次,数据点的数量不能少于参数的数量.

    利用最小二乘法来找出模型的参数是极大似然法的一个特例.过拟合可以理解为是极大似然估计法的一般属性.通过贝叶斯方法,可以避免过拟合问题(

    避免过拟合问题

    避免过拟合问题有一个常用的方法就是正则化,

    对于正则化的理解,知乎上有一段:

    -------------------------------------------------------正则化----------------------------------------------------------

    正则化的目的:避免出现过拟合(over-fitting)
    经验风险最小化 + 正则化项 = 结构风险最小化
    经验风险最小化(ERM),是为了让拟合的误差足够小,即:对训练数据的预测误差很小。
    但是,我们学习得到的模型,当然是希望对未知数据有很好的预测能力(泛化能力),这样才更有意义。
    当拟合的误差足够小的时候,可能是模型参数较多,模型比较复杂,此时模型的泛化能力一般。于是,我们增加一个正则化项,它是一个正的常数乘以模型复杂度的函数,aJ(f),a>=0 用于调整ERM与模型复杂度的关系。
    结构风险最小化(SRM),相当于是要求拟合的误差足够小,同时模型不要太复杂(正则化项的极小化),这样得到的模型具有较强的泛化能力。
    可以去了解奥卡姆剃刀原理(Occam's razor),帮助你理解正则化,实际上是一个道理。

    -------------------------------------------------------正则化----------------------------------------------------------

    在从书中了解一下正则化的表达式:

    image

    其中,image

    λ 用于控制最小二乘法和惩罚函数之间的关系.

    还是刚才那个例子,看一下当M=9+正则化之后的曲线:

    image

    显然,通过正则化,更加接近sin(2πx).

    总结:

           λ是用于有效地控制模型的复杂度,避免过拟合,在上例中,我们通过不断地尝多种不同的M和λ来确定他们的最优值.显然,这不是最好的方法,必须寻求一些更加复杂的方法.

  • 相关阅读:
    python:封装连接数据库方法
    Python:self理解
    python:pytest优秀博客
    python:pytest中的setup和teardown
    python:单元测试框架pytest的一个简单例子
    java中的static关键字解析
    浅谈Java中的final关键字
    SpringMVC+Spring+Mybatis框架集成
    Mybatis学习总结(四)——输入映射和输出映射
    Mybatis学习总结(三)——SqlMapConfig.xml全局配置文件解析
  • 原文地址:https://www.cnblogs.com/XBWer/p/4517756.html
Copyright © 2011-2022 走看看