機器學習算法 --- 邏輯迴歸及梯度降低

1、邏輯迴歸簡介

  logistic迴歸又稱logistic迴歸分析,是一種廣義的線性迴歸分析模型,經常使用於數據挖掘,疾病自動診斷,經濟預測等領域。機器學習

  logistic迴歸是一種廣義線性迴歸(generalized linear model),所以與多重線性迴歸分析有不少相同之處。函數

  其公式以下:學習

        

  其圖像以下:spa

        

  咱們經過觀察上面的圖像能夠發現,邏輯迴歸的值域爲(0, 1),當輸入爲0時,其輸出爲0.5;當輸入小於0,而且愈來愈小時,其輸出愈來愈接近於0;相反的,當其輸入大於0,而且愈來愈大時,其輸出愈來愈接近於1。
3d

  一般咱們使用線性迴歸來預測值,但邏輯迴歸隨有「迴歸」二字,卻一般是用來解決二分類問題的。blog

  當其輸出大於0.5時,咱們能夠認爲該樣本屬於甲類;小於0.5時,認爲該樣本屬於已類。數學

  可是因爲一個樣本數據一般會有多個特徵,咱們不能將其直接帶入logistic迴歸公式中,因此,就須要藉助以前所介紹的線性迴歸,使該樣本的多個特徵值生成一個特定的值,在帶入公式中,對其分類,因此z的表達式以下:it

    

  便可獲得對於一個數據關於邏輯迴歸的詳細表達式:數據挖掘

    

  經過上式,咱們就能夠對一個任意數據進行邏輯迴歸分析了,可是這當中存在一個問題,即關於θ的取值,只有公式中的θ已知,咱們才能對一個未分類的數據運用此公式,那麼該如何求得θ呢?io

請看下面的公式推導。

2、Logistic Regression公式推導

  在上面,咱們獲得  後,須要求得θ,關於如何求得θ,將在此進行詳細分析。

  一般在機器學習中,咱們經常有一個過程叫訓練,所謂訓練,即經過已知分類(或標籤)的數據,求得一個模型(或分離器),而後使用這個模型對未知標籤的數據打上標籤(或者對其進行分類)。

  因此,咱們使用樣本(即已知分類的數據),進行一系列的估算,獲得θ。這個過程在機率論中叫作參數估計。

  在此,咱們將使用極大似然估計的推導過程,求得關於計算θ的公式:

    (1) 首先咱們令:

      

    (2) 將上述兩式整合:

        

    (3) 求其似然函數:

      

    (4) 對其似然函數求對數:

       

    (5) 當似然函數爲最大值時,獲得的θ便可認爲是模型的參數。求似然函數的最大值,咱們可使用一種方法,梯度上升,但咱們能夠對似然函數稍做處理,使之變爲梯度降低,而後使用梯度降低的思想來求解此問題,變換

  的表達式以下:

       (因爲乘了一個負的係數,因此梯度上升變梯度降低。)

    (6) 由於咱們要使用當前的θ值經過更新獲得新的θ值,因此咱們須要知道θ更新的方向(即當前θ是加上一個數仍是減去一個數離最終結果近),因此獲得J(θ)後對其求導即可獲得更新方向(爲何更新方向這麼求?以及獲得更新方向後爲何按照下面的式子處理?請看下方的梯度降低公式的演繹推導),求導過程以下:

      

    (7) 獲得更新方向後即可使用下面的式子不斷迭代更新獲得最終結果。

        

3、梯度降低公式的演繹推導

  關於求解函數的最優解(極大值和極小值),在數學中咱們通常會對函數求導,而後讓導數等於0,得到方程,而後經過解方程直接獲得結果。可是在機器學習中,咱們的函數經常是多維高階的,獲得導數爲0的方程後很難直接求解(有些時候甚至不能求解),因此就須要經過其餘方法來得到這個結果,而梯度降低就是其中一種。

  對於一個最簡單的函數:, 咱們該如何求出y最小是x的值呢(不經過解2x = 0的方法)?  

    (1) 首先對x任取一個值,好比x = -4,能夠獲得一個y值。  

    (2) 求得更新方向(若是不求更新方向對x更新,好比x-0.5,或x+0.5,獲得圖像以下)。

      能夠發現,咱們若是是向負方向更新x,那麼我就偏離了最終的結果,此時咱們應該向正方向更新,因此咱們在對x更新前須要求得x的更新方向(這個更新方向不是固定的,應該根據當前值肯定,好比當x=4時,應向負方向更新)

      求其導函數在這一點的值,y' = 2x,x = -4, y' = -8,那麼它的更新方向就是y',對x更新咱們只需x:=x-α·y'(α(大於0)爲更新步長,在機器學習中,咱們叫它學習率)。

      PS:以前說了是多維高階方程,沒法求解,而不是不能對其求導,因此能夠對其求導,而後將當前x帶入。

    (3) 不斷重複以前的(1),(2)步,直到x收斂。

  

  梯度降低方法:

    對於這個式子,若是:

      (1) m是樣本總數,即每次迭代更新考慮全部的樣本,那麼就叫作批量梯度降低(BGD),這種方法的特色是很容易求得全局最優解,可是當樣本數目不少時,訓練過程會很慢。當樣本數量不多的時候使用它。

      (2)當m = 1,即每次迭代更新只考慮一個樣本,公式爲,叫作隨機梯度降低(SGD),這種方法的特色是訓練速度快,可是準確度降低,並非全局最優。好比對下列函數(當x=9.5時,最終求得是區部最優解):

      (3) 因此綜上兩種方法,當m爲全部樣本數量的一部分(好比m=10),即咱們每次迭代更新考慮一小部分的樣本,公式爲,叫作小批量梯度降低(MBGD),它克服了上述兩種方法的缺點而又兼顧它們的優勢,在實際環境中最常被使用。

相關文章
相關標籤/搜索