决策树
决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。
决策树的生成
主要分以下两步,通常通过学习已经知道分类结果的样本来实现。
1. 节点的分裂:
一般当一个节点所代表的属性无法给出判断时,则选择将这一节点分成2个子节点(如不是二叉树的情况会分成n个子节点)
2. 阈值的确定:
选择适当的阈值使得分类错误率最小 (Training Error)。
常见的决策树算法:
ID3算法、C4.5算法、CART(Classification And Regression Tree)算法
ID3算法
由熵(Entropy)来决定哪个做父节点,哪个节点需要分裂。对于一组数据,熵越小说明分类结果越好。选择熵最小的那个。
ID3存在过拟合问题:那就是越细小的分割分类错误率越小,所以ID3会越分越细,训练集分错率降到了0,但是这种分割显然只对训练数据有用,对于新的数据没有意义。由于分割太细,训练数据的分类错误率可以达到0,但是对新的数据分错率反倒上升了。ID3算法以信息增益来选择节点。
C4.5算法
C4.5中,优化项要除以分割太细的代价,这个比值叫做信息增益率,显然分割太细分母增加,信息增益率会降低。
CART算法
GINI指数:总体内包含的类别越杂乱,GINI指数就越大
CART算法选择Gini指数最小的方案
CART还是一个回归树,回归解析用来决定分布是否终止。CART对每个叶节点里的数据分析其均值方差,当方差小于一定值可以终止分裂,以换取计算成本的降低。
CART和ID3一样,存在偏向细小分割,即过度拟合的问题,为了解决这一问题,对特别长的树进行剪枝处理。
分别计算Gini系数增益,取Gini系数增益值最大的属性作为决策树的根节点属性。
决策树剪枝(预剪枝和后剪枝)
预剪枝:就是根据经验将不重要的属性先去掉
后剪枝:就是先用所有的属性值建立决策树,当决策树构建完成后再砍掉一部分,对特别长的树进行剪枝处理。
############################################################################################
以下可忽略,尚未整理
#根节点的Gini系数:
#根据是否有房进行划分时,Gini系数增益计算(左子节点代表yes,右子节点代表no)
#根据婚姻状况来进行划分时,Gini系数增益计算:
#根据年收入来进行划分时,Gini系数增益计算:
当面对年收入为60和70两个值时,我们算得其中间值为65.倘若以中间值65作为分割点,于是得Gini系数增益为:
#最后构建的CART决策树
决策树优缺点
优点:
小规模数据集有效
缺点:
处理连续变量不好
类别较多时,错误增加的比较快
不能处理大量数据