logistic regression
原理
前言
邏輯迴歸與分類同線性迴歸與分類有很強的關係;關於邏輯迴歸算法本身的學習應當參考線性回所指出的一般性思路,即先找兩個算法的共同點;其後就邏輯迴歸算法設計的獨到之處進行辨明,即學習該算法相較於其他算法的不同點;從中領略算法設計的思想。
建模
邏輯迴歸的建模是明確且簡單的,假設具有(x0(0),x1(0),...),(x0(1),x1(1),...),...這樣的一組特徵向量,或者特徵矩陣;具有(y0,y1,...)這樣的一組標籤,那麼構建起標籤同特徵向量的關係爲
Y=1+e−hθ(X)1
這裏hθ(X)就是線性迴歸的模型,具體可參考鏈接。
這也就明確了,logistic regression 實際上就是需要去確定一組合適的θ使得上述計算出的結果同真實標籤的差異最小化;因此接下來就可以基於上述模型,定義出損失函數:
L(θ)=−i=1∑nyilog(p(xi,θ))+(1−yi)log(1−p(xi,θ))
這裏的p(x,θ)就是上述的模型函數。現在先不考慮爲什麼不是像線性迴歸那樣的絕對值差,先就認爲要優化的函數就是上述的L,值得說一句的是這裏的L就是深度學習裏常見的交叉熵函數,那麼一般來說,我們通常採用基於梯度下降的方法來優化L,下面進行推導∂θ∂L
∂θi∂L=i=1∑n(−yip(xi,θ)1∂θi∂p(xi,θ)−(1−yi)(1−p(xi,θ))1∂θi∂p(xi,θ))
這裏的P就是上面的sigmoide函數,以下簡稱P,這裏借用sigmoid函數的性質y‘=y(1−y)代入上述偏微分表達式,可得上式左邊等於
−i=1∑n(yiP1−(1−yi)(1−P)1)P(1−P)∂xi∂hθ
進一步可得
−1∑n(yi−P)∂xi∂hθ
這裏∂xi∂hθ就是之前的線性迴歸時的模型的偏微分。
至此,如果使用梯度下降方法進行優化,梯度的計算就可以得到。
回顧以下:1. 定義sigmoid形制的模型,2. 採用交叉熵形制的損失函數,3. 使用梯度下降法在推導出的微分表達式中可以獲得權重θ的最佳結果
思路
從上面可以看出,設計logistic regression的思路同線性迴歸裏面所提到的機器學習一般性思路是一以貫之的;即建模,定義損失函數建模,制定損失函數建模的優化方法。
但是,相較於在線性迴歸裏面簡單的線性加權建模,這裏卻用到了sigmoid形制的建模;另外在定義損失函數時並沒有像之前那樣使用預測值與標籤的絕對差來定義。下面就這些不同點,一一討論。
爲什麼採用sigmoid
首先,如果我們如果考察線性迴歸的表現形式時,可以知道在訓練的一開始其實是平等對待每一個特徵,但是如果特徵設計不合理,或者有離羣特徵點的話,線性迴歸處理的方式很可能得到一個不好的模型;但是採用sigmoid形制,因爲將輸出實際上壓在0~1之間,實際上可以較爲有效的處理這些離羣點的影響。當然這只是定性的解釋。
定量的的原因是:1. 假定標籤y服從伯努利分佈,伯努利分佈是指隨機變量只能取0或者1,非此即彼,2. 然後認爲Y∣X滿足廣義線性模型,即實際上認爲有這樣的一個分佈,η=θX,η滿足一個指數形式的分佈
基於這上述兩點可以推導出sigmoid形制函數實際是y的後驗概率。
這個理由我其實覺得很扯,因爲上面提到的具體的指數形式有很多,可能導致推導的後驗概率表達式不一樣,但又有人說sigmoid是伯努利分佈的正則link函數鏈接,這可以參考參考。
我個人感覺最爲靠譜的解釋是從貝葉斯定理的角度出發的
從貝葉斯定理出發可有:
p(y=1∣x)=p(x∣y=0)p(y=0)+p(x∣y=1)p(y=1)p(x∣y=1)p(y=1)
假定Y∣X服從伯努利分佈,可得:
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧p(y=1)p(y=0)p(x∣y=1)p(x∣y=0)=ϕ=1−ϕ=2π1/2σ11/21exp(−2σ12(x−μ1)2)=2π1/2σ01/21exp(−2σ02(x−μ2)2)
然後將上式代入上面的貝葉斯公式,將公式進行變形
p(y=1∣x)=1+p(x∣y=1)p(y=1)p(x∣y=0)p(y=0)1=1+ϕ1−ϕh(x,μ0,μ1,σ0,σ1)1
其中這裏的h的表達形式如下,這裏假定σ是一樣的:
exp(σ2(μ1−μ0)x−2σ2(μ1−μ0)2)
然後可以做進一步變化
p(y=1∣x)=1+h×exp(ln(ϕ1−ϕ))1
此時將h代入,並令x的係數項爲θ,令其餘常數項爲b,則上式可變爲
p(y=1∣x)=1+e−(θx+b)1
爲什麼採用交叉熵構建損失函數
瞭解這一點之前需要了解泛函的凸性判斷,因爲梯度下降法等常見優化方法在凸函數裏面可以保證收斂到全局最優點,但是如果函數非凸,則不能保證。
凸函數的定義是這樣的,對於λ∈[0,1],取定義域上兩點x,y,滿足:
f(λx+(1−λy))≤λf(x)+(1−λ)f(y)
而sigmoid函數的圖像,令x的係數爲-10:
可以看出不滿足上述凸的定義;因此在設計損失函數時,並不能直接套用將這個函數代入線性迴歸那樣的做法中。
然而採用交叉熵那樣的做法是符合凸函數的情形。