模型评估和比较以选择最佳模型

机器算法验证 r 造型 模型选择
2022-03-27 20:03:21

在比较 R 中不同模型获得的结果时,我应该寻找什么来选择最好的?

例如,如果我使用以下 4 个模型应用于从物种数据集中提取的相同存在/不存在样本,具有相同的变量:

  • 广义线性模型

  • 广义加法模型分类

  • 回归树

  • 人工神经网络

我应该通过 AIC、Kappa 还是交叉验证来比较所有方法?

我能确定选择最好的模型吗?

如果我将这 4 个模型的预测与贝叶斯因子进行比较会发生什么?我可以比较它们吗?

3个回答

您正在使用各种不同类型的模型,这使情况变得有趣。通常,当人们说他们从事模型选择时,他们的意思是他们有一种模型,具有不同的预测变量集(例如,具有变量 A、B、C 和 D 的多元回归模型与 A、B 和A*B 等)。请注意,为了确定最佳模型,我们需要指定“最佳”的含义;因为您专注于数据挖掘方法,所以我假设您希望最大限度地提高预测准确性。让我说几件事:

  1. 你可以/你应该将它们与贝叶斯因子进行比较吗?我怀疑这可以做到,但我在这方面的专业知识很少,所以我应该让另一位 CV 投稿人解决这个问题;这里有很多人在这个话题上非常强大。
  2. 我应该比较 AIC 的所有方法吗?在您的情况下,我不会使用 AIC。总的来说,我对 AIC 评价很高,但它并不适用于所有任务。AIC 有不同的版本,但本质上,它们的工作原理相同:AIC 为模型产生拟合优度的能力调整拟合优度度量。它通过惩罚模型具有的参数数量来做到这一点。因此,这假设每个参数的贡献相同模型拟合数据的能力。当将一个多元回归模型与另一个多元回归模型进行比较时,这是正确的。然而,向多元回归模型添加另一个参数是否与向非常不同类型的模型(例如,神经网络模型或分类树)。
  3. 我应该比较 Kappa 的所有方法吗?我对使用 Kappa 来实现这个目标也知之甚少,但这里有一个资源,其中包含一些很好的一般信息,是我偶然发现的一篇论文,它确实以这种方式使用它,可能对你有帮助(nb,我没读过)。
  4. 我应该通过交叉验证比较所有方法吗?这可能是你最好的选择。选择的模型是最小化保留集上的预测误差的模型。
  5. “我能确定选择最好的模特吗?” 没有。我们在这里玩的是概率游戏,不幸的是,事情就是这样。一种可能值得您花时间的方法是引导您的数据,并将您选择的模型选择方法应用于每个引导样本。这将使您了解一个模型比其他模型更受青睐的程度。这在计算上会很昂贵(至少可以这么说),但是少量的迭代就足以满足您的目的,我认为 100 次就足够了。

在我看来,交叉验证是一个非常可靠的黄金标准,用于进行侧重于模型预测新数据的能力的比较。也就是说,至少对于 GLM 案例,AIC 已被证明(Stone,1977)渐近等效于交叉验证,所以如果你对渐近假设没问题,你可以通过使用 AIC 来节省一些计算时间,而不是而不是计算完整的交叉验证。

假设您正在使用分类错误或与您的性能度量类似的东西,那么您为什么不尝试对所有模型进行交叉验证呢?

将您的数据分成 10 个块,然后使用其中一个块作为测试集,另外 9 个块作为训练进行 10 轮构建和测试(即第 1 轮:训练 2-10,测试 1。第 2 轮:训练 1+3-10,测试 2。第 3 轮:训练 1-2+4-10,测试 3)。

这种方法可以帮助您找到执行最佳的算法(以及这些模型的哪些参数)。

起初我遇到的一件事是,构建的实际模型并不重要,重要的是您调用的函数和提供给它的参数。