Decision Tree
是一种用于分类和回归的监督学习方法,目标是创建一个模型,通过学习从数据特性推断出的简单决策规则来预测目标变量的值。
优点
- 易于理解和解释,决策树可以被可视化。
- 几乎不需要数据准备,其他技术通常需要数据规范化,但是请注意,这个模块不支持丢失值,需要创建虚拟变量并删除控制。
- 使用决策树的成本是用于训练树的数据点数量的对数。
- 能够处理多输出问题。
- 使用白盒模型,如果给定的情况在模型中是可观察到的,则对该条件的解释很容易用布尔逻辑解释。
- 即使生成数据的真实模型在一定程度上违反它的假设,它也能执行的很好。
缺点 - 决策树学习可能会创建过于复杂的树,无法很好的概括数据,这叫做过度拟合。为了避免这个问题,需要一些机制,如修减少,在叶子结点设置所需要的最小样本数量或设置做大深度。
- 决策树可能不稳定,因为数据中的微小变化可能导致完全导致不同的树,在集成中使用决策缓解这个问题。
- 有些概念很难学习,因为决策树不容易表达他们,比如XOR,奇偶性或多路复用器问题。
- 如果某些类占主导地位,决策树学习者就会创建有偏见的树,因此,建议在与决策树匹配之前先平衡数据集。
基本结构
- 决策树是一种树型结构,其中每个内部结点表示在一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。
- 决策树学习是以实例为基础的归纳学习。
决策树采用的是自顶向下的递归方法,器基本思想是以信息熵为度量构造一颗熵值下降最快的树,到叶子结点处的熵值为零,此时每个叶节点的实例都属于同一类。 - 计算数据集D的经验熵 H ( D ) = − ∑ k = 1 K C k D l o g ∣ C k ∣ D H(D) = -\sum_{k=1}^K\frac{C_k}{D}log\frac{|C_k|}{D} H(D)=−∑k=1KDCklogD∣Ck∣
计算特征A的信息增益:g(D, A) = H(D) - H(D|A)
选择信息增益最大的特征作为当前的分裂特征。
H ( D ∣ A ) = − ∑ i , k p ( D k , A i ) l o g p ( D k ∣ A i ) = − ∑ i , k p ( A i ) p ( D k ∣ A i ) l o g p ( D k ∣ A i ) = − ∑ i = 1 n ∑ k = 1 K p ( A i ) p ( D k ∣ A i ) l o g p ( D k ∣ A i ) = − ∑ i = 1 n p ( A i ) ∑ k = 1 K p ( D k ∣ A i ) l o g p ( D k ∣ A i ) = − ∑ i = 1 n D i D ∑ k = 1 K ∣ D i k ∣ D i l o g D i k D i \begin{aligned} H(D|A) &= -\sum_{i, k}p(D_k, A_i)logp(D_k|A_i)\\ & = -\sum_{i,k}p(A_i)p(D_k|A_i)log p(D_k|A_i) \\ & = -\sum_{i=1}^n\sum_{k=1}^Kp(A_i)p(D_k|A_i)logp(D_k|A_i)\\ & = -\sum_{i=1}^np(A_i)\sum_{k=1}^Kp(D_k|A_i)logp(D_k|A_i) \\ & = -\sum_{i=1}^n\frac{D_i}{D}\sum_{k=1}^K\frac{|D_{ik}|}{D_i}log\frac{D_{ik}}{D_i} \end{aligned} H(D∣A)=−i,k∑p(Dk,Ai)lo