CH3 最小二乘學習法
重點提煉
提出最小二乘學習法的緣故:
最小二乘學習法公式
對不同模型進行最小二乘法學習,得到最小二乘公式中的參數theta:
1.線性模型
代入3.1公式,對參數求偏導,偏導=0時誤差J有極值,此時
① 延伸1:線性模型中的基函數可以是三角多項式
② 延伸2:加權最小二乘學習法
2.核模型
計算參數的方法與線性模型一樣,只是把線性模型中的基函數置換成:
如果基函數是n*b的矩陣,且這兩個值非常大時的處理方式----隨機梯度法
1.n或b很大導致的問題:內存不足
2.使用隨機梯度法的前提:最小二乘學習公式中的J是凸函數,否則不能得到全局最優的最小二乘法參數解
3.隨機梯度法的流程
這里的J還是最小二乘學習公式中的J,只是這里我們不再直接套用公式:
得到最小二乘的參數解,而是采用隨機梯度法的方法得到最小二乘法中的參數。
4.隨機梯度法提出的緣由:
不斷迭代,使得現在參數與目標參數的差值無線接近一個很小的值,即3.3公式中的diata要趨向於0.
5.隨機梯度法的收斂速度:由步幅以及diata值決定,要合理調整這些參數值。
P24
通過運行代碼學習
“對線性模型進行最小二乘法學習,其中線性模型基函數是三角多項式”
在服務器這個地址下運行matlab:
輸入書上代碼..........
變量解釋:
1)
x: 50*1的列向量,值域[-3,3],從小到大排列
X:1000*1的列向量,值域[-3,3],從小到大排列
x與X是自己設置的,x是訓練數據的輸入,X是測試數據的輸入,50與1000可以看成是樣本數目
2)
r是50*1列向量,值域是隨機的,y是訓練數據的目標輸出值
x與y都是用來訓練得到參數的
3)
p: 50*1的列向量,初始化1
P:1000*1的列向量,初始化1
賦值三角函數值后:
p: 50*31的矩陣 P:1000*31的矩陣
p與P是x與X對應的基函數
這里的基函數可以看成是n(樣本數)*b(參數個數)的矩陣
4)
由理論知識得:通過x的目標函數以及x的基函數p,可以得到p\y結果就是要求的最小二乘法中的參數t,當參數t得到之后,就能滿足最小二乘法的式子最小,即能夠保證最接近目標函數輸出值,噪聲最小
5)
得到參數后,又有了測試數據的X,知道基於X值的基函數P,通過P與參數t,得到測試數據的輸出值F=P*t
6)
繪圖
綠色線表示的是測試集;藍色圓圈表示的是訓練集;用訓練集對線性模型進行最小二乘法學習,得到最小二乘法參數,其中線性模型基函數是三角多項式。用同樣的參數,同樣的基函數對應的線性模型,得到測試輸出結果。所以y與F的包絡是一樣的。
P30
通過運行代碼學習
部分與p24代碼類似;用訓練數據x與y得到最小二乘的參數t,其中c用隨機的xi;得到t之后,要用測試數據的X與參數得到測試集的預測值F,其中k中的c用訓練數據x
迭代次數o不同,收斂結果也不同:
for o=1:1 for o=1:50
for o=1:50000
P24
補充知識來理解書上內容
1)繪圖基本matlab語言
2)Matlab 輸入help plot可以查到 這些畫圖參數的意義
3)Matlab中的/與\區別
對於標量的運算來說
a/b 相當於a除以b
b\a 相當於b除a
對於矩陣運算來說,一個矩陣的逆矩陣,相當於普通運算的倒數,所以
a/b 相當於a乘以b的逆
b\a 相當於b的逆乘以a
P25
補充知識來理解書上內容
矩陣正交性指的是矩陣與矩陣的轉置相乘=單位矩陣
P30
補充知識來理解書上內容
1)
所以這里的代碼中c用隨機的xi來表示
2)Matlab 中 rand*n表示取n數之內的隨機數;Matlab中ceil表示取整