【随机森林】随机森林的 原理/ 样例实现/ 参数调优 分析及 Python代码实现

决策树
1.决策树与随机森林都属于机器学习中监督学习的范畴,主要用于分类问题。 
决策树算法有这几种:ID3、C4.5、CART,基于决策树的算法有bagging、随机森林、GBDT等。 
决策树是一种利用树形结构进行决策的算法,对于样本数据根据已知条件或叫特征进行分叉,最终建立一棵树,树的叶子结节标识最终决策。新来的数据便可以根据这棵树进行判断。随机森林是一种通过多棵决策树进行优化决策的算法。

2.案例: 
 
图 1 是一棵结构简单的决策树,用于预测贷款用户是否具有偿还贷款的能力。贷款用户主要具备三个属性:是否拥有房产,是否结婚,平均月收入。每一个内部结节都表示一个属性条件判断,叶子结节表示贷款用户是否具有偿还能力。 
这里说的属性,也就是算法中的特征,对应于数据表就是字段。 
这里说的可以偿还/不能偿还,就是一种分类问题。

3.决策树特征选取: 
从上图我们可以看到,第一个节点使用“拥有房产”作为条件,也就是特征。那么我们为什么第一个条件选择“拥有房产”呢,选择的条件和依据是什么呢?下面介绍基尼系数: 
基尼指数是另一种数据的不纯度的度量方法,其公式为: 
该公式可以用数学公式证明: 
x+y=1 
f=1-(x^2+y^2) 
f(x)=1-x^2-(1-x)^2=-2x^2+2x 
曲线为: 
 
根据上图可以看到,当x越靠近0或者1时,系数越小,代表数据纯度越高。有就是中间的某类数据占的比重比较大,也符合我们的认识。 
其中 c 表示数据集中类别的数量,Pi 表示类别 i 样本数量占所有样本的比例。 从该公式可以看出,当数据集中数据混合的程度越高,基尼指数也就越高。当数据集 D 只有一种数据类型,那么基尼指数的值为最低 0。 
如果选取的属性为 A,那么分裂后的数据集 D 的基尼指数的计算公式为: 
其中 k 表示样本 D 被分为 k 个部分,数据集 D 分裂成为 k 个 Dj 数据集。 
对于特征选取,需要选择最小的分裂后的基尼指数。也可以用基尼指数增益值作为决策树选择特征的依据。公式如下: 
在决策树选择特征时,应选择基尼指数增益值最大的特征,作为该结节分裂条件。 
另一个,和基尼系数类似,可采用信息熵,熵的概念物理上都学过,越无序,熵越大,不做多解释: 
假设在样本数据集 D 中,混有 c 种类别的数据。构建决策树时,根据给定的样本数据集选择某个特征值作为树的结节。在数据集中,可以计算出该数据中的信息熵: 

上图为分析信息增益的计算公式,可以看出和基尼系数大体类似。 
如果选取的属性为 A,那么分裂后的数据集 D 的基尼指数的计算公式为: 
其中 k 表示样本 D 被分为 k 个部分,数据集 D 分裂成为 k 个 Dj 数据集。 
对于特征选取,需要选择最小的分裂后的基尼指数。也可以用基尼指数增益值作为决策树选择特征的依据。公式如下: 
在决策树选择特征时,应选择基尼指数增益值最大的特征,作为该结节分裂条件。

4.剪枝: 
分为预剪枝和后剪枝。 
预剪枝提前结束决策树的省长,后剪枝效果更好,但是后剪枝会浪费在叔的生长过程中的计算。

5.集中决策树的区别: 
1) ID3 
是最早提出的一种决策树方法,使用上述信息增益的方式建立。 
缺点:只能处理离散型属性,并且对倾向于选择取值较多的属性; 
2) C4.5 
使用增益率对信息增益进行扩充,以解决偏向取值较多的属性的问题。另外它可以处理连续型属性。 
3) CART 
CART中用于选择变量的不纯性度量是Gini指数; 
如果目标变量是标称的,并且是具有两个以上的类别,则CART可能考虑将目标类别合并成两个超类别(双化); 
如果目标变量是连续的,则CART算法找出一组基于树的回归方程来预测目标变量。

随机森林
1.随机森林原理: 
随机森林由Leo Breiman(2001)提出的一种分类算法,它通过自助法(bootstrap)重采样技术,从原始训练样本集N中有放回地重复随机抽取n个样本生成新的训练样本集合训练决策树,然后按以上步骤生成m棵决策树组成随机森林,新数据的分类结果按分类树投票多少形成的分数而定。其实质是对决策树算法的一种改进,将多个决策树合并在一起,每棵树的建立依赖于独立抽取的样本。 
单棵树的分类能力可能很小,但在随机产生大量的决策树后,一个测试样本可以通过每一棵树的分类结果经统计后选择最可能的分类。 
随机森林大致过程如下: 
1)从样本集中有放回随机采样选出n个样本; 
2)从所有特征中随机选择k个特征,对选出的样本利用这些特征建立决策树(一般是CART,也可是别的或混合); 
3)重复以上两步m次,即生成m棵决策树,形成随机森林; 
4)对于新数据,经过每棵树决策,最后投票确认分到哪一类。 
2.随机森林特点: 
随机森林有很多优点: 
1) 每棵树都选择部分样本及部分特征,一定程度避免过拟合; 
2) 每棵树随机选择样本并随机选择特征,使得具有很好的抗噪能力,性能稳定; 
3) 能处理很高维度的数据,并且不用做特征选择; 
4) 适合并行计算; 
5) 实现比较简单; 
缺点: 
1) 参数较复杂; 
2) 模型训练和预测都比较慢。 
3.使用: 
随机森林算法在大部分数据处理软件中都有实现,使用时可以直接调用,只需指定所需参数。 
随机森林模型训练前要设置的参数较多,按PAI平台的实现有如下几个: 
o 算法类型:(可选)可供选择的算法类型有id3算法、cart算法、c4.5算法以及默认情况下的将上述三种算法均分的混合算法 
o 树的数目:森林中树的个数, 范围(0, 1000] 
o 随机属性个数:(可选)单颗树在生成时,每次选择最优特征,随机的特征个数。可供选择的类型有logN,N/3,sqrtN,N四种类型,其中N为属性总数 
o 树最大深度:(可选)单颗树的最大深度,范围[1, ∞),-1表示完全生长。 
o 叶子节点最少记录数:(可选)叶节点数据的最小个数。最小个数为2 
o 叶子节点最少记录百分比:(可选)叶节点数据个数占父节点的最小比例,范围[0,100],-1表示无限制。默认-1 
o 每棵树最大记录数:(可选)森林中单颗树输入的随机数据的个数。范围为(1000, 1000000] 
4.模型评估: 
算法模型建立后需要进行评估,以判断模型的优劣。一般使用训练集 (training set) 建立模型,使用测试集 (test set) 来评估模型。对于分类算法评估指标有分类准确度、召回率、虚警率和精确度等。而这些指标都是基于混淆矩阵 (confusion matrix) 进行计算的。 
混淆矩阵用来评价监督式学习模型的精确性,矩阵的每一列代表一个类的实例预测,而每一行表示一个实际的类的实例。以二分类问题为例,如下表所示: 
 
其中 
P (Positive Sample):正例的样本数量。 
N (

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值