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
請看下面的公式推導。
在上面,咱們獲得 後,須要求得θ,關於如何求得θ,將在此進行詳細分析。
一般在機器學習中,咱們經常有一個過程叫訓練,所謂訓練,即經過已知分類(或標籤)的數據,求得一個模型(或分離器),而後使用這個模型對未知標籤的數據打上標籤(或者對其進行分類)。
因此,咱們使用樣本(即已知分類的數據),進行一系列的估算,獲得θ。這個過程在機率論中叫作參數估計。
在此,咱們將使用極大似然估計的推導過程,求得關於計算θ的公式:
(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),它克服了上述兩種方法的缺點而又兼顧它們的優勢,在實際環境中最常被使用。