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

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

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

我知道以下代码使用了决策树的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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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