从决策树到随机森林

这里仅介绍分类决策树

决策树特征作为决策的判定标准,整个模型形如树形结构,因此,称之为决策树

对于分类决策树,他们可以认为是一组if-then规则的集合。决策树的每一个内部节点有特征组成,叶子节点代表了分类的结果。父节点和子节点之间是由有向边连接,表示了决策的结果。

在这里,有必要解释一下,为什么决策树的学习过程变成了三个步骤:特征选择、决策树生成和剪枝。而不是像LR或者SVM那样,具有显式的目标函数。首先,我们来看决策树:一个树形结构。如果要根据全局最优的策略,那么需要遍历数据集在所有的特征组合下生成的决策树,比较所有决策树的优略。这是一个N-P完全问题,求解这种问题一般只能求得次最优解,求得最优解时间成本太高。

下面,我们按照这三个步骤,来分析如何生成决策树。

特征选择:

从前面的分析可以知道,每一个内部节点,都代表了一个特征,有这些特征后,数据集离得到确定的分类结果更近一步。那么什么样的特征才会更好地让数据集的分类确定得更快,这是我们接下来需要解释的事情。

我们知道,初始的数据集 相较 已经分类完毕的数据集 更加混乱。而决策树的目标,是希望找到一组特征,让数据集分类结果确定,而且最大程度靠近正确的答案。决策树每使用一个特征,都更接近正确的分类,让数据集都变得更整齐一点。衡量数据的混乱程度,我们常用两个标准:一个是信息熵,另外一个是基尼指数。而根据信息熵和基尼指数,我们得到三个选择选择特征的办法。

给定一个训练集$D={(x_1,y_1),(x_2,y_2)....(x_n,y_n)}$,正确的分类是$\{C_1,C_2,....,C_n\}$

使用特征A得到的分类是$\{D_1,D_2,....,D_n\}$

(1)       信息增益

信息熵的基本定义这里就不详细说明了,需要了解的请出门左转维基百科。

定义: H(D)为给定的训练数据集的信息熵。H(D|A)是经过特征A分类后数据集的信息熵。根据定义,可以得到:

$H(D)=-$ $\sum_{i=1}^{n}$ $\frac{|C_k|}{|D|}log_2$ $\frac{|C_k|}{|D|}$

$H(D|A)=$ $\sum_{i=1}^{n}$ $\frac{|D_i|}{|D|}H(D_i)$.其中 $H(D_i)=-$ $\sum_{k=1}^{K}\frac{|D_{ik}|}{|D_i|}log_2\frac{|D_{ik|}}{|D_i|}$

因此,信息增益为$G(D,A)=H(D)-H(D|A)$

(2)       信息增益比

由于信息增益倾向于选择较多的特征,为了限制这个影响,使用信息增益比来解决这个问题:

$g_R(D,A)=$ $\frac{g(D,A)}{H_A(D)}$

其中,$H_A(D)=-$ $\sum_{i=1}^{n}$ $\frac{|D_i|}{|D|}log_2$ $\frac{|D_i|}{|D|}$

(3)       基尼指数

$Gini(D)=1-$ $\sum_{k=1}^{K}$ $(\frac{|C_k|}{|D|})^2$

假设用特征A将数据D分为D1和D2,那么分类后的基尼指数是:

 $Gini(D,A)=$ $\frac{|D_1|}{|D|}$ $Gini(D_1)+$ $\frac{|D_2|}{|D|}Gini(D_2)$

按照我们的理解,所有有助于确定数据集分类的特征,都会让数据集变得更加整齐,那么,该怎么选择特征,才能让决策树更加合理呢?

决策树生成:

建立一棵决策树,树的深度,决定了决策树的效率。而影响树的深度的,则是特征的有效性。如何衡量特征的有效与否?前面已经找到三个判别标准。决策树的解决这个问题的策略是:

优先使用信息增益最大、信息增益比最大、基尼指数最小的特征

因为满足上面这些特点的特征,能最大程度减少数据集中的不确定性。而决策树的生成,则是不断选取剩下的特征里面的最优特征。直到满足收敛条件。

决策树生成算法:                                                                                                                    ≦

ID3和C4.5

输入:训练集D,特征集A,阀值μ

输出:决策树T

(1)       如果D中的所有实例,都属于同一个类C_k,那么置T为单节点树,返回T

(2)       如果A=Ø,置T为单节点树,将D中实例数最大的类C_k作为该节点的类,返回T

(3)       按照上面的三个判断标准,计算信息增益(信息增益比),选择信息增益最大(信息增益比最大)的特征A_g。

(4)       若A_g<μ,置T为单节点树,将D中实例数最大的类C_k作为该节点的类,返回T

(5)       否则使用特征A分割数据集D,建立树,返回T

(6)       对节点i,以D_i为训练集合,以A-{A_g}为特征即,递归调用(1)~(5)

CART:

(1)       根据特征A,将数据集预分类为A=a和A!=a两类,计算基尼指数

(2)       选择基尼指数最小的特征作为分类特征,将数据集切分。切分的两个子节点包含两个被分开的数据集。

(3)       对两个子节点递归调用(1)(2),直到满足停止条件。

(4)       生成CART决策树。

剪枝:

由上面的办法生成的决策树,常常会出现过拟合的问题。所谓的过拟合,是指学习到的模型对已知的训练数据集预测效果比较好,但是,对于未知的训练数据集,预测很差。

因此,为了限制过拟合的现象,决策树使用了剪枝的策略。

决策树学习损失函数为:

$C_a(T)=$ $\sum_{t=1}^{|T|}$ $N_{t}H_{t}(T)+a|T|=C(T)+a|T|$

经验熵 描述的是所有叶子节点的经验熵之和,其公式如下:

$H_{t}(T)=-$ $\sum_{k}$ $\frac{N_{tk}}{N_t}H_{t}(T)$

表示模型对训练数据的预测误差,即模型的拟合程度,|T|描述了模型的复杂度,参数a>=0控制两者的影响。

一般的剪枝算法:

输入:树T和参数a

输出:修建后的子树Ta

(1)       计算每个节点的经验熵

(2)       递归地从树的叶子节点向上回缩。

设一组叶节点回缩到父节点之前和之后的整体树分别为$T_B$和$T_A$

若$C_a(T_A)$ $\leq{C_a(T_B)}$,则剪枝。

(3)       返回(2),直到无法剪枝。

CART剪枝:

输入:CART算法生成的决策树$T_0$

输出:最优决策树

(1)       令$k=0,T=T_0$

(2)       $a=+$ $\infty$

(3)       自下而上地对各内部节点t计算 以及:

$g(t)=$ $\frac{C(t)-C(T_t)}{|T|-1}$

$a=min(a,g(t))$

$T_t$表示以t为根节点的子树,$C(T_t)$是对训练数据的预测误差,$|T_t|$是$T_t$的叶子节点个数。

(4)       自上而下地访问内部节点t,如果有$g(t)=a$,进行剪枝,并对叶节点t以多数表决法决定其类,得到树T。

(5)       $k=k+1, \ a_k=a, \ T_k=T$

(6)       如果T非根节点单独构成的树,回到(4)

(7)       采用交叉验证的办法在子树序列中选取最优子树$T_a$

随机森林:

顾名思义,就是采用随机的办法生成一个森林。而森林是由一棵棵的树组成,因此,随机生成森林实际上是随机生成一棵棵决策树,让这些决策树组成森林。

随机森林可以认为是针对决策树容易过拟合的现象而提出来的解决方案,是组合算法的一种。其基本步骤如下:

输入:N的训练数据,M个特征

输出:随机森林。

(1)       从训练样本中有放回地抽出N个训练样本,作为决策树的输入。

(2)       从M个特征中随机选取k个属性,一般取$k=log_2M+1$向上取整或者$k=$ $\sqrt M$向上取整

(3)       重复(1)(2)m次得到m个决策树,组成森林。

(4)       让新的数据集通过随机森林(m个决策树)

对于分类问题:通过投票的方式决定分类结果;

对于回归问题:通过求均值的方式确定回归结果。

至于回归树,将会在后续的博客中总结。

参考文献:

(1)李航 《统计学习方法》

(2)维基百科

转载请注明:http://www.cnblogs.com/weibao/p/5548982.html

有任何问题,请联系[email protected]

时间: 2024-08-08 09:22:19

从决策树到随机森林的相关文章

R语言︱决策树族——随机森林算法

笔者寄语:有一篇<有监督学习选择深度学习还是随机森林或支持向量机?>(作者Bio:SebastianRaschka)中提到,在日常机器学习工作或学习中,当我们遇到有监督学习相关问题时,不妨考虑下先用简单的假设空间(简单模型集合),例如线性模型逻辑回归.若效果不好,也即并没达到你的预期或评判效果基准时,再进行下换其他更复杂模型来实验. ---------------------------------------------- 一.随机森林理论介绍 1.1 优缺点 优点. (1)不必担心过度拟合

机器学习与人工智障(5):决策树与随机森林

一.从LR到决策树 1.总体流程与核心问题 (1)决策树是基于树的结构进行决策: 每个"内部节点"对应于某个属性上的"测试" 每个分支对应于该测试的一种可能结果(即该属性上的每个取值) 每个叶节点对应于一个预测结果 (2)学习过程:通过对训练样本的分析来确定"划分属性"(即内部节点所对应的属性) (3)预测过程:将测试实例从根节点开始,沿着划分属性所构成的"判定测试序列"下行,直到叶节点 2.决策树的总体流程: (1):&qu

web安全之机器学习入门——3.2 决策树与随机森林算法

目录 简介 决策树简单用法 决策树检测P0P3爆破 决策树检测FTP爆破 随机森林检测FTP爆破 简介 决策树和随机森林算法是最常见的分类算法: 决策树,判断的逻辑很多时候和人的思维非常接近. 随机森林算法,利用多棵决策树对样本进行训练并预测的一种分类器,并且其输出的类别是由个别决策树输出的类别的众数决定. 决策树简单用法 使用sklearn自带的iris数据集 # -*- coding: utf-8 -*- from sklearn.datasets import load_iris from

决策树与随机森林算法

决策树 决策树模型是一种树形结构,基于特征对实例进行分类或回归的过程.即根据某个特征把数据分划分到若干个子区域(子树),再对子区域递归划分,直到满足某个条件则停止划分并作为叶子节点,不满足条件则继续递归划分. 一个简单的决策树分类模型:红色框出的是特征. 决策树模型学习过程通常包3个步骤:特征选择.决策树的生成.决策树的修剪. 1.特征选择 选择特征顺序的不同将会产生不同决策树,选择好的特征能使得各个子集下标签更纯净.度量特征对产生子集的好坏有若干方法,如误差率,信息增益.信息增益比和基尼指数等

决策树与随机森林

文章部分图片来源于龙心尘老师课件. 首先,在了解树模型之前,自然想到树模型和线性模型有什么区别呢?其中最重要的是,树形模型是一个一个特征进行处理,之前线性模型是所有特征给予权重相加得到一个新的值.而树形模型更加接近人的思维方式.树模型拟合出来的函数其实是分区间的阶梯函数. 其次,需要了解几个重要的基本概念:根节点(最重要的特征):父节点与子节点是一对,先有父节点,才会有子节点:叶节点(最终标签). 一.决策树 决策树生成的数学表达式: 决策树的生成必须要解决两个问题: (1)  如何分裂训练数据

四、决策树、随机森林、GBDT、XGBoost

(本节课各种数学式子比较多.....^_^) 决策树 Decision Tree? 介绍? 熵 Entropy? 信息增益 Information Gain? 常见算法? 过度拟合 Overfitting? 剪枝 Prune? 增益率 GainRatio? 更多的DT应?场景类别:? 连续函数,多分类,回归? 决策树的究极进化 Ensemble? Bagging? Random Forest? Boosting? GBDT? XGBoost 决策树 分治思想 根据不同的条件作出相应的决定 熵 区

人工智能_5_决策树_随机森林

# 决策树,随机森林 # 决策树结构:if-then # 信息熵: # 例:第一届世界杯32支球队 每个队伍冠军概率1/32 # 可得 log32(程序员认为的log一般都默认是以2为底) = -(1/32*log(1/32)+1/32*log(1/32).....) # 2018 第21届世界杯根据历史数据获胜概率不同 log32 > -(1/4*log(1/4)+1/4*log(1/4).....) # 几个log的和即为信息熵, 当概率变化时 log的和是小于log(n)的 # 信息熵与不

决策树和随机森林

决策树是一种非参数监督学习预测模型. 决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别. 1.举例: 举个校园相亲的例子,今天校园的小猫(女)和小狗(男)准备配对,小猫如何才能在众多的优质??的心仪的狗呢?于是呢?有一只特乖巧的小猫找到了你,你正在学习机器学习,刚好学习了决策树,准备给这只猫猫挑选优质狗,当然,你不仅仅是直接告诉猫哪些狗是合适你的?你更应该详细的给猫讲解决策树是如何根据它提出的标准选出的符合要求的狗呢?猫给出如下信息:年

R语言基于树的方法:决策树,随机森林,套袋Bagging,增强树

原文链接:http://tecdat.cn/?p=9859 概观 本文是有关  基于树的  回归和分类方法的.用于分割预测变量空间的分割规则可以汇总在树中,因此通常称为  决策树  方法. 树方法简单易懂,但对于解释却非常有用,但就预测准确性而言,它们通常无法与最佳监督学习方法竞争.因此,我们还介绍了装袋,随机森林和增强.这些示例中的每一个都涉及产生多个树,然后将其合并以产生单个共识预测.我们看到,合并大量的树可以大大提高预测准确性,但代价是损失解释能力. 决策树可以应用于回归和分类问题.我们将