【机器学习】【决策树】CART算法,用样本集一步一步详解如何求:基尼指数,最优特征,最优切分点

计算类算法使用数据数据一步一步计算,最能形象化理解算法,也容易掌握。如果不懂基尼指数定义,可以百度。

下面以常用的贷款申请样本数据表为样本集,通过数学计算来讲解基尼指数的计算方法和过程。

1.样本数据集合D

样本集简介:

    样本集有15个example样本

    每个样本有4个特征(年龄age,是否工作work,是否有房子house,信用情况credit),1个分类结果refuse或者agree

    age取值集合     ={youth, mid, elder}

    work取值集合   ={no, yes}

    house取值集合 = {no, yes}

    credit取值集合 = {common, good, excellent}

    class取值集合   = 申请贷款结果集合 = {refuse, agree}

ID age work house credit class
1 youth no no common refuse
2 youth no no good refuse
3 youth
yes no good agree
4 youth
yes yes common agree
5 youth no no common refuse
6 mid no no common refuse
7 mid no no good refuse
8 mid
yes yes good agree
9 mid
no yes excellent
agree
10 mid
no yes excellent
agree
11 elder
no yes excellent
agree
12 elder
no yes good agree
13 elder
yes no good agree
14 elder
yes no excellent
agree
15 elder no no common refuse

下面开始求每个特征的基尼指数

2.class分类样本空间 Y = 贷款审批结果

样本变量 agree refuse  
样本数量 a_cnt = 9 r_cnt = 6  
概率质量 9/15 6/15  

3.求特征age的基尼指数

【机器学习】【决策树】CART算法,用样本集一步一步详解如何求:基尼指数,最优特征,最优切分点_第1张图片

 python计算结果如下所示:

Gini(D, age=youth)

5*1.0/15*(2*2*1.0/5*(1-2*1.0/5)) + 10/15*(2*7*1.0/10*(1-7*1.0/10))
Out[3]: 0.44

Gini(D, age=mid)

5*1.0/15*(2*3*1.0/5*(1-3*1.0/5)) + 10/15*(2*6*1.0/10*(1-6*1.0/10))
Out[4]: 0.4799999999999999

Gini(D, age=elder)

5*1.0/15*(2*4*1.0/5*(1-4*1.0/5)) + 10/15*(2*5*1.0/10*(1-5*1.0/10))
Out[5]: 0.43999999999999995

4.求特征work的基尼指数

根据求特征age的基尼指数的道理,可以求得work的基尼指数:

Gini(D, work=yes) = 0.32

5.求特征house的基尼指数

Gini(D, house=yes)=0.27

6.求特征credit的基尼指数

Gini(D, credit=common)=0.32

Gini(D, credit=good)=0.47

Gini(D, credit=excellent)=0.36

7.求最优特征和最优切分点

Step1:首先按照Gini的数值大小,从小到大依次排序:

Gini(D, house=yes)=0.27

Gini(D, credit=common)=0.32

Gini(D, work=yes) = 0.32

Gini(D, credit=excellent)=0.36

Gini(D, age=elder)=0.43999

Gini(D, age=youth)=0.44

Gini(D, credit=good)=0.47

Gini(D, age=mid)=0.47999

Step2:选最优特征

Gini数值最小,则对应的特征被选为当前数据集的最优特征,就是决策树的根节点

这里Gini(D, house=yes)=0.27最小,选择特征house最优特征,且选择house=yes是最优切分点

即:选择特征house为根节点,house=yes为根节点的最优切分点,所以根节点生成两个子节点,一个是叶节点,而另一个叶节点继续使用以上方法在age, work, credit中选择最优特征和他的最优切点。

提醒:选取house为根节点后,后面从age,work,credit中选取最优特征和最优切分点时,计算每个特征的gini数值和这次的数值会不相同,因为使用的数据集变化了(需要将house特征值以及对应的house=yes行数据从原数据集中裁剪掉),要注意~


循环计算知道最后得到的所有子节点都是叶节点,就得到最后的目标决策树。

8.CART算法以及CART算法生成决策树

上面步骤就是CART算法,上面最后求出的决策树就是用CART算法生成的决策树。


化繁为简,一生二,二生三,最后就是简单的任务了。

enjoy it~

(end)

你可能感兴趣的:(人工智能,机器学习,跟我一起学机器学习,Machine,Learning)