12-分类算法-决策树、随机森林

2024-05-16 11:27

1. 12-分类算法-决策树、随机森林

  决策树 
   生活中的决策树模型:
                                           显然:判断依据的重要性从前往后越来越小
    信息的度量和作用 
   在不知道任何信息的情况下猜测32支球队中的冠军:如果用二分法,需要猜5次,即需要的代价为5bit,这个5bit我们称之为信息熵(H)   5 = -(1/32log(1/32) + 1/32log(1/32) + ... + 1/32log(1/32))
   公式:概率log概率  之和
                                           如果我们知道了一些球队的信息,需要的代价会小于5bit   5 > -(1/4log(1/32) + 1/8log(1/32) + ... + 1/24log(1/32))
   信息熵越大(比如,当每个球队的夺冠几率相等),不确定性越大
   结合决策数,之所以我们先对某些条件进行判断,是因为能够减少我们更多的不确定性
    决策树的划分依据——信息增益 
   信息增益:当得知一个条件之后,减少的信息熵的大小
   
                                                                                   
    决策树的api    
                                           
   在泰坦尼克号和titanic2数据帧描述泰坦尼克号上的个别乘客的生存状态。在泰坦尼克号的数据帧不包含从剧组信息,但它确实包含了乘客的一半的实际年龄。关于泰坦尼克号旅客的数据的主要来源是百科全书Titanica。这里使用的数据集是由各种研究人员开始的。其中包括许多研究人员创建的旅客名单,由Michael A. Findlay编辑。   我们提取的数据集中的特征是票的类别,存活,乘坐班,年龄,登陆,home.dest,房间,票,船和性别。乘坐班是指乘客班(1,2,3),是社会经济阶层的代表。   其中age数据存在缺失。
   决策树部分图例:
                                            决策树的优缺点以及改进 
   优点:
   缺点:
   改进:
    集成学习方法 
   集成学习通过建立几个模型组合的来解决单一预测问题。它的工作原理是 生成多个分类器/模型 ,各自独立地学习和作出预测。这些预测最后结合成单预测,因此优于任何一个单分类的做出预测。
   随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。
   随机森林建立多个决策树的过程:
   ps:为什么要随机抽样?避免每颗树的训练集的一样,那么最终训练出的上面的分类结果也是完全一样的
                                           随机森林案例:
   随机森林的优点:
   随机森林几乎没有缺点

12-分类算法-决策树、随机森林

2. 决策树、随机森林

在了解树模型之前,自然想到树模型和线性模型,他们有什么区别呢?
  
 决策树与逻辑回归的分类区别也在于此。
  
 树形模型更加接近人的思维方式,可以 产生可视化的分类规则,产生的模型具有可解释性 。树模型拟合出来的函数其实是 分区间的阶梯函数 。
  
 决策树(decision tree)是一种基本的分类与回归方法,此处主要讨论分类的决策树。决策树是一种十分常用的分类方法,属于有监督学习(Supervised Learning)。所谓有监督学习,就是给出一堆样本,每个样本都有一组属性和一个分类结果,也就是分类结果已知,那么通过学习这些样本得到一个决策树,这个决策树能够对新的数据给出正确的分类。
                                          
 决策树是一种树形结构,它主要有三种不同的节点:
  
 决策树算法主要包括三个部分: 特征选择、树的生成、树的剪枝。 
  
 比较常用的决策树算法有ID3,C4.5和CART(Classification And Regression Tree),CART的分类效果一般优于其他决策树。
  
 样本数量,特征数量上面,一开始需要注意的:
  
 
  
                                                                                  
 当熵中的概率由数据估计(特别是最大似然估计)得到时,所对应的熵称为 经验熵 (empirical entropy)。
  
 什么叫由数据估计?比如有10个数据,一共有两个类别,A类和B类。其中有7个数据属于A类,则该A类的概率即为十分之七。其中有3个数据属于B类,则该B类的概率即为十分之三。浅显的解释就是,这概率是我们根据数据数出来的。
  
 训练数据集D,则训练数据集D的经验熵为H(D),|D|表示其样本容量,及样本个数。设有K个类Ck,k = 1,2,3,···,K,|Ck|为属于类Ck的样本个数,这经验熵公式可以写为:
                                          
 信息增益表示得知特征X的信息而使得类Y的信息不确定性减少的程度。
  
 条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性,随机变量X给定的条件下随机变量Y的条件熵(conditional entropy) H(Y|X),定义X给定条件下Y的条件概率分布的熵对X的数学期望:
                                          
 当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的分别为经验熵和经验条件熵,此时如果有0概率,令0log0=0。
  
  信息增益 
                                          
 一般地, 熵H(D)与条件熵H(D|A)之差成为互信息(mutual information) 。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
  
  信息增益比 
                                          
  Gini 指数 
                                          
 
  
  
 举例计算Gini指数(不纯度)
                                          
 
  
                                          
 这个分类结果明显并不是很好,因为它没有将见面与不见面完全的分开,在算法中,当然不能凭我们的“感觉”去评价分类结果的好坏。我们需要用一个数去表示。(具体数值代入上面的基尼指数计算公式)
  
  信息增益 vs 信息增益比 
  
  Gini 指数 vs 熵 
  
 ID3算法的核心是在决策树各个结点上对应信息增益准则选择特征,递归地构建决策树。
  
 具体方法是:
  
 1)从根结点(root node)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征。
  
 2)由该特征的不同取值建立子节点,再对子结点递归地调用以上方法,构建决策树;直到 所有特征的信息增益均很小或没有特征可以选择 为止;
  
 3)最后得到一个决策树。
  
 ID3相当于用 极大似然法进行概率模型的选择 。
  
 与ID3算法相似,但是做了改进,将信息增益比作为选择特征的标准。
  
 CART 的全称是分类与回归树。从这个名字中就应该知道,CART 既可以用于分类问题,也可以用于回归问题。
  
 回归树中,使用平方误差最小化准则来选择特征并进行划分。每一个叶子节点给出的预测值,是划分到该叶子节点的所有样本目标值的均值,这样只是在给定划分的情况下最小化了平方误差。
  
 要确定最优化分,还需要遍历所有属性,以及其所有的取值来分别尝试划分并计算在此种划分情况下的最小平方误差,选取最小的作为此次划分的依据。由于回归树生成使用平方误差最小化准则,所以又叫做最小二乘回归树。
  
 ID3 
  
 熵表示的是数据中包含的信息量大小。熵越小,数据的纯度越高,也就是说数据越趋于一致,这是我们希望的划分之后每个子节点的样子。
  
 信息增益 = 划分前熵 - 划分后熵。信息增益越大,则意味着使用属性 a 来进行划分所获得的 “纯度提升” 越大 **。也就是说,用属性 a 来划分训练集,得到的结果中纯度比较高。
  
  ID3 仅仅适用于二分类问题。ID3 仅仅能够处理离散属性。 
  
  C4.5 克服了 ID3 仅仅能够处理离散属性的问题,以及信息增益偏向选择取值较多特征的问题,使用信息增益比来选择特征。 信息增益比 = 信息增益 / 划分前熵 选择信息增益比最大的作为最优特征。
  
 C4.5 处理连续特征是先将特征取值排序,以连续两个值中间值作为划分标准。尝试每一种划分,并计算修正后的信息增益,选择信息增益最大的分裂点作为该属性的分裂点。
  
 CART 与 ID3,C4.5 不同之处在于  CART 生成的树必须是二叉树 。也就是说,无论是回归还是分类问题,无论特征是离散的还是连续的,无论属性取值有多个还是两个,内部节点只能根据属性值进行二分。
  
 决策树生成算法递归的产生决策树,直到不能继续下去为止,这样产生的树往往对训练数据的分类很准确,但对未知测试数据的分类缺没有那么精确,即会出现过拟合现象。过拟合产生的原因在于在学习时过多的考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树,解决方法是考虑决策树的复杂度,对已经生成的树进行简化。
  
 剪枝(pruning):从已经生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶子节点,从而简化分类树模型。
  
 实现方式:极小化决策树整体的损失函数或代价函数来实现
  
 决策树学习的损失函数定义为:
  
 https://www.cnblogs.com/ooon/p/5647309.html
  
 鉴于决策树容易过拟合的缺点,随机森林采用多个决策树的投票机制来改善决策树,我们假设随机森林使用了m棵决策树,那么就需要产生m个一定数量的样本集来训练每一棵树,如果用全样本去训练m棵决策树显然是不可取的,全样本训练忽视了局部样本的规律,对于模型的泛化能力是有害的。
  
 产生n个样本的方法采用Bootstraping法,这是一种有放回的抽样方法,产生n个样本。
  
 而最终结果采用Bagging的策略来获得,即多数投票机制。
  
 随机森林的生成方法:
  
 1.从样本集中通过重采样的方式产生n个样本
  
 2.假设样本特征数目为a,对n个样本选择a中的k个特征,用建立决策树的方式获得最佳分割点
  
 3.重复m次,产生m棵决策树
  
 4.多数投票机制来进行预测
  
 (需要注意的一点是,这里m是指循环的次数,n是指样本的数目,n个样本构成训练的样本集,而m次循环中又会产生m个这样的样本集)
  
 随机森林是一个比较优秀的模型,在我的项目的使用效果上来看,它对于多维特征的数据集分类有很高的效率,还可以做特征重要性的选择。运行效率和准确率较高,实现起来也比较简单。 但是在数据噪音比较大的情况下会过拟合,过拟合的缺点对于随机森林来说还是较为致命的。 
  
 机器学习实战(三)——决策树 https://blog.csdn.net/jiaoyangwm/article/details/79525237

3. 决策树与随机森林

 决策树(decision tree)是一种基本的分类与回归方法,本文主要讨论用于分类的决策树。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布,其主要优点是模型具有可读性,分类速度快。决策树学习通常包括三个步骤:特征选择,决策树的生成和决策树的修剪。而随机森林则是由多个决策树所构成的一种分类器,更准确的说,随机森林是由多个弱分类器组合形成的强分类器。
   本文将先对决策树特征选择的算法ID3, C4.5和CART进行计算,然后介绍决策树的剪枝策略,最后介绍随机森林。
   在 信息论 中, 条件熵 描述了在已知第二个随机变量X的前提下,随机变量Y的信息熵还剩多少。基于X条件的Y的信息熵,用H(Y|X)表示。
   如果H(Y|X=x)为变数Y在变数X取特定值x条件下的熵,那么H(Y|X)就是H(Y|X=x)在X取遍所有可能的x后取平均的结果。
                                           首先需要知道的是熵的公式:
                                           
   条件熵的推导公式如下:
                                                                                   
   决策树分类从根节点开始,对实例的某一特征进行测试,根据测试结果将实例分配到其子节点。每一个子节点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶节点,最后将实例分配到叶节点的类中。
   决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行划分。如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个特征是没有分类能力的。通常特征选择的准则是信息增益或信息增益比,特征选择的常用算法有ID3,C4.5,CART。
    信息增益表示得知特征A的信息而使得数据X的信息的不确定性的程度。    信息增益定义:特征A对训练数据集D的信息增益g(D, A)定义为集合D的经验熵H(D)与给定特征A的条件下D的经验条件熵H(D|A)之差,即:
                                           
   根据信息增益选择特征的方法是:对于给定数据集D,计算其每个特征的信息增益,并比较他们的大小,选择信息增益最大的特征。使用信息增益选择特征的算法称为C3算法。
   
   
                                           
                                                                                   信息增益值的大小是相对于训练数据集而言的,并没有绝对意义。在分类为题困难时,也就是说在训练数据集的经验熵大的时候,信息增益值会偏大。反之,信息增益值会偏小。因此,使用信息增益比可以对这一问题进行校正,这是另一种特征选择算法,也即C4.5算法。
    信息增益比定义 :特征A对训练数据集D的信息增益比g R (D, A)定义为其信息增益g(D, A)与训练集D的经验熵之比:
                                           
   基尼指数是CART分类树用来选择最优特征的算法,同时决定了该特征的最优二值切分点。
   定义:假设有K个类,样本点属于第k类的概率为p k ,则概率分布的基尼指数定义:
                                           
   对于给定的样本集合D,其基尼指数为:
                                           
   一个特征的信息增益/基尼系数越大,表明特征对样本的熵减少的能力更强,这个特征使得数据由不确定性变成确定性的能力越强。
   决策树生成算法产生的决策树对于训练数据的分类往往很准确,但对于未知数据的分类却没有这么准确,即容易出现过拟合情况。解决的办法便是考虑树的复杂度,对已生成的树进行剪枝简化。
   决策树的剪枝往往通过极小化决策树整体的损失函数来实现。   设树T的叶节点个数为|T|,t是树T的叶节点,该叶节点有N t 个样本点,其中k类的样本点有N tk 个,k=1,2,3...K, H t (T)为叶节点t上的经验熵, α>=0为参数,则决策树学习的损失函数可以定义为:
                                                                                                                                                                   
   损失函数中C(T)表示模型对训练数据的预测误差,也即拟合程度。|T|表示模型复杂度,即节点越多模型越复杂,使用参数α来控制两者之间的影响。α越大模型越简单,对数据拟合差;α越小模型越复杂,对数据拟合性好;α=0时则不考虑模型复杂度。
   因此,剪枝就是在确定了α时,选择损失函数最小的树。
                                                                                                                                                                                                           参考:   《统计学习方法》李航   机器学习.  邹博

决策树与随机森林

4. 决策树与随机森林——原理篇(二)

 第一篇我们主要关注了根结点及内部结点的选择   第二篇主要关注如何处理“过拟合”现象    参考 
    个性化 与 泛化 是一个相互矛盾概念,就像个体化诊疗与指南的矛盾一样。   决策树对训练数据可以得到很低的错误率,但是运用到测试数据上却得到非常高的错误率,这就是“过拟合现象”。   具体解释如下:对于决策树,我们希望每个叶子节点分的都是正确的答案,所以在不加限制的情况下,决策树倾向于把每个叶子节点单纯化,那如何最单纯呢?极端情况下,就是每个叶子节点只有一个样本,那这样,这个模型在建模集的准确率就非常高了。但是,这又带来了一个问题——过拟合,这会导致该模型在建模集效果显著,但是验证集表现不佳。   这可能有以下几个原因:   1、训练集里面有噪音数据,干扰了正常数据的分支   2、训练集不具有特征性   3、特征太多
   使用信息增益来种树时,为了得到最优的决策树,算法会不惜带价倾向于将熵值降为最小(可能的话甚至为0),这颗树会显得非常的冗杂。
   通过限制复杂度参数(complexity parameter),抓主要矛盾,来防止模型的过拟合。具体的计算过程可以参考,这里我直接引用
                                                                                                                           剪枝(pruning)则是决策树算法对付过拟合的主要手段,剪枝的策略有两种如下:
   定义:预剪枝就是在构造决策树的过程中,先对每个结点在划分前进行估计,如果当前结点的划分不能带来决策树模型泛化性能的提升,则不对当前结点进行划分并且将当前结点标记为叶结点。
   相比于预剪枝,后剪枝往往应用更加广泛,

5. 随机森林算法梳理

 全称Bootstrap Aggregation的集成算法。每个基学习器都会对训练集进行 有放回抽样得到子训练集 ,比较著名的采样法为 0.632 自助法。每个基学习器 基于不同子训练集进行训练,并综合所有基学习器的预测值得到最终的预测结果 。 Bagging 常用的综合方法是投票法,票数最多的类别为预测类别 。
                                           Boosting 训练过程为阶梯状, 基模型的训练是有顺序的,每个基模型都会在前一个基模型学习的基础上进行学习,最终综合所有基模型的预测值产生最终的预测结果,用的比较多的综合方式为加权法 。   
                                           
   Stacking 是 先用全部数据训练好基模型,然后每个基模型都对每个训练样本进行的预测,其预测值将作为训练样本的特征值,最终会得到新的训练样本,然后基于新的训练样本进行训练得到模型,然后得到最终预测结果。    
                                           
   那么,为什么集成学习会好于单个学习器呢?原因可能有三:
   训练样本可能无法选择出最好的单个学习器,由于没法选择出最好的学习器,所以干脆结合起来一起用;   假设能找到最好的学习器,但由于算法运算的限制无法找到最优解,只能找到次优解,采用集成学习可以弥补算法的不足;   可能算法无法得到最优解,而集成学习能够得到近似解。比如说最优解是一条对角线,而单个决策树得到的结果只能是平行于坐标轴的,但是集成学习可以去拟合这条对角线。
   不是所有集成学习框架中的基模型都是弱模型。Bagging 和 Stacking 中的基模型为强模型(偏差低,方差高),而Boosting 中的基模型为弱模型(偏差高,方差低)。
                                           对于 Bagging 来说,每个基模型的权重等于 1/m 且期望近似相等,故我们可以得到:
                                           通过上式我们可以看到:
   在此我们知道了为什么 Bagging 中的基模型一定要为强模型,如果 Bagging 使用弱模型则会导致整体模型的偏差提高,而准确度降低。Random Forest 是经典的基于 Bagging 框架的模型,并在此基础上通过引入特征采样和样本采样来降低基模型间的相关性,在公式中显著降低方差公式中的第二项,略微升高第一项,从而使得整体降低模型整体方差。
   对于 Boosting 来说,由于基模型共用同一套训练集,所以基模型间具有强相关性,故模型间的相关系数近似等于 1,针对 Boosting 化简公式为:
                                           通过观察整体方差的表达式我们容易发现:
   基于 Boosting 框架的 Gradient Boosting Decision Tree 模型中基模型也为树模型,同 Random Forrest,我们也可以对特征进行随机抽样来使基模型间的相关性降低,从而达到减少方差的效果。
   ️那么这里有一个小小的疑问,Bagging 和 Boosting 到底用的是什么模型呢?
   随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于集成学习方法。随机森林的名称中有两个关键词,一个是“随机”,一个就是“森林”。“森林”我们很好理解,一棵叫做树,那么成百上千棵就可以叫做森林了,这也是随机森林的主要思想--集成思想的体现。然而,bagging的代价是不用单棵决策树来做预测,具体哪个变量起到重要作用变得未知,所以bagging改进了预测准确率但损失了解释性。
   “森林”容易理解,就是由很多“树”组成,那么“随机”体现在什么方面呢?
   (1)训练集随机的选取:如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本(这种采样方式称为bootstrap sample方法),作为该树的训练集;这样保证了每颗树的训练集都不同,从而构建的树也不同
   (2)特征的随机选取:从M个特征中选取m个特征,这样可以避免某个特征与分类结果具有强相关性,如果所有特征都选取,那么所有的树都会很相似,那样就不够“随机”了
   另外还有一点,随机森林法构建树的时候不需要做额外的剪枝操作。个人理解:因为前两个“随机”操作,以及多颗树的建立,已经避免了过拟合现象,所以这种情况下,我们只需要让每棵树在它自己的领域内做到最好就可以了。
   随机森林算法的预测性能与两个因素有关:
   (1)森林中任意两棵树的相关性,相关性越强,则总体性能越容易差
   (2)森林中每棵树的预测性能,每棵树越好,则总体性能越好
   其实可以理解为要求“好而不同”。然而特征数m的选择越大,则相关性与个体性能都比较好,特征数m选择越小,则相关性与个体性能都更小,所以m的选择影响着随机森林的预测性能。
   在包括N个样本的数据集中,采用有放回的抽样方式选择N个样本,构成中间数据集,然后在这个中间数据集的所有特征中随机选择几个特征,作为最终的数据集。以上述方式构建多个数据集;一般回归问题选用全部特征,分类问题选择全部特征个数的平方根个特征
   利用CART为每个数据集建立一个完全分裂、没有经过剪枝的决策树,最终得到多棵CART决策树;
   根据得到的每一个决策树的结果来计算新数据的预测值。
   由于RF在实际应用中的良好特性,基于RF,有很多变种算法,应用也很广泛,不光可以用于分类回归,还可以用于特征转换,异常点检测等。下面对于这些RF家族的算法中有代表性的做一个总结。
   extra trees是RF的一个变种, 原理几乎和RF一模一样,有区别有:
   对于每个决策树的训练集,RF采用的是 随机采样bootstrap来选择采样集作为每个决策树的训练集 ,而extra trees一般不采用随机采样,即 每个决策树采用原始训练集。 
   在选定了划分特征后,RF的决策树会基于基尼系数,均方差之类的原则,选择一个最优的特征值划分点,这和传统的决策树相同。但是extra trees比较的激进,他会随机的选择一个特征值来划分决策树。
   从第二点可以看出, 由于随机选择了特征值的划分点位,而不是最优点位,这样会导致生成的决策树的规模一般会大于RF所生成的决策树。   也就是说,模型的方差相对于RF进一步减少,但是偏倚相对于RF进一步增大。在某些时候,extra trees的泛化能力比RF更好。 
   Totally Random Trees Embedding(以下简称 TRTE)是一种 非监督学习的数据转化方法。它将低维的数据集映射到高维 ,从而让映射到高维的数据更好的运用于分类回归模型。我们知道,在支持向量机中运用了核方法来将低维的数据集映射到高维,此处TRTE提供了另外一种方法。
   TRTE在数据转化的过程也使用了类似于RF的方法,建立T个决策树来拟合数据。当决策树建立完毕以后,数据集里的每个数据在T个决策树中叶子节点的位置也定下来了。比如我们有3颗决策树,每个决策树有5个叶子节点,某个数据特征x划分到第一个决策树的第2个叶子节点,第二个决策树的第3个叶子节点,第三个决策树的第5个叶子节点。则x映射后的特征编码为(0,1,0,0,0, 0,0,1,0,0, 0,0,0,0,1), 有15维的高维特征。这里特征维度之间加上空格是为了强调三颗决策树各自的子编码。
   映射到高维特征后,可以继续使用监督学习的各种分类回归算法了。
   Isolation Forest(以下简称IForest)是一种 异常点检测的方法。 它也使用了类似于RF的方法来检测异常点。
   对于在T个决策树的样本集,IForest也会对训练集进行随机采样,但是采样个数不需要和RF一样,对于RF,需要采样到采样集样本个数等于训练集个数。但是IForest不需要采样这么多,一般来说,采样个数要远远小于训练集个数?为什么呢?因为我们的目的是异常点检测,只需要部分的样本我们一般就可以将异常点区别出来了。
   对于每一个决策树的建立, IForest采用随机选择一个划分特征,对划分特征随机选择一个划分阈值。这点也和RF不同。
   另外,IForest一般会选择一个比较小的最大决策树深度max_depth,原因同样本采集,用少量的异常点检测一般不需要这么大规模的决策树。
   对于异常点的判断,则是将测试样本点x拟合到T颗决策树。计算在每颗决策树上该样本的叶子节点的深度ht(x),从而可以计算出平均高度h(x)。此时我们用下面的公式计算样本点x的异常概率:
     
   其中,m为样本个数。c(m)的表达式为:
     
   s(x,m)的取值范围是[0,1],取值越接近于1,则是异常点的概率也越大。
   RF的主要优点有:   训练可以 高度并行化 ,对于大数据时代的大样本训练速度有优势。
   由于可以随机选择决策树节点划分特征,这样在 样本特征维度很高的时候,仍然能高效的训练模型。 
   在训练后,可以给出各个特征对于输出的重要性
   由于采用了随机采样,训练出的模型的 方差小,泛化能力强。 
   相对于Boosting系列的Adaboost和GBDT,  RF实现比较简单 。
    对部分特征缺失不敏感。 
   缺点:   在某些噪音比较大的样本集上, RF模型容易陷入过拟合。 
    取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。 
   数据维度相对低(几十维),同时对准确性有较高要求时。   因为不需要很多参数调整就可以达到不错的效果,基本上不知道用什么方法的时候都可以先试一下随机森林。
    sklearn.ensemble.RandomForestClassifier(n_estimators=100, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, class_weight=None) 

随机森林算法梳理

6. 10、决策树集成--随机森林

 随机森林本质上是许多决策树的集合,其中每棵树都和其他树略有不同,每棵树的预测可能都相对较好,但可能对部分数据过拟合,我们对这些树的结果取平均值来降低过拟合,这样既保证了预测能力,又降低了过拟合。随机森林可用于回归RandomForestRegressor和分类RandomForestClassifier。
   随机树构造方法: 一 每棵树随机选择数据,从n个数据中有放回地随机抽取一个样本,共抽取n次,这样会创建一个与原数据集大小相同的数据集,但有些数据会缺失(大约三分之一),有些会重复。 二 每棵树随机选择特征,选择部分特征而不是全部。
   输出
                                           在没有调节任何参数的情况下,随机森林的精度为97%,比分类算法(逻辑回归、线性SVM)或单棵决策树都要好。随机森林的默认参数通常就可以给出很好的结果。
   输出
                                           与单棵树相比,随机森林中有更多的特征的重要性不为0。它选择了“worst perimeter”(最大周长)作为信息量最大的特征,单棵决策树选的是“worst radius”(最大半径)。一般来说,随机森林给出的特征重要性要比单棵树给出的更为可靠,随机森林比单棵树更能从总体把握数据的特征。
   这种方法非常强大,通常不需要反复调节参数就可以给出很好的结果,也不需要对数据进行缩放。随机森林拥有决策树的所有优点,同时弥补了决策树的一些缺陷。
   随机森林是随机的,设置不同的随机状态(不设置random_state参数)可以彻底改变构建的模型。
   随机森林中的树越多,模型的鲁棒性就越好。更多的树可以降低过拟合,但需要的内存也越多,即在内存允许的情况下尽量多。
   对于维度非常高的稀疏数据(比如文本数据),随机森林的表现往往不是很好。
   调节的参数主要有n_estimators(树的个数)、max_features和max_depth。n_estimators总是越大越好,较小的max_features可以降低过拟合,一般来说使用默认值就好。

7. 随机森林算法是什么?


随机森林算法是什么?

8. 随机森林算法的优缺点

1.随机森林是一个用随机方式建立的,包含多个决策树的分类器。其输出的类别是由各个树输出的类别的众数而定。

2.随机性主要体现在两个方面:(1)训练每棵树时,从全部训练样本(样本数为N)中选取一个可能有重复的大小同样为N的数据集进行训练(即bootstrap取样)(2)在每个节点,随机选取所有特征的一个子集,用来计算最佳分割方式。

3.随机森林算法的优缺点:(1)随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟(2)对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。
4.比决策树算法更复杂,计算成本更高。
最新文章
热门文章
推荐阅读