2013年10月2日 星期三

[無關程式] AIC和統計建模


這篇是我最近在讀這本書的一些些筆記,主題是AIC,除非你這個人夠無聊又極富耐性,不然請慎入(是說這個網誌除了我以外大概也沒有其他人會來吧吧吧吧)

沒耐性的就早早洗洗睡了吧

AIC就是Akaike Information Criterion的縮寫,在使用各種常見的統計方法進行建模時,常常都會用它來作為評估模型好壞的指標

顧名思義,這個指標是由一個叫做Akaike的人提出的,基本上不要試著用英文去唸這個字,因為他是日本人。這個人的名字應該要唸成『阿-咖-咿-擠』

噢扯遠了

言歸正傳,AIC基本上長這樣:

$-2log(L)+2p $

其中$log(L)$就是的log-likelihood然後$p$是參數的數目


先來看看看最大概似估計(maximum likelihood estimator)吧:

假設我們現在有一筆資料$x_n$,我們假設有一個模型$f(x|\theta)$是這筆資料最好的描述,我們必須解出$\theta$!

maximum likelihood estimator幫我們找到的是這樣的解 $\widehat{\theta}_n$:

$\widehat{\theta}_n = \operatorname*{arg\,max}_{\theta  \in  \Theta } log\big(f(x_n|\theta)\big)$

然而,夠大的log-likelihood就行了嗎?其實不然,在maximum likelihood estimate的架構下,一味追求把$log\big(f(x_n|\theta)\big)$變大其實會帶來非常不合理的結果

舉個非常簡單的例子,線性迴歸模型(linear regression model):

$Y=\bf{X^T} \bf{\beta}+\epsilon$       $\epsilon\sim N(0,\sigma^2)$

likelihood function長這樣:


$f(y_i|\bf{x_i};\beta) = \frac{1}{2\pi\sigma^2} exp\big\{ -\frac{1}{2\sigma^2}(y_i-\bf{x^T_i} \bf{\beta})^2\big\}$


log-likelihood如下:


$l(\widehat{\beta}) = \sum_{i=1}^n logf(y_i|x_i;\beta) $

                                        $= - \frac{n}{2} 2log(\pi \sigma^2)  -\frac{1}{2\sigma^2} \sum_{i=1}^n(y_i-\bf{x^T_i}\beta)^2 $ 


如果我們的目的只是要讓$l(\widehat{\beta})$變小,我們就只要無止盡的增加$\bf{x^T_i}\beta $的維度,就可以讓每個$y_i-(x^T_{i1} \beta_1+x^T_{i2}\beta_2+x^T_{i3}\beta_3+...)$變得超小。但是這樣反而會使model裡有太多沒用的預測子,造成over-fitting的問題


因此,單靠夠大的log-likelihood是不夠的!!!


接下來插播Kullback-Leibler Divergence ($KL_{D}$):

$KL_{D}$是一個表示兩個pdf距離的量,定義是:


$KL_{D} =\int g(z)\frac{g(z)}{f(z)} dx$

其中$g(z)$是true probability 
$f(z)$則是model

其實也就G(Z)是真實pdf的情況下,一個log-likehood的概念

$E_{G}  \left[log \frac{G(Z)}{F(Z)} \right]$


啊這到底和統計建模有筍磨關係?


$KL_{D}$、統計建模和log-likelihood

其實,統計建模的精神就是,我們永遠不知道真實的分配$G(Z)$長怎樣,所以我們就去創造一個叫做$F(Z)$的model來模擬$G(Z)$。換句話說,$F(Z)$和$G(Z)$越接近,我們對$F(Z)$就越有把握

所以我們希望$KL_{D}\big(G,F\big)$很小,最好小到不能再小,這樣就表示我們的$F(Z)$非常完美

$KL_{D}\big(G,F\big)= E_{G}\left[\textrm{log} \frac{G(Z)}{F(Z)} \right]$

$=E_{G}\left[\textrm{log} g(Z)\right]-E_{G}\left[\textrm{log}f(Z)\right]$

$E_{G}\left[\textrm{log} g(Z)\right]$是一個常數,基本上我們對他無能為力。我們只能盡量讓$E_{G}\left[\textrm{log}f(Z)\right]$變大,只要$E_{G}\left[\textrm{log}f(Z)\right]$夠大,就可以讓$KL_{D}\big(G,F\big)$就夠小,我們的model就越完美!

所以,請記得,越好的model的可以使得

$E_{G}\left[\textrm{log}f(Z)\right]$夠大!



log_likelihood的誤差估計

我們回到熟悉的log-likelihood:

$l(\widehat{\theta}) = \sum_i^n \textrm{log}f(x_i|\widehat{\theta})$

$\frac{1}{n} \sum_i^n \textrm{log}f(x_i|\widehat{\theta}) \rightarrow \int \textrm{log}f(z|\widehat{\theta})d \widehat{G}(z) = E_\widehat{G}\left[{log}f(Z|\widehat{\theta})\right]$

所以照理來說,$l(\widehat{\theta})$應該是$nE_\widehat{G}[{log}f(Z|\widehat{\theta})]$)的估計值,但是因為使用了同一筆資料兩次(先估計$\theta$再用來估計$nE_\widehat{G}[{log}f(Z|\widehat{\theta})]$)使得這樣的估計出現了偏誤(bias)

我們把這個bias寫成

$b(G) = E_G( \bf{x_n})\left[\textrm{log}f(\bf{X_n}|\widehat{\theta}(\bf{X_n}))-nE_G(z) \left[\textrm{log} f(Z|\widehat{\theta}(\bf{X_n}))\right]\right]$

假設當$n\rightarrow\infty$時$\theta_n$會逼近真實的值$\theta_0$

我們把剛剛的$b(G)$改寫一下,改成$D1$、$D2$和$D3$的相加


$b(G) = E_G( \bf{x_n} )\left[\textrm{log}f(\bf{X_n}|\widehat{\theta}(\bf{X_n}))-nE_G(z) \left[\textrm{log}f(Z|\widehat{\theta}(\bf{X_n}))\right]\right]$

$=E_G( \bf{x_n})\left[\textrm{log}f(\bf{X_n}| \widehat{\theta}( \bf{X_n} ))-\textrm{log}f(\bf{X_n}|\theta_0)\right]...D1$

$+E_G( \bf{x_n})\left[\textrm{log}f(\bf{X_n}|\theta_0)-nE_G(z) [\textrm{log}f(Z|\theta_0)]\right]...D2$

$E_G( \bf{x_n})\left[nE_G(z) \left[\textrm{log}f(Z|\theta_0)\right]-nE_G(z) [\textrm{log}f(Z|\widehat{\theta}(\bf{X_n}))]\right]...D3$

計算$D1$:

先把$logf(\bf{X_n}|\theta_0)$寫成$l(\theta_0)$

然後搬出泰勒展開式

$l(\theta_0) \sim l(\widehat{\theta}) + (\theta_0-\widehat{\theta})^T\frac{\partial l(\widehat{\theta})}{\partial \theta} + \frac{1}{2}(\theta_0-\widehat{\theta})^T\frac{\partial^2 l(\widehat{\theta})}{\partial \theta \partial \theta^T} (\theta_0-\widehat{\theta})$

因為maximum likelihood estimator基本上就是在找可以使$\frac{\partial l(\widehat{\theta})}{\partial \theta}$為0的$\theta$,所以

$(\theta_0-\widehat{\theta})^T\frac{\partial l(\widehat{\theta})}{\partial \theta}=0$

maximum likelihood estimator在大數法則下:

$\frac{\partial^2 l(\widehat{\theta})}{\partial \theta\partial \theta^T} \rightarrow nJ(\theta_0)$

然後$D1$就可以寫成

$E_G(x_n)\left[l(\widehat{\theta}) - l(\theta)\right]$

$=\frac{n}{2}E_G(x_n)\left[(\theta_0-\widehat{\theta})J(\theta_0)(\theta_0-\widehat{\theta})^T\right]$

$=\frac{1}{2}tr\big\{I(\theta_0)J(\theta_0)^{-1}\big\}$

其中:

$I(\theta_0)=\int g(x)\frac{\partial \textrm{log}f(x|\theta)}{\partial \theta}\frac{\partial \textrm{log}f(x|\theta)}{\partial \theta^T}dx$

$J(\theta_0)=\int g(x)\frac{\partial^2 \textrm{log}f(x|\theta)}{\partial \theta \partial \theta^T}dx$


計算$D2$:

$E_G( \bf{x_n})\left[\textrm{log}f(\bf{X_n}|\theta_0)-nE_G(z) [\textrm{log}f(Z|\theta_0)]\right]$

$=E_G( \bf{x_n})\left[\sum_{i=1}^n\textrm{log}f(\bf{X_i}|\theta_0)\right]-nE_G(z)\left[ [\textrm{log}f(Z|\theta_0)]\right]$

$=0$


計算$D3$:

先把$nE_G(z) \left[\textrm{log}f(Z|wide_theta{\theta})\right]$寫成$\eta(\widehat{\theta})$

然後再度搬出泰勒展開式:

$\eta(\widehat{\theta}) \sim \eta(\theta_0) + \sum_{i=1}^n(\widehat{\theta}_i-\theta_i^{(0)})\frac{\partial \eta(\theta_0)}{\partial \theta_i} +\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^n(\widehat{\theta}_i-\theta_i^{(0)})(\widehat{\theta}_j-\theta_j^{(0)})\frac{\partial^2 \eta(\theta_0)}{\partial \theta_i \partial \theta_j}$


和在計算$D1$時一樣,

$\frac{\partial \eta(\theta_0)}{\partial \theta_i}=E_G(z)\left[\frac{\partial}{\partial theta_i} \textrm{log} f(Z|\theta)\right|\theta_0] = 0,$   $i=1,2,...n$

因此

$\eta(\widehat{\theta}) \sim \eta(\theta_0) - \frac{1}{2}(\theta_0-\widehat{\theta})J(\theta_0)(\theta_0-\widehat{\theta})^T$

$D3$就可以寫成

$nE_G(z) \left[\eta(\theta_0)-\eta(\widehat{\theta})\right]$

$=nE_G(z) \left[\frac{1}{2}(\theta_0-\widehat{\theta})J(\theta_0)(\theta_0-\widehat{\theta})^T\right]$

$=\frac{n}{2}tr \big\{J(\theta_0)E_G(z) \left[(\theta_0-\widehat{\theta})(\theta_0-\widehat{\theta})^T\right]\big\}$

$=\frac{1}{2}tr\big\{I(\theta_0)J(\theta_0)^{-1}\big\}$


現在我們把$D1$、$D2$和$D3$加起來

$b(G)=\frac{1}{2}tr\big\{I(\theta_0)J(\theta_0)^{-1}\big\}+0+\frac{1}{2}tr\big\{I(\theta_0)J(\theta_0)^{-1}\big\}$

$=tr\big\{I(\theta_0)J(\theta_0)^{-1}\big\}$


現在我們回過頭來看看$I(\theta_0)$和$J(\theta_0)$

$-J(\theta_0)=\int g(x)\frac{\partial^2 \textrm{log}f(x|\theta)}{\partial \theta \partial \theta^T}dx$

$=E_G\left[\frac{1}{f(x|\theta)}\frac{\partial^2 }{\partial \theta \partial \theta^T}f(x|\theta)\right]-E_G\left[\frac{\partial}{\partial \theta_i} \textrm{log}f(x|\theta) \frac{\partial}{\partial \theta_j }\textrm{log} f(x|\theta)\right]$

當$g(x)=f(x|\theta_0)$時

$E_G\left[\frac{1}{f(x|\theta)}\frac{\partial^2 }{\partial \theta \partial \theta^T}f(x|\theta)\right]$

$=\int \frac{\partial^2}{\partial \theta_i \partial \theta_j} f(x|\theta_0)dx$

$=\frac{\partial^2}{\partial \theta_i \partial \theta_j}\int  f(x|\theta_0)dx=0$

這個時候$I(\theta_0)$就會等於$J(\theta_0)$

$b(G) =tr\big\{I(\theta_0)J(\theta_0)^{-1}\big\}$

$=tr(I_p) = p$


AIC、log-likelihood和$b(G)$

AIC其實就是

$-2(\textrm{log-likelihood})+2(\textrm{estimator of }b(G))$

因此AIC越小表示model越好

log-likelihood和$b(G)$代入就完成了!

$AIC = -2log(L)+2p$

參考資料:

Konishi, Sadanori, Kitagawa, Genshiro (2007). Information criteria and statistical modeling. Springer

12 則留言:

  1. hi ,您好,我看完了这篇文章,但是有2个点不明白,期待您的指教:
    1、“我們回到熟悉的log-likelihood:” 下面第2行就是那个1/n 开头的公式是怎么算的?
    2、“但是因為使用了同一筆資料兩次(先估計了θ再用。。。。。”,这里的意思是说:样本x 作为两个统计量去估计参数,怎么就会有了bias的概念?这个东西怎么用英文来描述,或者说有这方面的google资料吗?

    您那个参考资料的那本书我实在不敢看,因为已经工作了是在没有那么多时间。。。。
    谢谢您的精彩的文章!!!

    回覆刪除
    回覆
    1. 你的問題讓我發現了一個致命的錯誤,就是應該要加上log 阿阿阿阿阿!!!加上log之後應該就很清楚了,第二行就是LNT(Law of large number)的結果。

      然後第二個部分,如果同樣一筆資料涉及到"使用兩次"的話,一般在統計上都會處裡偏誤的問題。我想到有一個東西可以類比,就是估計樣本變異的時候會除以(n-1)而不是n,因為同樣一筆資料已經用來估計期望值(平均數)後再用來估計變異,這也是處理偏誤後的結果。

      刪除
    2. 第二个问题:我更疑惑了,除以 n-1 而不是n 应该是确保无偏估计吧,
      “料涉及到"使用兩次"的話,一般在統計上都會處裡偏誤的問題”,这个说法我真是第一次听过,能不能google下一篇文章 给我看看,因为我是在不知道怎么表达?谢谢

      刪除
    3. 还有第一个问题,您说是 law of large number,然后我google了一下
      》》“http://zh.wikipedia.org/wiki/%E5%A4%A7%E6%95%B0%E5%AE%9A%E5%BE%8B”
      "设 a_1 , a_2 , ... , a_n , ... 为相互独立的随机变量,其数学期望为: E(a_i) = \mu (i = 1,2,...) ,方差为: Var(a_i) = \sigma^2 (i=1,2,...)
      则序列\overline{a}= \frac{1}{n} \sum_{i=1}^n a_i依概率收敛于\mu(即收敛于此数列的数学期望E(a_i))。

      换言之,在定理条件下,当n无限变大时,n个随机变量的算术平均将变成一个常数。"
      如果套在你这里的话logf(xi|θˆ) 就是随机变量,那么也只会以概率收敛于他的期望值,那么等号右边的d也只是针对该变量啊,为何会是dGˆ(z)?
      1n∑nilogf(xi|θˆ)=∫logf(z|θˆ)dlogf(xi|θˆ),为什么可以换掉,求解释

      刪除
    4. 我想是我的遣詞不夠精確,提供書上的原文如下(p.53):
      However, as is evident from the process by which the log-likelihood in (3.71) was derived, the log-likelihood was obtained by estimating the expected log-likelihood by reusing xn that were initially used to estimate the model in place of the future data (Figure 3.5). The use of the same data twice for estimating the parameters and for estimating the evaluation measure (the expected log-likelihood) of goodness of the estimated model give rise to the bias.

      刪除
    5. 關於LLN的部分,我發現我的符號有點問題,已改正,請笑納

      刪除
    6. 嗯 多谢楼主的耐心,帮助我比较透彻的理解了aic。关于bias的概念,我请教了一下其他人,本文产生bias的原因是因为你用样本 估计了参数theta,然后同一theta有两个统计量:logf(Xn|θˆ(Xn))和 nEG(z)[logf(Z|θˆ(Xn)),也就是说 这两个统计量是相关的(都含有theta),一个会受制于另一个,所以才会有bias;但是“同一笔资料估计樣本變異和計期望值的时候是不会有bias的,因为两个统计量没有任何关系的,就是说一个不会依赖于另一个的”,不过我这种说法也不是太严密,还得考虑考虑。。。。。

      刪除
    7. 嗯 多谢楼主的耐心,帮助我比较透彻的理解了aic。关于bias的概念,我请教了一下其他人,本文产生bias的原因是因为你用样本 估计了参数theta,然后同一theta有两个统计量:logf(Xn|θˆ(Xn))和 nEG(z)[logf(Z|θˆ(Xn)),也就是说 这两个统计量是相关的(都含有theta),一个会受制于另一个,所以才会有bias;但是“同一笔资料估计樣本變異和計期望值的时候是不会有bias的,因为两个统计量没有任何关系的,就是说一个不会依赖于另一个的”,不过我这种说法也不是太严密,还得考虑考虑。。。。。

      刪除
    8. 我在讀這段的時候有些卡住,我當時是借助變異數估計的例子幫助我理解處理偏誤的必要性。
      變異數的定義是(X-mu)^2的平均,但是mu也是用同樣一個樣本估計出來的(樣本的平均),所以會產生偏誤(bias)。同理,在計算log-likelihood時需要用到theta,但是theta是估計出來的,所以得處裡偏誤的問題。

      刪除
  2. 作者已經移除這則留言。

    回覆刪除