一、背景

在上一篇文章中,我们讲解了线性回归和逻辑回归的相关数学推导和Python实现,本篇文章我们将继续下一个机器学习中一个非常重要的模型——决策树的学习。决策树之所以叫决策树,是和它的原理紧密相关的,看下面这个场景,是不是很熟悉。首先看天气情况,然后根据天气情况做下一步决定,如果天气好,再看游泳馆是否开放,如果天气不好,再视父母是否在家来做决定,最终会有三种选择,或者可以认为是一个三分类问题。这就是一个典型的决策树场景,树的深度是3,从根节点(天气)开始,根据每一步的条件,决策下一步的计划(非叶子节点/内部节点),最终每条路都会走到一个叶子节点(游泳、看电视、去外婆家)。例如,今天天气好,父母在家,我们就知道今天是要去外婆家。

机器学习笔记(四)决策树

上面我们已经引入了一个决策树的背景案例,不过这个决策树是已知的,我们只是根据这个决策树来决定(推理/预测)最终的行为,但是这个决策树是怎么来的呢?这和我们的机器学习又有什么关系呢?我们看下面一组数据,某化妆品店统计了十位顾客的属性信息以及是否会购买化妆品的数据,详细如下:

列名 性别 年龄 是否购买
1 青年
2 中年
3 中年
4 青年
5 青年
6 青年
7 中年
8 青年
9 青年
10 中年

从上面这个表格中可以看出什么规律呢?统计可以发现,从性别看,所有的女性都购买了产品,所有的男性都没有购买,从年龄看,青年里面3人购买,3人未购买,中年里面3人购买,1人未购买,如果用决策树的形式表达出来,可以有下面两种:

机器学习笔记(四)决策树

如果需要构建一个决策树模型,肯定会选择上图的(a),而不是(b),为什么呢?因为根据性别就可以直接得出结果了,没必要先判断年龄,再判断性别。换句话说,(a)树的深度更浅。这就是一个非常简单的构建决策树模型的过程,当然实际中的数据远比上面更复杂,比如会存在连续值数据,而接下来我们要详细介绍的决策树算法就是为了要解决在复杂数据场景下,如何构建一个更加合理的决策树模型的过程。一旦构造好了决策树,那么分类或者预测任务就很简单了,只需要走一遍决策树流程到叶子节点就ok了。

二、决策树模型

2.1 信息熵

在第一章中我们提到了采用性别作为第一个判决条件比年龄更好,因为采用性别一次就可以划分所有结果,那么有没有一个量化值来衡量这个好坏呢?这里就引出了一个概念——信息熵。在介绍信息熵之前,先看一个例子。假如有人告诉你明天太阳从东边升起,你的感觉是什么?这TM不是废话吗?因为明天太阳从东边升起的概率可以认为是1,或者可认为是一个必然事件,所以这句话没什么意义。如果有人告诉你下期双色球的中奖号码,这还是废话吗?当然不是,因为这句话很有用,换句话这句话的价值很大,因为猜中双色球的概率是百万分之一,告诉你一个百万分之一的概率事件,当然这句话的信息量就很大。在信息论中,随机离散事件出现的概率存在着不确定性。为了衡量这种信息的不确定性,信息学之父香农引入了信息熵的概念,并给出了计算信息熵的数学公式:

机器学习笔记(四)决策树

其中,n为可能的所有类别数(例如抛硬币正反两种),p(xi)表示类别xi发生的概率。一个事件的不确定性越大,则信息熵越大,反之亦然。

 

相关文章: