1. 程式人生 > >機器學習-線性迴歸

機器學習-線性迴歸

本文參考吳恩達機器學習課程第2章

線性迴歸公式:

f(x)=θ0+θ1xf(x)=\theta_0 + \theta_1x 代價公式(誤差均值中的2用來抵消求導得來的2): J(θ0,θ1)=12mi=1m(fθ(x)iyi)2J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m(f_{\theta}(x)^i - y^i)^2

目標:代價最小化

這裡演示單變數線性迴歸時: 令θ0=0\theta_0=0, f(x)=θ1xf(x)=\theta_1x 可對J

(θ1)J(\theta_1)求導, J(θ1)=1mi=1m(θ1xiyi)J^{'}(\theta_1)=\frac{1}{m}\sum_{i=1}^m(\theta_1x^i - y^i) 此時J(θ1)=0J^{'}(\theta_1)=0方可求出θ1\theta_1

實際上,由於代價函式經常含有2個及以上引數,目前函式處於三維空間x, y, z分別為θ0,θ1,J(θ0,θ1)\theta_0,\theta_1,J(\theta_0,\theta_1)

J(θ0,θ1),無法直接求導獲得最佳引數組合 所以我們實際上,是不斷嘗試θ0,θ1\theta_0,\theta_1不同的值,找到損失結果最小的那組(θ0,θ1)(\theta_0,\theta_1)。 我們如何找到合適的嘗試方法來找到這組引數呢,目前使用

梯度下降法

在這裡插入圖片描述 演算法特點:從不同的起始值開始,獲得的區域性最優解是不一樣 為了方便,設 θ0=0,θ1=0\theta_0=0,\theta_1=0 α\alpha為學習率(不變),ddθiJ(θi)\frac{d}{d\theta_i}J(\theta_i)為偏導數,引數更新公式: θ

i:=θiαddθiJ(θ0,θ1)\theta_i:= \theta_i - \alpha\frac{d}{d\theta_i}J(\theta_0,\theta_1)(i=0,1i=0,1)

具體展開: θ0:=θ0αddθ0J(θ0,θ1)=θ01mi=1m(θ0+θ1xiyi)\theta_0:=\theta_0-\alpha\frac{d}{d\theta_0}J(\theta_0,\theta_1)=\theta_0-\frac{1}{m}\sum_{i=1}^m(\theta_0 + \theta_1x^i-y^i) θ1:=θ1αddθ1J(θ0,θ1)=θ01mi=1m(θ0+θ1xiyi)xi\theta_1:=\theta_1-\alpha\frac{d}{d\theta_1}J(\theta_0,\theta_1)=\theta_0-\frac{1}{m}\sum_{i=1}^m(\theta_0 + \theta_1x^i-y^i)*x^i

  1. 導數項: 達到區域性最優解時(圖中某一處區域性最低點時),此時導數項為0,θi:=θiα0\theta_i:= \theta_i - \alpha*0,引數不再更新,且隨著J(θ)J(\theta)接近最低點,導數項也會越來越小,所以暫時學習率可不變。
  2. 梯度下降可以用於更新任何可微(因為需要求導)的代價函式J,目前使用的梯度下降用到了i=1m\sum_{i=1}{m},意味著每下降一次遍歷一整個資料集,也稱batch梯度下降演算法。