单调机器学习

机器算法验证 机器学习 二进制数据 监督学习
2022-03-06 00:55:19

我有一个二元分类(监督学习)问题,我的所有特征都是布尔值,具有以下扭曲:我想学习一个分类器f:{0,1}n{0,1}那是单调的。换句话说,将任何特征子集从 0 更改为 1 绝不应该将分类器的输出从 1 更改为 0。

如何学习单调分类器?我可以以某种方式采用标准分类方法来强制执行单调性约束吗?

我可以看到如何以确保它学习单调模型的方式调整逻辑回归:我们可以要求每个特征的系数都是非负的,然后应用约束优化算法来推断模型的系数。是否有合理的方法来适应其他监督学习方案(例如,随机森林、梯度提升、神经网络)?或者是否有适合这种情况的专用算法?


不幸的是,仅应用标准随机森林分类器并不能保证产生单调分类器,即使训练集是单调的(它来自单调设置,并且没有噪声或违反单调性)。有关明确示例,请参见https://cs.stackexchange.com/q/69220/755,即单调训练集的示例,其中随机森林可能会学习非单调分类器——即使存在单调分类器这同样好。这表明如果我们想学习单调分类器,我们可能需要一些更复杂的技术。

2个回答

虽然这是一个老问题,但我刚刚发现梯度提升树支持这样的功能,并且它已经在 XGBoost 中实现。在这里查看更多详情

您始终可以通过将权重约束为正并使用此处讨论的单调激活来将神经网络约束为单调。有关开源实现的实用教程,请参见此处。