清华大学出版社-周志华《机器学习》第四章 决策树
基本概念决策树(decision tree)是一种常见的机器学习方法,它基于树形结构来对样本进行决策,恰似人类面临决策问题时大脑的相当自然的一种处理机制。
举个例子,当我们要判断一个西瓜是否是好瓜的时候,我们就要对“这是好瓜吗?”这个问题进行一系列的判断或“子决策”,像是先看它的颜色,然后看它的纹路,在试试它的触感…等等等等,这个决策过程我们可以用图形表示:
决策过程的最终结论将会对应我们的判断结果,而决策过程中的每一次判定都是对某个属性的“测试”,如“色泽=?”“根蒂=?”;每个测试的结果要么导出最终结果,要么导出下一个判定问题,并且,每一次判定都会在上一次决策所划分好的范围内进行判定,例如,在“色泽=青绿”之后判定“根蒂=?”就是在判断青绿色的瓜的根蒂。
基本流程
一般来说,一棵决策树包含一个根节点,若干个内部节点和若干个叶节点。
叶节点对应于决策结果,其它每个节点则对应于一个属性测试每个节点包含的样本集合根据属性测试的结果被划分到子节点中根节点包含样本全集从根节点到每个叶节点的路径对应了一个判定测试序列
决策树学习的目的是为了产生一棵泛化能力强,即能够处理未知示例能力强的决策树。决策树的基本流程遵循简单且直观的“分而治之”(divide-and-conquer)策略:
在决策树的基本算法中,有三种情况会导致递归返回:
当前节点包含的样本全部属于同一类别,无需返回当前属性集为空,或是所有样本在所有属性上取值相同,无法划分当前节点包含的样本集合为空,不能划分第(2)种情况出现时,我们把当前节点标记为叶节点,并将其类别设定为该节点所含样本最多的类别。例如,假设我们在西瓜例子中将西瓜所有的属性都测试了一遍,但有3个西瓜的这些属性取值完全相同(色泽相同,根蒂相同,纹路相同……),在无法得到更多属性的情况下我们无法对其进行判断分类,那么这个时候,就取三个瓜中最多的那个类别作为叶节点:像是有2个好瓜1个坏瓜,那么我们就设定当前节点的导出结果为“好瓜”。第(3)种情况出现时,我们同样将当前节点标记为叶节点,但将其类别设定为其父节点所含样本最多的类别。(这与第(2)种情形的处理方式很相似,不同的是,情形(2)利用的是当前节点的后验分布,情形(3)利用的是父节点的样本分布作为当