外观
为什么决策树在训练(training)后必须被仔细检查
Why Decision Trees Must Be Thoroughly Inspected After Training

如果我们可视化任意决策树的决策规则(在每个节点上评估的条件),我们总是会发现它们垂直于特征坐标轴,如图所示。
换言之,每棵决策树都基于这种垂直边界逐步划分特征空间来分裂(split)数据。当然,这本身并不是一个“问题”。事实上,正是这种垂直分裂使它如此强大,能够完美过拟合任何数据集。然而,这也引出了一个在拟合决策树时经常被忽略的相当有趣的问题。更具体地说,如果我们的数据集有一个对角线决策边界会怎样,如下图所示:


很容易猜到,在这种情况下,决策树学到的决策边界预计会呈现如下样子:
事实上,如果我们绘制这棵决策树,会注意到它为了拟合这个容易分离的数据集创造了大量分裂,而像逻辑回归、支持向量机(SVM)甚至一个小型神经网络这样的模型都能轻松处理:

如果我们放大这棵决策树,留意它的分裂条件阈值有多么接近,这一点就变得更加明显:

这有点令人担忧,因为它清楚地表明决策树正精心地试图模拟一个对角线决策边界,这暗示它可能不是继续推进下去的最佳模型。为了再次确认,我经常这样做:
- 取训练数据 (X, y);
- X 的形状:(n, m)。
- y 的形状:(n,)。
- 对 X 运行 PCA,将数据投影到 m 维的正交空间。这将得到 X_pca,其形状同样为 (n, m)。
- 在 X_pca 上拟合一棵决策树并将其可视化(好在决策树总是可可视化的)。
- 如果在这种情况下决策树的深度显著变小,就验证了存在对角线分离。例如,上述数据集的 PCA 投影如下所示:
- 可以看出,PCA 投影上的决策边界几乎垂直于 X_2 特征(第 2 主成分)。

在这个 X_pca 上拟合决策树会大幅降低其深度,如下图所示:

这让我们可以判断,改用其他算法可能更好。或者,我们可以花些时间构造更好的特征,让决策树模型能利用其垂直数据分裂轻松处理。此时你可能会想,为什么我们不能使用在 X_pca 上训练的决策树呢?
虽然没有什么能阻止我们这么做,但要注意 PCA 分量是不可解释的,而保持特征可解释性有时很重要。因此,每当你训练下一个决策树模型时,都不妨花些时间检查它到底在做什么。深入了解模型如何处理数据,往往能帮你发现那些不易察觉的问题,进而决定是改进特征、更换算法,还是接受当前模型。养成这种检查的习惯,对于构建可靠且可解释的机器学习系统大有裨益。