目錄
- 1 損失函數
- 2 優化算法
- 2.1 正規方程
- 2.1.1 什麼是正規方程
- 2.1.2 正規方程求解舉例
- 2.1.3 正規方程的推導
- 2.2 梯度下降
- 2.2.1 什麼是梯度下降
- 2.2.2 梯度的概念
- 2.2.3 梯度下降舉例
- 2.2.4 梯度下降公式
- 3 梯度下降和正規方程的對比
- 3.1 兩種方法對比
- 3.2 算法選擇依據
- 4 小結
1 損失函數
假設剛才的房子例子,真實的資料之間存在這樣的關系:
真實關系:
真實房子價格 = 0.02×中心區域的距離 + 0.04×城市一氧化氮濃度 + (-0.12×自住房平均房價) + 0.254×城鎮犯罪率
那麼現在呢,我們随意指定一個關系(猜測)
随機指定關系:
預測房子價格 = 0.25×中心區域的距離 + 0.14×城市一氧化氮濃度 + 0.42×自住房平均房價 + 0.34×城鎮犯罪率
請問這樣的話,會發生什麼?真實結果與我們預測的結果之間是不是存在一定的誤差呢?類似這樣樣子
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cGcq5SO5QTN3UTZyEjN0UGZ1czMzYzXwQTMyUDMxAzLcBTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.jpg)
既然存在這個誤差,那我們就将這個誤差給衡量出來
總損失定義為:
- yi為第i個訓練樣本的真實值
- h(xi)為第i個訓練樣本特征值組合預測函數
- 又稱最小二乘法
如何去減少這個損失,使我們預測的更加準确些?既然存在了這個損失,我們一直說機器學習有自動學習的功能,線上性回歸這裡更是能夠展現。這裡可以通過一些優化方法去優化(其實是數學當中的求導功能)回歸的總損失!!!
2 優化算法
如何去求模型當中的W,使得損失最小?(目的是找到最小損失對應的W值)
- 線性回歸經常使用的兩種優化算法
- 正規方程
- 梯度下降法
2.1 正規方程
2.1.1 什麼是正規方程
了解:X為特征值矩陣,y為目标值矩陣。直接求到最好的結果
缺點:當特征過多過複雜時,求解速度太慢并且得不到結果
2.1.2 正規方程求解舉例
以下表示資料為例:
即:
運用正規方程方法求解參數:
2.1.3 正規方程的推導
- 推導方式:
把該損失函數轉換成矩陣寫法:
其中y是真實值矩陣,X是特征值矩陣,w是權重矩陣
把損失函數分開書寫:(Xw-y)2=(Xw-y)T(Xw-y)(X**w−y)2=(X**w−y)T(X**w−y)對展開上式進行求導:
需要求得求導函數的極小值,即上式求導結果為0,經過化解,得結果為:XTXw=XTyXTX**w=XTy經過化解為:w=(XTX){-1}X^Tyw=(XTX)−1XTy
補充:需要用到的矩陣求導公式:
\frac{dx^TA}{dx}=AdxdxT**A=A
\frac{dAx}{dx}=A^TdxdAx=A**T
2.2 梯度下降
2.2.1 什麼是梯度下降
梯度下降法(Gradient Descent)的基本思想可以類比為一個下山的過程。
假設這樣一個場景:
一個人被困在山上,需要從山上下來(i.e. 找到山的最低點,也就是山谷)。但此時山上的濃霧很大,導緻可視度很低。
是以,下山的路徑就無法确定,他必須利用自己周圍的資訊去找到下山的路徑。這個時候,他就可以利用梯度下降算法來幫助自己下山。
具體來說就是,以他目前的所處的位置為基準,尋找這個位置最陡峭的地方,然後朝着山的高度下降的地方走,(同理,如果我們的目标是上山,也就是爬到山頂,那麼此時應該是朝着最陡峭的方向往上走)。然後每走一段距離,都反複采用同一個方法,最後就能成功的抵達山谷。
梯度下降的基本過程就和下山的場景很類似。
首先,我們有一個可微分的函數。這個函數就代表着一座山。
我們的目标就是找到這個函數的最小值,也就是山底。
根據之前的場景假設,最快的下山的方式就是找到目前位置最陡峭的方向,然後沿着此方向向下走,對應到函數中,就是找到給定點的梯度 ,然後朝着梯度相反的方向,就能讓函數值下降的最快!因為梯度的方向就是函數值變化最快的方向。 是以,我們重複利用這個方法,反複求取梯度,最後就能到達局部的最小值,這就類似于我們下山的過程。而求取梯度就确定了最陡峭的方向,也就是場景中測量方向的手段。
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 梯度下降公式
-
1) α是什麼含義?
α在梯度下降算法中被稱作為學習率或者步長,意味着我們可以通過α來控制每一步走的距離,以保證不要步子跨的太大扯着蛋,哈哈,其實就是不要走太快,錯過了最低點。同時也要保證不要走的太慢,導緻太陽下山了,還沒有走到山下。是以α的選擇在梯度下降法中往往是很重要的!α不能太大也不能太小,太小的話,可能導緻遲遲走不到最低點,太大的話,會導緻錯過最低點!
- 2) 為什麼梯度要乘以一個負号?
梯度前加一個負号,就意味着朝着梯度相反的方向前進!我們在前文提到,梯度的方向實際就是函數在此點上升最快的方向!而我們需要朝着下降最快的方向走,自然就是負的梯度的方向,是以此處需要加上負号
我們通過兩個圖更好了解梯度下降的過程
是以有了梯度下降這樣一個優化算法,回歸就有了"自動學習"的能力
- 優化動态圖示範
3 梯度下降和正規方程的對比
3.1 兩種方法對比
梯度下降 | 正規方程 |
需要選擇學習率 | 不需要 |
需要疊代求解 | 一次運算得出 |
特征數量較大可以使用 | 需要計算方程,時間複雜度高O(n3) |
-
首先,最小二乘法需要計算X
T
X的逆矩陣,
有可能它的逆矩陣不存在
,這樣就沒有辦法直接用最小二乘法了。
- 此時就需要使用梯度下降法。當然,我們可以通過對樣本資料進行整理,去掉備援特征。讓XTX的行列式不為0,然後繼續使用最小二乘法。
-
第二,當樣本特征n非常的大的時候,計算X
T
X的逆矩陣是一個非常耗時的工作(n x n的矩陣求逆),甚至不可行。
- 此時以梯度下降為代表的疊代法仍然可以使用。
- 那這個n到底多大就不适合最小二乘法呢?如果你沒有很多的分布式大資料計算資源,建議超過10000個特征就用疊代法吧。或者通過主成分分析降低特征的次元後再用最小二乘法。
- 第三,如果拟合函數不是線性的,這時無法使用最小二乘法,需要通過一些技巧轉化為線性才能使用,此時梯度下降仍然可以用。
- 第四,以下特殊情況,。
- 當樣本量m很少,小于特征數n的時候,這時拟合方程是欠定的,常用的優化方法都無法去拟合資料。
- 當樣本量m等于特征數n的時候,用方程組求解就可以了。
- 當m大于n時,拟合方程是超定的,也就是我們常用與最小二乘法的場景了。
3.2 算法選擇依據
- 小規模資料:
- 正規方程:LinearRegression(不能解決拟合問題)
- 嶺回歸
- 大規模資料:
- 梯度下降法:SGDRegressor
4 小結
- 損失函數
- 最小二乘法
- 線性回歸優化方法
- 正規方程
- 梯度下降法
- 正規方程 – 一蹴而就
- 利用矩陣的逆,轉置進行一步求解
- 隻是适合樣本和特征比較少的情況
- 梯度下降法 — 循序漸進
- 梯度的概念
- 單變量 – 切線
- 多變量 – 向量
- 梯度下降法中關注的兩個參數
- α – 就是步長
- 步長太小 – 下山太慢
- 步長太大 – 容易跳過極小值點(*****)
- 為什麼梯度要加一個負号
- 梯度方向是上升最快方向,負号就是下降最快方向
- 梯度下降法和正規方程選擇依據【知道】
- 小規模資料:
- 正規方程:LinearRegression(不能解決拟合問題)
- 嶺回歸
- 大規模資料:
- 梯度下降法:SGDRegressor