您的位置:首页 > 其它

局部加权线性回归

2017-03-10 11:00 295 查看
紧接着之前的问题,我们的目标函数定义为:



我们的目标是最小化cost function:



换成线性代数的表述方式:




是mxm维的对角矩阵


是mxn维的输入矩阵


是mx1维的结果


是nx1维的参数向量

















权重定义为:



参数τ控制权重函数的宽度,τ越大,权重函数越宽:



下面给出matlab代码

 
clear ;
close all;
x = [1:50].';
y = [4554 3014 2171 1891 1593 1532 1416 1326 1297 1266 ...
1248 1052 951 936 918 797 743 665 662 652 ...
629 609 596 590 582 547 486 471 462 435 ...
424 403 400 386 386 384 384 383 370 365 ...
360 358 354 347 320 319 318 311 307 290 ].';

m = length(y); % store the number of training examples
x = [ ones(m,1) x]; % Add a column of ones to x
n = size(x,2); % number of features
theta_vec = inv(x'*x)*x'*y;
tau = [1 10 25 ];
y_est = zeros(length(tau),length(x));
for kk = 1:length(tau)
for ii = 1:length(x);
w_ii = exp(-(x(ii,2) - x(:,2)).^2./(2*tau(kk)^2));
W = diag(w_ii);
theta_vec = inv(x'*W*x)*x'*W*y;
y_est(kk, ii) = x(ii,:)*theta_vec;
end
end

figure;
plot(x(:,2),y,'ks-'); hold on
plot(x(:,2),y_est(1,:),'bp-');
plot(x(:,2),y_est(2,:),'rx-');
plot(x(:,2),y_est(3,:),'go-');
legend('measured', 'predicted, tau=1', 'predicted, tau=10','predicted, tau=25');
grid on;
xlabel('Page index, x');
ylabel('Page views, y');
title('Measured and predicted page views with weighted least squares');




 

所以我们有这样的更新方式:



LWR算法是一个non-parametric(非参数)学习算法,而线性回归则是一个parametric(参数)学习算法。所谓参数学习算法它有固定的明确的参数,参数一旦确定,就不会改变了,我们不需要在保留训练集中的训练样本。而非参数学习算法,每进行一次预测,就需要重新学习一组,是变化的,所以需要一直保留训练样本。也就是说,当训练集的容量较大时,非参数学习算法需要占用更多的存储空间,计算速度也较慢。

 

局部权重回归与线性回归的区别可以通过下图来展示:



左边是线性回归,右边是局部权重回归
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linear regression