求解線性回歸的思路:
一溯祸、最大似然估計求解
1、用最大似然估計求解線性回歸基于的假設
所有樣本的誤差ε(i) (1 ≤ i ≤ n) 是獨立同分布的舞肆,服從均值為 0焦辅,方差為某個定值的 б2 的高斯分布。原因:中心極限定理椿胯。
1、寫出似然函數(shù)L(θ)
2哩盲、對似然函數(shù)取對數(shù)前方,并整理 ln L(θ)
3、求導數(shù)
4廉油、解方程-導數(shù)為0的點(極值) ? ln L(θ) / ? θ = 0
2惠险、似然函數(shù)
3班巩、最大似然函數(shù)求解θ過程
y(i)= θTX (i) + ε(i);實際值=預測值+誤差十兢;
即 ε(i) = y(i) - θTX (i) ①
由于誤差是服從高斯分布的趣竣,高斯分布的概率密度函數(shù):
由于 ε(i) 均值為0摇庙,將 ε(i) 代入公式得②:
將公式 ε(i) = y(i) - θTX (i) ① 代入概率密度函數(shù)②得③:
∵ 聯(lián)合概率密度函數(shù)等于似然函數(shù)遥缕,L(θ|x) = f(x|θ);
∴ 得出公式④
現(xiàn)在似然函數(shù)已經求完了卫袒,接下來我們要求L(θ) 是最大值情況下的 θ 的值。
首先考慮公式④的求導单匣,顯然不太好求夕凝。要取
該函數(shù)是根據(jù)極大似然估計推導出來的一個目標函數(shù),我們要使得目標函數(shù)值最大户秤,那么就要讓式子后面這部分的值最小码秉。
所以現(xiàn)在問題轉化為求如下式子最小值時θ的值:
然后再用去求解這個θ的值。
10 回歸算法 - 梯度下降在線性回歸中的應用
12 回歸算法 - 手寫梯度下降代碼
梯度下降法
把步驟寫出來即可鸡号。
學習率都是人為設定的转砖,或者可以理解為不斷得嘗試。根據(jù)迭代速度和結果進行不斷得調整鲸伴。學習率沒有一個明確的設定范圍府蔗,一般可以選擇1左右的數(shù)字進行嘗試,如果迭代的速度還可以汞窗,且結果能夠獲得即可姓赤。
第一步鏈式求導不铆,不再贅述。
解釋一下最后一步是如何轉化的:
= ? / ?θj
= xj
然后再思考以下的問題:
步驟1:初始化θ(隨機初始化裹唆,可以初始化為0)
(θ1誓斥、θ2、... 许帐、θn) = (0,0,...岖食,0)
在第1步進行計算的時候,首先應該更新的是θ1的值:
θ1 = θ1 - ( hθ(x)-y )x1 舞吭;
然后要更新θ2的值:
θ2 = θ2 - ( hθ(x)-y )x2 泡垃;
問題來了:
當θ還沒有經過更新的時候,所有(θ1羡鸥、θ2蔑穴、... 、θn) = (0,0,...惧浴,0)
但當數(shù)據(jù)更新完θ1后存和,在要更新θ2時,在
中θ1的值是更新完之前的值0,還是θ1更新完后的值捐腿?(完成了最后一次迭代更新后的值)
答案是: 更新完之前的值0纵朋。
也就是說,每次在計算更新θ值的時候茄袖,我們不會去關心其他θ最終更新后的值是多少操软。
只有當所有的θ都更新完成后, 中θ1中的θ值才會發(fā)生變化宪祥。
關于J(θ)的函數(shù)要找到極小值點聂薪,對應的就是找到最小值點時θ的取值(哪一組θ的向量可以讓損失函數(shù)最小)。
選擇多個初始值點藏澳,來對比梯度下降法收斂時,兩個極值點是否有區(qū)別耀找。
簡單舉例:當θ=3時翔悠,J(θ)=2.5;當θ=5時野芒,J(θ)=3.3凉驻; 最后比較后選擇2.5是全局最優(yōu)解。
注意:梯度下降只能求出近似解复罐,而不是精確的解析解。但是這種求法速度快雄家,能無限接近于真實值效诅。
======
前面說的梯度下降算法是針對某一個樣本進行的顷编。實際上戚炫,我們擁有m個樣本,針對每一個樣本我們都應該有一個對應的梯度下降媳纬。
所以引入可批量梯度下降算法(BGD)双肤,這是一個 ,但是計算時的算法钮惠。
如上公式所示茅糜,批量梯度算法BGD,是對所有樣本的梯度進行了求和的操作素挽。
隨機梯度下降算法:不再考慮樣本梯度的求和了蔑赘,而是來一個新的樣本,我就更新一次θ。
如果有m條數(shù)據(jù)耙箍,SGD算法更新了m次。
但是在批量梯度下降算法 BGD中酥馍,對于θ我只更新了1次 (全部樣本都計算完后求和)
所以在隨機梯度下降算法中辩昆,迭代更新的速度會更快。
實際生產當中物喷,我們選擇隨機梯度下降的場景會更多卤材。
畢竟,如果我有上百萬條數(shù)據(jù)峦失,如果一次性全遍歷完后再得到θ的值扇丛,這樣太慢了。
二、最小二乘法求解 (最小平方法)
如果用最大似然估計的思路無法理解上述的目標函數(shù)购啄,也可理解為:每個觀測值和實際值差的平方和的最小值襟企。
最小二乘法的使用要求矩陣是;為了防止不可逆或者過擬合的問題存在狮含,可以增加額外數(shù)據(jù)影響顽悼,導致最終的矩陣是可逆的:
其實本質上就是加入了