Locally weighted linear regression(局部加权线性回归)
(整理自AndrewNG的课件,转载请注明。整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/)
前面几篇博客主要介绍了线性回归的学习算法,那么它有什么不足的地方么?怎么改进呢?这就是本篇的主题。
为了引出问题,先看一个关于线性的例子,选取不同的特征会得到不同结果。考虑给定一组数据,我们要进行线性回归,得到
和
之间的关系。提出了三种不同的特征的选择方式,结果如下:

左图,选取一个特征,假设为
,我们可以看到数据不能很好的和数据相吻合。
中图,我们选取了两个特征和
,假设为
,我们可以看到拟合效果变好了。那是不是特征越多越好呢?非也。
右图,一共6个数据点,所以用5阶多项式就可以做到所有的数据点都在曲线上了,假设为。虽然将数据点拟合的很perfect,但是我们不认为这是一个很好的假设,因为它不能做到很好的预测。
我们称左图的拟合效果为underfitting(欠拟合),数据中的明显的结构关系没有被模型所捕获。称右图的拟合效果为overfitting(过拟合),这种假设只是用于特定的数据,预测效果不好。中图的效果最好,那我们应该如何选择特征,使得假设的效果最好?有人说了,那就挨个试呗,先选择1个特征,看效果,2个特征,看效果。。。。我们可不愿意做这种事情。
就像上面讨论的那样,特征的选择对学习算法的性能至关重要,那有没有自动选择特征集的算法,或者是让特征的选择对结果影响不那么大?这就是我们要介绍的Locally weight-
ed linear regression (LWR),这个算法对特征集要求不是非常的严格。
在最初的线性回归算法中,对于输入变量,我们要预测
,我们通常要做的:

相对而言,对于局部加权线性回归,我们要做:
,这里多了一个权值项。直观上,
的值越大,它所对应的
对结果的影响越大,反之越小。
我们选择的形式如下:
,其中的就是我们要预测的输入变量。为了理解,看下图:
,显然,当足够小时,
近似为1;当
足够大时,
近似为0;也就是说离
很近的样本会得到接近为1的权值,很远的样本权值近乎为0。所以我们无们可以这样理解:在
局部构成了线性回归算法,对于
的学习,主要依赖于
附近的点。如下图:
,图中红色直线使用线性回归做的结果,黑色直线使用LWR做的结果,可以看到局部加权回归的效果较好。
在让我们来看一下形式的的形式,和高斯函数形式很像,但和那一点关系都没有哦!
是波长参数,控制了权值随距离的下降速率。
总结一下:LWR算法是我们遇到的第一个non-parametric(非参数)学习算法,而线性回归则是我们遇到的以一个parametric(参数)学习算法。所谓参数学习算法它有固定的明确的参数,参数一旦确定,就不会改变了,我们不需要在保留训练集中的训练样本。而非参数学习算法,每进行一次预测,就需要重新学习一组
,
是变化的,所以需要一直保留训练样本。也就是说,当训练集的容量较大时,非参数学习算法需要占用更多的存储空间,计算速度也较慢。有得必有失,效果好当然要牺牲一些其他的东西。人不一定什么都擅长,只要有自己的特点就可以了!!
Locally weighted linear regression(局部加权线性回归)的更多相关文章
- Locally Weighted Linear Regression 局部加权线性回归-R实现
局部加权线性回归 [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt 作为一个初学者,水平有限,欢迎交流指正. 线性回归容易出现过拟合或欠拟合的问 ...
- 局部加权回归、欠拟合、过拟合(Locally Weighted Linear Regression、Underfitting、Overfitting)
欠拟合.过拟合 如下图中三个拟合模型.第一个是一个线性模型,对训练数据拟合不够好,损失函数取值较大.如图中第二个模型,如果我们在线性模型上加一个新特征项,拟合结果就会好一些.图中第三个是一个包含5阶多 ...
- 局部权重线性回归(Locally weighted linear regression)
在线性回归中,因为对參数个数选择的问题是在问题求解之前已经确定好的,因此參数的个数不能非常好的确定,假设參数个数过少可能拟合度不好,产生欠拟合(underfitting)问题,或者參数过多,使得函数过 ...
- 局部加权线性回归(Locally weighted linear regression)
首先我们来看一个线性回归的问题,在下面的例子中,我们选取不同维度的特征来对我们的数据进行拟合. 对于上面三个图像做如下解释: 选取一个特征,来拟合数据,可以看出来拟合情况并不是很好,有些数据误差还是比 ...
- 线性回归(最小二乘法、批量梯度下降法、随机梯度下降法、局部加权线性回归) C++
We turn next to the task of finding a weight vector w which minimizes the chosen function E(w). Beca ...
- matlab练习程序(局部加权线性回归)
通常我们使用的最小二乘都需要预先设定一个模型,然后通过最小二乘方法解出模型的系数. 而大多数情况是我们是不知道这个模型的,比如这篇博客中z=ax^2+by^2+cxy+dx+ey+f 这样的模型. 局 ...
- 斯坦福CS229机器学习课程笔记 Part1:线性回归 Linear Regression
机器学习三要素 机器学习的三要素为:模型.策略.算法. 模型:就是所要学习的条件概率分布或决策函数.线性回归模型 策略:按照什么样的准则学习或选择最优的模型.最小化均方误差,即所谓的 least-sq ...
- Locally weighted regression algorithm
在此引出另一种模型:Locally weighted regression algorithm(LWLR/LWR),通过名字我们可以推断,这是一种更加关注局部变化的模型.的确如此,在普通的linear ...
- Locally weighted regression algorithm
之前所讨论的梯度下降算法,其算法模型是“线性回归模型”,我们可以理解为变量与因变量之间的关系是线性的.而现实情况是,使用线性模型去描述所有数据,很容易出现欠拟合(underfitting)的情况:同样 ...
随机推荐
- 永久性for循环配合switch语句可以实现菜单功能
永久性for循环配合switch语句可以实现菜单功能总结:加入想要无条件地跳转到某条语句执行,用goto语句: 加入想要对某种条件进行判断,为真或为假分别执行不同的语句,用if语句 加入想要检测的条件 ...
- goahead 移植
1.网上下载goahead-3.1.-0-src.tgz包 2.解压 tar -zxvf goahead-3.1.-0-src.tgz 3.编译 cd goahead-3.1.-0 make CC=a ...
- 使用zabbix监控nginx
在zabbix agentd客户端上,查看nginx是否加载了--with-http_stub_status_module.因为zabbix监控nginx是根据 nginx的Stub Status模块 ...
- 一个load飙高的过程分析,非常有价值(转)
关于us高和sy高的问题分析: 当us值过高时,表示运行的应用消耗大量的CPU.java应用造成us高的原因主要是线程一直处于可运行(Runnable)状态,通常这些线程在执行无阻塞.循环.正则或纯粹 ...
- 基于visual Studio2013解决算法导论之029二叉搜索树
题目 二叉搜索树 解决代码及点评 #include <stdio.h> #include <malloc.h> #include <stdlib.h> ty ...
- Android 涂鸦最佳实践
Android中实现手势画图一般都两种方式,一是直接在View上绘制,而是使用SurfaceView. 两者还是有一些差别的.简介下. View:显示视图,内置画布,提供图形绘制函数.触屏事件.按键事 ...
- Android 实现在线程中联网
其实我们要牢记的是,对数据流的操作都是阻塞的,在一般情况下,我们是不需要考虑这个问题的,但是在Android 实现联网的时候,我们必须考虑到这个问题.比如:从网络上下载一张图片: Java代码: pu ...
- 再造 “手机QQ” 侧滑菜单(三)——视图联动
代码示例:https://github.com/johnlui/SwiftSideslipLikeQQ 本 文中,我们将一起使用 UINavigationController 来管理主视图,并实现点击 ...
- BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式( 二分答案 + 后缀数组 )
二分答案m, 后缀数组求出height数组后分组来判断. ------------------------------------------------------------ #include&l ...
- [转]tripwire-文件指纹
原文链接:http://www.ipython.me/centos/tripwire-file-md5.html Tripwire是目前最为著名的unix下文件系统完整性检查的软件工具,这一软件采用的 ...