Logistic迴歸Cost函數和J(θ)的推導(二)----梯度降低算法求解最小值

前言算法

在上一篇隨筆裏,咱們講了Logistic迴歸cost函數的推導過程。接下來的算法求解使用以下的cost函數形式:機器學習

簡單回顧一下幾個變量的含義:函數

表1 cost函數解釋
x(i) 每一個樣本數據點在某一個特徵上的值,即特徵向量x的某個值
y(i) 每一個樣本數據的所屬類別標籤
m 樣本數據點的個數
hθ(x) 樣本數據的機率密度函數,即某個數據屬於1類(二分類問題)的機率
J(θ) 代價函數,估計樣本屬於某類的風險程度,越小表明越有可能屬於這類

 

咱們的目標是求出θ,使得這個代價函數J(θ)的值最小,這裏就須要用到梯度降低算法。學習

 

梯度降低算法同步

對於一個函數,咱們要找它的最小值,有多種算法,這裏咱們選擇比較容易用代碼實現和符合機器學習步驟的梯度降低算法。數學

先來看看梯度降低算法中,自變量的迭代過程。表示以下table

  

能夠看到,這是一個θ值不斷迭代的過程,其中α是學習速率,就是θ的移動「步幅」,後面的偏導數數就是梯度,能夠理解爲cost函數在θ當前位置,對於j位置特徵的降低速度。變量

  對於二維空間,梯度能夠理解爲函數圖像的切線斜率。即:特徵是一維的方法

  對於多維特徵,cost函數的圖像就應該是這樣的,下面舉個例子:im

  

                            圖1 cost函數舉例

 

 

  這是一個二維特徵的cost函數的圖像,這個時候,梯度有無限多個,咱們不能只說cost函數的梯度,應該說,cost函數在某個方向上的梯度。例如,cost函數在θ0方向上,在(θ0=m,θ1=n)上的梯度就是cost函數與θ1=n這個平面的交線在(m,n)處的斜率。

  上面的描述比較抽象,簡單說來,假設圖像就是一個小山坡(有點像吧),你站在圖像的(m,n)點處,朝θ0的方向看過去,看到的「山坡」的「坡度」就是上面所說的梯度了。

  這個迭代過程,用形象化的語言描述,就是:

    我站在山坡上,找到一個初始點θj,每次我沿着某一個方向走α這麼長的路,因爲老是朝着梯度的方向走,我總會走到山坡底(也就是cost函數的極小值)。

  然而,這樣的「盆地」可能有多個,咱們不一樣的走法,可能會走到不一樣的山底,如圖:

 

                           圖2 多「山谷」cost函數

 

  這裏的兩條路線分別走向不一樣的山谷,這就說明:梯度降低算法只能求出一個局部最小值,不必定是全局最小值,但這不影響它是一個好的方法。

 

這樣,θ的迭代過程就講清楚了。接下來講一下迭代的終止條件。

  迭代確定不是無限下去的,咱們不妨想一下:當咱們走到了山谷,再想往某個方向走的時候,發現都不能再往下走了,那麼咱們的旅行就終止了。

  一樣,當θ迭代了n次後(就如圖2的黑線同樣),發現接下來走α這麼長的路,降低的高度很小很小(臨界值),或者再也不降低,甚至反而往上走了,因此咱們的迭代終止條件就是cost函數的減小值小於某個值。

  咱們再來回顧一下迭代公式(1):其中α是經驗設定,稱之爲learning rate,初始值也是隨機選定,那麼後面的那個梯度呢?

  梯度就是cost函數對於特徵向量某一維的偏導數。咱們來看看這個怎麼推導和簡化。

  【梯度的求解】

  先來寫一下大體的推導過程:

  稍微解釋一下推導流程,便於理解。

  (1)--->(2):使用sigmoid函數的形式g(z)替換hθ(x)、提出公因子,放在式子尾

  (2)--->(3):這一步具體推導以下(使用了複合函數的求導公式)

 

  後面的幾步較爲簡單,就不另做說明了。

  【算法運行】

  到了這裏,咱們推出了迭代公式的最終形式:

  更通常的形式就是把j去掉,表示對特徵的每一維都如此迭代

  注意,在迭代過程當中,θ的全部特徵是同步更新的,因此根據給定的數據集,就能使用梯度降低算法來求解θ了,迭代終止條件便是將當前θ帶入cost函數,求出代價值,與上一個代價值相減,結果小於閾值,當即中止迭代。

結語

  公式推導用的也就是偏導數的求解等少許數學公式,關鍵是體會局部最優的思想

相關文章
相關標籤/搜索