5-6 CART树的生成

Posted windmissing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5-6 CART树的生成相关的知识,希望对你有一定的参考价值。

CART树的生成算法

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

步骤

  1. 若D中所有实例属于同一类 C k C_k Ck,则T为单结点树,并将类 C k C_k Ck作为该结点的类标记,返回T
  2. 对每个特征feature的每个取值value,将y分为 R 1 R_1 R1 R 2 R_2 R2两个集合,因为现在还不是真正的split,只是要计算split后的基尼指数,只需要用到split之后的y
    y 1 ( f e a t u r e , v a l u e ) = y i ∣ x i ( f e a t u r e ) ≤ v a l u e y 2 ( f e a t u r e , v a l u e ) = y i ∣ y i ( f e a t u r e ) > v a l u e y_1(feature, value) = \\y_i | x_i^(feature) \\le value\\ \\\\ y_2(feature, value) = \\y_i | y_i^(feature) \\gt value\\ y1(feature,value)=yixi(feature)valuey2(feature,value)=yiyi(feature)>value
  3. 计算 y 1 y_1 y1 y 2 y_2 y2的基尼指数之和

G i n i ( p ) = ∑ K p k ( 1 − p k ) = 1 − ∑ K p k 2 Gini(p) = \\sum^K p_k(1-p_k) = 1 - \\sum^Kp_k^2 Gini(p)=Kpk(1pk)=1Kpk2

  1. 选择基尼指数计算结果最小的(feature, value)作为当前的最优划分
  2. 基于最优划分生成2个子结点,将数据分配到两个子结点中
  3. 对子结点递归调用CART算法

代码

def gini(y):
    ySet = set(y)
    ret, n = 1, y.shape[0]
    for yi in ySet:
        ret -= (y[y==yi].shape[0]/n)**2
    return ret

def CART(X, y):
    # 若D中所有实例属于同一类$$C_k$$
    if len(set(y))==1:
        # 将类$$C_k$$作为该结点的类标记
        return y[0]
    bestGini = np.inf
    # 对每个特征feature的每个取值value
    for feature in range(X.shape[1]):
        for value in set(X[:,feature]):
            # 将X分为$$R_1$$和$$R_2$$两个集合
            y1 = y[X[:,feature]<= value]
            y2 = y[X[:,feature]> value]
            # 计算$$R_1$$和$$R_2$$的基尼指数之和
            sumGini = gini(y1) + gini(y2)
            # 选择基尼指数计算结果最小的(feature, value)作为当前的最优划分
            if sumGini < bestGini:
                bestFeature, bestValue, bestGini = feature, value, sumGini
    # 基于最优划分生成2个子结点,将数据分配到两个子结点中
    node = 'feature':bestFeature,
            'value':bestValue,
            'left':CART(X[X[:,bestFeature]<= bestValue], y[X[:,bestFeature]<= bestValue]),
           'right':CART(X[X[:,bestFeature]> bestValue], y[X[:,bestFeature]> bestValue])
    return node

以上是关于5-6 CART树的生成的主要内容,如果未能解决你的问题,请参考以下文章

5-6 CART树的生成

CART剪枝

机器学习笔记之三CART 分类与回归树

决策树ID3决策树C4.5决策树CARTCART树的生成树的剪枝从ID3到CART从决策树生成规则决策树优缺点

CART 分类与回归树

CART回归树基本原理(具体例子)