【问题标题】:class_weight attribute of DecisionTreeClassifier having no effect on confusion matrix, recallDecisionTreeClassifier 的 class_weight 属性对混淆矩阵没有影响,召回
【发布时间】:2021-12-04 09:25:39
【问题描述】:

我正在为讲座准备成本敏感分类的演示,我很困惑为什么 scikit-learn 的 DecisionTreeClassifier 的 class_weight='balanced' 属性似乎根本没有任何效果。

数据集有 4521 个实例,有 4000 个“否”值和 521 个“是”值。我正在使用 70/30 的训练/测试拆分,使用此代码构建和拟合模型:

clf = DecisionTreeClassifier(criterion='entropy',random_state=42,class_weight='balanced')
clf.fit(X_train, y_train)

我也尝试为类属性值设置特定的权重。

一个典型的没有平衡的混淆矩阵是:

[[1076  109]
 [ 105   67]]

一个典型的混淆矩阵平衡是:

[[1108   77]
 [ 112   60]]

不仅平衡似乎没有效果,而且在这些情况下,允许随机选择测试用例,“是”的召回变得更糟。我觉得我缺少一些非常简单和明显的东西。有人可以帮忙吗?

【问题讨论】:

    标签: python decision-tree imbalanced-data


    【解决方案1】:

    由于您的问题是二元分类,因此请使用 ROC AUC 评估模型性能(标准决策树和加权决策树)。

    即使是轻微的,加权决策树也有望表现更好。

    使用不同的类权重可能会获得更好的性能,这也取决于用于评估模型 [1] 的性能指标的选择。

    您可以使用网格搜索为加权决策树查找一系列不同的类权重,并发现哪些结果的 ROC AUC 得分最高 [1]

    如需进一步阅读和练习成本敏感模型,请查看此link

    [1]Cost-Sensitive Decision Trees for Imbalanced Classification.

    【讨论】:

      猜你喜欢
      • 2021-06-24
      • 1970-01-01
      • 2017-04-05
      • 2020-07-20
      • 2020-09-16
      • 2019-10-08
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      相关资源
      最近更新 更多