决策树模型
1、决策树原理及介绍
1.1 决策树介绍
决策树是一种常见的分类模型,在金融分控、医疗辅助诊断等诸多行业具有较为广泛的应用。决策树的核心思想是基于树结构对数据进行划分,这种思想是人类处理问题时的本能方法。例如在婚恋市场中,女方通常会先看男方是否有房产,如果有房产再看是否有车产,如果有车产再看是否有稳定工作……最后得出是否要深入了解的判断。
决策树的主要优点:
-
具有很好的解释性,模型可以生成可以理解的规则。
-
可以发现特征的重要程度。
-
模型的计算复杂度较低。
决策树的主要缺点:
-
模型容易过拟合,需要采用减枝技术处理。
-
不能很好利用连续型特征。
-
预测能力有限,无法达到其他强监督模型效果。
-
方差较高,数据分布的轻微改变很容易造成树结构完全不同。
1.2 决策树构建算法
决策树的构建过程是一个递归过程。函数存在三种返回状态:
(1)当前节点包含的样本全部属于同一类别,无需继续划分;
(2)当前属性集为空或者所有样本在某个属性上的取值相同,无法继续划分;
(3)当前节点包含的样本集合为空,无法划分。
其构建算法如下:
输入: 训练集D= { ( x 1 , y 1 ) , ( x 2 , y 2 ) … … , ( x m , y m ) } \left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right) \ldots \ldots,\left(x_{m}, y_{m}\right)\right\} { (x1,y1),(x2,y2)……,(xm,ym)}
特征集A= ( a 1 , a 2 , … . , a d ) \left(a_{1}, a_{2}, \ldots ., a_{d}\right) (a1,a2,….,ad)
输出: 以node为根节点的一颗决策树
过程:函数TreeGenerate ( D , A ) (D, A) (D,A)
-
生成节点node
-
if D D D 中样本全部属于同一类别 C C C then:
-
---- 将node标记为 C C C 类叶节点:return
-
if A = A= A= 空集 or D中样本在 A A A 上的取值相同 then:
-
---- 将node标记为叶节点,其类别标记为 D D D 中样本数最多的类; return
-
从 A 中选择最优划分属性 a ∗ a_{*} a∗
-
for a ⋅ ⋅ C 0 C v a··C 0 C^{v} a⋅⋅C0Cv do:
-
----为node生成一个分支, 令 D v D_{v} Dv 表示 D D D 中在 a ⋅ ⋅ C 1 C v a··C 1 C^{v} a⋅⋅C1Cv 的样本子集;
-
----if D v D_{v} Dv 为空 then:
-
--------将分支节点标记为叶节点,其类别标记为 D 中样本最多的类; then
-
----else:
-
--------以 TreeGenerate ( D v , A { a ∗ } ) \left(D_{v}, A\left\{a_{*}\right\}\right) (Dv,A{ a∗}) 为分支节点
1.3 划分选择
从上述伪代码中我们发现,决策树的关键在于line6.从A中选择最优划分属性 a ∗ a_{*} a∗,一般我们希望决策树每次划分节点中包含的样本尽量属于同一类别,也就是节点的“纯度”更高。
1.3.1 信息增益
信息熵是一种衡量数据混乱程度的指标,信息熵越小,则数据的“纯度”越高
Ent ( D ) = − ∑ k = 1 ∣ y ∣ p k log 2 p k \operatorname{Ent}(D)=-\sum_{k=1}^{|y|} p_{k} \log _{2} p_{k} Ent(D)=−k=1∑∣y∣pklog2pk
其中 p k p_{k} pk代表了第k类样本在D中占有的比例。
假设离散属性 a a a 有 V V V 个可能的取值 { a 1 , a 2 , … . , a V } , \left\{a^{1}, a^{2}, \ldots ., a^{V}\right\}, { a1,a2,….,aV}