机器学习(斯坦福课程3-1)局部加权回归LWR
来源:互联网 发布:js如何定义变量 编辑:程序博客网 时间:2024/06/09 14:39
为了引出问题,先看一个关于线性的例子,选取不同的特征会得到不同结果。考虑给定一组数据 ,我们要进行线性回归,得到 和 之间的关系。提出了三种不同的特征的选择方式,结果如下:
左图,选取一个特征 ,假设为 ,我们可以看到数据不能很好的和数据相吻合。
中图,我们选取了两个特征 和 ,假设为,我们可以看到拟合效果变好了。那是不是特征越多越好呢?非也。
右图,一共6个数据点,所以用5阶多项式就可以做到所有的数据点都在曲线上了,假设为。虽然将数据点拟合的很perfect,但是我们不认为这是一个很好的假设,因为它不能做到很好的预测。
我们称左图的拟合效果为 underfitting(欠拟合),数据中的明显的结构关系没有被模型所捕获。 称右图的拟合效果为 overfitting(过拟合),这种假设只是用于特定的数据,预测效果不好 。中图的效果最好,那我们应该如何选择特征,使得假设的效果最好?有人说了,那就挨个试呗,先选择1个特征,看效果,2个特征,看效果。。。。我们可不愿意做这种事情。
就像上面讨论的那样,特征的选择对学习算法的性能至关重要,那有没有自动选择特征集的算法,或者是让特征的选择对结果影响不那么大?这就是我们要介绍的Locally weight-
ed linear regression (LWR),这个算法对特征集要求不是非常的严格。
在最初的线性回归算法中,对于输入变量 ,我们要预测 ,我们通常要做的:
相对而言,对于局部加权线性回归,我们要做:
,这里多了一个权值项 。直观上, 的值越大,它所对应的对结果的影响越大,反之越小。
我们选择 的形式如下:
,其中的 就是我们要预测的输入变量。为了理解,看下图:
, 显然,当 足够小时, 近似为1;当 足够大时, 近似为0;也就是说离 很近的样本会得到接近为1的权值,很远的样本权值近乎为0。所以我们无们可以这样理解:在 局部构成了线性回归算法,对于 的学习,主要依赖于 附近的点。如下图:
,图中红色直线使用线性回归做的结果,黑色直线使用LWR做的结果,可以看到局部加权回归的效果较好。
在让我们来看一下形式的 的形式,和高斯函数形式很像,但和那一点关系都没有哦! 是波长参数,控制了权值随距离的下降速率。
总结一下:LWR算法是我们遇到的第一个non-parametric(非参数)学习算法,而线性回归则是我们遇到的以一个parametric(参数)学习算法。所谓参数学习算法它有固定的明确的参数,参数 一旦确定,就不会改变了,我们不需要在保留训练集中的训练样本。而非参数学习算法,每进行一次预测,就需要重新学习一组 , 是变化的,所以需要一直保留训练样本。也就是说,当训练集的容量较大时,非参数学习算法需要占用更多的存储空间,计算速度也较慢。有得必有失,效果好当然要牺牲一些其他的东西。 人不一定什么都擅长,只要有自己的特点就可以了!!
补充:
今天来讲一种非参数学习方法,叫做局部加权回归(LWR)。为什么局部加权回归叫做非参数学习方法呢? 首
先参数学习方法是这样一种方法:在训练完成所有数据后得到一系列训练参数,然后根据训练参数来预测新样本
的值,这时不再依赖之前的训练数据了,参数值是确定的。而非参数学习方法是这样一种算法:在预测新样本值
时候每次都会重新训练数据得到新的参数值,也就是说每次预测新样本都会依赖训练数据集合,所以每次得到的
参数值是不确定的。
接下来,介绍局部加权回归的原理。
之前在普通的线性拟合中,我们得到了最小二乘的损失函数为
找到合适的参数使得上述损失函数最小即可。而在局部加权回归中,损失函数变为
其中的表达式如下
上式中参数为新预测的样本特征数据,它是一个向量,参数控制了权值变化的速率,权值有一个性质
(1)如果,则。
(2)如果,则。
所以,对于离预测样本数据较近的点权值较大,离预测样本数据较远的点权值较小。
很明显,局部加权回归在每一次预测新样本时都会重新确定参数,以达到更好的预测效果。当数据规模比较大的
时候计算量很大,学习效率很低。并且局部加权回归也不是一定就是避免underfitting。
matlab代码:
q2x=[1 2 3 6 9 7 5 4 5 6]';q2y=[2 5 8 7 4 1 3 9 7 5]';x = [ones(size(q2x,1),1) q2x]; %obtain the matrix Xy = q2y;figure;hold on;plot(x(:,2),y,'.b'); %plot training examplesmax_x=max(x(:,2));min_x=min(x(:,2));regr_line_x = min_x:(max_x-min_x)/49:max_x;%% theta of second orderorder=5;x2=x;for i=2:order x2(:,i+1)=q2x.^i;endtheta2 = inv(x2'*x2)*x2'*y;y2=theta2(1)+theta2(2)*regr_line_x;for i=2:order y2=y2 + theta2(i+1)*regr_line_x.^i;endplot(regr_line_x,y2,'g');%% linear regressiontheta = inv(x'*x)*x'*y %get the value of θregr_line_y = theta(2)*regr_line_x + theta(1);plot(regr_line_x,regr_line_y,'b'); % obtain the figure of linear regression %% locally weighted linear regression%taus = [0.1 0.3 0.8 2 10]; %the bandwidth parametertaus = [0.5,1,2,5,10];colors = ['r' 'g' 'm' 'y' 'k'];m = size(q2x,1); %number of training examplesfor i=1:size(taus,2)tau=taus(i); for k=1:size(regr_line_x,2) W = zeros(m,m); for t=1:m W(t,t)=exp(-(regr_line_x(k)-x(t,2))^2/(2*tau^2)); end theta = pinv(x'*W*x)*x'*W*y; regr_line_y(k) = theta(2)*regr_line_x(k) + theta(1); endplot(regr_line_x,regr_line_y,colors(i));endlegend('trainingdata','linear','tau=.5','tau=1','tau=2','tau=5','tau=10',0)
- 机器学习(斯坦福课程3-1)局部加权回归LWR
- 《机器学习实战》--局部加权线性回归(LWR)
- (斯坦福机器学习课程笔记)局部加权线性回归练习
- 机器学习笔记(一)-局部加权回归(Locally weighted regression)LWR
- [机器学习]斯坦福公开课-第3课-局部加权线性回归和logistic回
- LWR 局部加权线性回归算法
- LWR 局部加权线性回归算法
- 局部加权回归(HGL的机器学习笔记3)
- 机器学习---局部加权回归
- 斯坦福机器学习: 网易公开课系列笔记(三)——局部加权回归、logistic回归
- 【机器学习】局部加权线性回归
- 【机器学习入门】局部加权回归
- 机器学习—局部加权线性回归
- 机器学习之局部加权线性回归
- 机器学习中的局部加权线性回归
- 【机器学习】局部加权线性回归
- 斯坦福机器学习3之局部线性回归建模
- 【机器学习】机器学习(三):局部加权线性回归算法、Logistic回归算法
- Count the string 动态规划
- android获取服务器端的Cookies讲解
- 内存泄露测试
- valgrind小计
- Spice 分析(1) – 构建 Spice 开发环境
- 机器学习(斯坦福课程3-1)局部加权回归LWR
- gobject 中 g_object_new 流程简介
- SPICE之spicy主函数源码分析
- Linux Used内存到底哪里去了?
- linux命令总结(一)
- C/C++学习之路(一)
- 允许后台程序运行
- 1205 单词翻转.cpp
- 内存优化