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

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

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

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


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

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

系数怎么求?

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

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

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

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

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

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

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

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

新的指标:——均方根

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

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

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

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

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

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

避免过拟合问题

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

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

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

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

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

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

其中,

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

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

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

总结:

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

【PRML读书笔记-Chapter1-Introduction】1.1 Example:Polynomial Curve Fitting的更多相关文章

  1. 一起啃PRML - 1.1 Example: Polynomial Curve Fitting 多项式曲线拟合

    一起啃PRML - 1.1 Example: Polynomial Curve Fitting @copyright 转载请注明出处 http://www.cnblogs.com/chxer/ 前言: ...

  2. PRML读书笔记——Introduction

    1.1. Example: Polynomial Curve Fitting 1. Movitate a number of concepts: (1) linear models: Function ...

  3. PRML读书笔记——3 Linear Models for Regression

    Linear Basis Function Models 线性模型的一个关键属性是它是参数的一个线性函数,形式如下: w是参数,x可以是原始的数据,也可以是关于原始数据的一个函数值,这个函数就叫bas ...

  4. 《深入PHP与jQuery开发》读书笔记——Chapter1

    由于去实习过后,发现真正的后台也要懂前端啊,感觉javascript不懂,但是之前用过jQuery感觉不错,很方便,省去了一些内部函数的实现. 看了这一本<深入PHP与jQuery开发>, ...

  5. PRML读书笔记——机器学习导论

    什么是模式识别(Pattern Recognition)? 按照Bishop的定义,模式识别就是用机器学习的算法从数据中挖掘出有用的pattern. 人们很早就开始学习如何从大量的数据中发现隐藏在背后 ...

  6. PRML读书笔记——2 Probability Distributions

    2.1. Binary Variables 1. Bernoulli distribution, p(x = 1|µ) = µ 2.Binomial distribution + 3.beta dis ...

  7. PRML读书笔记——Mathematical notation

    x, a vector, and all vectors are assumed to be column vectors. M, denote matrices. xT, a row vcetor, ...

  8. 【PRML读书笔记-Chapter1-Introduction】1.6 Information Theory

    熵 给定一个离散变量,我们观察它的每一个取值所包含的信息量的大小,因此,我们用来表示信息量的大小,概率分布为.当p(x)=1时,说明这个事件一定会发生,因此,它带给我的信息为0.(因为一定会发生,毫无 ...

  9. 【PRML读书笔记-Chapter1-Introduction】1.5 Decision Theory

    初体验: 概率论为我们提供了一个衡量和控制不确定性的统一的框架,也就是说计算出了一大堆的概率.那么,如何根据这些计算出的概率得到较好的结果,就是决策论要做的事情. 一个例子: 文中举了一个例子: 给定 ...

随机推荐

  1. 【原创】jmeter3.0在beanshell中输入中文乱码以及字体大小的更改

    我使用的是最新的jmeter3.0版本,新建一个beanshell sampler,在里面输入中文,发现显示的是乱码,而且字体非常小,看着吃力,调研了一下,可以在bin/jmeter.properti ...

  2. iOS开发——高级技术&GameCenter服务

    GameCenter服务 Game Center是由苹果发布的在线多人游戏社交网络,通过它游戏玩家可以邀请好友进行多人游戏,它也会记录玩家的成绩并在排行榜中展示,同时玩家每经过一定 的阶段会获得不同的 ...

  3. php中的邮件技术

    前言:程序员不谈恋爱就是对物质世界太贪恋 一.通过smtp服务来发送邮件 使用php中的mail()实现邮件的发送; bool mail ( string $to , string $subject ...

  4. Template Method模式和Strategy模式[继承与委托]

    继承 program by difference. 通过继承,可以建立完整的软件结构分层.其中每一层都可以重用该层次以上的Code. 过度使用继承的代价是巨大的.应使用组合或者委托来替代继承. Tem ...

  5. hive函数 -- split 字符串分割函数

    hive字符串分割函数 split(str, regex) - Splits str around occurances that match regexTime taken: 0.769 secon ...

  6. 25数据查询的各种小玩法-select上(必学)-天轰穿sqlserver视频教程

    大纲:简单查询-选择数据列,使用字符串,改变列标题,使用数据运算 优酷超清地址,为了冲优酷的访问量,所以这里只放优酷的地址了,其实其他网站还是都传了的哈.

  7. android: Android Notification

    Notification即通知,用于在通知栏显示提示信息. 在较新的版本中(API level  > 11),Notification类中的一些方法被Android声明deprecated(弃用 ...

  8. loadlibrary DLL 0失败 的一个原因。

    加载DLL失败,因为 dll 中有一个全局类变量,由于在构造函数 没有初始化变量,导致 初始化 失败 异常. C++ 变量没有初始值,全部都要 手动赋值 为 0 的这个特性 还真是烦人呢...

  9. Android系列--DOM、SAX、Pull解析XML

    您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...

  10. Linux录屏软件

    如何查找录屏软件 apt-cache search screen record libutempter-dev - privileged helper for utmp/wtmp updates (d ...