
166
|
第
6
章
6.4 CART 训练算法
Scikit-Learn 使用分类和回归树(Classification and Regression Tree,CART)算法来训练
决策树(也称为“增长树”)。该算法的工作原理是:首先使用单个特征
k
和阈值
t
k
(例如,
“花瓣长度”
≤
2.45cm”)将训练集分为两个子集。如何选择
k
和
t
k
?它搜索产生最纯子
集(按其大小加权)的一对 (
k
,
t
k
)。公式 6-2 给出了算法试图最小化的成本函数。
公式 6-2:CART 分类成本函数
其中
Jkt G G(, )
k
G
m
left/right
left/right
= +
m
mm
left
测量左右子集的不纯度
测量左右子集的实例数
left right
m
right
一旦 CART 算法成功地将训练集分为两部分,它就会使用相同的逻辑将子集进行分割,然
后再分割子集,以此类推。一旦达到最大深度(由超参数 max_depth 定义),或者找不
到可减少不纯度的分割,它将停止递归。其他一些超参数(稍后描述)可以控制其他一些
停止条件(min_samples_split、min_samples_leaf、min_weight_fraction_
leaf 和 max_leaf_nodes)。
如你所见,CART 是一种贪婪算法:从顶层开始搜索最优分裂,然后每层
重复这个过程。几层分裂之后,它并不会检视这个分裂的不纯度是否为可
能的最低值。贪婪算法通常会产生一个相当不错的解,但是不能保证是最
优解。
而不幸的是,寻找最优树是一个已知的 ...