我们又要开始学习一种新的机器学习算法:决策树。那什么是决策树呢?
下面我用一个简单的例子,比如某公司想招聘一个算法工程师,那么在招聘的过程中很有可能采用这样一个流程。
这样的一个过程形成了一棵树的结构。在这棵树所有的叶子节点的位置其实就是我们最终做出的决策,这个决策可以理解成是对这个应聘者的信息进行分类,分成录用或者考察这两类。那么这样的一个过程就叫做决策树。
那么对于这样一颗决策树来说,它有计算机领域所说的树结构所有的性质,包括节点,树的深度。比如上面例子中树的深度为 3。
我们先使用 sklearn 提供的决策树的算法进行具体的分类,然后我们通过具体的结果再更加深入的认识决策树这种方法。
那么我们现在通过得到的决策边界来分析一下得到的决策树大概是个什么样子的?在上图中,我们数据相应的特征都是一个数字特征,就是每个特征都是一个实数。此时,我们每个数据有两个特征,横轴就叫 x x x,纵轴就叫 y y y。
首先我们会看特征 x x x 是否小于 2.4(估算的结果),如果 x < 2.4 x < 2.4 x<2.4,我们就直接将它分成一类 (A类),否则的话,我们再来看一下 y y y 是否小于 1.8,如果小于 1.8 的话,就会被分成另一类(B类),否则,就被划分为 C 类。
这就是决策树在面对数值特征的时候的处理流程,它每个节点都会选择一个维度和该维度上相应的一个阈值。
下面先总结一下关于决策树的一些特征。
非参数学习算法可以解决分类问题天然可以解决多分类问题(和 kNN 类似)也可以解决回归问题具有非常好的可解释性在了解了什么是决策树之后,剩下的问题就变成了怎么构建决策树?在这里关键的问题就是每一个节点都是首先找到一个维度和这个维度相应的一个阈值,然后以这个维度的阈值为依据判断继续进行划分。那么我们的核心问题就是我们每个节点要在哪个维度做划分?如果我们选择了某一个维度,那么我们在该维度上的哪个值做划分?这些都是我们构建决策树的关键问题。
那么下一篇博客将会介绍其中一个方法:计算信息熵。
具体代码见 80 什么是决策树.ipynb
