如何将我的模型与技术上无效的模型进行比较?

机器算法验证 二进制数据 模型比较 分箱
2022-03-28 16:49:15

我创建了一个很好的小型非线性模型,将鲑鱼的生存概率与长度相关联。我假设二项式错误并最小化负对数可能性来拟合它。我被要求将其与其他人的模型进行比较,他们将数据分箱并拟合一条直线。然而,最低的箱子包括长度分布的左长尾,如果这些鱼没有被集中到平均长度较高的箱子中,那么它们的生存机会将预测为 0(或负)——但其中一些鱼确实如此。存活。也就是说,对于某些数据集,线性模型在分箱数据上的表现相当不错。

我想比较这些模型,但我不能使用 AIC,因为线性模型的无效性使其 AIC 爆炸。我可以截断数据——它只是数据的一小部分,或者我可以对数据进行分箱并假设正常错误为我的模型计算 AIC,但我对其中任何一个都感觉不太好。还有其他选择吗,或者这些选择还不错吗?

1个回答

一种解决方案是使用交叉验证方法。这可能是一个概念上简单(且优雅)的解决方案,因为您拥有的模型与要比较的模型有很大不同。AIC 或 BIC 在这里不会真正起作用,因为这两个模型的功能形式非常不同——你的模型是非线性的,它们的模型不仅是线性的,而且还基于分箱数据。AIC 或 BIC 对函数形式不敏感。

我不会太担心分箱与非分箱,因为在我看来分箱是一种建模决策,可以使模型变得更好或更糟。换句话说,这是一个应该测试其有效性的功能。

现在,假设您可以实现另一个模型,您可以执行 k 折交叉验证:

  1. 将您的数据划分为 k 个子集;
  2. 迭代地留下一个子集,并在其余子集上训练您的模型(没有分箱)和另一个模型(有分箱);
  3. 计算先前关于您的模型和其他模型遗漏的子集的对数似然之和。这应该相对简单:在您的非线性模型中,误差是二项式分布的;在另一个模型中,误差是正态分布,因为它是一个简单的线性回归;
  4. 重复 2 和 3,直到您使用了 k 个子集中的每一个作为测试子集(因此命名为 k-fold)。
  5. 然后,您可以比较哪个模型为您提供更好的对数似然(即负数较小的)。