统计学习方法学习过程中,对最小二乘法的简单推导
目录
矩阵形式推导
简易推导过程
参照书中例题1.1
数据样本为20个,原函数与采样点如下图,其中红色代表原函数,圈代表数据样本,绿色线代表拟合多项式
当多项式的次数为0时,即m=0
m = 8
m = 15,此时可看出过拟合的现象
matlab代码
%% 主函数
% 原函数
x1 = 0:0.01:2*pi;
y1 = sin(x1);
% 噪声/实际数据点
n = 20; % 数据的个数
x2 = linspace(0,2*pi,10);
y2 = sin(x2);
y_n = zeros(1,10);
for i = 1:10
y_n(i) = y2(i)+ rand()/10;
end
% 求解假设模型的多项式
m = 15; % 多项式的次数
w = LS(x2,y_n,m);
y_m = zeros(1,size(x1,2));
for i = 1:size(x1,2)
for j = 0:m
y_m(i) = w(j+1)*(x1(i)^j)+y_m(i);
end
end
plot(x1,y1,'r',x2,y_n,'o');
hold on
plot(x1,y_m,'g')
%% 最小二乘法
function [w] = LS(X,Y,m)
% X、Y:坐标
% m: 模型的阶数
if length(X) ~= length(Y)
error("input error");
end
if m == 0
w = sum(Y)/length(Y);
end
% 得到数据的个数
number = size(X,2);
A = ones(number,m+1);
for i = 1:m
A(:,i+1) = X.^i;
end
w = A\Y';
end
矩阵形式推导
在此情况下需要满秩,才可求逆。
矩形求导公式如下: