机器学习:CART树剪枝
作者头像
  • 智观察
  • 2020-06-20 14:51:14 5

大家好,我是一名Python数据分析师,希望通过这篇文章分享我在人工智能领域的学习心得。我总结了四本关于Python的书籍,分别是《15天学会Python编程》、《每天10分钟,用Python学数据分析》、《Python数据可视化实战》以及《33天搞定机器学习》。

本文将通过通俗易懂的语言和详细的实例来讲解决策树的重要性,这是决策树系列的最后一部分。掌握决策树的基础知识,有助于更好地理解后续介绍的随机森林、GBDT、XGBoost、LightGBM等模型。

剪枝

如果不加任何限制,决策树可能会生成一棵非常庞大的树,每个叶子节点覆盖的训练样本都是“纯净”的。虽然这样的树在训练数据上的表现非常精确,但在测试数据上的表现却未必理想。随着树的层数增加,叶子节点增多,分类也会变得更加细化,这可能导致过拟合现象,使得模型在测试数据上的预测效果变差。因此,我们需要对决策树进行剪枝。

剪枝主要有两种方式:预剪枝和后剪枝。我们将重点讨论后剪枝,因为CART算法采用的就是这种方法。

预剪枝

预剪枝是指在生成决策树的过程中就对树的生长进行限制,避免过度拟合。例如,我们可以限制每个节点在分裂之前必须包含一定数量的数据,否则就直接作为叶子节点。另一种方法是通过限制节点中某一类别的占比来控制树的生长。

CART剪枝算法流程

CART算法采用后剪枝的方法,首先从训练数据生成一棵完整的决策树,然后自底向上检查每个非叶子节点,如果将该节点替换为叶子节点能提高模型的泛化能力,则进行剪枝操作。

李航教授在他的《统计学习方法》中详细介绍了CART剪枝算法的具体步骤。

剪枝策略对比

后剪枝决策树通常比预剪枝决策树保留更多分支,且欠拟合的风险较小,泛化能力更强。不过,后剪枝决策树的训练时间通常比未剪枝和预剪枝决策树要长得多。

CART决策树剪枝参数解读

下面是一些关键参数的解释: - max_depth:限制树的最大深度。限制树的深度可以有效防止过拟合,尤其在高维度且样本量较少的情况下。建议从3开始尝试。 - min_samples_leaf:一个节点分裂后,每个子节点至少应包含的训练样本数。这个参数可以保证每个叶子节点的最小样本数,从而避免过拟合。建议从5开始尝试。 - min_samples_split:一个节点分裂所需的最小样本数。 - max_features:分支时考虑的最大特征数。如果特征过多,可能会导致模型学习不足。 - min_impurity_decrease:节点分裂时信息增益的最小值。如果信息增益太小,则该分支不会被创建。

实例

假设不对决策树做任何限制,生成的决策树可能如下所示:

[插入图示]

可以看到每个叶子节点的基尼指数都为0。

如果我们设置min_samples_leaf为15,限制叶子节点最少包含15个样本,结果如下:

[插入图示]

这样可以避免某些叶子节点因样本太少而被剪枝。

    本文来源:图灵汇
责任编辑: : 智观察
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
剪枝机器学习CART
    下一篇