我关于 ML 模型的方法是否正确?

数据挖掘 Python 机器学习 火炬 统计数据
2022-02-28 11:49:23

首先,我是这里的新手,这是我在这个平台上的第一个问题,所以对于格式上的错误,如果有任何错误,我深表歉意。

在我的论文研究中,我试图通过查看商业航空参数来确定特定航班的飞机的非正常燃料消耗。为此,我使用了两个独立的数据库;一种是实际飞行数据(QAR 数据),另一种是高保真模拟(Operational Flight Plans)。我的策略是使用模拟 (OFP) 训练前馈 ML 模型(我使用 Pytorch),并使用 QAR 数据对其进行测试。以下是特定 ML 条件下的最佳模型结果。

最佳模特在这里

以上意味着,经过训练的模型可以在 %99.3 的航班中以小于 %5 的误差预测实际航班的燃油消耗。以同样的方式,错误<%3 --> %93.4 个航班,错误<%2 --> %78.9 个航班。

这就是我的困惑开始的地方。

比方说,%0.7 的航班少用或多用 %5 的燃料。我怎么能确定这不是由训练错误引起的?如果我用 OFP 参数测试模型并逐个飞行查看模型的错误并识别具有训练错误的飞行(即 %5 或多或少的燃料消耗),并将它们从第一个非正常识别过程中排除,会那工作?在我看来,这个想法是行不通的,因为训练数据集将与测试数据集相同,并且模型会过拟合。

您认为上述方法正确吗?是否有任何其他选择可以坚持以克服培训错误?还是我应该接受训练错误,因为在这种情况下对它们无能为力?

1个回答

免责声明:请记住,我不是这种应用程序的专家。

我怎么能确定这不是由训练错误引起的?

您可以肯定,因为评估过程是有效的。在任何 ML 过程中都会出现错误,重要的是正确估计预期的错误水平(性能评估)。

据我所知,您当前的方法是正确的,因为您的评估设置似乎有效:测试集由实际飞行数据组成。只要评估可靠,模型的训练方式就无关紧要。事实上,该模型甚至可以是一个没有训练数据的简单启发式:可能它不会表现得那么好,但就方法而言,重要的是性能得到了正确的估计。

我不能 100% 确定我是否遵循您考虑为清理训练数据而执行的过程。重要的是,它不应该依赖于您用作测试集的实际飞行数据,因为这会导致数据泄漏。只要不是这样,您就可以以任何您想要的方式预处理数据集。但请注意,如果您计划为训练数据尝试许多不同的选项并评估每个选项,那么您应该使用与最终测试集不同的验证集(此过程类似于参数调整)。

顺便说一句,您可以考虑在训练过程中使用实际飞行数据的一小部分作为验证集(我假设您目前使用一些模拟数据对吗?)。同样,如果您这样做,请确保使用完全独立的子集作为测试集。