linear regression

今天分享一個很經典的ML算法---LIner regression(線性迴歸)php

**線性迴歸(Linear regression)**是利用稱爲線性迴歸方程的最小二乘函數對一個或多個自變量因變量之間關係進行建模的一種迴歸分析 ---維基百科算法

咱們能夠理解爲對一些連續性數據來講,經過觀察咱們能夠經過畫出一條線來總結出這些數據的走向趨勢,就入下圖數據,很顯然咱們能夠找到一條直線來模擬出數據的規律,從而達到給出一個新數據,咱們知道他的面積,那麼就能夠大體預測出對應的價格,固然對於其餘狀況咱們要預測的線多是各類各樣的函數

房價分析,x軸爲面積,y軸爲價格 就如這張圖,咱們想分析出數據走向趨勢,最簡單的就是畫出這樣一條直線, 最簡單的線性迴歸方程學習

可是咱們如何肯定θ0和θ1的取值呢? image.png 這裏咱們經過不停地改變θ0和θ1的值,而後計算出hθ(x)的值,而且與y比較,最後求出其代價函數 代價函數 代價函數是求出每一個樣本預測值和真正值差平和和 而後再找出最小的代價值image.png3d

可是如今問題又出現了,咱們如何最小化代價函數呢? 這裏咱們可使用梯度降低法或者正規方程blog

Gradient descent 首先咱們畫出θ0,θ1和j(θ0,θ1)的三維圖ip

從圖很明顯看出,咱們要找的最小的代價函數,就要儘可能找到網狀圖最低點,從三維圖咱們不容易看出來,那麼二維圖呢? image.png 這樣咱們就很容易發現最小代價函數對應的θ0,θ1值, 可是咱們如何使用數學方程來找到這個最小值呢?這裏咱們引用梯度降低法get

咱們任意選取一點,而後找到其降低最快的方向降低一段距離,而後重複這個過程直到咱們找到最低點 就像下面這樣 image.png 可是如何去找其降低最快的方西呢? 咱們首先從一個二維圖來尋找方法: image.png 像這樣,咱們任意找一個點,咱們經過對其求導來找到其降低最快的方向,二維圖是這樣,三維一樣也是,所以咱們經過對點求導來找到降低的方向,所以梯度降低的數學表示就是數學

這裏咱們的計算步驟不能改變,必須在求完θ0,θ1後再賦值

那麼對於線性迴歸的梯度降低就是: 線性迴歸以及其代價函數 image.pngit

線性迴歸的代價函數是一個弓狀函數,術語爲凸函數(convex function) 批度降低:每一步梯度降低都遍歷整個訓練集的樣本,所以計算偏導分和

這裏α的意思是每次降低的速度,咱們稱其爲學習率 很顯然,不一樣的學習率將會致使不一樣的結果 若是α過小,咱們的學習速率小,梯度降低就會很慢,算法速度就會很長 可是α太大的話,學習速率過大,就頗有可能在降低的過程當中略過最低點,也就是沒法收斂,甚至最終致使發散

咱們直到,當Θ1取得局部最優解後,求導會得0,也就是梯度降低就結束了 δ/δ.Θ1 會在接近局部最優時會愈來愈小,所以α即便不變也能達到最優解

以上咱們介紹的是單變量回歸,可是事實上變量有不少時候都不是一個

有時候咱們遇到的線性迴歸方程是這樣的,這時候咱們該怎麼辦? 這裏咱們引用矩陣,對與Θ0,Θ1'.....Θn,咱們用矩陣表示n爲單個樣本中特徵數 而後引進x0=1,從而x0....xn表示爲 image.png 這樣咱們就把多變量線性迴歸通過矩陣變換後能夠用單變量的方法去解決 所以咱們的梯度降低算法就是image.png

簡化後 咱們注意,這裏m表示的是樣本數,n表示特徵數,x(i)則表示是第i個特徵 最後咱們總結一下單變量和多變量之間的區別 image.png

Feature Scaling特徵縮放 在多變量回歸方程中,咱們有不少個特徵,本質上咱們但願每一個特徵對算法的影響應該是相同的,可是很不湊巧,特徵之間由於取值範圍不一樣,好比a特徵取值範圍是1000左右,而b特徵取值範圍只有10左右,那麼咱們的代價函數圖頗有可能就是一個狹長的橢圓,這時候很容易引發梯度降低的時間大幅度的延長 這裏咱們但願經過均值歸一化來解決這個問題,然

均值歸一化: x1= x1-μ/s1 這裏μ是特徵平均值,s1是最大值減去最小值 後獲得的每一個x值的結果值都是在 -3<=x<=-1/3, 1/3<=x<=3

相關文章
相關標籤/搜索