1. 程式人生 > >1.多項式迴歸-matlab

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)