在机器学习中编码逻辑规则

数据挖掘 张量流
2022-03-13 16:42:31

对于某些问题,您有某些规则,您知道事实是正确的。一个非常简单的例子是 -

“低于 40% 的成绩是不及格”

声明中没有歧义,对于那个系统来说,它永远是正确的。在任何机器学习模型中编码这些规则应该可以避免简单化的错误并从理论上提高准确性。

我知道有几个针对这个的利基库以及一个完整的子领域。但是,我如何在 TensorFlow、PyTorch 等平台的典型模型(CNN、LSTM 等)中结合这些逻辑规则?

编辑:我期待的是添加明确的标签规则(类似于 Snorkel [ https://github.com/snorkel-team/snorkel ] 用于生成嘈杂标签的内容)以帮助模型学习。这些关系虽然存在于数据中,但模型可能难以学习或需要大量的训练数据/时间。在某些情况下,确定性规则和 ML 的组合会比单独使用任何一个要好。

1个回答

我建议您在模型预测结果后将这些规则应用于模型的输出。在您的示例中,如果您正在构建一个预测通过或失败的 DNN 分类器,那么在将预测返回给调用应用程序之前,只需检查值并根据您建立的标准更新模型结果。

我已经在各种模型中执行了此操作,其中模型可能返回不可能的负面结果。在这些情况下,我将对结果数据框执行简单的更新,例如:

data.loc[data["y-hat"] < 0, "y-hat"] = 0

您可以根据需要拥有任意数量的此类“硬编码”规则。您甚至可以为它们构建一个字典并映射结果,而不是使用一系列语句。这显然取决于规则的复杂性。希望有帮助。