目錄:
1.邏輯回歸
2.牛頓法求極值
3.指數分布族與多項分布
4.廣義線性模型
前言
在看邏輯回歸之前,先回想一下線性回歸問題的求解步驟,再順著線性回歸,來介紹邏輯回歸。
1.首先假設誤差存在且為高斯分布,等價于真實數據的概率分布。
2.求出聯合概率分布,也就是似然函數。
3.進行取對數運算,得到對數似然函數l(θ)。
4.求l(θ)的最大值,得到了最小二乘的策略。
5.使用梯度下降,讓參數逐漸逼近最小二乘法中的最優解。
1.邏輯回歸
邏輯回歸雖然名字里帶“回歸”,但它不解決回歸問題,而是處理分類問題。回歸問題中預測值y是一系列連續值,而分類問題中y是一些離散的值。通常二分類的預測值y可以用0和1表示。例如,要建立一個垃圾郵件的分類器,那么x(i)表示郵件的特征,y是郵件的標簽。當y=0時,屬于正常郵件,y=1時,屬于垃圾郵件。0和1分別為負例和正例,可以用符號”-“、”+“表示。現在先選擇一個函數hθ(x),能夠表示分類問題。我們選擇下面這個函數:
它叫做邏輯回歸(logistic function,或sigmoid function),在二維坐標上是一個“S”型曲線,如圖所示。
當z趨近于正無窮時,g(z)趨近于1,當z趨近于負無窮時,g(z)趨近于0。并且g(z)和h(x)的取值范圍都在(0,1),相當于,把整個實數范圍壓縮到了0到1之間。這樣,預測y的值可以表示屬于某一類的概率,當y越接近1時,它屬于y=1的概率越大。和線性回歸一樣,我們設每個特征xj的權重為θj,x0=1,所以可以求出所有權重與特征的乘積和,用向量θTx代替z,得到如下表達式:
確定了處理二分類問題的模型,接下來就是求解θ了。像最小二乘的推導一樣,我們對分類模型也做一些假設,用最大似然法和來優化θ。假設給定x和θ,輸出值hθ(x)表示y=1的概率,那么y=0的概率就是1- hθ(x)。
可以將兩個式子合并:
假設所有樣本都是獨立分布,接著求出參數的似然性:
為方便后面的計算,對它取對數,將累乘變成累和:
我們的目標就是找到θ,使對數似然性最大。為了求它的最大值,可以使用梯度下降的思想,逐步迭代,最終求極大值。所以這里可以叫做梯度上升法。那么接著對這個函數求偏導:
順便提一下logistic函數求導,根據鏈式求導法則得到如下表達式:
現在就得到了梯度上升的迭代公式:
準確來說,得到的是隨機梯度上升的公式,即每進行一個樣本的擬合,就更新一次參數。與之相對應的,是批梯度上升。
雖然決策函數hθ(x(i))是一個非線性的函數,這個公式是由一個不同的算法推導出來,但是推導過程與最終結果都與線性回歸與最小二乘法差不多,接下來就介紹另一種求極值的方法。
2.牛頓法
梯度下降法和牛頓法都是為了求函數最優解,但是方式不同。梯度下降法的步驟是,選擇一組隨機值,計算函數的導數,接著沿著導數的反方向,也就是沿著下降的方向前進一步,逐步逼近最小值。而當一個函數存在極值時,它的極值點處的一階導數等于0,那么用迭代的方法逐步逼近一階導數為0的位置,就是牛頓法的核心思想。接下來看具體步驟:
上圖是某函數的一階導數f(x),要求y=0位置處的值,首先隨機取一點A,做A的切線,交x軸于θ(1),再過做x軸垂線,交f(x)于點B,再做B的切線,以此類推,逼近極值點。那么根據導數和線段上的關系,有以下表達式:
其中f(x)是邏輯回歸里的似然函數l(θ)的導數,于是牛頓法求似然函數的迭代公式為:
當參數θ是一個向量時,牛頓法表示如下,?θ l(θ)是對l(θ)求θ的偏導數,H表示Hessian矩陣:
牛頓法通常比梯度下降法的收斂速度更快,對邏輯回歸的效果很好,經過較少的迭代次數就能得到較高的精度,但它也有缺點。牛頓法適用條件比較復雜,不像如梯度下降適用性那么廣。而且牛頓法需要計算Hessian矩陣,當參數較多時,運算量會很大:
3.指數分布族與多項分布
其他函數也能作為分類函數,理論上只要在0到1之間且單調即可。不過邏輯斯蒂函數與伯努利分布不是隨便寫出來的,它和線性回歸一樣,都是指數分布族的一個特例。指數族分布可以寫成如下形式:
η是分布的自然參數;
T(y)為充分統計量;
a(η)為對數分配函數。
當給定一組a,b,T,這個公式就定義了一個概率分布的集合。
對于伯努利二項分布,假設它的參數是φ,類別用0,1表示,可以這么表達:
p(y = 1; φ) = φ
p(y = 0; φ) = 1 – φ
那么伯努利分布可以改寫成如下形式:
所以參數
這就得到了sigmoid函數。所以總結一下,當指數分布族滿足以下條件時,可以推出伯努利分布。
除了高斯分布、伯努利分布,多項式分布也屬于指數分布族。多項式分布可以解決多分類問題,可以認為是二項分布的延伸。這里直接給出多分類問題的模型函數,具體推導這篇文章里寫的很詳細。
4.廣義線性模型
當我們要對單位時間內隨機事件發生的個數進行建模,我們可以用泊松分布;對二項分布問題建模,可以使用伯努利分布建模;但是,如果遇到一個特定的問題,沒有現成的模型可以使用時,我們就需要廣義線性模型來建立一套算法。為了推導出這些問題的模型,要對y的分布做以下三個假設:
1.給定x與θ,輸出y屬于指數族分布,并以η為參數。
2.模型的目標是預測T(y)的期望值,即h(x) = E[T(y)|x]。
3.η和輸入x是線性關系:η= θTx。
還是以二項分布為例,用廣義線性模型來對它建模。給定x,θ后,二項分布的輸出值應該是屬于某一類的概率,h(x) = E[y|x],期望值就是y=1的概率,P(y=1|x;θ)=φ,根據上文的已經推出的結論φ=1/(1+e^(-η) ),且η= θTx,于是得到: