对于某些问题,你有一些你知道的规则,因为事实是真实的。一个非常简单的例子是-
“40%以下的分数是不及格的”
声明中没有含糊不清之处,对于这一制度,它将永远是正确的。在任何机器学习模型中对这样的规则进行编码,都应该允许它避免简单的错误,并在理论上提高准确性。
我知道这里有几个小众库,还有整个子字段。然而,我将如何在一个典型的模型(CNN、LSTM等)中将这样的逻辑规则结合在一个像TensorFlow、PyTorch这样的平台中呢?
编辑:我期待的是添加显式标签规则(类似于Snorkel [ https://github.com/snorkel-team/snorkel ]用于生成噪声标签的方法),以帮助模型学习。这些关系虽然存在于数据中,但模型很难学习或需要大量的培训数据/时间。在某些情况下,确定性规则和ML的组合比单独使用更好。
发布于 2019-11-04 00:52:45
我建议您在模型预测结果之后,将这些规则应用于模型的输出。在您的示例中,如果要构建预测通过或失败的DNN分类器,那么在将预测返回到调用应用程序之前,只需检查值并根据所建立的标准更新模型结果。
我已经在各种模型中完成了这一点,其中模型可能返回不可能的负结果。在这些情况下,我将对结果数据框架执行一个简单的更新,例如:
data.loc[data["y-hat"] < 0, "y-hat"] = 0这些类型的“硬编码”规则可以随您的需要而定。您甚至可以为它们构建一个字典,并映射结果,而不是使用一系列语句。这显然取决于规则的复杂性。希望这能帮上忙。
https://datascience.stackexchange.com/questions/62612
复制相似问题