机器学习系列2:从线性方程的角度看的线性回归【1】
1 從方程說起
我這里先不談線性回歸,就面對一個簡簡單單的方程,看你能不能解吧。
??????????????????????????????????????????????????????????? (1)
我們也知道答案是:
但是,如何用計算機將其解出?這就是個理論問題了。下面請看我如何展開題目,讓諸位舉一反三地認知這個問題。
假定任意給出一組近似的解:
。 ?? 將其帶入等式(1)立即得到近似結(jié)果,可以寫成:
,進一步寫出其殘差方程:
????????????? ? ? ? ? ? ? ? ? ? ?? ? ? ?? ? (2)
叫做剩余,顯然,如果:,那么上邊的 就一定是方程(1)精確解!
因此,解方程(1)的問題轉(zhuǎn)化成“如何讓剩余等于0的問題,即”的問題。
以上內(nèi)容核心點:是否可以從一個非精確解開始,自動迭代地慢跑到精確解附近。
2 凸函數(shù)如何求極值的問題
?對于凸連續(xù)函數(shù),求出它的極值點坐標還是容易的。這是因為,圖函數(shù)的極值點只有一個,如果不是凸函數(shù),極值點有多個,那就無法得到唯一解。
舉個例子:
函數(shù):的極值點是(0,0,0)這個點,其算法是先求f的梯度,令梯度等于0,解出x,y,z:
拓展你的思路:將上述函數(shù)換成,只要是令梯度等于0。就可以得出: 極值點,同時解出:,這就是方程(1)最后解。
3 梯度下降法計算極值
將改寫成:
?
按照以下步驟求解:
1)給出一組任意值作為方程(1)的近似解 ????????????????????????
2)? 求出梯度的表達式
(是個較為復(fù)雜的式子,暫時不展開)
將帶入,得到此點(就是當前近似解)對應(yīng)梯度:
,這是一個具體的數(shù)值向量。
3)修改近似解:將近似解移動一個微小位移;具體就是順梯度反方向移動0.001倍個長度:
?4)返回到1)再次迭代。
?5)迭代N遍后停止,得到(1)方程的數(shù)字解。
注:上文中的f就是所謂的代價函數(shù)。
4 以上方程的程序?qū)崿F(xiàn)
import numpy as npcs = np.array([[23],[23],[26]]) ix = np.array([[0.001],[0.002],[0.003]])IA = np.array([[2.,3.,5.],[4, 5, 3],[6, 7, 2] ])for i in range(6000000):grd = np.dot( IA.T,np.dot( IA, ix) - cs) # 我估計百分之九十的同學(xué),看不出這步如何得到!!# 那就繼續(xù)努力吧ix = ix - 0.0001*grd print(ix)在沒有任何優(yōu)化的前提,迭代了六百萬次,高效得到結(jié)果:
《從函數(shù)逼近論看回歸問題》《非線性的回歸,乃至任意的回歸問題》[[1.06834998]
?[1.93894111]
?[3.00954498]]
是不是和精確結(jié)果
??????很類似呢?列位不妨將代碼粘下去跑跑。好了,如果能理解上述所講,下面解釋線性回歸就毫無難度了。
后記:
以上只是回歸問題的冰山之一角,后面還有更奇葩的東西,那就是:《從函數(shù)逼近論看回歸問題》《非線性的回歸,乃至任意的回歸問題》《機器學(xué)習2:回歸問題之一覽眾山小【2】》此兩篇主要介紹更一般的理論,可以推廣到回歸問題、神經(jīng)網(wǎng)絡(luò)、協(xié)同過濾等一些列問題,通過學(xué)習后,保證你看明白yolo,gan、rnn等一些列難懂的東西,竟然就是點數(shù)學(xué)玩具而已。
總結(jié)
以上是生活随笔為你收集整理的机器学习系列2:从线性方程的角度看的线性回归【1】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu下安装java和tomcat
- 下一篇: docker概念:用Dockerfile