集成学习——从决策树到XGBoost(1)决策树算法

现在最火的两种模型,就是基于树的模型和深度学习神经网络模型了,并且,这两种个模型在很多地方,都有异曲同工的相似之处。
XGB和LGB以及由其组成的stacking方法,是kaggle数据挖掘比赛中的大杀器,金牌选手的必选模型。
1.决策树
首先,我们需要介绍一下决策树。
决策树的结构如下图所示
集成学习——从决策树到XGBoost(1)决策树算法_第1张图片
图来自:https://blog.csdn.net/weixin_36586536/article/details/80468426
看起来是不是很像数据结构中的二叉树,其建立方式也和二叉树的递归建立方式相似,有一个递归边界来控制决策树的深度,在每次递归的过程中按照选定特征进行分类。
我们在这个系列中,会用到两种决策树,即处理离散值的ID3决策树与处理连续值得CART决策树,其不同点,就是特征的选择不同,特征选择,也是决策树的核心问题。

(1)ID3决策树
ID3算法利用信息增益进行特征的选择。先来描述一下信息增益,信息增益就是在划分数据集之前之后信息发生的变化,我们计算每个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。
信息增益的推导:
如果待分类的事务可能划分在多个分类之中,则符号的信息定义为:
在这里插入图片描述
其中在这里插入图片描述是选择该分类的概率。
而信息熵,就是所有类别所有可能值包含的信息期望值:
在这里插入图片描述
其中n是分类的数目。
熵表示系统的混乱程度,是一个物理概念,熵越高,则混合的数据也越多,系统的不确定性也越大。
信息增益可以用熵来推导出,即某个特征的信息增益等于当前总的熵减去根据某个特征划分后的熵的差值。
下面的公式就是计算当前样本集合D下特征a划分的信息增益。
在这里插入图片描述
信息增益越大,表示由特征a进行划分所获得的纯度提升越大。
故特征的选择为:
在这里插入图片描述
对上述推导过程的直观理解,可以参考这篇文章:
https://blog.csdn.net/it_beecoder/article/details/79554388

以及从
https://blog.csdn.net/Tomcater321/article/details/80699044
截取了一部分内容:
集成学习——从决策树到XGBoost(1)决策树算法_第2张图片

由上述过程,我们便实现了特征的选择。我们完成了对原始数据集的划分,并且会对数据集一步一步的不断划分,我们都知道,不停的划分最后会使分类的准确率达到百分百,但这样会造成极其严重的过拟合,那么,划分到什么时候结束呢。
我们使用递归的方法建立决策树,我会在文末附上代码,代码来自于《机器学习实战》。递归结束的条件也就是我们划分的停止条件,即:程序遍历完所有划分数据集的属性,或者每个分支下的所有实例都具有相同的分类,则得到一个叶子节点(终止块)。
对于第一个结束条件,如果遍历完所有属性,我们得到的类别标签依然不是唯一的呢,这时我们需要决定如何定义该叶子节点,在这种情况下,我们通常会采用多数表决的方法决定该叶子节点的分类。

(2)CART(Classification And Regression Trees分类回归树)
决策树的思想是不断将数据切分成小数据集,直到所有目标变量完全相同,或者数据不能切分为止。决策树是一种贪心算法,它并不关心是否达到全局的最优值,而是在给定的时间内做出最佳选择。

CART树采用二元切分法,即取值于大于某值和小于某值两个类别,所以可以对连续型特征进行操作。

CART树采用启发式算法,假如有n个特征,且每个特征有Si个(i属于(1,n))个取值,我们遍历所有特征,尝试该特征的所有取值,对空间进行划分,直到取到特征j的取值s,使得损失函数最小,这样就得到了一个划分点:
在这里插入图片描述
上式为CART树的损失函数,其中C1,C2表示类别,yi表示将样本分为Ci类的结果。

到这一步,所有节点切分结束,则分类任务完成。

执行回归任务,就是将所有类别中的样本的输出值取为该类样本输出值得平均值:
在这里插入图片描述

你可能感兴趣的:(集成学习——从决策树到XGBoost(1)决策树算法)