機器學習算法 --- 邏輯回歸及梯度下降


一、邏輯回歸簡介

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

  logistic回歸是一種廣義線性回歸(generalized linear model),因此與多重線性回歸分析有很多相同之處。

  其公式如下:

        

  其圖像如下:

        

  我們通過觀察上面的圖像可以發現,邏輯回歸的值域為(0, 1),當輸入為0時,其輸出為0.5;當輸入小於0,並且越來越小時,其輸出越來越接近於0;相反的,當其輸入大於0,並且越來越大時,其輸出越來越接近於1。

  通常我們使用線性回歸來預測值,但邏輯回歸隨有“回歸”二字,卻通常是用來解決二分類問題的。

  當其輸出大於0.5時,我們可以認為該樣本屬於甲類;小於0.5時,認為該樣本屬於已類。

  但是由於一個樣本數據通常會有多個特征,我們不能將其直接帶入logistic回歸公式中,所以,就需要借助之前所介紹的線性回歸,使該樣本的多個特征值生成一個特定的值,在帶入公式中,對其分類,所以z的表達式如下:

    

  即可得到對於一個數據關於邏輯回歸的詳細表達式:

    

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

請看下面的公式推導。

二、Logistic Regression公式推導

  在上面,我們得到  后,需要求得θ,關於如何求得θ,將在此進行詳細分析。

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

  所以,我們使用樣本(即已知分類的數據),進行一系列的估算,得到θ。這個過程在概率論中叫做參數估計。

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

    (1) 首先我們令:

      

    (2) 將上述兩式整合:

        

    (3) 求其似然函數:

      

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

       

    (5) 當似然函數為最大值時,得到的θ即可認為是模型的參數。求似然函數的最大值,我們可以使用一種方法,梯度上升,但我們可以對似然函數稍作處理,使之變為梯度下降,然后使用梯度下降的思想來求解此問題,變換

  的表達式如下:

       (由於乘了一個負的系數,所以梯度上升變梯度下降。)

    (6) 因為我們要使用當前的θ值通過更新得到新的θ值,所以我們需要知道θ更新的方向(即當前θ是加上一個數還是減去一個數離最終結果近),所以得到J(θ)后對其求導便可得到更新方向(為什么更新方向這么求?以及得到更新方向后為什么按照下面的式子處理?請看下方的梯度下降公式的演繹推導),求導過程如下:

      

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

        

三、梯度下降公式的演繹推導

  關於求解函數的最優解(極大值和極小值),在數學中我們一般會對函數求導,然后讓導數等於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),它克服了上述兩種方法的缺點而又兼顧它們的優點,在實際環境中最常被使用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM