1.多項式迴歸-matlab
阿新 • • 發佈:2019-01-06
實現多項式迴歸,李航《統計機器學習》關於偏導數的求解是錯誤的,使用正確的求導公式實現,並獲得了期望的效果
%輸入空間 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)