監督機器學習問題無非就是在規則化引數的同時最小化誤差。最小化誤差是為了讓我們的模型擬合我們的訓練數
據,而規則化引數是防止我們的模型過分擬合我們的訓練資料。因為引數太多,會導致我們的模型複雜度上公升,容易
過擬合,也就是我們的訓練誤差會很小。但訓練誤差小並不是我們的最終目標,我們的目標是希望模型的測試誤差
小,也就是能準確的**新的樣本。所以,我們需要保證模型「簡單」的基礎上最小化訓練誤差,這樣得到的引數才具
有好的泛
化效能(也就是測試誤差也小),而模型「簡單」就是通過規則函式來實現的。
本文參考的資料參考網頁:
主要是給定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兩種線的區別又是什麼呢?這兩種線與題目上的兩種線的接頭是不是一樣的呢?...