引言
今天的《大数据茶馆》我们来聊聊决策树是何许人也。它能解决什么问题,是怎么解决这些问题的?
从一个例子说起
放暑假了,小明和小亮约了每天下午一起打网球,但是由于一些原因,有些天他们并没有成行。今天他们把这几天的情况和是否适合打球列了一张表格。
希望从这张表格中可以找到一个综合各个因素得出是否适合打球的规律,这样今后约球时只需把各个因素输入进去,就知道是否适合打球而不需要纠结思考了。
从这个表格中我们分情况判断,很容易得出这样一棵树
决策树
我们来观察这棵树,这是一个类似 if-else 的判断树,帮助我们做出最后的决策,所以又叫决策树。
决策树运用多个属性综合判断给出决策,主要解决分类问题,有时也用来解决回归问题。
这棵树的节点分为两类,叶子节点和非叶子节点。
- 每个非叶子节点都是以某个属性为标准向下分支。
- 每个叶子节点都是一种决策结果。
在这棵决策树中,我们第一个选择的属性是场地,直接帮我们决策了三条数据 (1,2,3), 第二个选择的是天气,又帮我们决策了三条数据(4,5,6)。
假设我们没有这样选择,而是第一个选择的风力或者温度,可能这棵树就会复杂很多,我们需要更多条件更多层次才能做出决策。
可见在每一个非叶子节点处,选择以哪个属性来划分子树显得格外重要。
划分的选择
我们希望每次选择的属性可以让划分后的分支数据更有区分性,使各个分支的数据分类纯度更高,最好是每个分支的数据尽可能属于同一类别。
根据这个标准,如果找到《计算属性划分前后纯度变化的方法》,那么比较各个属性划分纯度变化的大小,选取纯度变化最大的属性来划分分支就行了。
属性划分纯度变化的计算方法较为典型的有三种:
- 信息增益:在 ID3 决策树中使用
- 信息增益率:在 C4.5 决策树中使用
- 基尼系数:在 CART 决策树中使用
属性划分的方法是决策树的核心,我们将在下篇文章中跟大家详聊。现在假设我们有了这样一种属性划分的方法用来在节点处选择最优属性,接下来看看怎样建立一棵决策树。
构建决策树
容易看出决策树的构建过程是一个属性划分递归的过程,下面一起来看看。
输入: