DecisionTree

时间:2019-02-19
本文章向大家介绍DecisionTree,主要包括DecisionTree使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

决策树

决策树算法过程重点

1 基本流程


输入:训练集 D={(x1,y1),(x2,y2),...,(xm,ym)};D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\};

属性集 A={a1,a2,,ad}A=\{a_1,a_2,\dots,a_d\}

过程:函数TreeGrenerate(D,A)

  1. 生成节点node;
  2. if D中样本全属于同一个类别C then.
  3.    将node标记为C类叶节点; 「递归返回情形(1)」
  4.    return.
  5. end if
  6. if A=\emptyset or D中样本在A上取值相同 then
  7.    将node标记为叶节点,其类别标记为D中样本数最多的类; 「递归返回情形(2)」
  8.    return
  9. end if
  10. 从A中选择最优划分属性aa_*;
  11. for aa_* 的每一个值 ava_*^v do.
  12. 为node生成一个分支;令 DvD_v 表示 DD 中在 aa_* 上取值为 ava_*^v 的样本集;
  13. if DvD_v 为空 then
  14.    将分支节点标记为叶节点,其类别标记为D中样本最多的类;「递归返回情形(3)」
  15.    return
  16. else
  17.    以TreeGeneration(DvD_v, AA \ {aa_*})为分支节点
  18. end if

       注意:递归返回(2)和(3)都是面临节点无法被划分的情形,(2)是利用当前节点的后验分布进行类别判断,(3)是利用父节点的样本分布作为当前节点的先验分布进行类别判断。

2 流程核心(划分选择)

选择最优划分属性(信息增益信息增益率基尼指数

2.1 信息增益

2.1.1 概念

       信息熵 Ent(D)Ent(D) : Ent(D)=k=1ypklog2pkEnt(D)=-\sum_{k=1}^{|y|}p_k\log_2^{p_k}.

       Ent(D)Ent(D)越小,D的纯度越高。

       信息增益Gain(D,a)Gain(D,a):Gain(D,a)=Ent(D)v=1VDvDEnt(Dv)Gain(D,a)=Ent(D)-\sum_{v=1}^V\frac{|D^v|}{D}Ent(D^v).

       信息增益越大,则意味着使用属性aa来划分所获得的“纯度提升”越大,ID3ID3决策树学习算法以其为准则划分属性。

2.1.2 劣势

       对可取值数目较多的属性有所偏好,极端情况以编号为属性时,该属性划分并无意义。

2.2 增益率

2.2.1 概念

       增益率 Gain_ratio(D,a)Gain\_ratio(D,a) :Gain_ratio(D,a)=Gain(D,a)IV(a),Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)},
其中
IV(a)=v=1VDvDlog2DvD.IV(a)=-\sum_{v=1}^V\frac{|D^v|}{|D|}\log_2^{\frac{|D^v|}{|D|}}.
C4.5C4.5决策树算法以其为标准划分属性。

2.2.2 劣势

       对取值数目较少的属性有所偏好,不直接用来选划分属性,而是从候选划分属性中找出信息增益高于平均水平的属性,再从中选出增益率最高的。

2.3 基尼指数

2.3.1 概念

       基尼值 Gini(D)Gini(D) :
Gini(D)=k=1yk̸=kpkpkGini(D)=\sum_{k=1}^y \sum_{k'\not=k}p_kp_{k'}
=1k=1ypk2=1-\sum_{k=1}^{|y|}p_k^2
       属性aa基尼指数定义为:
Gini_index(D,a)=v=1VGini(Dv).Gini\_index(D,a)=\sum_{v=1}^VGini(D^v).

2.3.2 使用

       选择那个使得划分后基尼指数最小的属性为最优划分属性。

3 优化(过拟合+属性过多)

       剪枝是决策树学习算法对付“过拟合”的主要手段,采用留出法

3.1 预剪枝

<