内容简介:Learn R | Random Forest of Data Mining(上)
文:Jason
随机森林(Random Forest RF) 是一种新兴起的、高度灵活的机器学习算法。近年来,得益于其广泛适用、易于理解以及高准确率等方面的优势,它在各个领域的关注度与受欢迎程度都有着显著的提升。从市场营销到医疗保健保险,随机森林既可以用来做市场营销模拟的建模,统计客户的来源,保留和流失等情况,也可用来预测不同疾病的风险和病患者的易感性。
在使用随机森林算法进行R实现之前,我们有必要对该算法有着一个全面的认知与学习,本文将从以下几个方面详细介绍随机森林算法。
一、随机森林发展史
在20世纪80年代。Leo Breiman等人发明了分类树的算法,即通过反复二分数据进行分类或回归,使实际应用所需的计算量大大降低。在2001年,Breiman把分类树组合成随机森林,即在变量(列)的使用和数据(行)的使用上进行随机化,生成很多分类树,再汇总分类树的结果。
除此之外,Amit,Gemen和Ho Tim Kam各自独立地介绍了特征随即选择的思想,并且运用了Breiman的“套袋”思想构建了控制方差的决策树集合。在此之后,Deitterich在模型中引入了随即节点优化的思想,对随机森里进行了进一步完善,这使得随机森林在运算量没有显著提高的前提下提高了预测精度。
随机森林对多元共线性不敏感,并且模型结果对缺失数据和非平衡的数据比较稳健,可以很好地预测多达几千个解释变量的作用,因此被誉为当前最好的算法之一。
二、什么是随机森林?
在上一篇文章中,我们已经学习了决策树 (Decision Tree) 算法的基本理论,这使我们对随机森林的理解更为容易。顾名思义,随机森林是用随机的方式建立一个森林,其中,森林的基本单元是一棵棵决策树,并且每一棵决策树之间不存在关联,随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的本质属于机器学习的一大分支——集成学习 (Ensemble Learning) 方法。
集成学习通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成单预测,因此优于任何一个单分类的做出预测。
坦白来讲,在森林中,每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出。
因此,在学习随机森林之前,我们需要对决策树及其基本原理有着详细的了解。在上文中,出于实际应用的需要,我们仅学习了基于基尼指数 (Gini index) 构建的决策树 (CART) 。实际上,还包括基于信息、熵以及信息增益构建的决策树。
三、信息、熵与信息增益
和CART相同的是,基于信息、熵与信息增益所构建的决策树,其原理依旧是 选择最优的划分属性,使划分前的数据经过划分后变得更加有序 。在这里我们使用信息论的相关理论来界定信息的有序无序。
信息论是量化处理信息的一门分支科学,在划分数据集前后,信息发生的变化被定义为 信息增益( information gain) ,知道如何计算信息增益,我们就可以计算每个特征值划分数据集所获得的信息增益,获得信息增益最高的特征就是最好的选择,而信息增益的具体值需要使用 熵( entropy) 来进行计算。因此,在学习决策树算法之前,我们需要了解这几个基本概念。
1. 信息(information)
信息是熵与信息增益的基本概念。信息论之父克劳德·香农认为:信息是用来消除随机不确定性的东西。直观上这句话并不太好理解,因此我们从数学角度来解释这一概念。
2. 熵(entropy)
熵只依赖X的分布,和X的取值没有关系,当熵越大的时候,概率P(X=xi)的不确定性越大,反之越小,在机器学期中分类中说,熵越大即这个类别的不确定性更大,反之越小,当随机变量的取值为两个时,熵随概率的变化曲线如下图:
从图中可以看到,当p=0或p=1时,H(p)=0,随机变量完全没有不确定性,当p=0.5时,H(p)=1,此时随机变量的不确定性最大。
3. 条件熵
条件熵是用来解释信息增益而引入的概念,定义为:随机变量X在给定条件下随机变量Y的条件熵。
这里可能会有疑惑,这个公式是对条件概率熵求期望,但是上边说是选定某个特征的熵,没错,是选定某个特征的熵,因为一个特征可以将待分类的事物集合分为多类,即一个特征对应着多个类别,因此在此的多个分类即为X的取值。
4. 信息增益(information gain)
一般而言,在使用决策树进行划分的数据集中,会存在多个属性(a,b,…,n),我们需要把各个属性信息增益值计算出来并进行比较(Gain(X,b),Gain(X,c)…),某一属性的信息增益值越大,则意味着使用该属性来划分的话,所获得的“纯度提升”越大,因此我们也会使用该属性为首要的划分属性。
5. 信息增益比(information gain ratio)
需要注意的是,信息增益比对可取值数目较少的属性有所偏好,因此它所对应的决策树算法(C4.5)并不直接选择信息增益比最大的作为划分属性,而是先从候选划分属性中找出信息增益高出平均水平的属性,再从中选择信息增益比最高的。
6. 小结
至此,关于随机森林的基本单元—— 决策树 的基本知识全部学习完毕。实际上,不同的决策树学习算法只是它们选择特征的依据不同,而决策树的生成过程都是一样的(这一节的知识也是对上篇决策树学习的补充与完善)。
- ID3: 在决策树各个节点上应用信息增益选择特征,每一次都选择使得信息增益最大的特征进行分裂,递归地构建决策树。
- C4.5: 在ID3算法中,选择取值比较多的特征往往会具有较大的信息增益,所以ID3偏向于选择取值较多的特征。C4.5算法在此基础上根据信息增益比来选择特征,对这一问题进行了校正。
- CART: (此处特指分类回归树)采用基尼指数( Gini index )最小化原则,进行特征选择,递归地生成二叉树。具体内容见: Learn R | Decision Tree of Data Mining
四、随机森林的生成
现在我们已经掌握了生成树的方法,那么从一棵树到一片森林,其生成规则如下:
- 如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本 (bootstrap抽样方法) ,作为该树的训练集;每棵树的训练集都是不同的,但里面包含重复的训练样本。
- 如果每个样本的特征维度为M,指定一个常数m,且m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;
- 每棵树都尽最大程度的生长,并且没有剪枝过程。
在森林中,每棵树都是独立的,99.9%不相关的树做出的预测结果涵盖了所有的情况,这些预测结果将会彼此抵消。少数优秀的树的预测结果将会超脱于芸芸“噪音”,做出一个好的预测。将若干个弱分类器的分类结果进行投票选择,从而组成一个强分类器,这就是随机森林bagging的思想。
不过我们需要认识到:bagging不用单棵决策树来做预测,具体哪个变量起到重要作用变得未知,所以bagging改进了预测准确率但损失了解释性。
在生成随机森林时,为什么要有放回的抽样呢?这里引用博客 [Machine Learning & Algorithm] 随机森林(Random Forest) 的解释:
如果不是有放回的抽样,那么每棵树的训练样本都是不同的,都是没有交集的,这样每棵树都是”有偏的”,都是绝对”片面的”(当然这样说可能不对),也就是说每棵树训练出来都是有很大的差异的;而随机森林最后分类取决于多棵树(弱分类器)的投票表决,这种表决应该是”求同”,因此使用完全不同的训练集来训练每棵树这样对最终分类结果是没有帮助的,这样无异于是”盲人摸象”。
这样,我们对随机森林中的“随机”进行了详细的解释,它包含两个方面:随机抽取样本,随机抽取特征。这两个随机性的引入对随机森林的分类性能至关重要。由于它们的引入,使得随机森林不容易陷入过度拟合,并且具有很好得抗噪能力(比如:对缺省值不敏感)。
End.
以上所述就是小编给大家介绍的《Learn R | Random Forest of Data Mining(上)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python Algorithms
Magnus Lie Hetland / Apress / 2010-11-24 / USD 49.99
Python Algorithms explains the Python approach to algorithm analysis and design. Written by Magnus Lie Hetland, author of Beginning Python, this book is sharply focused on classical algorithms, but it......一起来看看 《Python Algorithms》 这本书的介绍吧!