决策树理解
针对以下表设计决策树:
原表1
序号 | 不浮出水面是否可以生存 | 是否有脚蹼 | 是否为鱼类 |
1 | 是 | 是 | 是 |
2 | 是 | 是 | 是 |
3 | 是 | 否 | 否 |
4 | 否 | 是 | 否 |
5 | 否 | 是 | 否 |
转化成0-1变量的表—表2
序号 | No surfacing | flippers | Label |
1 | 1 | 1 | Yes |
2 | 1 | 1 | Yes |
3 | 1 | 0 | No |
4 | 0 | 1 | No |
5 | 0 | 1 | No |
决策树生成学要确定以哪个特征为根节点来进行分裂,由于最终的目的是将label区分开,因此需要计算它们的熵,熵越大,表明越不确定,越混乱,首先计算原表中label的熵H(D);以特征X1为根节点进行分裂的标准就是:去除当前为根节点的特征X1,计算剩下表中label的熵即H(D|X1),根据原来熵—去掉分裂特征后剩下表中的熵即信息增益g(D,X1)=H(D)-H(D|X1)来决定选择哪个特征作为分裂特征;
表2中,未分裂之前label中有3个No,2个Yes,因此其熵为:H(D)=−(−2/5log22/5−3/5log23/5)=0.971;
假设现在以Nosurfacing作为分裂特征,在表2基础上,去掉No surfacing特征列后,其表为:
表3
序号 | No surfacing | flippers | Label |
1 | 1 | 1 | Yes |
2 | 1 | 1 | Yes |
3 | 1 | 0 | No |
4 | 0 | 1 | No |
5 | 0 | 1 | No |
假设以Nosurfacing来作为分裂点,如下:
取出No surfacing中的取值为1的那部分作为一个表,该表对应一个分支:
序号 | No surfacing | flippers | Label |
1 | 1 | 1 | Yes |
2 | 1 | 1 | Yes |
3 | 1 | 0 | No |
此时,该表中label的信息熵为:H(D1)=−2/3log22/3−1/3log21/3
同理,取出Nosurfacing中的取值为0的那部分作为一个表,该表对应一个分支:
4 | 0 | 1 | No |
5 | 0 | 1 | No |
此时,该表中label的信息熵为:H(D2)=−1log21=0
以No surfacing来作为分裂点时,其总体信息熵为:No surfacing中的取值为1的概率*对应No surfacing中的取值为1时label的信息熵 + No surfacing中的取值为0的概率*对应No surfacing中的取值为0时label的信息熵
故No surfacing来作为分裂点总体信息熵为:H(D|X1)=3/5*H(D1)+2/5*H(D2)=0.551
信息增益为:H(D)-H(D|X1)=0.420
同理计算另一个特征flippers记为X2为分裂点的时候的信息增益为:H(D)-H(D|X2)=0.171
可以看出,X1的信息增益比较大,因此选择X1来作为分裂点;
在已知Nosurfacing作为分裂点时,要知道另一个特征flippers是在No surfacing的左节点(No surfacing取0)还是右节点(No surfacing取1)下生长树,分别求其在两种情况下的信息增益:
情况一:
No surfacing的右节点(Nosurfacing取1)时总体信息熵为上面的H(D1)=−2/3log22/3−1/3log21/3
在No surfacing取1下的表中,取特征flippers的信息熵:
序号 | No surfacing | flippers | Label |
1 | 1 | 1 | Yes |
2 | 1 | 1 | Yes |
3 | 1 | 0 | No |
为:2/3*[−1log21−0log20]+1/3*[−1log21−0log20] =0
其中2/3为No surfacing取1表中flippers取1占的比例,与它相乘的[−1log21−0log20]则是flippers取1时label的信息熵;
情况二:
同理,计算在No surfacing取0下的表中,取特征flippers的信息熵:
最后,求取两种情况下的信息增益(或者信息增益比——避免偏向于样本数较多的样本),以信息增益(或信息增益比)较大的那个作为分列点,
综上:总结,在还未分列前,确定根节点时,所有特征例如No surfacing、flippers等都可以叫做待选分裂节点,一旦确定了第一个分裂点后,其待选分裂节点则以该分列点具体的分裂值为属性边了,其节点为当前属性边下label的取值情况或者其他还需分裂的特征,例如: