最近研究基于信息熵的决策树构建,有些东西搞清楚了,但还有很多稀里糊涂的,现把想法列出来,请各位参与讨论。
假设有Age[Range]、Sex[Flag]、Income[Range]、State_f[Set]、……、default[flag] 等字段,用前面几个字段建立C5.0决策树模型,预测default的0/1类型。
根据信息熵增益来构建树的方法大致如下:
1.计算各字段的信息熵增益,取最大的那个字段作为树的第一个分枝节点;
2.依次计算各节点下的其它字段的信息熵增益,取最大的作为第二个分枝节点;
3.重复上述过程,直至树长满或者达到停机条件。
这里涉及到属性的信息熵计算,由于属性包括Range型和Set型,会含有不同的取值,如果一个值作为一个分枝,当然会导致树很庞大。
对于Range型的属性,比如Age=[18,19,20,21,22,23,......,77,78],我认为C5.0里是这么确定分枝的:
首先将Age分为 { 18; [19,...,78] } 两段,计算其产生的信息增益;
其次将Age分为 {[18,19]; [20,...,78] } 两段,计算其产生的信息增益;
。。。
一直持续到将Age分为{ [18,...,77]; 78} 两段,计算其产生的信息增益。
找出上述信息增益最大的情况,确定为其分枝方法,其目的也就是为了确定一个u,使得Age分为[18,u]和(u,78]两段且增益最大。
对于Range连续型的变量采用的是这种二分法。
但是对于Set型的变量,我没弄清楚具体怎么合并分枝,以下是我的一个初始考虑:
假设某变量有A、B、C、D、E五类,需要计算各种组合(A/BC/DE, A/BCDE, AB/CDE等,分别表示3、2、2个分枝),找出信息熵增益最大的情况。
但在实际过程中,我发现并不完全按照这个法则,我觉得可能是这种原因:
如果 A/B/C/DE 的信息熵增益大于 A/BC/DE ,最后可能会选取后者作为分枝类型。
因为此时两者的信息熵增益都超过一定的阈值,且后者的叶子数最少。
以上只是一个猜测,还没找到理论支撑,希望各位指点一下,或者推荐一本详细介绍决策树算法的好书,多谢了。