1.什么是决策树
为达到目的根据一定的条件进行选择的过程就是决策树,是基于树形结构利用信息学中熵的概念构建出的监督学习算法模型。利用决策树可以解决基本的分类和回归问题。
决策树算法在树形结构的基础上直接模仿现实生活中人类做决策的过程,如:医学诊断、商业决策等。 构成决策树的元素是节点和边。节点会根据样本的特征作出判断,最初的分支点称为根节点,其余的被称为子节点,不再有分支的节点则被称为叶子节点,这些节点代表了样本的分类结果。边则指示着方向。
2.决策树的构造
决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得各个子数据集有一个最好的分类的过程。这一过程对应着对特征空间的划分,也对应着决策树的构建。
(1)开始:构建根节点,将所有训练数据都放在根节点,选择一个最优特征,按着这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。
(2)如果这些子集已经能够被基本正确分类,那么构建叶节点,并将这些子集分到所对应的叶节点去。
(3)如果还有子集不能够被正确的分类,那么就对这些子集选择新的最优特征,继续对其进行分割,构建相应的节点,如此递归进行,直至所有训练数据子集被基本正确的分类,或者没有合适的特征为止。
(4)每个子集都被分到叶节点上,即都有了明确的类,这样就生成了一颗决策树。
3.使用决策树做预测需要以下过程:
1)、收集数据:可以使用任何方法。比如想构建一个相亲系统,我们可以从媒婆那里,或者通过参访相亲对象获取数据。根据他们考虑的因素和最 终的选择结果,就可以得到一些供我们利用的数据了。 2)、准备数据:收集完的数据,我们要进行整理,将这些所有收集的信息按照一定规则整理出来,并排版,方便我们进行后续处理。 3)、分析数据:可以使用任何方法,决策树构造完成之后,我们可以检查决策树图形是否符合预期。 4)、训练算法:这个过程也就是构造决策树,同样也可以说是决策树学习,就是构造一个决策树的数据结构。 5)、测试算法:使用经验树计算错误率。当错误率达到了可接收范围,这个决策树就可以投放使用了。 6)、使用算法:此步骤可以使用适用于任何监督学习算法,而使用决策树可以更好地理解数据的内在含义。
4.决策树的的学习算法
(1)特征选择:特征选择决定了使用哪些特征来做判断。在训练数据集中,每个样本的属性可能有很多个,不同属性的作用有大有小。
(2)决策树的生成:选择好特征后,就从根节点触发,对节点计算所有特征的熵,选择合适特征作为节点特征,根据该特征的不同取值建立子节点;对每个子节点使用相同的方式生成新的子节点。
(3)决策树的剪枝:从已经生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶子节点,从而简化分类树模型。剪枝的主要目的是对抗“过拟合”,通过主动去掉部分分支来降低过拟合的风险。包括预剪枝和后剪枝。
5.决策树的优缺点
决策树的优势:
1、便于理解和解释。树的结构可视化
2、训练需要的数据少,其他机器学习模型通常需要数据规范化,比如构建虚拟变量和移除缺失值
3、由于训练决策树的数据点的数量导致了决策树的使用开销呈指数分布(训练树模型的时间复杂度是参加训练数据点的对数值)
4、能够处理数值型数据和分类数据,其他的技术通常只能用来专门分析某一种的变量类型的数据集;
5、能够处理多路输出问题;
6、使用白盒模型。如果某种给定的情况在模型中是可以观察的,那么就可以轻易的通过布尔逻辑来解释这种情况,相比之下在黑盒模型中的结果就是很难说明清楚了;
7、可以通过数值统计测试来验证该模型。这对解释验证该模型的可靠性成为可能
8、即使是该模型假设的结果越真实模型所提供的数据有些违反,其表现依旧良好
决策树的缺点:
1、决策树模型容易产生一个过于复杂的模型,这样的模型对数据的泛化性能会很差。这就是所谓的过拟合,一些策略像剪枝、设置叶节点所需要的最小样本数或者设置数的最大深度就是避免出现该问题的最有效的方法。(剪枝:在机器学习经典算法中,决策树算法的重要性想必大家都是知道的。不管是ID3算法还是比如C4.5算法等等,都面临一个问题,就是通过直接生成的完全决策树对于训练样本来说是“过度拟合”的,说白了是太精确了。由于完全决策树对训练样本的特征描述得“过于精确” ,无法实现对新样本的合理分析, 所以此时它不是一棵分析新数据的最佳决策树。解决这个问题的方法就是对决策树进行剪枝,剪去影响预测精度的分支。常见的剪枝策略有预剪枝(pre -pruning)技术和后剪枝(post -pruning )技术两种。预剪枝技术主要是通过建立某些规则限制决策树的充分生长, 后剪枝技术则是待决策树充分生长完毕后再进行剪枝。)
2、决策树可能是不稳定的,因为在数据中的微小变化可能会导致完全不同的树生成。这个问题可以通过决策树的集成来得到缓解;
3、在多方面性能最优和简单化概念的要求下,学习一颗最优决策树通常是一个NP难问题(关于NP问题:https://blog.youkuaiyun.com/csshuke/article/details/74909562 )
因此,实际的决策树学习算法是基于启发式算法,例如在每个节点进行局部最优决策的贪心算法,这样的算法不能保证返回全局最有决策树,这个问题可以通过集成学习来训练多颗决策树来缓解,这多棵决策树一般通过对特征和样本又放回的随机采样来生成;
4、有些概念很难被决策树学习到,因为决策树很难清楚的表述那些概念,例如XOR,奇偶或者复用器问题;
5、如果某些类在问题中占主导地位会使得创始的决策树有偏差,因此建议在拟合前先对数据集进行平衡。