算法:
$\qquad$ 输入:训练数据集 $D$,停止计算的条件;
$\qquad$ 输出:CART 决策树。
$\qquad$ 根据训练数据集,从根结点开始,递归地对每个结点进行以下操作,构造二叉决策树:
$\qquad$ (1) 设结点的训练数据集为 $D$,计算现有特征对该数据集的基尼指数。此时,对每一个特征 $A$,对其可能取得每个值 $a$,根据样本点对 $A=a$ 的测试为“是”或“否”将 $D$ 分割成 $D_1$ 和 $D_2$ 两部分,计算 $A=a$ 时的基尼指数。
$\qquad$ (2) 在所有可能的特征 $A$ 以及他们所有可能的切分点 $a$ 中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去。
$\qquad$ (3) 对两个子结点递归地调用(1),(2),直至满足停止条件。
$\qquad$ (4) 生成 CART 决策树。
一些说明:
基尼指数:
$\qquad$ 样本集合 $D$ 的基尼指数
\[\text {Gini}(D)=1-\sum_{k=1}^K\left(\frac{|C_k|}{|D|}\right)^2\]$\qquad$ 特征 $A$ 条件下集合 $D$ 的基尼指数:
\[\text {Gini}(D,A)=\frac{|D_1|}{|D|}\text{Gini}(D_1)+\frac{|D_2|}{|D|}\text{Gini}(D_2)\]算法停止条件:
- 结点中的样本个数小于预订阈值
- 样本集的基尼指数小于预定阈值
- 没有更多特征