邏輯迴歸(Logistic Regression):線性迴歸與邏輯迴歸的來龍去脈

Intro

邏輯迴歸是一種十分常見得一種分析模型,屬於廣義線性迴歸分析模型。
本文回答了以下問題:

線性迴歸/邏輯迴歸的使用前提/假設是?
線性迴歸/邏輯迴歸是什麼?
線性迴歸/邏輯迴歸爲什麼使用其對應的損失函數?
線性迴歸/邏輯迴歸如何計算其梯度?

本文包括了:

線性迴歸/邏輯迴歸的假設,線性迴歸/邏輯迴歸的形式,線性迴歸/邏輯迴歸的損失函數推導過程,線性迴歸/邏輯迴歸的梯度計算, 邏輯迴歸在多分類問題上的應用

分享兩個講的非常好的文章:
詳解邏輯迴歸
邏輯迴歸與面試問題
關於邏輯迴歸的總結與解釋
以上兩個文章講解都非常好,但是有些細節可能個人理解偏多,希望大家都能有自己的思考。
通常,我們見到邏輯迴歸會想到它的函數圖像,和softmax,以及線性迴歸。下面,我們將進行介紹與解釋:

Logistic Regression

理解邏輯迴歸,首先要明確一點,邏輯迴歸是一種分析方法,而不是一個公式,也不是一個函數,它是一個模型
如同線性迴歸一樣,邏輯迴歸本身也包含很多參數,使用它的目的,就是調整這些參數,以達到很好的預測效果。

1. 迴歸的預測形式

邏輯迴歸的基礎是線性迴歸,而線性迴歸是一個比較容易理解的分析方式,我們從線性迴歸的單變量形式講起:

1.1 線性迴歸的單變量形式

對於輸入數據:
X={x1,x2,...,xn} \textbf{X} = \{x_1, x_2, ..., x_n\}
我們想得到的預測結果是:
Y={y1,y2,...,yn}\textbf{Y} = \{y_1, y_2, ..., y_n\}
則線性迴歸模型中,我們假設存在參數 θ\bm{\theta} ,使下式成立:
y=θ1x+θ2{y} = \theta_1{x} + \theta_2
即,在二維平面中,從一堆散點中,找到一條直線,形成 xyx\rightarrow y 的映射,如果有 xnewx_{new} 出現,我們能根據映射,合理的預測 ynewy_{new} 的值,如下圖所示:

圖一:單變量的線性迴歸

1.2 線性迴歸的多變量形式

在單變量的基礎上,我們進一步假設,對上述 X\textbf{X} 中的每一個 xnx_n ,都有:
xn:=in=i1,i2,...,iK x_n:= \textbf{i}_n = {i_1, i_2, ..., i_K}
即對每個輸入都是K維的數據。
與單變量一樣,我們希望通過建立一個映射,使得 xyx\rightarrow y 依然成立,則對任意的 xnx_n 仍然假設參數 θ\bm{\theta} 存在:
hθ(xn)=Σj=1Kθjij+θbias=θTi=ynh_\theta(x_n) = \Sigma_{j=1}^K \theta_j \cdot i_j + \theta_{bias} = \bm{\theta}^T\textbf{i} = y_n
最終, hθh_\theta 仍然是 xyx\rightarrow y 的映射,只不過是多維度得映射。對於一組新的多維數據 xnewx_{new} ,我們可以通過 θ\bm{\theta} 計算得到對應的 ynewy_{new}
注意到,當K=1時,多變量形式變成了單變量形式。

1.3 將線性迴歸轉化爲概率模型

在以上線性迴歸中,我們不難發現其輸出是根據輸入變化的,如果預測的直線是遞增的,當輸入xnewx_{new} 取無窮大時,輸出 ynewy_{new} 也會無窮大。這種迴歸方式能滿足我們對一些數值預測問題(如股票預測,房價預測,室溫預測等)的需求,但並不能滿足我們對分類問題的需求。

在分類問題中,線性迴歸不能滿足我們的需求,這是因爲最終我們想要的輸出值在分類問題中,往往是一個整數,以下我們探討二分類問題。
對於二分類問題,沿用線性迴歸中的形式,我們可以將輸出表達爲:
Y=y1,y2,...,yn,yi0,1\bm{Y} = {y_1, y_2, ..., y_n}, y_i \in {0, 1}
可以想象,對於二分類問題在座標系中的表達,就變成了兩條線: y=0y=0y=1y=1 上的散點。我們無法使用一條直線來擬合出他們的結果。
所以,對於任何一個二分類問題,我們可以將其看作一個概率預測問題,即仍然通過線性預測的方式進行數值預測,只不過預測的是事件 AA 發生的概率
但這樣的假設會引出新的問題:在一個輸入是無窮的情況下,理論輸出也是無窮大,可概率不可能無窮大。所以我們需要將線性迴歸的模型輸出,限制在 [0,1][0, 1] 這個區間。

1.4 邏輯迴歸的形式

有了以上的目的,我們只需要找到一個方程,對這個方程 f(x)f(x),我們需要保證其值域爲 [0,1][0, 1] ,且爲單調函數,最終我們選擇了Sigmoid函數作爲了邏輯迴歸的函數,至於爲什麼這樣選擇,可以參照這篇博客和其引用的這篇博客

我們先看Sigmoid函數的樣子:

圖二:Sigmoid函數

Sigmoid的函數表達式爲:
f(x)=ex1+ex=11+exf(x) = \frac{e^x}{1+e^x} = \frac{1}{1+e^{-x}}
往往邏輯迴歸處理的是多變量問題,所以沿用上述結果,我們可以把這個方程寫爲:
f(x)=11+eθTif(x) = \frac{1}{1+e^{-\bm{\theta}^T\bm{i}}}
所以最終,我們通過了Sigmoid函數,將線性迴歸的結果轉化爲了一個在0到1之間的概率值。直覺上,我們可以將大於0.5的輸出判斷爲屬於1類,小於0.5的輸出判斷爲0類。就完成了二分類問題的預測。

2. 迴歸的核心:損失函數

上述問題都談論到我們想刻畫一個 θ\bm{\theta} ,使預測會得到一個更好的結果。但如何得到 θ\bm{\theta} ,又如何確定 θ\bm{\theta} 的好壞。但從每次判斷的結果來看是不夠準確的,因爲我們不僅需要知道預判是好還是壞,也同樣需要知道預判有多好或者多壞。即每次輸出結果到真實值的差距。

這就是線性迴歸和邏輯迴歸中的損失函數,損失函數刻畫了每次預測結果 y^\hat y 和真實值 yy 之間的距離。
那我們如何確定這個距離,取決於我們使用何種關係衡量他們。

2.1 線性迴歸的基本假設

對於線性迴歸,我們使用的是MSE(Mean Square Error),均方差,也就是預測值和真實值的平均平方差。但爲什麼使用均方差呢?

直覺上,我們可以認爲,樣本點到真實值(線性迴歸的真實值,是一條距離所有樣本點平均距離最近的一條直線)的誤差是相當平均的。所以我們引入假設:

  • 樣本到真實值的誤差呈正態分佈

事實上,線性迴歸不只有這一個假設,還有以下假設:

對於以上性質,其實都很好理解:

  • 線性性,可加性:我們本身在做的就是線性迴歸,如果沒有了線性關係,那得到的預測結果肯定會很差。
  • 無自相關性:這裏我的理解和網上一些其他理解不同。在瞭解了自相關性性質之後,我們可以得到的結論是,自變量是時序的,那麼我們可以理解爲信號中的因果性,換句話說,影響 y^n\hat y_n 輸出的不只有自變量 xn\bm x_n也和 nn 的值有關。這種關係,是線性迴歸算法很難捕捉到的,自然其結果變差。PS:對於一些計算置信區間的說法我保持懷疑態度,如果說自相關性會讓其標準差變小,那置信區間會變窄,這樣結果不是更穩定嗎?
  • 多重共線性,這個更好理解了,如果自變量之間都存在線性關係,會讓模型學習能力變弱,簡單的假設 ik=ai1i_k = ai_1(完全共線性) ,則對應的,i1i_1 的真實值 θ1=θ^k+θ^1\theta_1 = \hat\theta_k + \hat\theta_1;這使得解有無數種,故很難在迴歸的過程中,找到兩個合適的值。
  • 方差爲常數說明了樣本的同一性,異常值導致的方差異常會讓預測值 y^\hat y 變得不確定,故使模型失效。

對於以上性質,或者假設,是指線性迴歸使用的前提,在這些前提的基礎上,我們才能繼續研究。

2.2 線性迴歸的損失函數

2.3 線性迴歸的梯度計算

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章