CART树的生成

CART树的生成算法

输入: 训练数据集X,样本标签y 输出:回归树f(x)

步骤

  1. 若D中所有实例属于同一类$C_k$,则T为单结点树,并将类$C_k$作为该结点的类标记,返回T

  2. 对每个特征feature的每个取值value,将y分为$R_1$和$R_2$两个集合,因为现在还不是真正的split,只是要计算split后的基尼指数,只需要用到split之后的y

    y1(feature,value)={yixi(feature)value}y2(feature,value)={yiyi(feature)>value}\begin{aligned} y_1(feature, value) = \{y_i | x_i^{(feature)} \le value\} \\ y_2(feature, value) = \{y_i | y_i^{(feature)} \gt value\} \end{aligned}
  3. 计算$y_1$和$y_2$的基尼指数之和

Gini(p)=Kpk(1pk)=1Kpk2Gini(p) = \sum^K p_k(1-p_k) = 1 - \sum^Kp_k^2
  1. 选择基尼指数计算结果最小的(feature, value)作为当前的最优划分

  2. 基于最优划分生成2个子结点,将数据分配到两个子结点中

  3. 对子结点递归调用CART算法

代码

Last updated

Was this helpful?