Deep learning:五(regularized线性回归练习)
前言:
本節主要是練習regularization項的使用原則。因為在機器學習的一些模型中,如果模型的參數太多,而訓練樣本又太少的話,這樣訓練出來的模型很容易產生過擬合現象。因此在模型的損失函數中,需要對模型的參數進行“懲罰”,這樣的話這些參數就不會太大,而越小的參數說明模型越簡單,越簡單的模型則越不容易產生過擬合現象。本文參考的資料參考網頁:http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex5/ex5.html。主要是給定7個訓練樣本點,需要用這7個點來模擬一個5階多項式。主要測試的是不同的regularization參數對最終學習到的曲線的影響。
?
實驗基礎:
此時的模型表達式如下所示:
?
模型中包含了規則項的損失函數如下:
?
模型的normal equation求解為:
?
程序中主要測試lambda=0,1,10這3個參數對最終結果的影響。
一些matlab函數:
plot:
主要是將plot繪曲線的一些性質。比如說:plot(x,y,'o','MarkerEdgeColor','b','MarkerFaceColor','r')這里是繪制x-y的點圖,每個點都是圓圈表示,圓圈的邊緣用藍色表示,圓圈里面填充的是紅色。由此可知’MarkerEdgeColor’和’MarkerFaceColor’的含義了。
diag:
diag使用來產生對角矩陣的,它是用一個列向量來生成對角矩陣的,所以其參數應該是個列向量,比如說如果想產生3*3的對角矩陣,則可以是diag(ones(3,1)).
legend:
注意轉義字符的使用,比如說legned(‘\lambda_0’),說明標注的是lamda0.
?
實驗結果:
樣本點的分布和最終學習到的曲線如下所示:
?
可以看出,當lambda=1時,模型最好,不容易產生過擬合現象,且有對原始數據有一定的模擬。
?
clc,clear %加載數據 x = load('ex5Linx.dat'); y = load('ex5Liny.dat');%顯示原始數據 plot(x,y,'o','MarkerEdgeColor','b','MarkerFaceColor','r')%將特征值變成訓練樣本矩陣 x = [ones(length(x),1) x x.^2 x.^3 x.^4 x.^5]; [m n] = size(x); n = n -1;%計算參數sidta,并且繪制出擬合曲線 rm = diag([0;ones(n,1)]);%lamda后面的矩陣 lamda = [0 1 10]'; colortype = {'g','b','r'}; sida = zeros(n+1,3); xrange = linspace(min(x(:,2)),max(x(:,2)))'; hold on; for i = 1:3sida(:,i) = inv(x'*x+lamda(i).*rm)*x'*y;%計算參數sidanorm_sida = norm(sida)yrange = [ones(size(xrange)) xrange xrange.^2 xrange.^3,...xrange.^4 xrange.^5]*sida(:,i);plot(xrange',yrange,char(colortype(i))) hold on end legend('traning data', '\lambda=0', '\lambda=1','\lambda=10')%注意轉義字符的使用方法 hold off作者:tornadomeet 出處:http://www.cnblogs.com/tornadomeet 歡迎轉載或分享,但請務必聲明文章出處。 (新浪微博:tornadomeet,歡迎交流!)
轉載于:https://www.cnblogs.com/mrxsc/articles/5310643.html
總結
以上是生活随笔為你收集整理的Deep learning:五(regularized线性回归练习)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WebView加载html页面
- 下一篇: codevs 1779 单词的划分