hello 大家好
今天要说的是机器学习中的【决策树算法】,如果你之前没有接触过决策树,不必担心, 它的概念非常的简单,ok, 下面我们先引用一个简单的例子,看看决策树的大致过程:
例:在生活中,假如我们要判断一个西瓜是不是一个好瓜, 如果是你, 你会怎么做?ok, 也许你会去先观察它的【纹理】,然后再去听它的【响声】, 然后可能你还会去看它的【根蒂】... 上面你看的或听的这些我们都称之为西瓜的每个特征,而每个特征都会有不同的属性值, 比如【纹理】就有【清晰】和【模糊】两种属性值,具体如下表一所示:
编号 | 纹理 | 响声 | 根蒂 | 好瓜 |
1 | 清晰 | 清脆 | 硬挺 | 是 |
2 | 模糊 | 浊响 | 蜷缩 | 否 |
ok, 我们用一棵简单的决策树来示意一下上面的决策过程:
到此, 估计大家对决策树的决策过程有了大致的了解,接下来我们就说一说这样的一个决策过程到底是怎么生成的。
基于上图决策树,【纹理,响声,根蒂】我们称之为根节点或者分支节点,那么首先决策树的根节点【纹理】我们是如何选择出来的?一般而言, 我们希望随着划分过程的不断进行, 决策树的每一个节点包含的样本尽可能属于同一类,也就是说节点的"纯度"越来越高,因此数据集的划分必须遵循以下原则:
数据集划分的原则:将无序的数据变得有序。我们可以使用多种方法, 在这里我们使用信息论来度量信息, 信息论是量化处理信息的分支学科,我们可以在划分数据之前或者之后使用信息论量化度量信息的内容。
在划分数据集之前之后信息发生的变化称为信息增益,知道了如何计算信息增益,我们就可以计算每个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是当前最好的划分数据集选择。
1、信息增益(ID3算法):
在了解信息增益之前, 我们有必要先了解一下信息熵是个什么鬼东西?
信息熵:这里, 熵被定义为信息的期望值,那么问题来了, 什么是信息?又是什么鬼东西?
ok, 如果待分类的事务可能划分在多个分类中, 则符号的信息定义为:
【式1】 其中是选择该分类的概率
为了计算信息熵, 我们需要计算所有类别所有可能值包含的信息期望值, 通过下面的公式得到: