Robust Locally Weighted Regression 鲁棒局部加权回归 -R实现
鲁棒局部加权回归
【转载时请注明来源】:http://www.cnblogs.com/runner-ljt/
Ljt
作为一个初学者,水平有限,欢迎交流指正。
算法参考文献:
(1) Robust Locally Weighted Regression and Smoothing Scatterplots (Willism_S.Cleveland)
(2) 数据挖掘中强局部加权回归算法实现 (虞乐,肖基毅)


R实现
#Robust Locally Weighted Regression 鲁棒局部加权回归 # 一元样本值x,y ;待预测样本点xp ;f局部加权窗口大小(一般取1/3~2/3);d局部加权回归阶数;
#time鲁棒局部加权回归次数(一般取2就几乎可以满足收敛);
#step梯度下降法固定步长;error梯度下降法终止误差;maxiter最大迭代次数
RobustLWRegression<-function(x,y,xp,f,d,time,step,error,maxiter){ m<-nrow(x)
r<-floor(f*m) #窗口内的样本量
xl<-abs(x-xp)
xll<-xl[order(xl)]
hr<-xll[r] #h为离xp第r个最近的样本到xp的距离 #三次权值函数(几乎在所有情况下都能够提供充分平滑)
xk<-(x-xp)/hr
w<-ifelse(abs(xk)<1,(1-abs(xk^3))^3,0) #d次回归函数
for(i in 2:d){
x<-cbind(x,x^i)
}
x<-cbind(1,x)
n<-ncol(x) #梯度下降法(固定步长)求局部加权回归的系数
theta<-matrix(0,n,1) #theta 初始值都设置为0
iter<-0
newerror<-1
while((newerror>error)|(iter<maxiter)){
iter<-iter+1
h<-x%*%theta
des<-t(t(w*(h-y))%*%x) #局部加权梯度
new_theta<-theta-step*des #直接设置固定步长
newerror<-t(theta-new_theta)%*%(theta-new_theta)
theta<-new_theta
} #time次鲁棒局部加权回归
for(i in 1:time){
e<-y-x%*%theta
s<-median(e)
#四次权值函数
xb<-e/(6*s)
R_w<-ifelse(abs(xb)<1,(1-xb^2)^2,0) #梯度下降法求鲁棒加权局部回归
R_theta<-matrix(0,n,1) #theta 初始值都设置为0
R_iter<-0
R_newerror<-1
while((R_newerror>error)|(R_iter<maxiter)){
R_iter<-R_iter+1
R_h<-x%*%R_theta
R_des<-t(t(w*R_w*(R_h-y))%*%x) #鲁棒局部加权梯度
R_new_theta<-R_theta-step*R_des #直接设置固定步长
R_newerror<-t(R_theta-R_new_theta)%*%(R_theta-R_new_theta)
R_theta<-R_new_theta
}
theta<-R_theta
} for(i in 2:d){
xp<-cbind(xp,xp^i)
}
xp<-cbind(1,xp)
yp<-xp%*%theta
# costfunction<-t(x%*%theta-y)%*%(x%*%theta-y)
# result<-list(yp,theta,iter,costfunction)
# names(result)<-c('拟合值','系数','迭代次数','误差')
# result
yp }
实例比较 线性回归、局部加权线性回归和鲁棒局部加权线性回归:
>
> t(x)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15]
[1,] 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
> t(y)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15]
[1,] 111 115 121 123 131 130 140 136 142 145 147 151 148 151 148
>
> lm(y~x) Call:
lm(formula = y ~ x) Coefficients:
(Intercept) x
-50.245 2.864 > yy<--50.245+2.864*x
>
> plot(x,y,col='green',pch=20,xlim=c(57,73),ylim=c(109,159))
> lines(x,y,col='green')
> lines(x,yy,col='black')
>
> g<-apply(x,1,function(xp){LWLRegression(x,y,xp,3,1e-7,100000,stepmethod=F,step=0.00001,alpha=0.25,beta=0.8)})
>
> points(x,g,col='blue',pch=20)
> lines(x,g,col='blue')
>
> gg<-apply(x,1,function(xp){RobustLWRegression(x,y,xp,0.6,2,2,0.00000001,1e-7,10000)})
>
> points(x,gg,col='red',pch=20)
> lines(x,gg,col='red') > legend('bottomright',legend=c('散点图','拟合直线','局部加权散点图','鲁棒局部加权散点图'),lwd=1,col=c('green','black','blue','red'))
>

Robust Locally Weighted Regression 鲁棒局部加权回归 -R实现的更多相关文章
- Locally Weighted Regression
简单回顾一下线性回归.我们使用了如下变量:\(x\)—输入变量/特征:\(y\)—目标变量:\((x,y)\)—单个训练样本:\(m\)—训练集中的样本数目:\(n\)—特征维度:\((x^{(i)} ...
- 局部加权回归LOWESS
1. LOWESS 用kNN做平均回归: \[ \hat{f(x)} = Ave(y_i | x_i \in N_k(x)) \] 其中,\(N_k(x)\)为距离点x最近k个点组成的邻域集合(nei ...
- Locally Weighted Linear Regression 局部加权线性回归-R实现
局部加权线性回归 [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt 作为一个初学者,水平有限,欢迎交流指正. 线性回归容易出现过拟合或欠拟合的问 ...
- Locally weighted regression algorithm
在此引出另一种模型:Locally weighted regression algorithm(LWLR/LWR),通过名字我们可以推断,这是一种更加关注局部变化的模型.的确如此,在普通的linear ...
- Locally weighted regression algorithm
之前所讨论的梯度下降算法,其算法模型是“线性回归模型”,我们可以理解为变量与因变量之间的关系是线性的.而现实情况是,使用线性模型去描述所有数据,很容易出现欠拟合(underfitting)的情况:同样 ...
- 线性回归 Linear regression(4) 局部加权回归
这篇文章将介绍过拟合和欠拟合的概念,并且介绍局部加权回归算法. 过拟合和欠拟合 之前在线性回归中,我们总是将单独的x作为我们的特征,但其实我们可以考虑将,甚至x的更高次作为我们的特征,那么我们通过线性 ...
- locally weighted regression - CS229
欠拟合和过拟合 看下方的三张图 第一幅拟合为了 y=θ0+θ1xy=θ0+θ1x 的一次函数 第二幅拟合为了y=θ0+θ1x+θ2x2y=θ0+θ1x+θ2x2 的二次函数 第三幅拟合为了 y=∑5j ...
- Stanford大学机器学习公开课(三):局部加权回归、最小二乘的概率解释、逻辑回归、感知器算法
(一)局部加权回归 通常情况下的线性拟合不能很好地预测所有的值,因为它容易导致欠拟合(under fitting).如下图的左图.而多项式拟合能拟合所有数据,但是在预测新样本的时候又会变得很糟糕,因为 ...
- 第三集 欠拟合与过拟合的概念、局部加权回归、logistic回归、感知器算法
课程大纲 欠拟合的概念(非正式):数据中某些非常明显的模式没有成功的被拟合出来.如图所示,更适合这组数据的应该是而不是一条直线. 过拟合的概念(非正式):算法拟合出的结果仅仅反映了所给的特定数据的特质 ...
随机推荐
- 状态模式、职责链模式——省去if-else的繁琐结构
小时候写日记都是这么写的:上午七点起床,八点之前洗脸刷牙吃早饭,十二点之前好好上课,中午一点,吃午饭,下午两点到六点,上课,下课,找请假,明天妈妈要带我去姥姥家,九点之前,看动画片,九点钟,收拾去姥姥 ...
- APP自动化框架LazyAndroid使用手册(4)--测试模板工程详解
概述 前面的3篇博文分别对lazyAndroid的框架简介.元素抓取和核心API进行了说明,本文将基于框架给出的测试模板工程,详细阐述下使用该框架进行安卓UI自动化测试的步骤. 模板工程 先来看一下模 ...
- Android开发技巧——Camera拍照功能
本篇是我对开发项目的拍照功能过程中,对Camera拍照使用的总结.由于camera2是在api level 21(5.0.1)才引入的,而Camera到6.0仍可使用,所以暂未考虑camera2. 文 ...
- Android图表库MPAndroidChart(十三)——简约的底部柱状图
Android图表库MPAndroidChart(十三)--简约的底部柱状图 我们继续上一讲,今天还是说下柱状图,这个图的话应该是用的比较多的,所有拿出来溜溜,先看下效果 我们还是来看下基本实现 一. ...
- Apache shiro集群实现 (八) web集群时session同步的3种方法
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...
- sizeof(结构体)和内存对齐以及位域
Win32平台下的微软C编译器的对齐策略: 1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除: 备注:编译器在给结构体开辟空间时,首先找到结构体中最宽的基本数据类型,然后寻找内存地址能被该 ...
- Dynamics CRM2015 Update1 新功能之表单增强功能
CRM2015 Update 1发布后,系统的界面的变化很大,仔细观察后会发现表单窗体也有些不同了,在CRM2015 Update1的官方介绍中对此变化的解释是起用了新的窗体呈现引擎,让界面更好看加载 ...
- [struts2学习笔记] 第二节 使用Maven搞定管理和构造Struts 2 Web应用程序的七个步骤
本文地址:http://blog.csdn.net/sushengmiyan/article/details/40303897 官方文档:http://struts.apache.org/releas ...
- [ExtJS5学习笔记]第九节 Extjs5的mvc与mvvm框架结构简介
本文地址:http://blog.csdn.net/sushengmiyan/article/details/38537431 本文作者:sushengmiyan ------------------ ...
- Dynamics Crm 2011 Or 2013 IFD 部署一段时间后,CA验证问题
以下错误描述摘自博客:http://blog.csdn.net/qzw4549689/article/details/14451257 IFD部署一段时间后,大概一年,突然出现从IFD登录页面登录后, ...