机器学习实战-决策树

1、背景

决策树模型

以上就是之前见过的树状模型,但这里它代表着决策树直观的表达形式。其特殊意义在于,没个叶节点,代表着要划分的类别;除叶节点以外的节点,是待分类项的各个属性。这里比较简单的是最终分类的类别是两个类别,没个属性的取值只有两个取值,所以以上便生成了一个简单的二叉树。在建立这个模型的基础上,假如我们有如下数据需要判断这个人是否死亡:

实例

根据以上二叉树带入各个的值,很容易便得出结论是:survived。所以能看出决策树分类算法用来分类优点在于:计算复杂度不高,数据结果易于理解,对中间值缺失不敏感,可处理不相关特征的数据。具体我们下文会阐述。所以决策树模型关键的部分来啦,就是如何通过训练数据,来很快的得出以上的树形结构呢?

2、基于信息增益的决策树分类算法实现-ID3

再回刚才那个例子,数据有三个属性。其中最终的点很明显,就是用哪个属性作为根,以及再选取哪个属性作为根的子节点。即需要建立数学模型,使得选取一个属性计算的值,优于选取其它。

所以这里便有人提出啦基于信息增益来实现的方法。

(1)信息与信息熵

我们先来假象这样一个场景:如果以上的例子中只用一个Age属性就能区别结果的化,是否还需要生成以上复杂的二叉树呢?肯定是没有必要的,只需要单个跟配俩叶子的简单二叉树就能解决这个问题。

再进一步,如果用Age可以区分90%的情况,再往下还得依靠一点点sibsp属性来判断一下,是不是只需要先用Age区分,再配上个sibsp的节点就可以实现分类呢?

当然,这两种情况并不是说其它属性并不能加在二叉树当中,加上并不是不好,只是说没有必要。(而且还有时候,节点加的太多甚至还会有过拟合的现象发生)

那以上只是个并不准确的猜想和描述,那需要怎么量化的解释这个事情呢?

有人就引入了信息论的一些概念。

所谓信息:信息就是被消除的被确定性。比如刚刚过去的世界杯,假如有场比赛,谁能赢呢?这就是一个不确定性;但如果告诉你这场比赛是巴西跟中国踢,然后第二天有个人跑来告诉你个“信息”:巴西赢比赛;你怎么想?你肯定会说,用你来告诉我,想都会想巴西会赢啊。所以这个人告诉你信息是价值很低的信息,或者说几乎无用的信息。

另一个场景就是谁能是冠军呢?如果让你来猜将会有32种可能,你很难猜出来。但如果有人告诉你决赛是法国和克罗迪亚。你根据这个信息便更容易的能猜出谁是冠军。所以这个消息很有价值,对于你消除不确定有很大帮助。

所以说了这么一大堆,我们能体会到消息是有大有小的,是可以被量化的。那基于此,便引入了香农的信息熵概念:

信息熵

某个分类Xi携带的信息量为:

信息量

那么信息熵就是所有类别信息量的期望,其中p(Xi)表示这个分类的概率。

(2)信息增益

现在通过信息量的公式,我们可得出假如给上述三个属性的样本,能计算出这个训练集本身的信息量。如果选取某个属性划分后,剩下的数据量信息便少,则这个属性用来划分更为合理。因为剩下的数据可认为没有什么价值,或价值没那么多啦。

信息增益

即用原来的信息熵减去重新划分后的信息熵得到的值,其中Dv表示按照某属性划分后如果存在V个可能取值后的数据量。

所以建立决策树便编程了先计算数据集的熵,再便利各个属性分别计算各自的熵,再计算信息增益,选取信息增益大的,作为节点,再循环这个属性的各个取值并递归生成后续的节点。

你可能感兴趣的:(机器学习实战-决策树)