Model Selection1
问题设置
假设我们已经有一个由分布F生成的dataset。而待选择的统计模型有

每个M_i都是一个测度族。比如说,它们分别是指数分布族、Gamma族、log-nomal族。我们想知道哪个测度族对于数据拟合地最好。再比如说,对于multilinear regression,我们要选择采用哪些predictor才不会过拟合。
Model selection这个问题从一开始就存在,只不过被我们忽略了。假设我们想要对于一个器件的寿命做统计,首先要建立统计模型。以前都是直接告诉我们用某个模型,然后做inference就完事了;但是在实际中如果有多个模型待选,我们就必须根据数据来选择。这个选择不能说看着哪个比较像,而必须要有定量的刻画。
而且这不仅是一个统计问题,而且也是scientific inquiry的一个基本问题。All models are wrong, but some are useful.我们要做的就是分辨出useful的模型。
常用的是三种criteria:AIC,BIC,cross validation。本文将从偏理论的角度来讲。
首先回顾一下以前的一些处理渐进问题的结论和工具。首先是Taylor展开以及Delta method:

Score function:

它刻画的是log-likelihood的斜率,所以可以看作是X包含\theta的信息量的刻画。其期望为0。Score function的协方差矩阵就是Fisher information:

Cramer-Rao不等式指出var的下界:

Consistency of MLE:

以及asymptotic efficiency of MLE:

其证明用的是Taylor展开(利用\hat{\theta}是likelihood的极大值点)。

AIC
Akaike information criterion,来自赤池弘次。
思路是这样的:真实的概率测度为p(y),但是我们不知道。我们有k个参数模型:

每个模型的参数个数(\Theta_j的维度)都可以不一样。
现在我们有一些数据,用这些数据,对于每一个M_j,都可以用MLE方法算出一个估计的概率密度,它相当于整个M_j中“能够估计出来的最接近”的p的概率测度(但不是真的最接近,即最小化KL散度):

那么这个概率测度和真实的p差了多少呢?衡量两个概率测度之间的差距,最常用的就是KL散度(它不对称,所以不是距离。下面的是P到Q的KL散度):

所谓P到Q的KL散度,P一般取真实分布,Q取近似分布。它必然是非负的(Gibbs不等式)。
下面我们考察真实分布p到近似分布\hat{p}_j的KL散度:

(这是一个随机变量)
我们希望在\hat{p}_j里面找到对于p的KL散度最小的那个。也就是说,我们想要找到找到使K_j最大的j:

需要想清楚,这是一个随机变量,写成下面的形式更明显:

不过类比MLE的consistency性质,它大约会在大样本的时候接近于一个常数(\hat{\theta}\xrightarrow{p}最小化KL散度的\theta_0)。
但是我们不知道p(y),所以无法确切地知道K_j。但是我们可以想办法估计K_j。一个自然的想法是:

(这是一个随机变量)
l是log-likelihood。但是这个estimator是biased的,原因在于数据被用了两次(构建MLE,再用MLE算统计量)。所以我们需要修正(这个修正项是AIC的关键):

这个estimator是渐进正确的(指的是,它的期望值与前面那个随机变量的期望值渐进相等)。严格来说,(仔细看这个式子)

这个结论的严格证明(渐进分析),实在找不到一个写得舒服的,就姑且不管它了。
这样一来结果就是:对于每个待选的模型,我们计算AIC统计量:

(符号跟系数都是约定俗成,无所谓的)。AIC最小的那个是最好的模型。
这个结果的直观意义非常显著:首先我们需要拟合比较好(L比较大),但是又要防止过拟合(k比较小),二者权衡给出了AIC。所以说AIC有种Occam's Razor的味道在里面。Occam's Razor好像是人为地给一个模型加上complexity penalty,但是AIC告诉我们,complexity penalty是最小化KL散度自然得出的,而且它与fitness的权重刚好是1:1,并不是某种“人为的考虑”。
需要注意的是,AIC没有给出一个模型的absolute quality,只是相对的quality,所以由它选择出的model是矮子里挑高个,未必是一个好的模型。选出来之后还是要检查一下是否的确是一个好模型。

Cross Validation
Cross-validation是应用最广泛、也最不需要特定假设的方法,而且也最直观。它是把dataset做切割,一部分用来做training,另一部分用来做test,然后看test error如何。它有点像KNN,是完全flexible的,可以用于任意情况。The beauty of cross-validation is its simpicity and generality. It can be shown that AIC and cross-validation have very similar behavior. But, cross-validation works under weaker conditions.
常用的做法有这样几种:leave-one-out cross-validation,即用下面的statistic作为cross-validation score:

即把i除掉的dataset作为training set,用来test i,把所有test error加起来。另一种是k-fold cross-validation,把数据随机分成k组,用k-1组做training,剩下一组做test,然后加起来。
我们从理论上分析一下cross-validation有什么好。考虑一个特殊情况:参数估计(而不是regression或者classification)。假设我们有2n个数据点,平均分为两半,分别为training set D={Y_1,...,Y_n}与test set T={Y_1^*,...,Y_n^*}。用training set来训练MLE\hat{\theta},然后我们就可以找到MLE与真实分布的距离刻画:

这个K越大越好。我们不知道K的具体值是多少,但是可以去estimate。现在情况比AIC好多了,因为我们有独立的test set(validation set)用来估计(这就是cross-validation的精髓所在["cross"]):

因为没有出现算两次的问题,所以这个estimator是没有bias的。它就是我们的cross-validation score。我们想要选取\hat{K})_j中最大的一个作为最好的模型。我们的问题是:\hat{K}最大的,一定是K最大的吗?
我们假设有一个bounded条件(实际上可以去掉,只是为了证明方便)|log f|<B。则根据Hoeffding不等式给出一个概率凝聚关系:

从而

只要n足够大,\hat{K}最大的那个大概率就是K最大的那个,也就是拟合最好的那个。
Regression与classification是类似的,不过cross-validation score要改成MSE或者error rate。
Cross-validation也是找到一个最好的模型,虽然它未必是正确的模型。这与BIC不同。BIC是假设有一个正确的模型,去找到它。

BIC
BIC 统计量定义为

它对于模型复杂度的penalty比AIC更大。所以相比于AIC,它会倾向于选择出更加简单的模型。这个统计量这么来的:完全按照Bayes的想法来。我们先给各个模型设置一些prior:

然后计算后验概率(渐进分析的推导也不写了):

注意lnp_j这项作为O(1),在渐进下没了。
BIC的含义在于,exp(BIC_j)给出了模型j的近似后验概率(有种Boltzmann分布的味道)。
BIC和AIC以及CV的假设不同,所以结果也会有比较大的差别。
我们还可以接着BIC谈一下Bayesian model averaging。我们按照前面的exp(BIC_j)概率来做averaging:
