- 决策树算法利用非度量(nunmetric)的方式进行一系列的查询问答来判断和分类,被广泛用于分类和回归模型,三种最常用的实现算法是CART、ID3、C4.5。
- 对于同一个数据集,特征和节点可以有多种组合方式,实际上可以生成很多决策树。我们运用决策树算法是希望从中找出最合适的树,因此算法的目标是在合适的节点上放入合适的特征。
决策树构成
- 决策树由三部分构成:根节点(root)、节点(node)、叶子(leaves)
root - 决策树的根部,即上图中的第一层“颜色”。
nodes - 决策树的节点。
leaves - 决策树的叶子,即最终的标记,如西瓜、苹果等。
1.算法优缺点
优点
- 可展示性强:决策树可以提取规则/决策依据,类似人类逻辑化的决策,易于向其他人展示和说明模型的决策过程。
- 分类速度快:决策树只需要一系列的简单查询,无需计算和度量,当问题比较简单且训练样本比较少时,非常有效。
缺点
- 最优决策树难寻:对于同一个数据集,可以生成很多类型的决策树。虽然已有很多先进的算法和测量指标,但如何找到全局最优的树依旧令人困惑。通常来讲,我们遵循奥卡姆剃刀原则,倾向于选择更简单紧凑的树,即最少的节点和最少的叶子。
2.算法核心问题
2.1.分支数量和叶节点标记
- 分支数量是指从一个节点分出去的分支数目,也称为节点的分支系数或分支率(branching ratio)。
- 根据分支数量的不同,可以把树分成二叉树(分支数量恒等于2)和多叉树(分支数量部分大于2)。一般来说,由于计算复杂度不同,计算机处理二叉树的能力优于多叉树。
- 关于叶节点标记,理想情况下,最终树的每一个叶子都只包含单一样本,那该类别的标记就是叶节点标记;但是,多数情况下,叶子一般都有多个类型的样本,这时就是少数服从多数,用数量最多的样本类别来标记。
2.2.节点选取和不纯度
- 在构建模型时,我们希望节点数据尽可能地“纯”,这样就可以停止分叉。因此,我们定义了一个“不纯度(impurity)”指标,并选择能够使不纯度下降最快的特征做分支。
- 不纯度用 i ( N ) i(N) i(N)表示节点N的不纯度。当所有数据均属于同一类别时, i ( N ) = 0 i(N)=0 i(N)=0。常见的不纯度测量函数有3个,分别是熵不纯度(entropy impurity)、Gini不纯度(Gini Index)、方差不纯度、误分类不纯度((Classification error),其中普遍采用的是前两种。
1)熵不纯度
- 熵不纯度亦称为信息量不纯度(information impurity),是对信息量的一个加权计算,适用于类别标记概率不等的情况(即 P ( w j ) ≠ P ( w i ) P(w_j)≠P(w_i) P(wj)=P(wi)),计算公式为:
i E ( N ) = − ∑ j P ( w j ) l o g 2 P ( w i ) i_E(N) = -\sum_j P(w_j)log_2P(w_i) iE(N)=−j∑P(wj)log2P(wi) - 熵不纯度最大值为1,表示最不确定;最小值为0,表示完全确定。
- 举例:14个人中有9个人买了N,5个人没买N,则i(N)为:
i E ( N ) = − 9 14 l o g 2 9 14 − 5 14 l o g 2 5 14 = 0.940 i_E(N) = -{\frac{9}{14}}log_2{\frac{9}{14}} - {\frac{5}{14}}log_2{\frac{5}{14}} = 0.940 iE(N)=−149log2