如何对决策树误分类特定类别进行惩罚?

您可以直接复制/粘贴代码到您的环境中运行。

我找到的科学术语是成本最小化,而算法应用的是准确性最大化。也就是说,算法的目标是获得最高的准确性得分,而我并不关心准确性,我关心的是不误分类某个特定类别。

我知道以下代码使用了决策树的CART算法,我想知道如何修改它以强调误分类False比误分类正类更危险。我知道术语是成本最小化,但我不确定如何应用它或应该查找哪些书籍。

import numpy as npimport pandas as pdfrom sklearn.datasets import make_classificationfrom sklearn.tree import DecisionTreeClassifierX, y = make_classification(n_samples=1000,                           n_features=6,                           n_informative=3,                           n_classes=2,                           random_state=0,                           shuffle=False)# Creating a dataFramedf = pd.DataFrame({'Feature 1':X[:,0],                                  'Feature 2':X[:,1],                                  'Feature 3':X[:,2],                                  'Feature 4':X[:,3],                                  'Feature 5':X[:,4],                                  'Feature 6':X[:,5],                                  'Class':y})y_train = df['Class']X_train = df.drop('Class',axis = 1)dt = DecisionTreeClassifier(random_state=42)dt.fit(X_train, y_train)

回答:

我只能想到两个选项:

增加正类别的权重

DecisionTreeClassifier有一个参数,可以让您更改每个类别的默认权重。默认是平衡的,这意味着所有类别的权重都等于1。为了最小化假阴性,您可以为标记为正类的数据赋予更大的权重。

创建自己的评分函数以最小化假阴性

算法为每个类别计算概率。如果您有两个类别的分类问题,那么如果一个样本的概率>=0.5,则评分为1,如果<0.5,则评分为0。

这些概率会随训练模型一起返回,您可以通过dt.predict_proba获取它们。因此,不要使用模型返回的评分标签,而是使用预测的概率来创建您的评分函数,以在成本矩阵上最小化假阴性。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注