廣義線性模型(GLM)


一、廣義線性模型概念

在討論廣義線性模型之前,先回顧一下基本線性模型,也就是線性回歸

在線性回歸模型中的假設中,有兩點需要提出:

(1)假設因變量服從高斯分布:$Y={{\theta }^{T}}x+\xi $,其中誤差項$\xi \sim N(0,{{\sigma }^{2}})$,那么因變量$Y\sim N({{\theta }^{T}}x,{{\sigma }^{2}})$。  

(2)模型預測的輸出為$E[Y]$,根據$Y={{\theta }^{T}}x+\xi $,$E[Y]=E[{{\theta }^{T}}x+\xi ]={{\theta }^{T}}x$,記$\eta ={{\theta }^{T}}x$,則$\eta =E[Y]$

廣義線性模型可以認為在以上兩點假設做了擴展:

(1)因變量分布不一定是高斯分布,服從一個指數分布族(見下文)即可。

(2)模型預測輸出仍然可以認為是$E[Y]$(實際上是$E[T(Y)]$,許多情況下$T(Y)=Y$),但是$Y$的分布不一定是高斯分布,$E[Y]$和$\eta ={{\theta }^{T}}x$也不一定是簡單的相等關系,它們的關系用$\eta =g(E[Y])$描述,稱為連接函數,其中$\eta $稱為自然參數。

由於以上兩點的擴展,廣義線性模型的應用比基本線性模型廣泛許多。對於廣義線性這個術語,可以理解為廣義體現在因變量的分布形式比較廣,只要是一指數分布族即可,而線性則體現在自然參數$\eta ={{\theta }^{T}}x$是$\theta $的線性函數。

二、廣義線性模型的構建

上文提到指數分布族,它是廣義線性模型的基礎,所以先簡單了解一下指數分布族。

對於變量$y$,如果其分布可寫成$p(y;\eta )=b(\eta )\exp ({{\eta }^{T}}T(y)-a(\eta ))$的形式,則稱$y$服從一個指數分布族,自然參數$\eta $是分布的參數。為什么這樣定義是牛逼的數學家弄的,咱就看看它在廣義線性模型中怎么用的吧~

實際中的許多分布都是一個指數分布族,如高斯分布,二項分布,泊松分布,多項分布等等,所以之前寫的線性回歸邏輯回歸實際上都是個廣義線性模型。以邏輯回歸為例來看看。

邏輯回歸假設$y$服從參數為$\phi $伯努利分布,$p(y)={{\phi }^{y}}{{(1-\phi )}^{1-y}}$,$E[y]=\phi $。

下面將其寫出指數分布族的形式:

$\begin{align}  p(y)&={{\phi }^{y}}{{(1-\phi )}^{1-y}} \\& =\exp (\log ({{\phi }^{y}}{{(1-\phi )}^{1-y}})) \\& =\exp (y\log (\phi )+(1-y)\log (1-\phi )) \\ & =\exp (y\log (\frac{\phi }{1-\phi })+\log (1-\phi )) \\\end{align}$

與指數分布族的一般形式對比可發現:

$\begin{align}& b(\eta )=1 \\& \eta =\log (\frac{\phi }{1-\phi })\Rightarrow \phi =\frac{1}{1+{{e}^{-\eta }}} \\& T(y)=y \\& a(\eta )=-\log (1-\phi ) \\\end{align}$

可見這是符合假設(1)的。根據假設(2),我們預測的是

$\begin{align}{{h}_{\theta }}(x)&=E[T(y)] \\& =E[y](=\phi ) \\& =\frac{1}{1+{{e}^{-\eta }}} \\& =\frac{1}{1+{{e}^{-{{\theta }^{T}}x}}} \\\end{align}$

這正是之前邏輯回歸的模型。

可以看出以上推導過程中$E[y]=\frac{1}{1+{{e}^{-\eta }}}$這一步比較重要,起到了連接預測值$E[y]$和自然參數$\eta $的作用,這就是連接函數的作用。

回顧假設(1)(2)和以上邏輯回歸推導過程,可以看出,構建一個廣義線性模型需要兩個步驟:

(1)確定預測變量$y$的分布是一個指數分布族

(2)確定連接函數。連接函數可以是任意的,但根據上文可以看出,一但步驟(1)中的分布形式給定,就可以推導出一個連接函數,這個根據分布推導出的分布稱為標准連接函數,也是通常默認采用的。所以一般步驟(1)中分布的形式給定,步驟(2)也就默認確定了。

經過以上兩個步驟,模型就建立好了,接下來就是寫出似然函數,最大化似然函數估計模型參數。對於廣義線性模型的參數估計,有個專門的算法IRWLS(iteratively weighted least squares),感興趣的可以查閱相關文獻。另外,關於模型的假設檢驗,也不寫了。寫不出來。。。看來幾天數學課本,頭炸了。。還是安靜的做個程序員吧~

三、廣義線性模型應用

廣義線性模型的應用最廣泛的的是邏輯回歸和泊松回歸。邏輯回歸將因變量建模為伯努利分布,輸出是二值的,通常用來做二分類。泊松回歸將因變量的分布建模為泊松分布,一般用來預測類似顧客數目、一個時間段內給定事件發生數目的問題。

另外,對於多分類問題,將因變量建模為多項分布也是一個廣義線性模型。

之前在邏輯回歸中,沒有提到廣義線性模型,現在可以直接用R中提供的廣義線性模型來擬合。

1 x<-read.table("q1x.txt"); 2 x<-as.matrix(x); 3 y<-scan("q1y.txt"); 4 y<-matrix(y,ncol=1); 5 
6 gfit<-glm(y~x,family=binomial()); 7 print(coef(gfit));
View Code

可以看出這和之前擬合的參數基本一致。

泊松回歸和多項回歸沒弄得數據,不代碼模擬了~

附:R中GLM相關

R中用glm(formula,family...)函數來做廣義線性模型,並且提供了一下指數族分布:

binomial(link = "logit")
gaussian(link = "identity")
Gamma(link = "inverse")
inverse.gaussian(link = "1/mu^2")
poisson(link = "log")
quasi(link = "identity", variance = "constant")
quasibinomial(link = "logit")
quasipoisson(link = "log")

用上選項指定glm()中family參數,就可以得到不同的模型。

另外,robust包中的glmRob()函數可用來擬合穩健的廣義線性模型,包括穩健Logistic回歸,穩健泊松回歸等。當擬合Logistic回歸模型數據出現離群點和強影響點時,穩健Logistic回歸便可派上用場;
多項分布回歸:若響應變量包含兩個以上的無序類別,便可使用mlogit包中的mlogit()函數擬合多項Logistic回歸;
序數Logistic回歸:若響應變量是一組有序的類別(比如,信用風險為差/良/好),便可使用rms包中的lrm()函數擬合序數Logistic回歸

參考資料

[1]Andrew Ng 機器學習視頻講義:http://cs229.stanford.edu/

[2]統計之都:http://cos.name/2011/01/how-does-glm-generalize-lm-assumption/

[3]《R語言實戰》 /(美)科巴科弗(Kabacoff,R.I.)著;高濤,肖楠,陳鋼譯.人民郵電出版社,2013.1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM