外观
交互式地剪枝(pruning)决策树
Interactively Prune a Decision Tree

决策树有一点一直让我很欣赏,那就是它在视觉上的可解释性很强。无论我们的数据集有多少特征,我们总能可视化并解释一棵决策树。
这一点对于线性回归等直观简单的模型来说并不总是可行。但决策树在这方面脱颖而出。不过,有一件事我经常觉得有点耗时,而且多少有点靠试错,那就是对决策树进行剪枝。

问题在于,在默认条件下,决策树总是 100% 地过拟合数据集,如下图所示:
因此,为了降低模型方差,剪枝总是必要的。Scikit-learn 已经提供了一种可视化方法,如下所示:

但上面的可视化相当不优雅、繁琐、杂乱,而且是静态的(非交互式)。我推荐使用交互式桑基图(Sankey diagram)来剪枝决策树。如下所示:

如上所示,桑基图允许我们通过折叠节点来交互式地可视化和剪枝决策树。

此外,每个节点中每个类别的数据点数量通过大小和颜色进行编码,如下所示。
这能立即给出节点不纯度的估计,据此我们可以在几秒钟内可视且交互地剪枝这棵树。例如,在下面展示的完整决策树中,在深度为 2 处剪枝看起来是合理的:

接下来,在获得超参数值的估计后,我们可以训练一棵新的决策树。这有助于降低决策树的方差。你可以在这里下载交互式决策树的代码 notebook:https://bit.ly/4bBwY1p。说明在 notebook 中有提供。接下来,让我们了解使用决策树时的一个注意事项。