Regularization線性回歸練習

2021-07-03 17:45:21 字數 2108 閱讀 4867

監督機器學習問題無非就是在規則化引數的同時最小化誤差。最小化誤差是為了讓我們的模型擬合我們的訓練數

據,而規則化引數是防止我們的模型過分擬合我們的訓練資料。因為引數太多,會導致我們的模型複雜度上公升,容易

過擬合,也就是我們的訓練誤差會很小。但訓練誤差小並不是我們的最終目標,我們的目標是希望模型的測試誤差

小,也就是能準確的**新的樣本。所以,我們需要保證模型「簡單」的基礎上最小化訓練誤差,這樣得到的引數才具

有好的泛

化效能(也就是測試誤差也小),而模型「簡單」就是通過規則函式來實現的。

本文參考的資料參考網頁:

主要是給定7個訓練樣本點,需要用這7個點來模擬乙個5階多項  

式。主要測試的是不同的regularization引數對最終學習到的曲線的影響。

模型表示式為:

代價函式:

模型的normal equation求解為:

實驗實現

%載入資料

ex5data.zip

x = load('ex5linx.dat');

y = load('ex5liny.dat');

%顯示原始資料

分別對lamda=0,1,10三種情況下擬合,結果如下:

可以看出,當lambda=1時,模型最好,不容易產生過擬合現象,且有對原始資料有一定的模擬。

實驗主要**如下:

%參照史丹福大學提供的練習題

%exercise: regularization

%clcclear all

close all

%載入資料

x = load('ex5linx.dat');

y = load('ex5liny.dat');

%顯示原始資料

plot(x,y,'o','markeredgecolor','b','marke***cecolor','r');

x = [ones(length(x), 1), x, x.^2, x.^3, x.^4, x.^5];

[m,n]=size(x);

diag_r=diag([0; ones(n-1,1)]);

lamda=[0,1,10];

sida=zeros(n,3);

x=linspace(min(x),max(x))';

x1 = [ones(size(x)), x, x.^2, x.^3, x.^4, x.^5];

for i=1:3 %求得引數sida,最後是乙個n*3的矩陣

sida(:,i)=inv(x'*x+lamda(:,i)*diag_r)*x'*y;

norm_sita=norm(sida);

end y=x1*sida; %向量化求得y的值,無需放在for迴圈裡

hold on

plot(x,y(:,1),'r--')%lamda=0的情況

plot(x,y(:,2),'g--')%lamda=1的情況

plot(x,y(:,3),'b--')%lamda=10的情況

legend('traning data', '\lambda=0', '\lambda=1','\lambda=10')%注意轉義字元的使用方法

hold off

神經網路筆記 Regularization

神經網路的過擬合 over fitting 是神經網路學習的難點,常規的解決方案是增加學習的樣本數,但是訓練樣本的蒐集往往比較困難,而且樣本數增加,學習成本也隨之提高.另乙個比較簡單的方法來減少過擬合就是regularization.regularization 的方法有多種 為什麼reggular...

對於線線問題

以下是乙個大佬的總結 authorlcy註明出處,摘自 1 n條直線最多分平面問題 題目大致如 n條直線,最多可以把平面分為多少個區域。析 可能你以前就見過這題目,這充其量是一道初中的思考題。但乙個型別的題目還是從簡單的入手,才容易發現規律。當有n 1條直線時,平面最多被分成了f n 1 個區域。則...

交叉線和直通線

2010 1 24 21 25 49 問 copper cross over與copper straight through兩種電纜有什麼區別?這兩種銅質電纜,我就是搞不懂有什麼不同!還有serial dte和serial dce兩種線的區別又是什麼呢?這兩種線與題目上的兩種線的接頭是不是一樣的呢?...