决定哪个模型为每个测试实例提供更好结果的学习算法

数据挖掘 机器学习 集成建模
2022-02-18 16:07:51

他们是否有任何现有的 Ensemble 技术,它使用训练数据的子集来预测哪种算法更适合预测测试数据的每个实例?

假设我们有 N 大小的训练集和 K 大小的测试集,其中需要使用训练集预测特定属性。但是我们可以使用数百种算法和方法。我们可以将训练集分成两部分,前半部分训练每个模型,后半部分决定测试。根据特征,我们可以决定将哪种算法用于实际测试用例(K 大小的集合)。例如,假设数据集有一个名为“温度”的属性。当温度高于 100 摄氏度时,特定算法可能运行良好。然后我们可以将所有 100 度或以上的实例分类到特定的类。然后最终的预测将基于该模型类来完成,该模型类使用所有 N 大小的数据进行训练。

我要问的是他们现有的任何类似的方法吗?

2个回答

在模型堆叠方法中应用任何非线性模型应该可以满足您的需求。简而言之,该方法是将来自其他模型的预测作为新特征,加上原始数据和标签,然后使用它们来训练元模型。阅读链接,它提供了有关如何在 k-fold 验证框架中执行此操作的实用建议,这将使它有更好的机会做得很好。

结合更简单单元的非线性模型——例如神经网络和使用多个决策树的模型(例如 xgboost)——已经在训练期间执行了这种内部拆分。因此,如果您已经在使用这些,您可能不会比简单的集成技术获得如此大的改进,例如对模型取平均值或加权平均值。

我不知道可以为您执行此操作的特定算法,但是构建起来并不难。如果您有两种预测算法,那么您可以同时使用它们(在训练数据上)将其分为两类。每个类将代表哪种算法性能更好。然后,您使用第三种算法进行二进制分类,看看您是否可以预测您应该使用哪种原始算法。如果您可以预测要使用哪种算法,那么您就可以确定了。如果您的分类算法与您的两种预测算法相似,您将获得更好的结果。在这种情况下,他们将以类似的方式处理所有功能。

一旦经过训练,您就可以对您的测试集进行分类并运行分类建议的算法。