機器學習---監督學習之線性迴歸

分類和迴歸的區別:
分類,我們預測一個狀態,
迴歸,我們預測一個值。

線性迴歸是:通過已有的數據,擬合出一條符合它的直線,用來預測其他可能出現的值。
如何擬合一條好的直線呢?

就是是如何使一條直線更加的靠近一個點呢?

技巧方法

  1. 絕對值技巧:
    先隨機生成一條直線y=w1x+w2y=w1x+w2,w1是斜率,w2是截距,我們通過調整這兩個參數來使這條直線逐漸靠近一個原始的點(p,q)。
    如何慢慢調整這兩個參數呢?
    我們把w1+pw1+p,w2+1w2+1(特定的一種調整手段),直線調整方程爲:y=(w1+)x+(w2+1)y=(w1+)x+(w2+1)後來發現這樣改變直線移動的幅度還是很大,我們想到設置一個α\alpha變量控制w1和w2的變化,就是:
    把原來的w1變爲:w1+pαw1+p\alpha,
    把原來的w2變爲:w2+1αw2+1\alpha
    直線調整方程爲:y=(w1+pα)x+(w2+1α)y=(w1+p\alpha)x+(w2+1\alpha),這樣直線的變化幅度就會變小很多。

這裏的p就是座標值的p,我們改變直線斜率的時候可以不用考慮正負問題,因爲p的正負決定了斜率的正負。α\alpha我們給他起了個名字,叫學習率。

  1. 平方技巧:
    上面講的絕對值技巧只涉及到p也就是一個點的橫座標,如果把縱座標的變化也加進去會移動的更加精確.
    點到直線的縱座標距離爲:qyq-y
    把原來的w1變爲:w1+pα(qy)w1+p\alpha(q-y),
    把原來的w2變爲:w2+1α(qy)w2+1\alpha(q-y)
    直線調整方程爲:y=(w1+pα(qy))x+(w2+1α(qy))y=(w1+p\alpha(q-y))x+(w2+1\alpha(q-y)),這樣直線的變化就會更加精確。

最小化函數值方法

  1. 梯度下降
    我們想繼續尋找一條最合適的直線來擬合很多個點,這裏會有另一個問題,衡量直線好壞的標準(誤差越小。擬合的越好)。我們用所有點到直線的誤差和(第4和第5個知識點)表示(誤差函數)。
    那梯度下降又是幹啥用的?
    我們可以把它理解爲一種方法,這個方法可以幫助我們找到一個函數的最值。
    我們找誰的最值呢?
    找誤差函數的最值,而且是最小值。我們使用梯度下降的方法不斷的求誤差函數值,直到誤差函數達到最小值。
    誤差值函數如下圖所示:
    在這裏插入圖片描述
    我們選擇下降最快的方向調整綠色線的曲率,也就是wi>wiwierrorwi->wi-\frac{\partial}{\partial w_i}error。進行此操作直到error取值到達最小值附近。

逐個地在每個數據點應用平方(或絕對)誤差,並重復這一流程很多次。叫做隨機梯度下降法。
同時在每個數據點應用平方(或絕對)誤差,並重復這一流程很多次。叫做批量梯度下降法。

  1. 平均絕對誤差
    所有點到直線垂直距離和是:i=1myy^\sum_{i=1}^{m}|y-\hat y|,
    除以點的個數m,就是平均絕對誤差了:error=1mi=1myy^error=\frac 1m\sum_{i=1}^{m}|y-\hat y|
    這個公式就是我們上圖的誤差函數的一個具體表示,我們可以使用梯度下降的方法求得這個公式的最小值。

  2. 平方誤差
    爲了不計算絕對值,我們採取對距離求平方的方法,使得誤差函數依然能夠衡量誤差大小且不用求絕對值
    那麼所有點到直線垂直距離和誤差就被改成了:(yy^)2{(y-\hat y)}^2,
    這時除以的個數就被改爲2m了(這裏爲什麼是2m?求導所得,至於爲什麼求導看第6點),均方誤差就爲:error=12mi=1m(yy^)2error=\frac 1{2m}\sum_{i=1}^{m}{(y-\hat y)}^2
    我們依然可以使用梯度下降的方法求得這個公式的最小值。

  3. 最小化誤差函數
    如果看具體的例子,我們就能發現,上面講的兩個技巧方法就是平均絕對誤差和均方誤差的一個特例。他們講的是同一個東西。具體推到過程可以自己嘗試。

  4. 絕對值誤差 VS 平方誤差
    有時候只用一種誤差計算方法是判斷不出來誤差好壞的,如下圖所示

在這裏插入圖片描述
這幅圖的平均絕對誤差ABC三條直線都一樣,但是計算其平方誤差時,發現B的平方誤差較小。因爲均方誤差是個2次函數。
在這裏插入圖片描述

  1. 高緯度
    當輸入的數據有兩個,輸出結果爲一個時,我們在進行預測的時候就不是直線的關係了,繪出圖來就是三維的,兩個輸入一個輸出,預測的方程也由直線方程變爲了平面方程。有三個可變參數。
    同理,更高維的輸入輸出我們或許用圖形表示不了,但依然可以用公式表示。

  2. 解方程
    知道方程之後,我們就可以用對方程求偏導的方式求得最值了。
    此時使用方程求解依舊會出現相關問題,當方程個數很多時,求解就會變慢。
    我們甚至需要用矩陣來求解。

  3. 線性迴歸注意事項

  • 有些訓練的數據不是線性關係,不適合線性迴歸
    在這裏插入圖片描述
  • 如果數據集中存在異常值,最終的結果會有偏差
    在這裏插入圖片描述
  1. 對於明顯不是直線的數據集,我們可以用多項式來擬合。
    在這裏插入圖片描述

  2. 正則化
    現在我們看另外一種狀況,下圖是兩種擬合線,一種是線性擬合線,一種是多項式擬合。
    第一種有錯誤,第二種沒錯誤,也就是第二種的誤差更小。
    但是,如果按照劃分來看,第二種明顯是過擬合,不可取。
    如何在誤差函數中體現過擬合呢?
    我們可以看到,第一種的參數很小,第二種的參數很多很大,所有把參數的的複雜度也算作是誤差,這樣簡單的模型就會比複雜的模型更好了。
    在這裏插入圖片描述
    又如果,我們需要手動調節模型的複雜程度,這該怎麼辦呢?
    設置一個λ\lambda乘以參數的值,λ\lambda越小懲罰力度越小,越又可能是複雜的模型。
    這叫正則化。

  3. 神經網絡迴歸
    假設我們使用分段函數來擬合數據集
    在這裏插入圖片描述
    就可以類比於神經網絡的例子了。
    在這裏插入圖片描述
    此神經網絡最後的Sigmoid是把原來的值轉換到0到1之間使之達到分類的效果,如果不使用Sigmoid函數,就是預測值的作用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章