【漫话机器学习系列】004.赤池信息量准则(AIC:Akaike Information Criterion)

赤池信息量准则(Akaike Information Criterion, AIC)

1. 概念

赤池信息量准则(AIC)是一种用于模型选择的统计方法,由赤池弘次(Hirotugu Akaike)于1974年提出。AIC 平衡了模型的拟合度和复杂性,用来评估一组候选模型中哪一个模型更适合数据。其核心思想是,在追求模型良好拟合的同时,避免模型过于复杂(过拟合)。

2. 公式

AIC 的公式为:

AIC = 2k - 2\ln(\hat{L})

其中:

  • k:模型中的参数个数(自由度)。
  • \hat{L}:模型的最大似然估计值。
  • ln(\hat{L}) 是对数似然值。

3. 公式解释
  1. 模型拟合度-2\ln(\hat{L})

    • 最大似然估计值 L 越大,表明模型对数据的拟合越好,-\ln(\hat{L}) 越小。
    • 因此,对数据的拟合程度可以通过 -2\ln(\hat{L}) 来衡量。
  2. 复杂度惩罚(2k):

    • k 是模型的参数数量,表示模型复杂度。
    • 参数数量越多,模型越复杂,惩罚越大,以避免选择过于复杂的模型。
  3. 目标

    • AIC 的目标是最小化模型的 AIC 值,找到既能很好拟合数据又不过于复杂的模型。

4. AIC 的目标

AIC 的目的是在一组候选模型中选择出那个最能平衡拟合优度与模型复杂度的模型。具体而言:

  • 模型拟合:模型的拟合程度越好(即 \hat{L} 越大),AIC 值越小。
  • 模型复杂度:模型的参数个数越多(即 k 越大),AIC 值越大。

通过 AIC,我们希望选出那些能够充分拟合数据的模型,但又不过于复杂,避免过拟合的发生。


5. AIC 的性质
  1. 最小化 AIC:AIC 值越小的模型越好。AIC 值是一个相对标准,不同模型的 AIC 值可以进行比较,但不能直接解释单个模型的 AIC 值。
  2. 惩罚复杂度:AIC 对模型的参数数量进行惩罚,因此它有助于避免过拟合问题。即使一个模型拟合得非常好(对数似然很高),如果它使用了过多的参数,AIC 值也会较高。
  3. 用于模型选择:AIC 是模型选择的标准之一,尤其是在不同的统计模型之间进行比较时,AIC 是一种常见的评判标准。

6. 使用场景
  1. 模型选择

    • 比较不同模型的 AIC 值,AIC 越小的模型越优。
    • 可用于线性回归、逻辑回归、时间序列分析等领域的模型选择。
  2. 模型优劣评估

    • 适合不同复杂程度的模型对同一数据集的拟合效果比较。
  3. 限制

    • AIC 不适用于非嵌套模型比较(模型间结构差异较大时效果不佳)。
    • 需要模型具有相同的因变量和相似的最大似然框架。

7. Python 实现

以下代码以线性回归为例,计算 AIC 值:

import numpy as np
from sklearn.linear_model import LinearRegression

# 示例数据
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([1.1, 2.0, 2.9, 4.1, 5.2])

# 拟合线性回归模型
model = LinearRegression()
model.fit(X, y)
y_pred = model.predict(X)

# 计算最大似然估计值 L
n = len(y)
residuals = y - y_pred
rss = np.sum(residuals**2)  # 残差平方和
sigma2 = rss / n  # 估计的残差方差
log_likelihood = -n / 2 * np.log(2 * np.pi * sigma2) - rss / (2 * sigma2)

# 参数个数
k = 2  # 截距和斜率

# 计算 AIC
AIC = 2 * k - 2 * log_likelihood

print(f"AIC 值: {AIC:.4f}")

输出结果 

AIC 值: -5.5906

 以 Python 中的 statsmodels 库为例,演示如何计算 AIC:

import numpy as np
import statsmodels.api as sm

# 生成数据
np.random.seed(0)
X = np.random.rand(100, 3)
y = X @ np.array([1, 2, 3]) + 5 + np.random.randn(100)

# 拟合一个线性回归模型
X = sm.add_constant(X)  # 添加常数项
model = sm.OLS(y, X)
result = model.fit()

# 打印模型的AIC值
print(f'AIC: {result.aic}')

输出结果

AIC: 277.2799777710925

8. AIC 的局限性
  • 只比较同类模型:AIC 适合比较拟合相同数据的模型,不适用于不同数据集或不同因变量的模型。
  • 样本大小影响:当样本量较小时,AIC 值可能会低估复杂模型的惩罚,因此需要改进版本如 AICc(修正 AIC)。

9. 相关扩展
  1. AICc(修正 AIC)

    AICc = AIC + \frac{2k(k+1)}{n-k-1}
    • 当样本量 n 较小或接近参数数量 k 时,AICc 提供更准确的模型选择标准。
  2. BIC(贝叶斯信息量准则)

    BIC = k\ln(n) - 2\ln(\hat{L})
    • BIC 对模型复杂度的惩罚更高,适合用于寻找更加简洁的模型。

10. 总结
  • 赤池信息量准则是模型选择的标准之一,权衡模型拟合度与复杂性。
  • 它适用于最大似然估计框架下的模型。
  • 使用 AIC 时,应关注数据量和模型复杂度的匹配。

赤池信息量准则(AIC)是评估统计模型的常用工具。它通过对模型的拟合优度和复杂度进行平衡,帮助我们在多个候选模型中选择最优模型。AIC 尤其适用于需要对不同模型进行比较的场景,如回归分析、时间序列分析等。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值