决策树#

API参考链接: ClassificationTree, RegressionTree

查看决策树的支持仓库这里

摘要

一个监督决策树。这是一种递归分区方法,其中特征空间根据分割标准不断分割成进一步的分区。在学习的树的“叶节点”中为每个分区学习一个预测值。这是对scikit-learn中暴露的决策树的轻量级封装。单个决策树通常模型性能较弱,但训练速度快,擅长识别关联。低深度的决策树易于解释,但随着树的深度增加,很快变得复杂且难以理解。

工作原理

Christoph Molnar 的《可解释的机器学习》电子书 [1] 提供了关于决策树的优秀概述,可以在此处找到 here

有关实现的具体细节,scikit-learn的用户指南[2]关于决策树的部分非常详细,可以在这里找到here

代码示例

以下代码将为乳腺癌数据集训练一个决策树分类器。提供的可视化将包括全局和局部解释。

from interpret import set_visualize_provider
from interpret.provider import InlineProvider
set_visualize_provider(InlineProvider())
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score

from interpret.glassbox import ClassificationTree
from interpret import show

seed = 42
np.random.seed(seed)
X, y = load_breast_cancer(return_X_y=True, as_frame=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=seed)

dt = ClassificationTree(random_state=seed)
dt.fit(X_train, y_train)

auc = roc_auc_score(y_test, dt.predict_proba(X_test)[:, 1])
print("AUC: {:.3f}".format(auc))
AUC: 0.957
show(dt.explain_global())