1. LOWESS

用kNN做平均回归:
\[
\hat{f(x)} = Ave(y_i | x_i \in N_k(x))
\]
其中,\(N_k(x)\)为距离点x最近k个点组成的邻域集合(neighborhood set)。这种邻域平均回归存在很多缺点:

  • 没有考虑到不同距离的邻近点应有不同的权重;
  • 拟合的曲线不连续(discontinuous),如下图。

因此引入kernel加权平滑:
\[
\hat{f(x_0)} = \frac{ \sum_{i=1}^{N} K_{\lambda}(x_0, x_i)y_i }{\sum_{i=1}^{N} K_{\lambda}(x_0, x_i)}
\]
比如,Epanechnikov 二次kernel:
\[
K_{\lambda}(x_0, x_i) = D(\frac{|x_0 - x_i|}{\lambda})
\]

\[
D(t) = \left \{
{
\matrix {
{\frac{3}{4} (1-t^2) } & {for |t| < 1} \cr
{ 0} & {otherwise} \cr
}
}
\right.
\]

其中,\(\lambda\)为kernel的参数,称之为window width。对于kNN,只考虑最近的k个点影响;基于此,
\[
\lambda = |x_0 - x_{[k]}|
\]

其中,\(x_{[k]}\)为距离\(x_0\)第k近的点。如上图,经kernel加权平滑后,回归拟合的曲线为连续的了。但是,这种kernel回归同样存在着边界(boundary)问题,如下图:

对于x序列的开始与结束区段的点,其左右邻域是不对称的,导致了平滑后的值偏大或偏小。因此,需要对权值做再修正,假定对\(x_0\)的估计值:_

\[
\hat{f(x_0)} = \sum_{j=0}^d \beta_j x_0^{j}
\]

定义目标函数:
\[
\min_{\beta} \sum_{i=1}^N K_{\lambda}(x_0, x_i) [y_i - \sum_{j=0}^d \beta_j x_i^j]^2
\]

\[
B = \begin{pmatrix}
1 & x_1 & \cdots & x_1^d \\
1 & x_2 & \cdots & x_2^d \\
\vdots & \vdots & \ddots & \vdots \\
1 & x_N & \cdots & x_N^d \\
\end{pmatrix}
\]

\[
W_{x_0} = \begin{pmatrix}
K_{\lambda}(x_0, x_1) & 0 & \cdots & 0 \\
0 & K_{\lambda}(x_0, x_2) & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & K_{\lambda}(x_0, x_N) \\
\end{pmatrix}
\]

\[
\Delta = \begin{pmatrix}
\beta_0, \beta_1, \cdots, \beta_N
\end{pmatrix}^T
\]

\[
Y = \begin{pmatrix}
y_1, y_2, \cdots, y_N
\end{pmatrix}^T
\]

那么,目标函数可改写为
\[
\min_{\Delta} (Y-B\Delta)^T W_{x_0} (Y-B\Delta)
\]

求偏导,可得到
\[
\Delta = (B^T W_{x_0} B)^{-1} (B^T W_{x_0} Y)
\]

那么,估计值
\[
\begin{aligned}
\hat{f(x_0)} &= e(x_0) (B^T W_{x_0} B)^{-1} (B^T W_{x_0} Y) \\
& = \sum_i w_i (x_0) y_i
\end{aligned}
\]

其中,\(e(x_0) = \begin{pmatrix} 1, x_0, \cdots, x_0^d \end{pmatrix}\)。上述回归方法称之为LOWESS (LOcal Weighted regrESSion)。

2. Robust LOWESS

Robust LOWESS是Cleveland [1] 在LOWESS基础上提出来的robust回归方法,能避免outlier对回归的影响。在计算完估计值后,计算残差:
\[
e_i = y_i - \hat{f(x_i)}
\]
根据残差计算robustnest weight:
\[
\delta_i = B(e_i/6s)
\]
其中,\(s\)为残差绝对值序列\(|e_i|\)d的中位值(median),\(B\)函数为bisquare函数:

\[
B(u) = \left \{
{
\matrix {
{(1-u^2)^2 } & {for \quad 0 \le u < 1} \cr
{ 0 } & {for \quad u \ge 1} \cr
}
}
\right.
\]

然后,用robustne weight乘以kernel weight作为\(W_{x_0}\)的新weight。如此,便剔除了残差较大的异常点对于回归的影响。这里有Python版实现。

3. 参考资料

[1] Trevor Hastie, Robert Tibshirani, Jerome H. Friedman. The elements of statistical learning. Springer, Berlin: Springer series in statistics, 2009.
[2] Cleveland, William S. "Robust locally weighted regression and smoothing scatterplots." Journal of the American statistical association 74.368 (1979): 829-836.
[3] peterf, The Local Polynomial Regression Estimator.

局部加权回归LOWESS的更多相关文章

  1. Stanford大学机器学习公开课(三):局部加权回归、最小二乘的概率解释、逻辑回归、感知器算法

    (一)局部加权回归 通常情况下的线性拟合不能很好地预测所有的值,因为它容易导致欠拟合(under fitting).如下图的左图.而多项式拟合能拟合所有数据,但是在预测新样本的时候又会变得很糟糕,因为 ...

  2. 第三集 欠拟合与过拟合的概念、局部加权回归、logistic回归、感知器算法

    课程大纲 欠拟合的概念(非正式):数据中某些非常明显的模式没有成功的被拟合出来.如图所示,更适合这组数据的应该是而不是一条直线. 过拟合的概念(非正式):算法拟合出的结果仅仅反映了所给的特定数据的特质 ...

  3. [置顶] 局部加权回归、最小二乘的概率解释、逻辑斯蒂回归、感知器算法——斯坦福ML公开课笔记3

    转载请注明:http://blog.csdn.net/xinzhangyanxiang/article/details/9113681 最近在看Ng的机器学习公开课,Ng的讲法循循善诱,感觉提高了不少 ...

  4. Robust Locally Weighted Regression 鲁棒局部加权回归 -R实现

    鲁棒局部加权回归 [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt 作为一个初学者,水平有限,欢迎交流指正. 算法参考文献: (1) Robust L ...

  5. 线性回归 Linear regression(4) 局部加权回归

    这篇文章将介绍过拟合和欠拟合的概念,并且介绍局部加权回归算法. 过拟合和欠拟合 之前在线性回归中,我们总是将单独的x作为我们的特征,但其实我们可以考虑将,甚至x的更高次作为我们的特征,那么我们通过线性 ...

  6. 局部加权回归(LWR) Matlab模板

    将百度文库上一份局部加权回归的代码,将其改为模板以便复用. q2x,q2y为数据集,是n*1的矩阵: r是波长参数,就是对于距离的惩罚力度: q_x是要拟合的数据横坐标,是1*n的矩阵: 得到的q_y ...

  7. 局部加权回归、欠拟合、过拟合(Locally Weighted Linear Regression、Underfitting、Overfitting)

    欠拟合.过拟合 如下图中三个拟合模型.第一个是一个线性模型,对训练数据拟合不够好,损失函数取值较大.如图中第二个模型,如果我们在线性模型上加一个新特征项,拟合结果就会好一些.图中第三个是一个包含5阶多 ...

  8. 局部加权回归、欠拟合、过拟合 - Andrew Ng机器学习公开课笔记1.3

    本文主要解说局部加权(线性)回归.在解说局部加权线性回归之前,先解说两个概念:欠拟合.过拟合.由此引出局部加权线性回归算法. 欠拟合.过拟合 例如以下图中三个拟合模型.第一个是一个线性模型.对训练数据 ...

  9. Locally weighted linear regression(局部加权线性回归)

    (整理自AndrewNG的课件,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 前面几篇博客主要介绍了线性回归的学习算法,那么它有什么不足的地方么 ...

随机推荐

  1. 【技术解密】SequoiaDB分布式存储原理

    分布式架构势在必行 在传统的数据库技术中,为了保证数据的安全与高性能,通常会选择高端的外置存储作为数据库的主要存储源,而本地磁盘则被视为不可靠的性能低下的一种设备.这种观念的产生,主要是由于过去本地磁 ...

  2. 怎样把echarts图表做成响应式的

    如果想要把echarts图表给做成响应式的那么就应该用rem 单位,给图表的外围容器设置rem 单位,然后调用jquery 的resize方法,$(window).resize(function(){ ...

  3. MyBatis源码解析【2】构建项目

    有了之前的准备,今天就要开始构建学习使用的项目了.废话不多说.开始吧. 首先我用IDEA构建了一个空的maven项目,然后加入了Mybatis的依赖. <dependencies> < ...

  4. (转载)JProfiler试用手记

    JProfiler是一款Java的性能监控工具.可以查看当前应用的对象.对象引用.内存.CPU使用情况.线程.线程运行情况(阻塞.等待等),同时可以查找应用内存使用得热点,这里提供有几篇文章供参考:获 ...

  5. AngularJS实用基础知识---入门必备

    前言 今天来和大家学习一下AngularJS-- AngularJS 通过新的属性和表达式扩展了 HTML. AngularJS 可以构建一个单一页面应用程序. AngularJS 学习起来非常简单. ...

  6. 通用JSONHelp 的通用的封装

    1. 最近项目已经上线了 ,闲暇了几天 想将JSON  的序列化 以及反序列化进行重新的封装一下本人定义为JSONHelp,虽然Microsoft 已经做的很好了.但是我想封装一套为自己开发的项目使用 ...

  7. c++ 命名空间 以及 作用域 函数参数 面向对象实验报告

    面向对象的分析与设计  实验报告一 一.变量的储存类别 auto static register extern auto变量   函数中的局部变量,如不专门声明为static存储类别,都是动态地分配存 ...

  8. 使用C#创建Windows服务

    本文属于原创,转载请注明出处,谢谢! 一.开发环境 操作系统:Windows 10 X64 开发环境:VS2015 编程语言:C# .NET版本:.NET Framework 4.0 目标平台:X86 ...

  9. 使用intelliJ创建 spring boot + gradle + mybatis站点

    Spring boot作为快速入门是不错的选择,现在似乎没有看到大家写过spring boot + gradle + mybatis在intellij下的入门文章,碰巧.Net同事问到,我想我也可以写 ...

  10. JavaWeb开发技术基础概念回顾篇

    JavaWeb开发技术基础概念回顾篇 第一章 动态网页开发技术概述 1.JSP技术:JSP是Java Server Page的缩写,指的是基于Java服务器端动态网页. 2.JSP的运行原理:当用户第 ...