机器学习算法的预测区间

机器算法验证 机器学习 置信区间 引导程序 监督学习 助推
2022-02-09 05:31:10

我想知道下面描述的过程是否有效/可接受以及任何可用的理由。

想法:监督学习算法不假设数据的底层结构/分布。在一天结束时,他们输出点估计。我希望以某种方式量化估计的不确定性。现在,ML 模型构建过程本质上是随机的(例如,在超参数调整的交叉验证采样和随机 GBM 中的子采样中),因此建模管道将为具有每个不同种子的相同预测器提供不同的输出。我的(天真的)想法是一遍又一遍地运行这个过程来得出预测的分布,我希望可以就预测的不确定性做出陈述。

如果重要的话,我使用的数据集通常非常小(约 200 行)。

这有意义吗?

澄清一下,我实际上并没有在传统意义上引导数据(即我没有重新采样数据)。每次迭代都使用相同的数据集,我只是利用 xval 和随机 GBM 中的随机性。

4个回答

对我来说,量化预测中的不确定性似乎是一种很好的方法。只需确保在每次引导重采样中从头开始重复所有建模步骤(对于将作为参数调整的 GBM)。引导重要性排名以量化排名中的不确定性也是值得的。

我发现有时区间不包含实际预测,尤其是在估计概率时。增加每个终端节点的最小观察次数通常可以解决这个问题,至少在我使用过的数据中是这样。

保形预测似乎是一种有用的方法来量化对新数据预测的置信度。到目前为止,我只触及了表面,其他人可能更适合对此给出选择。

在我对这篇关于找到 GBM 预测区间的回复中,有一些粗略的 R 代码。

希望这可以帮助!

您可以将您对预测的不确定性拆分为“偏差”和“方差”项。偏差项是指模型的错误指定:如果你为非线性函数拟合线性模型,你总是会得到一些错误。“方差”术语是指模型参数估计中的误差。您的方法考虑了不确定性的方差部分,而无法估计偏差。

正如@ErikL 所建议的那样,保形预测在理论上是合理的方法,它采用了与引导程序非常相似的想法。使用新点重建模型的保形预测同时考虑了偏差和方差,而对于回归,它们需要大量的计算资源。您可以使用不符合规范的库与 Python 一起尝试

不,这似乎是个坏主意。首先,正如 Alexey 所指出的,存在偏差和方差。即使对于最佳参数选择,您也无法避免方差。您的方法甚至没有尝试解决它。还有一个非常重要的问题,即模型的一些(可能是大部分)错误存在于数据中,而不是模型固有的随机性中。(更不用说有些模型,比如普通线性回归,根本就不是随机的,而且对于随机模型,随机性的程度因模型而异)

我建议你在一些简单的模拟数据和一些你知道的模型上测试你的方法。我确信,由于我描述的原因,您的估计误差将比实际误差小得多(或者您的分布会更窄)。

为了估计误差分布,您可以使用一个很好的旧交叉验证。

我现在正在思考这个问题。以下是我的发现:

(1) Delta 方法
(2) 自举重采样
(3) 贝叶斯方法
(4) 均值方差估计 (MVE)

这个想法试图估计预测可变性的两个来源,模型参数估计的不确定性和不可约误差。

这里有几个参考:

用于估计模型输出预测区间的机器学习方法,Durga L. Shrestha,Dimitri P. Solomatine,2006
神经网络模型的一些误差估计的比较,Robert Tibshirani,1995
基于神经网络的预测区间的综合回顾和新的进展,Abbas khosravi,Doug Creighton,2011

希望这对我有所帮助并纠正我上述任何不合适的情况。我想从其他人那里听到更多。