决策树&随机森林&GBDT

决策树算法

这篇文章: https://zhuanlan.zhihu.com/p/26703300  对决策树算法说的非常深入浅出

决策树模型核心是下面几个部分:

(1) 结点和有向边组成

(2) 结点有内部结点和叶结点2种类型

(3) 内部结点表示一个特征,叶节点表示一个类

决策树的关键步骤是分裂属性:

所谓分裂属性就是在某个节点处按照某一特征属性的不同划分构造不同的分支,其目标是让各个分裂子集尽可能地“纯”。尽可能“纯”就是尽量让一个分裂子集中待分类项属于同一类别。对应不同的节点划分方法,有不同的算法,分别是:ID3,C4.5算法以及CART算法:

ID3算法: 由于信息增益准确是对可取值数目较多的属性有所偏好,比如如果把编号放进去,则编号的划分纯度非常高,但不具有泛化能力。

决策树学习的关键其实就是选择最优划分属性,希望划分后,分支结点的“纯度”越来越高。那么“纯度”的度量方法不同,也就导致了学习算法的不同。

我们既然希望划分之后结点的“纯度”越来越高,那么如何度量纯度呢?

“信息熵”是度量样本集合不确定度(纯度)的最常用的指标。

在我们的ID3算法中,我们采取信息增益这个量来作为纯度的度量。我们选取使得信息增益最大的特征进行分裂!那么信息增益又是什么概念呢?

https://zhuanlan.zhihu.com/p/26760551 这篇文章对ID3算和C4.5算法讲的很好。

 

https://zhuanlan.zhihu.com/p/21359565 这篇文章对随机森林讲的不错。

那随机森林具体如何构建呢?有两个方面:数据的随机性选取,以及待选特征的随机选取。

1.  数据的随机选取

首先,从原始的数据集中采取有放回的抽样,构造子数据集,子数据集的数据量是和原始数据集相同的。不同子数据集的元素可以重复,同一个子数据集中的元素也可以重复。第二,利用子数据集来构建子决策树,将这个数据放到每个子决策树中,每个子决策树输出一个结果。最后,如果有了新的数据需要通过随机森林得到分类结果,就可以通过对子决策树的判断结果的投票,得到随机森林的输出结果了。如下图,假设随机森林中有3棵子决策树,2棵子树的分类结果是A类,1棵子树的分类结果是B类,那么随机森林的分类结果就是A类。

 

2. 待选特征的随机选取:

与数据集的随机选取类似,随机森林中的子树的每一个分裂过程并未用到所有的待选特征,而是从所有的待选特征中随机选取一定的特征,之后再在随机选取的特征中选取最优的特征。这样能够使得随机森林中的决策树都能够彼此不同,提升系统的多样性,从而提升分类性能。

 

GBDT:梯度提升决策树,主要用来做回归,调整后也可以用来搞分类 http://www.jianshu.com/p/005a4e6ac775

http://www.jianshu.com/u/103933f0bbf0 这篇文章对gbdt的代码进行了优化

GBDT的思想使其具有天然优势可以发现多种有区分性的特征以及特征组合。业界中,Facebook使用其来自动发现有效的特征、特征组合,来作为LR模型中的特征,以提高 CTR预估(Click-Through Rate Prediction)的准确性(详见参考文献5、6);GBDT在淘宝的搜索及预测业务上也发挥了重要作用(详见参考文献7)。
 
posted on 2017-10-29 22:42  raul313  阅读(414)  评论(0编辑  收藏  举报