吴恩达机器学习(四)局部加权回归

  • 使用局部加权回归的原因
  • 局部加权回归的原理
  • 实例
  • 讨论


使用局部加权回归的原因

在讲义中描述的是:makes the choice of features less critical(为了让特征的选择不是那么重要)
另外,局部加权回归可以用线性回归的方法得到一个非线性的拟合结果。这句话有点奇怪,但了解局部加权回归的原理就能明白其中的原因了。

局部加权回归的原理

相关参数定义:
局部加权回归matlab 在线算法 局部加权回归原理_非线性回归:训练集数量
局部加权回归matlab 在线算法 局部加权回归原理_非线性回归_02 :第局部加权回归matlab 在线算法 局部加权回归原理_机器学习_03个训练样本的输入
局部加权回归matlab 在线算法 局部加权回归原理_Matlab_04 :第局部加权回归matlab 在线算法 局部加权回归原理_机器学习_03个训练样本的输出
局部加权回归matlab 在线算法 局部加权回归原理_Matlab_06:预测函数,对于一维的局部加权回归为:局部加权回归matlab 在线算法 局部加权回归原理_局部加权回归_07(请注意:我在这儿特地在局部加权回归matlab 在线算法 局部加权回归原理_局部加权回归_08上添加了一个上标局部加权回归matlab 在线算法 局部加权回归原理_局部加权回归matlab 在线算法_09,说明每一个局部加权回归matlab 在线算法 局部加权回归原理_Matlab_10对应一个局部加权回归matlab 在线算法 局部加权回归原理_机器学习_11,另外,局部加权回归matlab 在线算法 局部加权回归原理_Matlab_10代表感兴趣的点,并不一定是某个样本)
局部加权回归与前面的线性回归相比,其目标函数发生了变化。
局部加权回归matlab 在线算法 局部加权回归原理_Matlab_13
此处局部加权回归matlab 在线算法 局部加权回归原理_局部加权回归matlab 在线算法_14为非负权值项,其具体意义讲义中描述的是:if 局部加权回归matlab 在线算法 局部加权回归原理_局部加权回归matlab 在线算法_14 is large for a particular value of 局部加权回归matlab 在线算法 局部加权回归原理_机器学习_03, then in picking 局部加权回归matlab 在线算法 局部加权回归原理_局部加权回归_08, we’ll try hard to make 局部加权回归matlab 在线算法 局部加权回归原理_局部加权回归matlab 在线算法_18 small. If w(i) is small, then the 局部加权回归matlab 在线算法 局部加权回归原理_局部加权回归matlab 在线算法_18 error term will be pretty much ignored in the fit.(对应特定的样本局部加权回归matlab 在线算法 局部加权回归原理_机器学习_03,若局部加权回归matlab 在线算法 局部加权回归原理_局部加权回归matlab 在线算法_14较大,则表明该项在拟合中对局部加权回归matlab 在线算法 局部加权回归原理_局部加权回归_08影响更大,相反,若局部加权回归matlab 在线算法 局部加权回归原理_局部加权回归matlab 在线算法_14很小,则表明这项对局部加权回归matlab 在线算法 局部加权回归原理_局部加权回归_08影响很小,基本可以忽略不计)
局部加权回归matlab 在线算法 局部加权回归原理_局部加权回归matlab 在线算法_14的常用计算方法为:
局部加权回归matlab 在线算法 局部加权回归原理_Matlab_26
由于讲义中没有推导推导算法的解析解,在此简单推导一下:

  1. 目标函数
    将目标函数写为矩阵形式,式中变量的定义参见讲义。
    局部加权回归matlab 在线算法 局部加权回归原理_Matlab_27
  2. 求目标函数最小的局部加权回归matlab 在线算法 局部加权回归原理_Matlab_28
    目标函数本质上是一个无约束的二次规划问题,首先求其对局部加权回归matlab 在线算法 局部加权回归原理_Matlab_28的梯度(注意局部加权回归matlab 在线算法 局部加权回归原理_机器学习_30为对角矩阵:局部加权回归matlab 在线算法 局部加权回归原理_非线性回归_31)
    局部加权回归matlab 在线算法 局部加权回归原理_局部加权回归matlab 在线算法_32
    上面的推导中用到的相关矩阵性质可参见讲义(在CSDN其他博主的文章里有下载链接)。
    局部加权回归matlab 在线算法 局部加权回归原理_非线性回归_33得到:
    局部加权回归matlab 在线算法 局部加权回归原理_Matlab_34

实例

数据来源

%% 局部加权线性回归
% 作者:sddfsAv
% 日期:20190313
% Matlab版本:2018b
% 简介:吴恩达机器学习课程学习例子,数据集来源于
clear
clc

%% 导入原始数据
Data=csvread('Salary_Data.csv',1,0);    % 读取csv数据文件
scatter(Data(:,1),Data(:,2),40,'MarkerEdgeColor',[0 .5 .5],...
              'MarkerFaceColor',[0 .7 .7],...
              'LineWidth',1.5);         % 绘制散点图
title("Experience and Salary");         % 图表标题
xlabel("Experience(years)");            % x轴标题
ylabel("Salary(dollar)");               % y轴标题
hold on;
%% locally weighted linear regression
X=Data(:,1);
Y=Data(:,2);
tao=0.2;                       % bandwidth,带宽
X_target=1:0.02:10.5;
W=zeros(length(X),length(X));   % 初始化矩阵W
Theta=zeros(length(X_target),1);       % 建立一个Theta向量用于存储目标点对应的学习算法参数
for i=1:length(X_target)
    for j=1:length(Data(:,1))
        w=exp(-(X(j)-X_target(i))^2/(2*tao^2));
        W(j,j)=w;
    end
    theta=inv(X'*W*X)*X'*W*Y;
    Theta(i)=theta;
end
Y_hat=Theta.*X_target';
plot(X_target,Y_hat);

拟合结果:

局部加权回归matlab 在线算法 局部加权回归原理_机器学习_35


注意:带宽过大会出现欠拟合,带宽过小会出现过拟合。

可以看到整个拟合曲线并不是线性的,这是因为针对每个感兴趣的点,采用局部加权回归得到的局部加权回归matlab 在线算法 局部加权回归原理_Matlab_28值是不一样的

讨论

讲义中说明了钟形函数是一种常用的权值函数选择方法,但并没有说用其他形式的函数不行,因此,可以选择其他函数,比如三角形函数,窗函数或者其他一些有趣形状的函数,看看有什么样的结果。