每个特征的决策规则(二元分类)

数据挖掘 Python 分类 二进制
2022-02-13 17:10:43

我有 10 个特征(全部为数字)和一个二进制结果变量的集合。我需要训练一个二元分类模型,找到最佳特征并计算每个特征的阈值。

为了找到最好的特征子集很容易,我使用逻辑回归和 L1 惩罚,它工作得很好。但是,下一步是为每个子选择的特征找到阈值:如果特征ij,... k的值高于/低于某些数值,则有可能属于 A 类(而不是 B ) 更高。

例如

考虑一下,我们发现在 10 个原始特征中,L1 的叶子只有 3 个:F1、F4、F7。如果你取三个具有某些值 {F1_i, F4_i, F7_i} 的看不见的(新)数据,其中

F1 > 1.23
F4 < 7.15
F7 > 2.74

那么新的数据点{F1_i, F4_i, F7_i}属于A类。这里{1.23, 7.15, 2.74}是阈值。

我试图尽可能清楚地解释问题,但如果不是,请告诉我。

问题解决这个问题的最佳方法是什么?如何计算阈值?

1个回答

您正在描述每个二元分类器。但是,您错过了一个关键点。如果您的类可以通过仅 ONE 特征的值来分离,您可以按照您所说的去做,并找到例如 F1 > 1.23 作为阈值。如果分类涉及特征的组合,您将需要为每个特征描述一些阈值组合,或者(等效地)描述特征之间的某种关系,告诉您有关类标签的信息。这是每个二元分类器的工作——它们只是以不同的方式来做。例如见这篇文章。 只有当您可以拥有一组包含/描述/分类特征值组合的阈值时,您才希望拥有一组固定阈值的组合。

如果您想要一组像您提到的易于阅读的阈值,您应该阅读决策树分类器他们会做一些你想做的事情——但也会确保你为每个可能的特征值组合提供一个类标签。决策树的好处在于,它们可以让您省略当前的特征选择步骤——他们只是通过(1)选择最能区分这两个类别的特征,(2)选择阈值该功能提供有关类标签的最多信息(通常),并且(3)重复(1-2)多次。