1.多项式回归-matlab

实现多项式回归,李航《统计机器学习》关于偏导数的求解是错误的,使用正确的求导公式实现,并获得了期望的效果

%输入空间
X = [1;2;5;6;10];
a = size(X, 1);
b = size(X, 2);
%输出空间
Y = [1;10;2;9;1];
%假设空间以及模型选择
theta_1 = [0; 0];
theta_2 = [0; 0; 0; 0];
theta_3 = [0; 0; 0; 0; 0; 0];

%一。利用正规方程求解损失函数为平方损失函数的多项式回归
%1.选择假设空间theta_1
SNX = [X];
%添加X0默认为1,为了作为w0的输入
SNX = [ones(size(SNX, 1),1),SNX];
theta_1 = inv(transpose(SNX)*SNX)*transpose(SNX)*Y;
figure('NAME', '平方损失一阶');
plot(X,Y)
hold on
plot(X,SNX*theta_1)


%2.选择假设空间theta_2
SNX = [X, X.^2, X.^3];
%添加X0默认为1,为了作为w0的输入
SNX = [ones(size(SNX, 1),1),SNX];
theta_2 = inv(transpose(SNX)*SNX)*transpose(SNX)*Y;
figure('NAME', '平方损失三阶')
plot(X,Y)
hold on
plot(X,SNX*theta_2)


%3.选择假设空间theta_3
SNX = [X, X.^2, X.^3, X.^4, X.^5];
%添加X0默认为1,为了作为w0的输入
SNX = [ones(size(SNX, 1),1),SNX];
theta_3 = inv(transpose(SNX)*SNX)*transpose(SNX)*Y;
figure('NAME', '平方损失五阶')
plot(X,Y)
hold on
plot(X,SNX*theta_3)

 

你可能感兴趣的:(李航机器学习)