如何惩罚决策树错误分类某一类?

时间:2018-03-06 12:43:46

标签: python pandas machine-learning scikit-learn

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

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

我知道以下将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 :(得分:1)

我只能想到两个选择:

增加正面等级的重量

DecisionTreeClassifier有一个参数,可让您更改每个类的默认权重。默认值是平衡值,这意味着,所有类都具有权重= 1.为了最大限度地减少漏报,您可以为正类标记数据提供更大的权重。

创建评分函数以最大限度地减少误报

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

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