1. 程式人生 > 其它 >2.線性迴歸的損失和優化問題

2.線性迴歸的損失和優化問題

思考:

假設剛才的房子例子,真實的資料之間存在這樣的關係

真實關係:真實房子價格 = 0.02×中心區域的距離 + 0.04×城市一氧化氮濃度 + (-0.12×自住房平均房價) + 0.254×城鎮犯罪率

那麼現在呢,我們隨意指定一個關係(猜測)

隨機指定關係:預測房子價格 = 0.25×中心區域的距離 + 0.14×城市一氧化氮濃度 + 0.42×自住房平均房價 + 0.34×城鎮犯罪率

請問這樣的話,會發生什麼?真實結果與我們預測的結果之間是不是存在一定的誤差呢?類似這樣樣子

既然存在誤差,那我們就將這個誤差給衡量出來

1 損失函式

總損失定義為:

  • yi為第i個訓練樣本的真實值
  • h(xi)為第i個訓練樣本特徵值組合預測函式
  • 又稱最小二乘法

如何去減少這個損失,使我們預測的更加準確些?既然存在了這個損失,我們一直說機器學習有自動學習的功能,線上性迴歸這裡更是能夠體現。這裡可以通過一些優化方法去優化(其實是數學當中的求導功能)迴歸的總損失!!!

2 優化演算法

如何去求模型當中的W,使得損失最小?(目的是找到最小損失對應的W值)

線性迴歸經常使用的兩種優化演算法

2.1 正規方程

2.1.1 什麼是正規方程

理解:X為特徵值矩陣,y為目標值矩陣。直接求到最好的結果

缺點:當特徵過多過複雜時,求解速度太慢並且得不到結果

2.1.2 正規方程求解舉例

以下表示資料為例:

即:

運用正規方程方法求解引數:

2.1.3 正規方程的推導

把該損失函式轉換成矩陣寫法:

其中y是真實值矩陣,X是特徵值矩陣,w是權重矩陣

對其求解關於w的最小值,起止y,X 均已知二次函式直接求導,導數為零的位置,即為最小值。

求導:

注:式(1)到式(2)推導過程中, X是一個m行n列的矩陣,並不能保證其有逆矩陣,但是右乘XT把其變成一個方陣,保證其有逆矩陣。

式(5)到式(6)推導過程中,和上類似。

  • 推導方式二【拓展】:

https://www.jianshu.com/p/2b6633bd4d47

2.2 梯度下降(Gradient Descent)

2.2.1 什麼是梯度下降

梯度下降法的基本思想可以類比為一個下山的過程。

梯度下降的基本過程就和下山的場景很類似。

首先,我們有一個可微分的函式。這個函式就代表著一座山。

我們的目標就是找到這個函式的最小值,也就是山底。

根據之前的場景假設,最快的下山的方式就是找到當前位置最陡峭的方向,然後沿著此方向向下走,對應到函式中,就是找到給定點的梯度,然後朝著梯度相反的方向,就能讓函式值下降的最快!因為梯度的方向就是函式之變化最快的方向。 所以,我們重複利用這個方法,反覆求取梯度,最後就能到達區域性的最小值,這就類似於我們下山的過程。而求取梯度就確定了最陡峭的方向,也就是場景中測量方向的手段。

2.2.2 梯度的概念

梯度是微積分中一個很重要的概念

​ 在單變數的函式中,梯度其實就是函式的微分,代表著函式在某個給定點的切線的斜率

​ 在多變數函式中,梯度是一個向量,向量有方向,梯度的方向就指出了函式在給定點的上升最快的方向

這也就說明了為什麼我們需要千方百計的求取梯度!我們需要到達山底,就需要在每一步觀測到此時最陡峭的地方,梯度就恰巧告訴了我們這個方向。梯度的方向是函式在給定點上升最快的方向,那麼梯度的反方向就是函式在給定點下降最快的方向,這正是我們所需要的。所以我們只要沿著梯度的反方向一直走,就能走到區域性的最低點!

2.2.3 梯度下降舉例

  • 1. 單變數函式的梯度下降**

我們假設有一個單變數的函式 :J(θ) = θ2

函式的微分:J、(θ) = 2θ

初始化,起點為: θ0= 1

學習率:α = 0.4

我們開始進行梯度下降的迭代計算過程:

如圖,經過四次的運算,也就是走了四步,基本就抵達了函式的最低點,也就是山底

  • 2.多變數函式的梯度下降

我們假設有一個目標函式 ::J(θ) = θ12+ θ22

現在要通過梯度下降法計算這個函式的最小值。我們通過觀察就能發現最小值其實就是 (0,0)點。但是接下 來,我們會從梯度下降演算法開始一步步計算到這個最小值! 我們假設初始的起點為: θ0= (1, 3)

初始的學習率為:α = 0.1

函式的梯度為:▽:J(θ) =< 2θ1,2θ2>

進行多次迭代:

我們發現,已經基本靠近函式的最小值點

2.2.4 梯度下降(Gradient Descent)公式

  • 1) α是什麼含義?

    α在梯度下降演算法中被稱作為學習率或者步長,意味著我們可以通過α來控制每一步走的距離,以保證不要步子跨的太大扯著蛋,哈哈,其實就是不要走太快,錯過了最低點。同時也要保證不要走的太慢,導致太陽下山了,還沒有走到山下。所以α的選擇在梯度下降法中往往是很重要的!α不能太大也不能太小,太小的話,可能導致遲遲走不到最低點,太大的話,會導致錯過最低點!

  • 2) 為什麼梯度要乘以一個負號?

梯度前加一個負號,就意味著朝著梯度相反的方向前進!我們在前文提到,梯度的方向實際就是函式在此點上升最快的方向!而我們需要朝著下降最快的方向走,自然就是負的梯度的方向,所以此處需要加上負號

以有了梯度下降這樣一個優化演算法,迴歸就有了"自動學習"的能力

  • 優化動態圖演示
  • 梯度下降和正規方程的對比
梯度下降正規方程
需要選擇學習率 不需要
需要迭代求解 一次運算得出
特徵數量較大可以使用 需要計算方程,時間複雜度高O(n3)
  • 選擇:
    • 小規模資料:
      • LinearRegression(不能解決擬合問題)
      • 嶺迴歸
    • 大規模資料:SGDRegressor