版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
决策树也称作判定树,是一类常见的的机器学习方法。周志华老师在其书《机器学习》中,以二分类任务为例给我们讲解了决策树的基本流程。
我们希望从给定的训练集学的一个模型,此模型可以对新的示例进行分类,这个把样本分类的任务,可看作对“当前样本属于正常吗”这个问题的“决策”或“判定”过程。
决策树是基于树结构来进行决策的,这也是人类在面临决策问题时一种很自然的处理机制。
举一个例子,如果我们要对“这是好瓜吗?”这样的问题进行决策时,我们通常会进行一系列的判断或“子决策”:先要看看“它是什么颜色?”,如果是:”青绿色”,再看“他的根蒂是什么形态?”如果是“蜷缩”在判断“它敲起来是什么的声音?”最后,我们得出最终的决策:这是个好瓜
决策过程如下图
决策过程的最终结论对应了我们所希望的判定结果,例如是不是好瓜。在决策过程中提出的每个判定问题都是对某个属性的“测试”,例如“色泽=?”“根蒂=?”;每个测试的结果或者是导出最终结论,或是导出进一步的判定问题,其考虑范围是在上次决策结果的限定范围之内,例如若是在“色泽=青绿”之后再判断“根蒂=?”,则仅在考虑青绿色瓜的根蒂。
一棵决策树包含一个根节点、若干个内部结点和若干个叶结点,根节点包含了样本全集,其中叶节点对应于决策结果(根蒂蜷缩,敲声浊响),其他每个结点对应于一个属性测试(例如 根蒂=?),每个结点包含的样本集合根据属性测试的结果被划分到子节点中,根节点包含了样本全集。从根节点到每个叶节点的路径对应了一个判定测试序列。
决策树学习的目的是为了产生一颗泛化能力强,吃力未见示例能力强的决策树,基本流程如下
决策树的生成是一个递归过程,有三种情形会导致递归返回:
(1)当前结点包含的样本全属于同一类别,无需划分
(2)当前属性为空或者是所有样本在所有属性上取值相同,无需划分,在这种情况下,我们把当前结点标记为叶结点,并将其类别设定为该结点所含样本最多的类别
(3)当前结点包含的样本集为空,不能划分,同样把当前结点标记为叶结点
#导入需要用到的