机器学习:CART决策树算法原理(大白话版)
作者头像
  • 数智物语
  • 2020-06-17 21:02:35 2

大家好,我是一名Python数据分析师,希望通过这篇文章分享我在人工智能领域的学习经历。我编写了一套课程,名为“人工智能四部曲”,包括《15天学会Python编程》、《每天10分钟,用Python学数据分析》、《Python数据可视化实战》以及《33天搞定机器学习》。

在机器学习领域,决策树是一种常用的算法,其经典实现包括ID3、C4.5和CART三种。这三种算法的核心区别在于树结构和特征选择的方法。其中,CART算法因其广泛的应用和优越的性能,在机器学习竞赛和工业界得到了广泛应用。许多流行的算法如XGBoost和LightGBM都基于CART算法,因此掌握CART算法对于理解后续的算法非常有帮助。

接下来,我将尽量用简洁明了的语言介绍CART算法,以便大家更好地理解。如果一开始就陷入复杂的公式,可能会导致学习过程受阻。然而,要想深入了解这些算法,还是需要阅读《机器学习》和《统计学习方法》中的相关内容。

CART分类树建立算法的流程

CART分类树使用基尼指数(Gini指数)作为划分标准。基尼指数衡量的是从数据集中随机选取两个样本,被错误分类的概率。基尼指数越低,说明数据集的纯度越高。

基尼指数的计算公式

假设有K类样本,第j类样本的概率为pj,则基尼指数定义为:

[ Gini = sum{j=1}^{K} pj (1 - p_j) ]

对于一个包含n个样本的数据集D,其基尼指数为:

[ Gini(D) = 1 - sum{i=1}^{K} (frac{Ni}{N})^2 ]

如果根据某个特征A的取值将数据集D分为D1和D2两部分,则D的基尼指数变化为:

[ Gini{D}(A) = frac{|D1|}{|D|} Gini(D1) + frac{|D2|}{|D|} Gini(D_2) ]

通过计算各个特征的基尼指数,选择基尼指数最小的特征和切分点,将其划分为两个子集,再对这两个子集递归执行相同的操作,直至满足停止条件。停止条件包括:节点样本数小于设定阈值、基尼指数低于设定阈值,或没有更多的特征可划分。

CART分类树的小例子

为了更好地理解CART分类树的算法流程,我们可以参考《统计学习方法》中的一个小例子进行分析。

CART回归树建立算法的流程

当需要预测连续型数据时,比如销售量或股票价格,我们使用CART回归树。在回归任务中,我们使用均方误差(MSE)作为衡量模型误差的标准。

回归树算法流程

数据集D={(x1,y1),(x2,y2),...,(xn,yn)},其中D表示整个数据集合,n为特征数。一个回归树对应着输入空间的一个划分,以及在每个划分单元上的预测值。假设已将输入空间划分为M个单元R1,R2,...Rm,并且在每个单元Rm上有一个固定的预测值Cm,那么回归树模型可表示为:

[ f(x) = sum{m=1}^{M} Cm I(x in R_m) ]

为了最小化每个单元上的误差,我们选择Cm为该单元内目标值的平均值。

生成这些单元的划分过程如下:

  1. 考虑数据集D上所有特征j,遍历每个特征下的所有可能取值或切分点s,将数据集D划分为两部分D1和D2。
  2. 分别计算这两个子集的均方误差,选择最小的均方误差对应的特征与分割点,生成两个子节点。
  3. 对这两个子节点递归执行步骤1和2,直到满足停止条件。

CART回归树的小例子

我们可以通过一个具体的数据集来演示如何生成最小二叉回归树。例如,给定一组数据,我们通过遍历不同的分割点,选择最小化均方误差的点作为最佳分割点,生成回归树。

小贴士

对于CART分类树中连续值的处理,其思想与C4.5相似,都是将连续特征离散化。区别在于度量方式的不同,C4.5使用信息增益,而CART分类树使用基尼系数。具体做法是将连续特征的所有可能取值按顺序排列,然后计算相邻两个取值的中位数作为候选分割点,选择基尼系数最小的点作为分割点。

希望以上内容对你有所帮助,欢迎继续关注我们的系列文章,下一节我们将讨论决策树的剪枝技巧。

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