算法学习笔记:决策树与随机森林简介

决策树简介

决策树是一个经典的机器学习算法,顾名思义,先构造树形结构,再利用树形结构决策,既可用于分类,又可用于回归。基本结构如下:
图片:算法学习笔记:决策树与随机森林简介_第1张图片
举一个例子,预测一家人谁下午最有可能打游戏。每个家庭成员都有一些特征,例如年龄,性别等。假设根节点为年龄,则根据年龄的阈值,所有家庭成员分成两类,接来下再根据第一个非叶子节点的特征依次决策,直到所有家庭成员分到叶子节点。
训练阶段:根据训练数据集,构造决策树。
分类阶段:根据构造的决策树得到分类的结果。

熵原理

首先定义一下熵,在这里我们可以叫做不纯度。假如我们有3个类别,list1= [1,3,3,2,1,2] ,list2 = [1,1,1,1,1,2],那么list2的样本相对list1里面有绝大多数的样本都属于同一个类别,那么他的不纯度就比较低,熵值也比较低。
下面给出两个计算不纯度的公式:
H(X) = 在这里插入图片描述

在这里插入图片描述
信息论中,事件发生的概率越小,熵越大。在这里同样适用,概率越大,不纯度越低。

节点特征的确定

对于二分类问题,根据一些特征决定我们会不会出去踢球。特征包括Outlook,temperature,Humidity和windy。节点特征的确定最重要的就是根节点的确定。首先计算初始样本的熵值,然后将所有特征依次当作根节点,计算第二层树的熵值。第二层熵值的计算方法如下:
Outlook中包括sunny,rainy,cloudy三个特征。以Outlook当作根节点后,所有的样本被分到这三个非叶子节点中,分别计算每个非叶子节点的熵值,并求出它们的加权和,权值为每个非叶子节点中占所有样本的比例。这样就得到了以Outlook为根节点的第二层树的熵值。计算与初始熵的差值(信息增益),保存下来,再让下一个特征当作根节点计算它的信息增益,最终显而易见,我们应该选择信息增益最大的特征作为根节点,使得熵值能够更快速的下降,使得下一层的样本纯度更高,得到一棵更矮的树。
算法学习笔记:决策树与随机森林简介_第2张图片
非叶子节点的确定,就是根节点确定的递归,秉持熵下降最快的原理。
信息增益比

信息增益率

上面以信息增益确定节点特征的方法叫做ID3,比较粗糙有时候会出现严重问题。例如,有15个样本,给每一个样本取一个id(1-15),若将ID 作为根节点进行分支,那么信息增益就是最大的,但是这样做对分类又有什么帮助呢?
因此,以信息增益率确定节点特征的方法C4.5应运而生。算出信息增益之后,要除以分支后的熵,用它们的比值当作依据,就会避免这个问题。

评价函数:
在这里插入图片描述
求和次数是分类完成后的叶子节点数,Nt是当前叶子的样本数,H(t)是当前叶子的信息熵。类似于损失函数,值越小越好。定性的考虑,叶子结点数越小,评价函数值越小,分类效果越好。

剪枝

预剪枝

在构建决策树的过程中提前停止,边构建边剪枝。例如,我设置最大深度为3,那么depth= 4及之后的分支就不需要了。也可以设置,每一个节点的样本数小于一个数值,就不再分支…做这个的目的就是防止过拟合!

后剪枝

在这里插入图片描述
是指构建完树之后,以上述公式为依据,判断有些分支需不需要。C(T)就是之前介绍的评价函数。|Tleaf|就是叶子的数量,α为参数。假如有一个非叶子节点分支成了3个叶子结点,计算分支后的Cα,与不分支的Cα的值进行比较,判断是否有必要分支,没有必要就剪枝。Cα同样是越小越好。

随机森林

关于随机森林,森林就是很多很多树,在这里就是很多决策树。随机有两重随机性,下面会简要介绍。
随机森林是Bootstrapping(有放回抽样)的。例如,我用过一次2号样本,那么之后我还是可以用2号样本。
关于两重随机性,第一重是样本的随机。
我们构造很多棵树,如果每次都是用全部的样本,而样本在所难免会有一些错误的数据,那么每一棵树都包括错误样本,这就会影响他的正确性。我们可以指定一个值A,每一棵树随机选取样本中的A个样本构建决策树。
第二重随机是特征的随机,思想和第一重一样,随机选取所有特征中的一部分进行构建。
Bagging:建立很多的分类器,输出结果由这些分类器共同决定。

以上是关于决策树和随机森林的简要介绍,若有错误,请各位大佬批评指正。

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