如何惩罚错误分类某个类的决策树



您只需复制/粘贴代码即可在您的环境中运行。

我发现的科学术语是成本最小化,而算法应用精度最大化。也就是说,算法旨在获得最高分的准确性,而我不关心准确性,我关心的是不要错误地分类某个类。

我知道以下内容将 CART 算法用于决策树,我如何更改它以强调错误分类 False 比错误分类正值更危险。我知道这个术语是成本最小化,但我不确定如何应用它或搜索哪些书籍。

import numpy as np
import pandas as pd
from sklearn.datasets import make_classification
from sklearn.tree import DecisionTreeClassifier
X, y = make_classification(n_samples=1000,
                           n_features=6,
                           n_informative=3,
                           n_classes=2,
                           random_state=0,
                           shuffle=False)
# Creating a dataFrame
df = 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)

我只能想到两个选项:

增加正类的权重

决策树分类器有一个参数,用于更改每个类的默认权重。默认值为平衡值,这意味着所有类的权重 = 1。为了最大程度地减少假阴性,您可以为阳性类标记数据赋予更大的权重。

创建评分函数以最大程度地减少漏报

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

这些概率随经过训练的模型一起返回,您可以通过dt.predict_proba获取它们。因此,不要获取模型返回的评分标签,而是使用预测概率创建评分函数,以最大程度地减少成本矩阵上的漏报。

最新更新