转自http://www.cnblogs.com/jeromeblog/p/3396486.html

简单回顾一下线性回归。我们使用了如下变量:x—输入变量/特征;y—目标变量;(x,y)—单个训练样本;m—训练集中的样本数目;n—特征维度;(x(i),y(i))—第i个训练样本。在接下来的内容中,仍沿用这些标识。我们给定的模型假设为:

hθ(x)=θ0+θ1x1+⋯+θnxn=∑i=1nθixi=θTx(1)

代价函数定义如下:

J(θ)=12∑i=0m(hθ(x(i))−y(i))2(2)

在线性回归问题中,特征的选择会直接影响到模型的性能。如下图所示,仅使用一个特征x时,很多样本点都没落到直线上,模型的拟合程度不怎么好;如果我们增加一个特征x2,拟合效果好很多;如果用5阶多项式来拟合,可以保证图中的6个样本点全部落在曲线上。这种现象不禁让我们想,是不是使用的特征越多越好?答案是否定的。左图存在的问题称之为欠拟合(underfitting),该模型过于简单,不足以捕捉数据的诸多结构信息;右图存在的问题称之为过拟合(overfitting),模型设计得过于复杂,虽能完美拟合训练集集上的数据信息,却不能揭示更一般化的规律。

下面介绍线性回归的一种改进算法——局部加权回归(Locally Weighted Regression,LWR)。局部加权回归是一种非参数(non-parametric)型学习算法,能在一定程度上将我们从特征选择的困境中拉出来一点。参数型学习算法事先假设数据来自某种模型,然后推断模型参数。这类学习算法通常都有固定数目的参数,一旦学习到参数后,模型也就建立起来了,接下来就能扔掉训练数据并利用该模型独立完成任务。如果事先的假设与实际情况比较接近,模型可以给出比较准确的估计;否则,估计到的参数会有很强的误导性。非参数型学习算法不会事先指定模型,其参数由训练数据决定。这里的非参数不是说完全没有参数,而是指参数数目不是固定的,并且会随训练集规模的增加而增多。此外,我们必须保留整个训练集,以便后续进行完成后续的任务。

结合上图来阐述局部加权回归的主要思想。绿色的样本点(采样自抛物线)为训练集中的数据。利用线性回归拟合该训练集,最终得到红线表示的线性模型,很显然该模型在训练集上的拟合程度相当差,对特定查询点(Query Point)给出的估计与实际情况相差甚远。局部加权回归则重点考虑查询点附加的样本点(如红色圆形划定的样本集合),然后在这个样本子集合上执行加权线性回归,得到紫色直线所示的模型。该模型在估计查询点附近的样本时准确度还是很高的。权值是由样本点与查询点间的相似度(在几何空间可用距离度量)决定,越相似的权值越大,差异越大的权值几乎为0(相当于忽略这些样本)。

权值函数有很多种,只要满足两个基本条件即可:1)相似样本间权值较大;2)相似度非常小的样本间权值近似为0。最常用权值函数如下:

w(i)=exp(−∥x(i)−x∥22τ2)(3)

∥x(i)−x∥2为第i个样本x(i)和查询点x之间的欧式距离。显然,当∥x(i)−x∥2很小时,w(i)≈1;当∥x(i)−x∥2很大时,w(i)≈0。参数τ称为带宽参数(Bandwidth Parameter),控制权值随距离变量的速度。如下图所示,τ越小,权值变化越平缓;τ越大权值变化越快。

加权线性回归的目标函数形式如下:

J(θ)=12∑i=1mw(i)(hθ(x(i))−y(i))2(4)

单个样本(x(j),y(j))情况下的梯度下降问题与线性回归基本相似:

∂∂θjJ(θ)=w(j)(hθ(x(j))−y(j))⋅xi(5)

参数迭代更新方式基本不变:

θi=θi−α∑j=1mw(j)(hθ(x(j))−y(j))x(j)i(6)

一般而言,局部加权回归效果会比线性回归好很多。在训练集很大的情况下,该方法的效率就很低了。因为对应后续的每个查询点,其与训练样本之间的权重都不同。我们首先要计算训练集中所有样本点与查询点直接的权值,然后执行线性拟合过程,并确定适用于该查询点的参数θ,最后在该查询点处进行估计。

其实,线性回归可视为局部线性回归的一个特例。在线性回归中,所有训练样本的权值都为1,地位平等。因为所有训练样本同等重要,针对不同的查询点就没必要重新计算每个训练样本的权值。虽然模型的性能不如局部线性回归,但是后期我们只需用学习到的参数建立的模型就可以对新样本进行估计,不用每次估计都要耗费大量资源在整个训练集上重新拟合一遍。有得必有失,在这里也体现得淋漓尽致!

以下是实验的截图,实验代码在这里下载。左图为局部权值回归,右图为线性回归。绿色曲线由采样自抛物线的样本点组成,蓝色直线为查询点对应的位置,红色直线为学习到的模型。图中的黑色红线是我手动添加的,便于进行对比。从图中可以看出,针对查询点,局部线性回归的误差明显要小于线性回归。

分类: Machine Learning

LWR--local weighted regression相关推荐

  1. 局部加权线性回归(Local Weighted Linear Regression)+局部加权回归+局部线性回归

    局部加权线性回归(Local Weighted Linear Regression)+局部加权回归+局部线性回归 locally weighted scatterplot smoothing,LOWE ...

  2. 机器学习笔记(一)-局部加权回归(Locally weighted regression)LWR

    在网上通过看斯坦福大学的机器学习课程,觉得讲的非常好.同时,为了加强自己的记忆,决定将自己学到的东西和一些理解记录下来,希望有所收获.废话不多说,直接开始笔记: 局部加权回归(locally weig ...

  3. python123英文字符的鲁棒_Robust Locally Weighted Regression 鲁棒局部加权回归 -R实现

    鲁棒局部加权回归 Ljt 作为一个初学者,水平有限,欢迎交流指正. 算法参考文献: (1) Robust Locally Weighted Regression and Smoothing Scatt ...

  4. CNN数玉米穗--TasselNet: Counting maize tassels in the wild via local counts regression network

    TasselNet: Counting maize tassels in the wild via local counts regression network https://link.sprin ...

  5. R语言lowess函数数据平滑实战(Locally Weighted Regression, Loess)

    R语言lowess函数数据平滑实战(Locally Weighted Regression, Loess) 目录 R语言lowess函数数据平滑实战(Locally Weighted Regressi ...

  6. Lesson 3 Part 1 Locally weighted regression

    局部加权紧接着上面的线性回归中参数求解来继续讲吧.还是以上面的房屋价格的预测,它的中心思想是在对参数进行求解的过程中,每个样本对当前参数值的影响是有不一样的权重的.比如上节中我们的回归方程为(这个地方 ...

  7. 局部加权回归LOESS(locally weighted regression)

    欠拟合和过拟合 首先看下面的三幅图, 第一幅拟合为了 y=θ0+θ1xy=θ_0 + θ_1x 的一次函数 第二幅拟合为了y=θ0+θ1x+θ2x2y=θ_0 + θ_1x + θ_2x^2 的二次函 ...

  8. 机械臂示教轨迹参数化方法 DMP, Dynamic Movement Primitive (一)

    机械臂示教轨迹参数化方法 DMP 1. 关于DMP 2. 香草味的DMP 3. 改进型DMP 4. 考虑Orientation的DMP 总结 很早之前就想写一栏关于DMP的博客笔记了,拖到现在一来是对 ...

  9. 机器学习中的lazy method与eager method的比较

    一 分类方法 机器学习的算法进行分类的时候,一般是根据是否有监督分为:无监督学习,有监督学习,半监督学习.有时候会再加上强化学习(Reinforcement learning). 但是,根据算法的原理 ...

最新文章

  1. java 自定义 operator_java8 自定义Collector
  2. java_spring_依赖注入(构造器)
  3. windows下如何下载并安装Python 3.5.
  4. P2765 魔术球问题(网络流)
  5. C语言全局变量和局部变量深入
  6. STM8S——8位基本定时器(TIM4)
  7. java版电子商务spring cloud分布式微服务b2b2c社交电商(一)服务的注册与发现(Eureka)...
  8. 业务流程图6个图例_系统流程图用什么软件做?流程图绘制全教程
  9. python 汽车行业数据库_python3+Neo4j+flask,汽车行业知识图谱项目实战
  10. 程序员如何实现“财务自由”?反正不是靠天天加班就能的!
  11. chrome os 安装手册
  12. linux 下kali linux 中使用hydra 进行对虚拟机中win10系统的密码破解
  13. scratch编程体感游戏
  14. SqlServer高级函数使用
  15. 量子笔记:布尔逻辑/代数、逻辑门、通用门、可逆计算
  16. 程序员如何一句话教老板做事?“我先下班了,你可要加把劲啊”
  17. php7.3 7.4,PHP 7.4 早期性能基准测试:与 7.3 差不多
  18. Struts MVC 框架 (让你一步步成为高手)
  19. kicad最小布线宽度默认是多少_CABLExpress发布了最新的光纤布线最佳实践指南
  20. python表达式3or5的值为_表达式 3 or 5 的值为

热门文章

  1. 以下python扩展库_以下对Python常用扩展库的描述错误的是哪一个选项?
  2. App中快速复用微信登录授权的一种方法
  3. 标识符( identifier)
  4. MySQL 字符串删除表情符_字符串中Emoji表情处理
  5. 苹果手机停用连接itunes_苹果手机密码输入次数过多停用怎么办?
  6. Apple Swift学习资料汇总
  7. 坐标转换—高斯正反算(附测量助理最新版软件下载)
  8. OperationException: CLIENT: CLIENT_ERROR cannot increment or decrement non-numeric value
  9. 软件工程第一次团队作业
  10. 基于Gitee搭建免费图床