bic准则 python实现_模型选择方法:AIC和BIC

推荐看一下参考文献【4】

引入【3】

经常地,对一堆数据进行建模的时候,特别是分类和回归模型,我们有很多的变量可供使用,选择不同的变量组合可以得到不同的模型,例如我们有5个变量,2的5次方,我们将有32个变量组合,可以训练出32个模型。但是哪个模型更加的好呢?目前常用有如下方法:

AIC=-2 ln(L) + 2 k  中文名字:赤池信息量 akaike information criterion

BIC=-2 ln(L) + ln(n)*k 中文名字:贝叶斯信息量 bayesian information criterion

HQ=-2 ln(L) + ln(ln(n))*k  hannan-quinn criterion

L是在该模型下的最大似然,n是数据数量,k是模型的变量个数

三个模型A, B, C,在通过这些规则计算后,我们知道B模型是三个模型中最好的,但是不能保证B这个模型就能够很好地刻画数据,因为很有可能这三个模型都是非常糟糕的,B只是烂苹果中的相对好的苹果而已。

这些规则理论上是比较漂亮的,但是实际在模型选择中应用起来还是有些困难的,我们不可能对所有这些模型进行一一验证AIC, BIC,HQ规则来选择模型,工作量太大。

AIC

赤池信息量准则,即Akaike information criterion、简称AIC,是衡量统计模型拟合优良性的一种标准,是由日本统计学家赤池弘次创立和发展的。赤池信息量准则建立在熵的概念基础上。

AIC越小,模型越好,通常选择AIC最小的模型

在一般的情况下,AIC可以表示为【2】:

AIC=(2k-2L)/n

它的假设条件是模型的误差服从独立正态分布。

其中:k是所拟合模型中参数的数量,L是对数似然值,n是观测值数目。k小意味着模型简洁,L大意味着模型精确。因此在评价模型是兼顾了简洁性和精确性。

具体到,L=-(n/2)*ln(2*pi)-(n/2)*ln(sse/n)-n/2.其中n为样本量,sse为残差平方和,L主要取决于残差平方和,为负数

(所以还可以写成:AIC = (2k + 2|L|)/n

解释【1】:

在AIC之前,我们需要知道Kullback–Leibler information或 Kullback–Leiblerdistance。对于一批数据,假设存在一个真实的模型f,还有一组可供选择的模型g1、g2、g3…gi,而K-L 距离就是用模型 gi 去估计真实模型 f 过程中损失的信息。可见K-L 距离越小,用模型 gi 估计真实模型 f 损失的信息越少,相应的模型 gi 越好。

然后,问题来了。怎么计算每个模型 gi 和真实模型 f 的距离呢?因为我们不知道真实模型 f,所以没办法直接计算每个模型的K-L距离,但可以通过信息损失函数去估计K-L距离。日本统计学家Akaike发现log似然函数和K-L距离有一定关系,并在1974年提出Akaike information criterion,AIC。通常情况下,AIC定义为:AIC=2k-2ln(L),其中k是模型参数个数,L是似然函数。

-2ln(L)反映模型的拟合情况,当两个模型之间存在较大差异时,差异主要体现在似然函数项-2ln(L),当似然函数差异不显著时,模型参数的惩罚项2k则起作用,随着模型中参数个数增加,2k增大,AIC增大,从而参数个数少的模型是较好的选择。AIC不仅要提高模型拟合度,而且引入了惩罚项,使模型参数尽可能少,有助于降低过拟合的可能性。然后,选一个AIC最小的模型就可以了。

BIC

BIC=-2 ln(L) + ln(n)*k

BIC的惩罚项比AIC的大,考虑了样本数量,样本数量过多时,可有效防止模型精度过高造成的模型复杂度过高。

AIC和BIC的原理是不同的,AIC是从预测角度,选择一个好的模型用来预测,BIC是从拟合角度,选择一个对现有数据拟合最好的模型,从贝叶斯因子的解释来讲,就是边际似然最大的那个模型

参考资料

【1】http://www.360doc.com/content/18/0729/23/58010060_774288493.shtml    AIC,一个越小越好的指标

【2】百度百科:赤池信息量准则 AIC

【3】https://blog.csdn.net/xianlingmao/article/details/7891277    模型选择的几种方法:AIC,BIC,HQ准则

【4】https://cosx.org/2015/08/some-basic-ideas-and-methods-of-model-selection   模型选择的一些基本思想和方法

你可能感兴趣的:(bic准则,python实现)