决策树

在众多分类算法中,决策树应该是最基本的一种算法了,也是相对比较简单的一种算法。


决策树的介绍:

首先,什么叫做决策树?决策树用于解决什么样的问题?

先看一个例子:
现有某银行客户拖欠贷款的历史数据,如表 3-1。现在一个新客户{ no, married, 80K, ? } 前来申请贷款,请你根据银行的历史数据判断这个人会不会拖欠贷款?
这里写图片描述

当然,客户最终是否会拖欠贷款,我们是无法100%确定的。但我们可以根据银行的历史数据,尽可能准确地做出预判。
依据上表的数据,我们可以构建以下这个树状模型。其中决策节点代表各个属性值(如年收入、是否有房等),叶子节点代表是否会拖欠贷款。

这里写图片描述
这就是决策树。它符合表3-1 中的的大部分数据,所以它具有一定的准确性。
将新客户的数据 { no, married, 80K, ? } 代入进去,得到结果“no”。所以预判的结果是:此客户不会拖欠贷款,可以通过申请。


决策树的构建 :

既然决策树是一种树形的结构,那么我们就应该可以用建造一般树的方法来构建决策树。一般树的建造方法有两种:一种是用堆栈,另一种是用递归。对于构建决策树,同样两种方法都可以,不过一般选用后者。

另外的,决策节点哪个在先,哪个在后,构造出来的决策树都会不一样。例如把“婚姻状况”放在最上面,把“年收入”和“是否有房”放在下面,构造出来的决策树肯定不一样,所达到的预判能力也会不一样。那么怎样选择决策节点,才能构造出更好的决策树的呢?这就是决策树的属性选择问题了:
属性选择的标准有两个:信息增益和Gini系数。(关于这两个名词,都只是一个指标,我们只需要知道它们“做什么用”和“怎么求”就行了。具体的请参见相应的算法。)
根据不同的属性选择标准,我们把决策树分为 ID3(使用信息增益)、C4.5(使用信息增益率)、CART (使用Gini系数)等算法。

用以上方法构造的决策树是完全生长的,然而这样反倒不好。首先,显得臃肿!其次,决策树是根据一定量的数据实例训练出来的,决策树的层次太深,导致某些叶子节点的实例很少,支持度太低,从而导致整个决策树的预测能力变弱。
所以对构建的树要选择合适的大小,方法也是有两个:
一个是在构建树的时候添加限定条件,如限定最小划分实例数、限定最大树深、划分阈值等。
另一个是在对完全生长的树进行减枝。方法是对决策树进行评估,如果去掉某孩子树后整个决策树表现更好,则把该孩子树减掉。



用不同方法构建的决策树,达到的预测效果也会不同,更多关于ID3C4.5CART,可点击进入相关博文。

posted @ 2015-06-01 08:18  九茶  阅读(297)  评论(0编辑  收藏  举报