最小二乘法深入
上次寫了一個一次函數y=ax+b類型的最小二乘法,即可以看做是n維輸入列向量對應的一個n維輸出列向量,然后對已知結果進行學習,得到擬合公式。這里對m*n的矩陣進行最小二乘法分析。
設模型的輸出為和訓練集輸出,它們之間的平方誤差為:
? 學習目標就是得到模型參數θ 使得平方誤差最小,加個系數1/2是為了更好的微分。
?
平方誤差是殘差?的 ?l2 ?范數,因此最小二乘學習法有時候也稱為 l2 損失最小化學習法。
?
如果使用線性模型
訓練樣本的平方差就能表示為下列形式
在這里,是訓練輸出的n維向量。Φ是下式定義的n*b階矩陣,也稱為設計矩陣
訓練樣本的平方差的參數向量θ的偏微分為
將此偏微分設置為0,就得到了最小二乘解滿足的關系式
可以得到方程式的解為:
這里+為劍標,對于只有方陣,非奇異矩陣才能定義逆矩陣,廣義逆矩陣則是矩形矩陣或奇異矩陣都可以定義,是對逆矩陣的推廣。
?
對基函數
進行最小二乘法學習。
?
%采用的方法是直接使原始輸出y=系數*方程矩陣,求出系數,然后再乘以新的方程矩陣就得到結果了 clear clc n=50; N=1000; x=linspace(-3,3,n)'; X=linspace(-3,3,N)'; pix=pi*x; y=sin(pix)./(pix)+0.1*x+0.05*randn(n,1);p(:,1)=ones(n,1);%樣本第一列為1 P(:,1)=ones(N,1);%待測樣本第一列也為1 for j=1:15p(:,2*j)=sin(j/2*x); p(:,2*j+1)=cos(j/2*x);P(:,2*j)=sin(j/2*X); P(:,2*j+1)=cos(j/2*X); end t=p\y; F=P*t; figure(1); clf; hold on; axis([-2.8 2.8 -0.5 1.2]); %設置x軸的區間和y軸的區間 plot(X,F,'g-'); plot(x,y,'bo');結果圖:
?
?
對順序為i的訓練樣本的平方差通過權重wi≥0進行加權,然后再采用最小二乘法學習,稱為加權最小二乘學習法。
加權最小二乘學習法與沒有權重時相同。
W是以w1,....,wn為對角元素的對角矩陣。
總結
- 上一篇: HMM前向算法,维比特算法,后向算法,前
- 下一篇: 关于PATCH与PUT的区别