使用 AIC、BIC 和 MDL 进行概率模型选择

模型选择是指从一组候选模型中选择一个模型的问题。

通常,我们会选择在留存测试数据集上表现最好的模型,或者使用重采样技术(如 k-折交叉验证)来估计模型性能。

模型选择的另一种方法是使用概率统计量,这些统计量试图量化模型在训练数据集上的性能和模型的复杂性。例如,赤池信息准则、贝叶斯信息准则和最小描述长度。

这些信息准则统计量的优点是它们不需要留存测试集,尽管局限性在于它们不考虑模型的“不确定性”,并可能最终选择过于简单的模型。

在本文中,您将了解用于机器学习模型选择的概率统计量。

阅读本文后,你将了解:

  • 模型选择是从一组候选模型中选择一个模型的挑战。
  • 赤池信息准则和贝叶斯信息准则是根据模型的对数似然性和复杂性对模型进行评分的两种方法。
  • 最小描述长度提供了另一种信息论评分方法,该方法可以被证明等同于 BIC。

开始您的项目,阅读我的新书 《机器学习概率》,其中包含分步教程和所有示例的Python源代码文件。

让我们开始吧。

Probabilistic Model Selection Measures AIC, BIC, and MDL

概率模型选择度量 AIC、BIC 和 MDL
照片由 Guilhem Vellut 拍摄,保留部分权利。

概述

本教程分为五个部分;它们是:

  1. 模型选择的挑战
  2. 概率模型选择
  3. 赤池信息准则
  4. 贝叶斯信息准则
  5. 最小描述长度

模型选择的挑战

模型选择是拟合多个模型到给定数据集并选择一个优于其他模型的过程。

模型选择:估计不同模型的性能以便选择最佳模型。

— 第 222 页,《统计学习要素》,2016 年。

这可能适用于无监督学习,例如选择聚类模型,或监督学习,例如选择回归或分类任务的预测模型。它也可能是建模的一个子任务,例如为给定模型进行特征选择。

有许多常用的模型选择方法。例如,在监督学习的情况下,最常用的三种方法是

  • 训练、验证和测试数据集。
  • 重采样方法。
  • 概率统计。

最简单可靠的模型选择方法包括在训练集上拟合候选模型,在验证数据集上进行调优,并根据选定的指标(如准确率或误差)选择在测试数据集上表现最好的模型。这种方法的缺点是它需要大量数据。

重采样技术试图在数据集较小的情况下实现与训练/验证/测试模型选择方法相同的目标。一个例子是 k-折交叉验证,其中训练集被分成许多训练/测试对,并在每个对上拟合和评估模型。对每个模型重复此过程,并选择在 k 折上平均得分最高的模型。这种方法和之前的方法的问题在于,它们只评估模型性能,而不考虑模型复杂性。

模型选择的第三种方法试图将模型的复杂性与模型的性能结合成一个分数,然后选择最小化或最大化该分数的模型。

我们可以将这种方法称为统计模型选择或概率模型选择,因为评分方法使用了概率框架。

想学习机器学习概率吗?

立即参加我为期7天的免费电子邮件速成课程(附示例代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

概率模型选择

概率模型选择(或“信息准则”)提供了一种分析技术,用于对候选模型进行评分和选择。

模型根据其在训练数据集上的性能和模型的复杂性进行评分。

  • 模型性能。候选模型在训练数据集上的表现如何。
  • 模型复杂性。训练后训练好的候选模型有多复杂。

模型性能可以使用概率框架来评估,例如在最大似然估计框架下的对数似然。模型复杂性可以评估为模型中的自由度或参数数量。

历史上,人们提出了各种“信息准则”,试图通过添加惩罚项来纠正最大似然的偏差,以补偿更复杂模型对过拟合的惩罚。

— 第 33 页,《模式识别与机器学习》,2006 年。

概率模型选择方法的一个好处是,不需要测试数据集,这意味着所有数据都可以用于拟合模型,并且可以直接对将用于领域预测的最终模型进行评分。

概率模型选择方法的一个局限性在于,不能对一系列不同类型的模型计算相同的通用统计量。相反,必须为每个模型仔细推导指标。

应该注意的是,AIC 统计量是为模型之间的预计划比较而设计的(而不是在自动化搜索过程中对许多模型进行比较)。

— 第 493 页,《应用预测建模》,2013 年。

这些选择方法的一个进一步限制是它们不考虑模型的“不确定性”。

然而,这些准则没有考虑模型参数的不确定性,并且在实践中它们倾向于偏爱过于简单的模型。

— 第 33 页,《模式识别与机器学习》,2006 年。

有三种统计方法可以估计给定模型与数据集的拟合程度以及模型的复杂性。并且每个都可以被证明是等同或成比例的,尽管每个都是从不同的框架或研究领域推导出来的。

它们是

  • 赤池信息准则 (AIC)。源于频率派概率。
  • 贝叶斯信息准则 (BIC)。源于贝叶斯概率。
  • 最小描述长度 (MDL)。源于信息论。

每个统计量都可以使用模型的对数似然和数据来计算。对数似然来自最大似然估计,这是一种在训练数据集的响应中查找或优化模型参数的技术。

最大似然估计 中,我们希望最大化给定特定概率分布及其参数(theta)的观测数据的条件概率(X),形式化表述为

  • P(X ; theta)

其中 X 实际上是来自问题域 1 到 n 的所有观测值的联合概率分布。

  • P(x1, x2, x3, …, xn ; theta)

联合概率分布可以重述为给定分布参数的每个示例的条件概率的乘积。将许多小的概率相乘可能不稳定;因此,通常将此问题重述为自然对数条件概率之和。

  • sum i to n log(P(xi ; theta))

鉴于对数在似然函数中的频繁使用,它通常被称为对数似然函数。

常见预测问题中的对数似然函数包括回归的均方误差(例如线性回归)和二元分类的对数损失(二元交叉熵)(例如逻辑回归)。

在接下来的部分中,我们将更详细地研究 AIC、BIC 和 MDL 这三个统计量。

赤池信息准则

赤池信息准则 (Akaike Information Criterion),简称 AIC,是一种对模型进行评分和选择的方法。

它以该方法开发者 赤池弘次 (Hirotugu Akaike) 命名,并且可以表明它基于信息论和频率派推断。

它源于频率派框架,不能解释为边际似然的近似。

— 第 162 页,《机器学习:概率视角》,2012 年。

AIC 统计量针对逻辑回归的定义如下(摘自“《统计学习要素》”)

  • AIC = -2/N * LL + 2 * k/N

其中 N 是训练数据集中的样本数量,LL 是模型在训练数据集上的对数似然,k 是模型中的参数数量。

如上定义的得分是最小化的,即选择 AIC 值最小的模型。

要使用 AIC 进行模型选择,我们只需在考虑的模型集合中选择给出最小 AIC 的模型。

— 第 231 页,《统计学习要素》,2016 年。

与 BIC 方法(如下)相比,AIC 统计量对复杂模型的惩罚较小,这意味着它可能更侧重于模型在训练数据集上的性能,进而选择更复杂的模型。

我们看到 AIC 的惩罚小于 BIC。这导致 AIC 选择更复杂的模型。

— 第 162 页,《机器学习:概率视角》,2012 年。

贝叶斯信息准则

贝叶斯信息准则 (Bayesian Information Criterion),简称 BIC,是一种对模型进行评分和选择的方法。

它以其衍生出的研究领域命名:贝叶斯概率和推断。与 AIC 一样,它适用于在最大似然估计框架下拟合的模型。

BIC 统计量针对逻辑回归的计算如下(摘自“《统计学习要素》”)

  • BIC = -2 * LL + log(N) * k

其中 log() 是以 e 为底的自然对数,LL 是模型的对数似然,N 是训练数据集中的样本数量,k 是模型中的参数数量。

如上定义的得分是最小化的,即选择 BIC 值最小的模型。

计算的数量与 AIC 不同,尽管可以证明它与 AIC 成比例。与 AIC 不同,BIC 对模型的复杂性给予更大的惩罚,这意味着更复杂的模型将具有更差(更大)的分数,从而选择的可能性更小。

请注意,与 AIC [… ] 相比,它对模型复杂性的惩罚更重。

— 第 217 页,《模式识别与机器学习》,2006 年。

重要的是,BIC 在贝叶斯概率框架下的推导意味着,如果候选模型集合包含数据集的真实模型,那么 BIC 选择真实模型的概率会随着训练数据集的增大而增加。AIC 得分则不能如此。

…给定一个模型族,包括真实模型,当样本量 N → ∞ 时,BIC 选择正确模型的概率接近于一。

— 第 235 页,《统计学习要素》,2016 年。

BIC 的一个缺点是,对于较小、代表性较差的训练数据集,它更有可能选择过于简单的模型。

最小描述长度

最小描述长度 (Minimum Description Length),简称 MDL,是一种对模型进行评分和选择的方法。

它以其衍生出的研究领域命名,即信息论。

信息论关注的是在有噪声信道上传输信息和表示信息,因此,它测量熵等量,熵是表示随机变量或概率分布的事件所需的平均比特数。

从信息论的角度来看,我们可能希望同时传输预测(或更准确地说,它们的概率分布)以及用于生成它们的模型。目标变量的预测和模型都可以用在有噪声信道上传输它们所需的比特数来描述。

最小描述长度是最小比特数,或表示模型和表示模型所需的比特数之和的最小值。

最小描述长度 (MDL) 原则建议选择最小化这两个描述长度之和的假设。

— 第 173 页,《机器学习》,1997 年。

MDL 统计量按如下方式计算(摘自“《机器学习》”)

  • MDL = L(h) + L(D | h)

其中 h 是模型,D 是模型做出的预测,L(h) 是表示模型所需的比特数,L(D | h) 是表示模型在训练数据集上的预测所需的比特数。

如上定义的得分是最小化的,即选择 MDL 值最小的模型。

编码 (D | h) 所需的比特数和编码 (h) 所需的比特数可以计算为负对数似然;例如(摘自“《统计学习要素》”)

  • MDL = -log(P(theta)) – log(P(y | X, theta))

或者模型参数 (theta) 的负对数似然,以及目标值 (y) 在给定输入值 (X) 和模型参数 (theta) 下的负对数似然。

这种最小化模型及其预测编码的愿望与 奥卡姆剃刀 的概念相关,该概念寻求最简单的(最不复杂的)解释:在这种情况下,是预测目标变量的最不复杂的模型。

MDL 原则认为,对一组数据而言,最好的理论是能够最小化理论本身的大小加上指定相对于理论的例外情况所需的信息量的理论……

— 第 198 页,《数据挖掘:实用的机器学习工具和技术》,第 4 版,2016 年。

MDL 计算与 BIC 非常相似,并且在某些情况下可以被证明是等同的。

因此,BIC 准则,作为对数后验概率的近似推导,也可以被视为一种通过最小描述长度进行(近似)模型选择的设备。

— 第 236 页,《统计学习要素》,2016 年。

线性回归的示例

我们可以通过一个示例来具体计算 AIC 和 BIC。

在本节中,我们将使用一个测试问题,拟合一个线性回归模型,然后使用 AIC 和 BIC 度量来评估模型。

重要的是,AIC 和 BIC 对于线性回归模型的特定函数形式已经推导出来,这使得示例相对直接。在改编这些示例以适应您自己的算法时,重要的是要为您的模型和预测问题找到合适的计算推导,或者自己进行推导。

在本例中,我们将使用 scikit-learn 的 make_regression() 函数提供的测试回归问题。该问题将有两个输入变量,并需要预测目标数值。

我们将直接在整个数据集上拟合 LinearRegression() 模型

拟合完成后,我们可以报告模型中的参数数量,考虑到问题的定义,我们预计会有三个(两个系数和一个截距)。

线性回归模型的似然函数可以证明与最小二乘函数相同;因此,我们可以通过均方误差度量来估计模型的最大似然。

首先,可以使用该模型为训练数据集中的每个样本估计一个结果,然后可以使用 scikit-learn 的 mean_squared_error() 函数来计算模型的均方误差。

将所有内容联系起来,定义数据集、拟合模型并报告参数数量和模型最大似然估计的完整示例列在下面。

注意:您的 结果可能不同,这取决于算法或评估过程的随机性,或数值精度的差异。考虑运行示例几次并比较平均结果。

运行示例,首先报告模型中的参数数量为 3,正如我们预期的那样,然后报告 MSE 约为 0.01。

接下来,我们可以调整示例以计算模型的 AIC。

跳过推导,普通最小二乘线性回归模型的 AIC 计算如下(摘自“统计识别模型的新视角”,1974 年。)

  • AIC = n * LL + 2 * k

其中 n 是训练数据集中的样本数量,LL 是模型使用自然对数的对数似然(例如,MSE 的对数),k 是模型中的参数数量。

下面的 `calculate_aic()` 函数实现了这一点,它将 n、原始均方误差 (mse) 和 k 作为参数。

然后可以更新示例以利用此新函数并计算模型的 AIC。

完整的示例如下所示。

运行示例,如前所述报告参数数量和 MSE,然后报告 AIC。

注意:您的 结果可能不同,这取决于算法或评估过程的随机性,或数值精度的差异。考虑运行示例几次并比较平均结果。

在这种情况下,AIC 报告的值约为 -451.616。可以最小化此值以选择更好的模型。

我们也可以用 BIC 的计算来探索同一个示例。

跳过推导,普通最小二乘线性回归模型的 BIC 计算如下(摘自 这里

  • BIC = n * LL + k * log(n)

其中 n 是训练数据集中的样本数量,LL 是模型使用自然对数的对数似然(例如,均方误差的对数),k 是模型中的参数数量,log() 是自然对数。

下面的 `calculate_bic()` 函数实现了这一点,它将 n、原始均方误差 (mse) 和 k 作为参数。

然后可以更新示例以利用此新函数并计算模型的 BIC。

完整的示例如下所示。

运行示例,如前所述报告参数数量和 MSE,然后报告 BIC。

注意:您的 结果可能不同,这取决于算法或评估过程的随机性,或数值精度的差异。考虑运行示例几次并比较平均结果。

在这种情况下,BIC 报告的值约为 -450.020,非常接近 AIC 值 -451.616。同样,可以最小化此值以选择更好的模型。

进一步阅读

如果您想深入了解,本节提供了更多关于该主题的资源。

书籍

论文

API

文章

总结

在本文中,您了解了用于机器学习模型选择的概率统计量。

具体来说,你学到了:

  • 模型选择是从一组候选模型中选择一个模型的挑战。
  • 赤池信息准则和贝叶斯信息准则是根据模型的对数似然性和复杂性对模型进行评分的两种方法。
  • 最小描述长度提供了另一种信息论评分方法,该方法可以被证明等同于 BIC。

你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。

掌握机器学习中的概率!

Probability for Machine Learning

增进你对概率的理解

...只需几行python代码

在我的新电子书中探索如何实现
机器学习概率

它提供了关于以下内容的自学教程端到端项目
贝叶斯定理贝叶斯优化分布最大似然交叉熵校准模型
以及更多...

最终在你的项目中驾驭不确定性

跳过学术理论。只看结果。

查看内容

64 条回复关于概率模型选择 AIC、BIC 和 MDL

  1. Elie Kawerk 2019年11月1日 7:00 am #

    嗨,Jason,

    感谢这篇精彩的文章!

    我想知道如何处理参数数量严重依赖数据的非参数模型(基于树的方法)。

    祝好

    • Jason Brownlee 2019年11月1日 1:33 pm #

      好问题。

      通常,对于决策树等非参数模型,这些度量很难使用。

  2. Pikachu 2019年11月15日 12:54 am #

    嗨,Jason,

    我使用了 log loss 值而不是 mse 来计算 AIC 方程,并在我的数据集上取得了良好的结果。我还使用 Python 的 statsmodel (logit) 找到了的 AIC 值进行了交叉检查。在这里我注意到 log loss 值比 mse 表现更好。您能解释一下为什么会这样吗?

    • Jason Brownlee 2019年11月15日 7:55 am #

      Log loss 是用于分类的,例如逻辑回归。教程中的示例是线性回归,例如预测数值,而 log loss 是不合适的。

      • Pikachu 2019年11月18日 2:37 pm #

        对于逻辑回归以外的分类算法(如下所列),我们是否应始终使用 Log Loss 来计算 AIC?

        其他分类算法列表
        – k 最近邻
        – SVC
        – 朴素贝叶斯
        – 线性判别分析
        – 决策树
        – 随机森林

        • Jason Brownlee 2019年11月19日上午7:37 #

          我认为没有。

          据我理解,每种算法都需要计算其自己的 AIC。

  3. James Bowery 2020年1月7日下午4:22 #

    有人尝试过将 MDL 用于 Keras 训练吗?

  4. Jihoon Jang 2020年2月4日上午3:56 #

    你好,我有一个关于参数的问题。

    如果我使用 MLP 模型,如何获取参数数量来计算 AIC?

    谢谢你

    • Jason Brownlee 2020年2月4日上午7:58 #

      可以使用 `model.summary()` 来获取参数数量。

      • Jihoon Jang 2020年2月4日下午8:54 #

        嗨 Jason 🙂

        我还有一个问题。

        正如你告诉我的,我刚刚运行了“model.summary()”,

        然后它显示“‘MLPRegressor’ object has no attribute ‘summary’”。

        如何解决这个问题?

        谢谢!

  5. Jihoon Jang 2020年2月4日上午3:59 #

    或者我只是插入 MLP 模型的超参数数量(例如节点数、层数……)?

    谢谢你

    • Jason Brownlee 2020年2月4日上午7:58 #

      我相信 AIC 需要对 MLP 进行专门的计算。

      • Jihoon Jang 2020年2月4日下午8:27 #

        嗨,Jason,

        谢谢 🙂

        专门的计算是使用 model.summary() 的参数数量吗?

        • Jason Brownlee 2020年2月5日上午8:07 #

          不,我的意思是你需要查阅文献,了解如何以适当的方式计算 MLP 的指标。

  6. CMHennings 2020年2月28日上午12:08 #

    Jason,您提供的信息和代码示例对我完成我的 MS 学位非常有帮助。感谢您花费时间和精力撰写这些帖子!!

    为了将线性回归示例改编为逻辑回归,AIC 和 BIC 的计算(第 9 行)需要进行调整,对吗?

    在此帖的前面,您将逻辑回归的 AIC 和 BIC 计算定义为

    AIC = -2/N * LL + 2 * k/N
    BIC = -2 * LL + log(N) * k

    我的理解是,第 9 行需要替换为这些方程,而 LL 应替换为您“逻辑回归入门”帖子中描述的逻辑回归对数似然计算。

    对数似然 = log(yhat) * y + log(1 – yhat) * (1 – y)

    我是在正确的轨道上吗?

    • Jason Brownlee 2020年2月28日上午6:12 #

      AIC 和 BIC 指标有许多公式。

      我尝试提供标准计算并链接到它们的来源,但它们不是我看到过的唯一方法。

      我无法评论最佳或最正确的公式。

  7. Christian 2020年3月4日上午8:23 #

    BIC 是比 AIC 更好的选择最佳预测模型吗?

    • Jason Brownlee 2020年3月4日下午1:32 #

      这真的取决于您的项目目标。对于所有情况,从来没有最好的方法。

  8. Jacob 2020年3月28日上午2:22 #

    你好!
    感谢这篇有用的文章。我遗漏的是,尽管模型具有更小的 MSE 意味着模型更好,而不是像处理 L 时那样,MSE 如何可以替代 L?

  9. Grzegorz Kępisty 2020年4月22日上午12:29 #

    Jason,又见面了,感谢您的精彩讲解!

    问题:概率模型选择包括复杂度惩罚以及误差预测最小化。有人可能会问,为什么我们不只关注测试误差分数?我猜原因如下:
    1) 我们偏爱简单的模型(更易于解释)。
    2) 简单的模型通常需要更少的内存、更少的训练/测试执行时间。

    这是正确的吗?或许您能补充一些内容?
    此致!

    • Jason Brownlee 2020年4月22日上午5:58 #

      是的,但更重要的是:简单的解释比复杂的解释更有可能正确并具有泛化性。

  10. Dr. James T. Walker 2020年4月22日下午7:20 #

    你好:我是一名辅助学者,正试图为描述从出生到成熟(0 至 21 岁)的人类身高生长数据开发模型。我的模型假设人类生长是由 n=九个逻辑生长成分组合而成。当我在国际会议上展示论文时,有人告诉我可以使用 AIC 和 BIC 方法来选择这些数据所需的最佳逻辑生长成分数量。您同意吗?每个数据集包含 35 个身高测量值,AIC 值与 n 的图显示了一个 U 形曲线,在 n=6 个成分时显示最小值。但是,当我将这些成分拟合到包含两个相同测量值的数据集(70 个测量值)时,AIC 值和图会发生变化,在 n=9 个成分时显示最小值。我可以使用这种方法吗?为什么当数据点数量改变时 AIC 会改变?您愿意与我合作吗?

    • Jason Brownlee 2020年4月23日上午6:01 #

      也许吧。尽管您准备的是描述性模型而不是预测性模型,例如统计学而不是机器学习。

      当元素数量改变时,指标也会改变,因为元素数量会影响模型的复杂度。

  11. Shachi 2020年5月30日下午7:10 #

    嗨,Jason,

    确实写得很清楚!
    不过,我在这里有一些歧义。在 sklearn 的 boston 数据集上计算 statsmodels 的 aic(3026)与手动计算的 aic(1565)结果不同。

    任何帮助都将不胜感激!

  12. Nkue 2020年6月23日下午8:56 #

    嗨 Jason

    感谢这篇博文。您能否提供用于计算线性回归模型 MDL 的 R 代码?

    致敬
    Nkue

  13. Nkue 2020年6月23日下午9:00 #

    或者 Python 代码

  14. Ghizlan 2020年9月22日上午12:22 #

    谢谢 Jason,感谢这篇博文!

    我有一个关于使用 AIC 计算神经网络和随机森林模型拟合优度的问题?如果可以使用,应该在 R 中使用哪个包?

    此致

  15. Mansi 2020年9月25日上午5:30 #

    你好,Jason。

    我构建了两个模型。
    模型 1- AIC = 8906
    模型 2 AIC = – 9501

    比较负 AIC 和正 AIC 是正确的吗?哪一个 AIC 值更能证明模型更好?

  16. Matt 2020年11月30日上午1:34 #

    嗨 Jason,

    感谢这篇精彩的文章。

    为了计算线性回归模型的 BIC,参数的数量是严格的项数(在上面的例子中,1 个截距 + 2 个特征 = 3),还是也应该包括拟合中估计的方差(在这种情况下是 4)?

    我之所以这么问,是因为这个 https://en.wikipedia.org/wiki/Bayesian_information_criterion
    似乎为方差加了 1。

    • Jason Brownlee 2020年11月30日上午6:37 #

      也许吧,我基于教程末尾列出的教科书进行描述。

  17. Jon 2021年3月14日下午12:02 #

    如何在 Python 中计算逻辑回归模型的 AIC 和 BIC?

  18. Neetika 2021年5月26日上午1:23 #

    这篇文章写得非常清楚。我最初很难理解这些概念,但您的文章让它们变得清晰明了。我想通过基于 GLM 的方法(使用 R 或 Python 的逐步前向回归)来实现新的模型选择标准。您能否建议我应考虑哪些参数来定义标准?另外,如果您有 GLM 或逐步前向回归的示例代码,那将非常有帮助。

    • Jason Brownlee 2021年5月26日上午5:55 #

      不客气。

      也许您可以从论文或教科书中实现该算法,或者从现有实现开始。

  19. Martin Zwanzig 2021年6月7日下午6:12 #

    上述方法(make_regression)是否通过最大似然进行模型拟合?

    如果不是,那么以下原则就被忽略了:

    “AIC 的理论要求对数似然已最大化:虽然 AIC 可以为非最大似然拟合的模型计算,但它们的 AIC 值不应进行比较。”(来自‘help(AIC)’(‘stats’包))

    换句话说:当线性模型不是通过最大似然进行拟合时,它们的模型结果不能通过 AIC 和 BIC 等度量进行比较。

    这些度量也不能用于比较拟合不同响应的模型(或者当响应在一个案例中被转换而在另一个案例中未被转换时)。
    @ Dr. James T. Walker:对于相同响应的不同样本大小也不行!

  20. Nadine 2021年12月29日下午9:32 #

    AIC 和 BIC 的计算如何变为负数,而公式中没有负值?对数不可能输出负值,我假设参数数量和特征数量也不能为负。那么这怎么可能?

    • James Carmichael 2021年12月30日上午10:10 #

      嗨 Nadine…两者都可以为负。请仔细查看方程。

      AIC = -2/N * LL + 2 * k/N

  21. Nadine 2022年1月2日上午3:55 #

    是的,我知道。但这在这里不是这样实现的,对吗?

    • Nadine 2022年1月2日上午3:57 #

      我没看到减号。

      • James Carmichael 2022年1月2日上午9:05 #

        嗨 Nadine…我不确定为什么您的视图没有显示相同的方程:

        AIC = 2/N * LL + 2 * k/N

  22. Nadine 2022年1月2日下午11:36 #

    我的意思是,在代码中我没有看到减号。对于 AIC,它显示为:

    aic = n * log(mse) + 2 * num_params

    对于 BIC,它显示为:

    bic = n * log(mse) + num_params * log(n)

    那么,减号在哪里?

    • James Carmichael 2022年1月3日上午8:41 #

      代码中使用了另一种形式。

  23. Nadine 2022年1月3日上午1:03 #

    在代码中,没有减号,对吗?

    aic = n * log(mse) + 2 * num_params
    bic = n * log(mse) + num_params * log(n)

    或者我错过了什么?

    • James Carmichael 2022年1月3日上午8:40 #

      这种特定形式没有减号,但是结果仍然可能是负的,因为 log(0.10) = -1。

  24. Mohammed 2022年4月22日下午8:54 #

    AIC 和 BIC 是否是稳健的度量,可以防止选择过度拟合训练数据的模型?

  25. Zeshan 2022年4月23日下午2:10 #

    @jason 和 @james,不错的博文。计算 BIC 时,对于随机森林模型,k 或参数数量应该是什么?
    是否有特定的公式可以估算随机森林模型的 BIC?

  26. Akihiro 2022年4月28日下午5:50 #

    感谢您发布的好文章!

    您认为 AIC 和/或 BIC 可用于选择标准化主轴(sma)回归(同时考虑 x 和 y 变量的误差)的最佳模型吗?

    • James Carmichael 2022年4月29日上午10:30 #

      嗨 Akihiro…两者都是不错的选择。您是否已为您的模型实现了其中一个或两者?

      • Akihiro 2022年4月29日下午5:15 #

        谢谢你的回复。
        R 中的 SMATR 包已实现了 AIC 的计算(用于标准化主轴(SMA)回归)。所以我想,使用这个包,模型选择是可能的,当我想选择最佳的 SMA 模型时,例如在以下模型之间:
        y ~ x

        y ~ x + group

        y ~ x * group
        其中 group 是分类变量。

        由于普通最小二乘(OLS)回归和 SMA 之间的区别在于,在后一种情况下,残差不仅针对 y 方向计算,也针对 x 方向计算,并且当残差在 SMA 回归中计算时,我认为 AIC 也应该在选择模型时起作用,但是,我找不到任何论文/网站说明可以使用 AIC 从几个不同的 SMA 回归中进行模型选择。

        那么您是否同意使用 AIC 选择最佳 SMA 模型没有问题?

  27. Akihiro 2022年5月20日下午3:02 #

    嗨,这是关于在 SMA 回归中使用 AIC 进行模型选择的问题。

    我曾就这个疑问询问过 R 中 SMATR 包的作者;他说 AIC 可用于选择最佳的 SMA 回归模型。

  28. MAR 2022年8月25日下午7:01 #

    嘿,我已经执行了与上面完全相同的代码。
    aic = n * log(mse) + 2 * num_params

    并得到了以下结果:
    模型 1 AIC = -1023.4
    模型 2 AIC = -730.5

    那么我应该选择 Model1,因为它是在考虑负号后的最小值,还是应该考虑绝对值选择 Model2?

  29. MER 2022年9月9日下午1:32 #

    亲爱的布朗利博士,

    MDL 方法也称为“最小消息长度标准”吗?据我所知,它们并不相同。如果我没记错,您能否推荐一本关于 MML 的清晰的学习资料,就像您对 AIC、BIC 和 MDL 的解释一样?非常感谢。

留下回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。