從廣義線性模型到邏輯迴歸

原文:http://blog.csdn.net/mytestmy/article/details/18983889html

從廣義線性模型到邏輯迴歸git

 

 聲明:

1)該博文是整理自網上很大牛和機器學習專家所無私奉獻的資料的。具體引用的資料請看參考文獻。具體的版本聲明也參考原文獻

2)本文僅供學術交流,非商用。因此每一部分具體的參考資料並無詳細對應,更有些部分原本就是直接從其餘博客複製過來的。若是某部分不當心侵犯了你們的利益,還望海涵,並聯系老衲刪除或修改,直到相關人士滿意爲止。

3)本人才疏學淺,整理總結的時候不免出錯,還望各位前輩不吝指正,謝謝。

4)閱讀本文須要機器學習、統計學習理論、優化算法等等基礎(若是沒有也不要緊了,沒有就看看,當作跟同窗們吹牛的本錢)。

5)此屬於初版本,如有錯誤,還需繼續修正與增刪。還望你們多多指點。請直接回帖,本人來想辦法處理。

6)本人手上有word版的和pdf版的,有必要的話能夠上傳到csdn供各位下載算法

 

一.廣義線性迴歸api

迴歸方式比較經常使用的有線性迴歸和logistic迴歸.基本的形式都是先設定h_θ (x),而後求最最大似然估計L(θ),而後求出l(θ)=logL(θ),而後用梯度上升法或其它方法求出θ,二種迴歸如此類似的緣由就是在於它們都是廣義線性模型裏的一員。因此爲了有個整體上的把握,從廣義線性迴歸提及。
1.1指數家族
1.1.1 定義
若是一個概念分佈能夠表示成
p\left( {y;\eta } \right) = b\left( y \right)h\left( \eta  \right){\rm{exp}}\left( {{\eta ^T}T\left( y \right)} \right)        (1)機器學習

那麼這個機率分佈能夠稱之爲指數分佈, 其中η爲天然參數(Natural Parameter);T(y)爲充分統計量(Sufficient Statistics);h(η)爲歸一化常量(Normalization Constant),使得上式知足機率分佈的條件,即p(y;η)∈[0,1]而且函數

h\left( \eta  \right) \smallint \nolimits^ {\rm{b}}\left( {\rm{y}} \right){\rm{exp}}\left( {{\eta ^T}T\left( y \right)} \right)dy = 1

若是y爲離散型變量,上式由積分形式變爲求和形式便可。
對於給定的b,h,T三個函數,上式定義了一個以η爲參數的機率分佈集合,即改變η能夠獲得不一樣的機率分佈,參考參考文獻【1】。
T(y)爲何被稱爲充分統計量呢?下面來解釋這個問題。咱們將機率加和爲1法則對應的公式左右兩邊同時對η求導,可得
學習

對上式變形,並再次利用機率加和爲1法則,獲得下式優化

用更精簡的形式來表述:google

\nabla {\rm{ln}}h\left( \eta  \right) =  - E\left[ {T\left( y \right)} \right]

假設如今有N個樣本組成的數據集Y={y1,y2,⋯,yN},咱們用最大似然的方法來估計參數η,其對數似然函數形式以下:.net

將L對參數η求導並令其爲0,獲得

\nabla {\rm{ln}}h\left( {{\eta _{{\rm{ML}}}}} \right) =  - \frac{1}{N} \sum \limits_{i = 1}^N T\left( {{y_i}} \right)

根據上式能夠求解出{\eta _{{\rm{ML}}}}。咱們能夠看到最大似然估計僅僅經過 \sum \limits_{i = 1}^N T\left( {{y_i}} \right)依賴樣本點,所以被稱爲充分統計量。咱們只須要存儲充分統計量T(y)而不是數據自己。在Bernoulli分佈中T(y)=y,咱們只需保存全部樣本的加和 \sum \limits_i {y_i} ;在Gauss分佈中,T(y)=(y,y^2 )^T,所以咱們只要保持{\rm{T}}\left( {\rm{y}} \right) = {\left( {y,{y^2}} \right)^T} 便可。當N→∞時,上式的右側就等價於E[T(y)],{\eta _{{\rm{ML}}}}此時也就等於η的真實值。實際上,該充分特性僅僅適用於貝葉斯推理(Bayesian Inference),詳情請見《Pattern Recognition and Machine Learning》的第八章內容。 
廣義線性模型是經典線性模型的一個歸納。廣義線性模型包括了一些特殊模型,如線性迴歸,方差分析模型,量子反應中經常使用的對數和機率模型,對數線性模型和計數中用到的多反應模型,以及存活數據使用的一些通用模型。以上模型有一些共同的屬性,如線性——能夠利用其良好的性質;有通用的參數估計的方法。這些通用的屬性讓研究者能夠把廣義線性模型看成一個單獨的組來學習,而不是一系列不相關的主題來學習。

1.1.2 廣義線性模型

    指數家族的問題能夠經過廣義線性模型(generalized linear model, GLM)來解決。如何構建GLM呢?在給定x和參數後,y的條件機率p(y|x,θ) 須要知足下面三個假設:
    assum1) y | x; θ ∼ ExponentialFamily(η),,給定觀測值x和參數θ,y的分佈服從參數爲η的指數族分佈;
    assum2) h(x) = E[y|x]. 即給定x,目標是預測T(y)的指望,一般問題中T(y)=y
    assum3) {\rm{\eta }} = {\theta ^T}x,即天然參數η和觀測值x之間存在線性關係.
廣義線性模型的三步是:
    a)將y|x;θ變換成以η爲參數的指數分佈的形式
    b)由於h(x)=E[y|x],因此能過第1步的變換能夠獲得E[y|x]與η的對應關係(對於logistic迴歸,指望值是ø,ø與η的關係是{\o} = 1/\left( {1 + {e^{ - \eta }}} \right);對於線性迴歸,指望值是μ,μ與η的關係是η=μ)。
    c)設定\eta  = {\theta ^T}x(若是η是一個向量值的話,那麼{\eta _i} = {\theta _i}^Tx)

 

1.1.3 從指數家族到線性迴歸

第一步,高斯分佈與線性迴歸。
假設根據特徵的預測結果與實際結果有偏差ϵ_i,那麼預測結果{\theta ^T}{x_i}和真實結果{y_i}知足下式:

通常來說,偏差ϵ_i知足平均值爲0的高斯分佈,也就是正態分佈.

這是一個假設,這個假設符合客觀規律。若是偏差不符合高斯分佈,那有可能數據θ選的很差,要不就是數據自己的分佈是均勻的,迴歸作不了了。
有了預測結果和真實結果的關係,從上面的公式能獲得xi和yi的條件機率
{\rm{p}}\left( {{y_i}{\rm{|}}{x_i};{\rm{\theta }}} \right) = \frac{1}{{\sigma \sqrt {2\pi } }}{\rm{exp}}\left( { - \frac{{{{\left( {{y_i} - {\theta ^T}{x_i}} \right)}^2}}}{{2{\sigma ^2}}}} \right)                              (2)

上式能夠看出,選擇的θ較好,就能讓預測結果{\theta ^T}{x_i}和真實結果{y_i}的偏差較小的狀況出現的條件機率較大。
這樣就估計了一條樣本的結果機率,然而咱們期待的是模型可以在所有樣本上預測最準。那麼,就須要利用極大似然估計了,先寫出似然函數
                                       (3)

 

再寫出對數似然函數

                                                         (4)

其中有些變量如σ,跟自變量θ無關,而後還有第一項也與自變量θ無關,能夠去掉這些項。
極大似然估計是要求L(θ)的最大值,根據上面的討論,能夠最終轉化爲下面的優化問題來解。

 {\min }\limits_{\theta  \in {R^n}} \frac{1}{2} \sum \limits_{i = 1}^m {\left( {{y_i} - {\theta ^T}{x_i}} \right)^2}                                      (5)

 

其中

{\rm{f}}\left( \theta  \right) = \frac{1}{2} \sum \limits_{i = 1}^m {\left( {{y_i} - {\theta ^T}{x_i}} \right)^2}

就是線性迴歸的損失函數。
第二步,指數家族與高斯分佈。
上面已經說過,{y_i}|{x_i};{\rm{\theta }}\~{\rm{{\rm N}}}\left( {{\rm{\mu }},{\sigma ^2}} \right),設方差爲1(方差並不影響結果,僅僅是變量y的比例因子)。這種狀況下高斯機率密度函數爲:

       (6)

 

對於上面的狀況,只要對指數分佈

p\left( {y;\eta } \right) = b\left( y \right)h\left( \eta  \right){\rm{exp}}\left( {{\eta ^T}T\left( y \right)} \right)

{\rm{\eta }} = {\left( {\frac{{\rm{\mu }}}{{{\sigma ^2}}}, - \frac{1}{{2{\sigma ^2}}}} \right)^T}{\rm{T}}\left( {\rm{y}} \right) = {\left( {y,{y^2}} \right)^T}{\rm{h}}\left( {\rm{\eta }} \right) = {\left( {{\sigma ^2}} \right)^{ - \frac{1}{2}}}exp\left( { - \frac{{{y^2}}}{{2{\sigma ^2}}}} \right){\rm{b}}\left( {\rm{y}} \right) = \frac{1}{{\sqrt {2\pi } }}就能獲得上面的式子(6)。

 

1.1.4 從指數家族到logistic迴歸

第一步,伯努利分佈與logistic迴歸。
在logistic迴歸中,因變量y再也不是連續的變量,而是二值的{0,1},中間用到logit變換,將連續性的y值經過此變換映射到比較合理的0~1區間。在廣義線性迴歸用於分類問題中,也有一個假設(對應於上面迴歸問題中偏差項獨立同分佈於正態分佈)。
{\rm{P}}\left( {{\rm{y}} = 1{\rm{|x}};{\rm{\theta }}} \right) = {h_\theta }\left( x \right)

{\rm{P}}\left( {{\rm{y}} = 0{\rm{|x}};{\rm{\theta }}} \right) = 1 - {h_\theta }\left( x \right)

 

統一表示成

其中h(x)是logistic function,即給定x和參數θ,y服從伯努利分佈(上面迴歸問題中,給定x和參數,y服從正態分佈)。從而似然函數和對數似然函數能夠寫成

                                      (7)

                         (8)

就是logistic迴歸的損失函數。求解θ,使得l(θ)最大,就能獲得問題的解。
第二步,指數家族與伯努利分佈。
{\rm{P}}\left( {{\rm{y}};\phi } \right) = {\phi ^y}{\left( {1 - \phi } \right)^{1 - y}} = \exp \left( {{\rm{ylog}}\phi  + \left( {1 - {\rm{y}}} \right)\log \left( {1 - \phi } \right)} \right)

{\rm{P}}\left( {{\rm{y}};\phi } \right) = \left( {1 - \phi } \right)\exp \left( {{\rm{ylog}}\frac{\phi }{{1 - \phi }}} \right)                                (9)

 

對於上面的狀況,只要對指數分佈

{\rm{p}}\left( {{\rm{y}};{\rm{\eta }}} \right) = {\rm{b}}\left( {\rm{y}} \right){\rm{exp}}\left( {{\eta ^T}{\rm{T}}\left( {\rm{y}} \right) - {\rm{a}}\left( {\rm{\eta }} \right)} \right)

取b(y)=1,{\rm{\eta }} = {\rm{log}}\frac{\phi }{{1 - \phi }}\phi  = 1/\left( {1 + {e^{ - \eta }}} \right),T(y)=y,{\rm{h}}\left( {\rm{\eta }} \right) = 1 - \phi  = 1/\left( {1 + {e^\eta }} \right) 就能獲得上面的式子(9)。

1.2有關logistic迴歸

1.2.1擬合模型

擬合的定義是:由測量的數據,估計一個假定的模型(也稱爲函數)f。對於每個數據x,能夠經過計算獲得f(x),加入x的因變量是y,那麼通常有y=f(x),固然,能夠不用絕對相等(這個每每作不到),可是差距必定要小。
如何擬合,擬合的模型是否合適?可分爲以三類:a)合適擬合;b)欠擬合;c)過擬合。分別由下圖表示。

 

   a)欠擬合                                                                                                       b)合適的擬合                                                                       c)過擬合

對於上面的幾種狀況,假設函數定義爲,藍線右上方的數據爲正類(也就是定義一個函數g(x),函數的曲線就是那個藍線,而後f(x)=sgn(g(x)),其中sgn是符號函數),具體參看文獻【4】。

欠擬合的問題是訓練數據中有不少規律沒有學習到,會致使在模型訓練完後(函數f(x)的形式學習完),使用f(x)進行判別新的樣本時出現大量的錯誤,這個對使用該算法是很很差的。
過擬合的問題是把訓練數據學習的規律學習得太好,在模型訓練完成後,使用f(x)進行判別新的樣本時,對出現兩種狀況:a)新樣本與訓練樣本分佈徹底一致,那判別的效果很好;b)新樣本與訓練樣本分佈不徹底一致,判別的結果就是會出現大量的錯誤。也就是說過擬合的話,對新樣本沒有比較好的容錯能力,要求新來的樣本必須跟原來的一致,這樣在實際應用中也是不合適的。另外,學習一個過擬合的模型(函數f(x)的形式)花費的時間不少,並且函數f(x)的形式也很複雜,實際操做起來很是困難,也就是模型複雜度很高。
把新的樣本判別好的能力叫泛化能力。訓練一個模型時泛化能力和模型複雜度都是須要考慮的問題。一個模型要應用起來,都但願是儘量簡單的模型。
過擬合的問題有幾個緣由:模型太複雜,參數過多,特徵數目過多。
解決方法有幾種。
方法: 1) 減小特徵的數量,有人工選擇,或者採用模型選擇算法
http://www.cnblogs.com/heaad/archive/2011/01/02/1924088.html (特徵選擇算法的綜述),目前能在工業界應用較廣的是人工選擇特徵,評估特徵與選擇特徵幾乎是數據挖掘工程師平常的主要工做了。如今工業界比較火的deeplearning,就是號稱能讓算法自動選擇特徵,因此比較火,但對於不少應用來講,仍是比較難作到自動選擇的;可是對於語音和圖像這些比較規則的數據,自動選擇特徵仍是能夠作的,聽說效果很好。
2) 正則化,即保留全部特徵,但下降參數的值的影響。正則化的優勢是,特徵不少時,每一個特徵都會有一個合適的影響因子。工業界用L1正則,能自動選擇一些有用的特徵,下面會再討論。


1.2.2經驗風險與結構風險

指望風險(真實風險),可理解爲 模型函數固定時,數據平均的損失程度,或「平均」犯錯誤的程度。 指望風險是依賴損失函數和機率分佈的。
只有樣本,是沒法計算指望風險的。
因此,採用經驗風險,對指望風險進行估計,並設計學習算法,使其最小化。即經驗風險最小化(Empirical Risk Minimization)ERM,而經驗風險是用損失函數來評估的、計算的。
對於分類問題,經驗風險,就訓練樣本錯誤率。
對於函數逼近,擬合問題,經驗風險,就平方訓練偏差。
對於機率密度估計問題,ERM,就是最大似然估計法。
而經驗風險最小,並不必定就是指望風險最小,無理論依據。只有樣本無限大時,經驗風險就逼近了指望風險。
如何解決這個問題? 統計學習理論SLT,支持向量機SVM就是專門解決這個問題的。
有限樣本條件下,學習出一個較好的模型。
因爲有限樣本下,經驗風險Remp[f]沒法近似指望風險R[f] 。所以,統計學習理論給出了兩者之間的關係。
記h爲函數集F的VC維(VC維水很深,在這就不深刻討論了,基本結論是VC維越大,分類函數集F越大),l是樣本數,若
{\rm{l}} > {\rm{h}}

{\rm{h}}\left( {ln\frac{{2l}}{h} + 1} \right) + ln\frac{4}{\delta } \ge \frac{1}{4}

則對於任意的機率分佈P(x,y),任意的δ∈(0,1]和任意的F中的函數f都有至少以1-δ的機率成立的不等式

{\rm{R}}\left[ {\rm{f}} \right] \le {R_{emp}}\left[ f \right] + \sqrt {\frac{8}{l}\left( {h\left( {ln\frac{{2l}}{h} + 1} \right) + ln\frac{4}{\delta }} \right)}

其中{R_{emp}}\left[ f \right]是經驗風險,第二項{\rm{\varphi }}\left( {{\rm{h}},{\rm{l}},\delta } \right) = \sqrt {\frac{8}{l}\left( {h\left( {ln\frac{{2l}}{h} + 1} \right) + ln\frac{4}{\delta }} \right)} 稱爲置信區間,這兩項之和稱爲結構風險。
結構風險是指望風險R[f]的一個上界。
看下圖,結構風險與經驗風險、置信區間的關係

圖中的橫座標t能夠認爲是決策函數集合F的大小,縱座標是風險。當集合F增大時,候選函數增多,經驗風險會減小;然而另外一方面,當集合F增大時,它的VC維h會增大,注意上圖中,置信區間會隨着h的增大而增大。要使結構風險最小,就要兼顧決策函數集F對經驗風險和置信區間兩個方面的影響,選擇一個適當大小的集合F。

 

二.邏輯迴歸問題與解法

2.1問題

上面討論過的logistic迴歸問題的損失函數,可是這個損失函數是沒有正則項的,爲了能創建模型的時候控制一下過擬合問題,須要對損失函數加上正則項,目的是爲了讓每一個特徵的權重不要過大。
爲了整合上面的logistic迴歸以及過擬合的需求,同時爲了方便表示,下面用x代替θ,之後再遇到樣本,就用v表示。
下面介紹一個帶正則的logistic迴歸問題。對於相似於Logistic Regression這樣的Log-Linear模型,通常能夠歸結爲最小化下面這個問題。
J(x)=l(x)+r(x)

等號的右邊的第一項是上面的對數似然函數,其具體形式爲

                         (2.1)

 

其中的g(t)的形式是

{\rm{g}}\left( {\rm{t}} \right) = {x^T}v

後者r(x)爲regularization項,用來對模型空間進行限制,從而獲得一個更「簡單」的模型,從而下降模型的置信區間。
根據對模型參數所服從的機率分佈的假設的不一樣,regularization term通常有:L1-norm(模型參數服從Gaussian分佈);L2-norm(模型參數服從Laplace分佈);以及其餘分佈或組合形式。

L2-norm的形式相似於:

{\rm{J}}\left( {\rm{x}} \right) = {\rm{l}}\left( {\rm{x}} \right) + {\rm{C}} \sum \limits_i x_i^2                            (2.2)

 

L1-norm的形式相似於:

{\rm{J}}\left( {\rm{x}} \right) = {\rm{l}}\left( {\rm{x}} \right) + {\rm{C}} \sum \limits_i \left| {{x_i}} \right|                       (2.3)

 

L1-norm和L2-norm之間的一個最大區別在於前者能夠產生稀疏解,這使它同時具備了特徵選擇的能力,此外,稀疏的特徵權重更具備解釋意義。

對於損失函數的選取就不在贅述,看三幅圖:

image

圖1 - 紅色爲Laplace Prior,黑色爲Gaussian Prior 

 

image

圖2 直觀解釋稀疏性的產生

 

 

圖3 求導角度解釋稀疏性的產生

 

2.2解法相關

解這個問題有兩種狀況。
一種是直接根據全部的樣本求解到一個最優解有多種算法。
其中一個解法是,順序一條一條地掃描訓練樣本,每來一個樣本,model的參數進行一次迭代,通過若干輪的掃描,獲得最優解,這樣的一個求解方式叫SGD(Stochastic gradient descent)。另外一種是把大量數據分紅多批,數據一批一批地過來,每過來一批數據,model進行一次迭代,這樣進行多輪,這種方式叫作mini批量梯度降低(mini Batch gradient descent)。還有一種是全部的數據做爲一批過來,每一輪迭代就掃描全部的樣本,這種方式叫作批量梯度降低(Batch gradient descent)。
批量迭代算法的基礎能夠參考博文《無約束優化方法讀書筆記—入門篇》。
其中一種工業界經常使用解法LBFGS參看轉載的博文《OWL-QN算法》。
第二種是要保證model(也就是最優解)的快速更新,訓練樣本是一條一條地過來的,每來一個樣本,model的參數對這個樣本進行一次迭代,從而保證了model的及時更新,這種方法叫作OGD(Online gradient descent),也叫在線學習算法。
其中一種工業界使用的在線學習算法FTRL參考博文《在線學習算法FTRL》。

致謝

多位CSDN和博客園的博主,他們在我寫這個筆記的過程當中提供了多方面的資料。

課本《支持向量機:理論、算法與拓展》的做者 鄧乃揚、田英傑

 

參考文獻

 

[1] http://blog.csdn.net/maverick1990/article/details/12564973 @maverick1990的csdn博客

[2] http://www.cnblogs.com/frog-ww/archive/2013/01/06/2846955.html@frog_ww的博客園博客

[3] http://blog.csdn.net/lilyth_lilyth/article/details/10032993 @玉心sober的csdn博客

[4] http://blog.csdn.net/viewcode/article/details/8794401  @viewcode D的csdn博客

[5] http://www.cnblogs.com/jeromeblog/p/3405458.html Jerome's BlogDeep 博客園

[6] http://blog.csdn.net/wangjinyu501/article/details/7689767 OWL-QN算法--gongxue

[7] 支持向量機:理論、算法與拓展. 鄧乃揚、田英傑

相關文章
相關標籤/搜索