高级算法_one

**

随机森林算法梳理

**
集成学习的概念
如果聚合一组预测器的预测,得到的预测结果也比最好的单个预测器要好。这样的一组预测器,我们称为集成,所以这种技术,也被称为集成学习,而一个集成学习的算法则被称为集成方法。

boosting bagging的概念、异同点
每个预测器使用的算法相同,但在不同的训练集随机子集上进行训练,采样时如果将样本放回,这种方法叫bagging;
提升法boosting是指可以将几个弱学习器结合成一个强学习器的任意集成方法,思路是循环训练预测器,每一次都是对其前序做出一些改正;
相同:Boosting一旦全部预测器训练完成,集成整体做出预测时和bagging方法一样,除非预测器有不同的权重,因为他们总的准确率是基于加权后的训练集;
不同:bagging可以并行运行。而Boosting无法并行运行,因为每个预测器只能在前一个预测器训练完并评估之后才能开始训练。
个体学习器的概念
个体学习器一般是由一个现有的学习算法从训练数据产生的。例如C4.5决策树,BP神经网络等。
在这里插入图片描述
理解不同的结合策略(平均法,投票法,学习法)
要创建一个更好的分类器,最简单的办法就是聚合每个分类器的预测,然后将得票最多的结果作为预测类别,这种大多数投票分类器被称为硬投票分类器;
如果所有分类器都能够估算出类别的概率,那么可以将概率在所有单个分类器上平均,然后让scikit-learn给出平均概率最高的类别作为预测,这被称为软投票法。
平均法:简单平均、加权平均
适用范围:
+规模大的集成,学习的权重较多,加权平均法易导致过拟合
+个体学习器性能相差较大时宜使用加权平均法,相近用简单平均法。
学习法
Stacking描述:先从初始数据集中训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器。在新数据集中,初级学习器的输出被当做样例输入特征,初始样本的标记仍被当做样例标记。

算法步骤:
输入:训练集D=(x1,y1),(x2,y2),…,(xm,ym)D=(x1,y1),(x2,y2),…,(xm,ym);
初级学习算法:Λ1,Λ2,…,ΛT;Λ1,Λ2,…,ΛT;
次级学习算法:ΛΛ
过程:
1、for t=1,2,…,T dofor t=1,2,…,T do
2、ht=Λt(D);ht=Λt(D);
3、end forend for
4、D‘=∅D‘=∅
5、for i=1,2,…,m dofor i=1,2,…,m do
6、for t=1,2,…,T dofor t=1,2,…,T do
7、zit=ht(xi);zit=ht(xi);
8、endforendfor
9、D′=D′⋃((zi1,zi2,…,ziT),yi);D′=D′⋃((zi1,zi2,…,ziT),yi);
10、endforendfor
11、h′=Λ(D′);h′=Λ(D′);
输出:H(x)=h′(h1(x),h2(x),…,hT(x))H(x)=h′(h1(x),h2(x),…,hT(x))
+通过交叉验证产生次级学习器的训练样本;
+将初级学习器的输出类概率作为次级学习器的输入属性,用多响应线性回归作为次基学习算法效果较好;
随机森林的思想
训练一组决策树分类器,每一棵树都基于训练集的不同随机子集进行训练,做出预测时只需获取所有树各自的预测,然后给出得票最多的类别作为预测结果,这样一组决策树的集成被称为随机森林。
主体思想:随机森林利用随机的方式将许多决策树组合成一个森林,每个决策树在分类的时候投票决定测试样本的最终类别。

  1. 随机选择样本
    给定一个训练样本集,数量为N,我们使用有放回采样到N个样本,构成一个新的训练集。注意这里是有放回的采样,所以会采样到重复的样本。详细来说,就是采样N次,每次采样一个,放回,继续采样。即得到了N个样本。然后我们把这个样本集作为训练集,进入下面的一步。
  2. 随机选择特征
    在构建决策树的时候,计算所有特征的InformationGain(ID3) 或者 GainRatio(C4.5),然后选择一个最大增益的特征作为划分下一个子节点的走向。
    但是,在随机森林中,我们不计算所有特征的增益,而是从总量为M的特征向量中,随机选择m个特征,其中m可以等于sqrt(M),然后计算m个特征的增益,选择最优特征(属性)。注意,这里的随机选择特征是无放回的选择!所以,随机森林中包含两个随机的过程:随机选择样本,随机选择特征。
  3. 构建决策树
    有了上面随机产生的样本集,我们就可以使用一般决策树的构建方法,得到一棵分类(或者预测)的决策树。需要注意的是,在计算节点最优分类特征的时候,我们要使用上面的随机选择特征方法。而选择特征的标准可以是我们常见的InformationGain(ID3) 或者 Gain Ratio(C4.5)。
    4.随机森林投票分类
    通过上面的三步走,我们可以得到一棵决策树,我们可以重复这样的过程H次,就得到了H棵决策树。然后来了一个测试样本,我们就可以用每一棵决策树都对它分类一遍,得到了H个分类结果。这时,我们可以使用简单的投票机制,或者该测试样本的最终分类结果。
    随机森林的推广
    Extra trees是RF的一个变种, 原理几乎和RF一模一样,仅有区别有:
    对于每个决策树的训练集,RF采用的是随机采样bootstrap来选择采样集作为每个决策树的训练集,而extra trees一般不采用随机采样,即每个决策树采用原始训练集。
    在选定了划分特征后,RF的决策树会基于信息增益,基尼系数,均方差之类的原则,选择一个最优的特征值划分点,这和传统的决策树相同。但是extra trees比较的激进,他会随机的选择一个特征值来划分决策树。
    从第二点可以看出,由于随机选择了特征值的划分点位,而不是最优点位,这样会导致生成的决策树的规模一般会大于RF所生成的决策树。也就是说,模型的方差相对于RF进一步减少,但是bias相对于RF进一步增大。在某些时候,extra trees的泛化能力比RF更好
    随机森林的优缺点
    优点:
    a)随机森林算法能解决分类与回归两种类型的问题,表现良好,由于是集成学习,方差和偏差都比较低,泛化性能优越;
    b)随机森林对于高维数据集的处理能力很好,它可以处理成千上万的输入变量,并确定最重要的变量,因此被认为是一个不错的降维方法。此外,该模型能够输出特征的重要性程度,这是一个非常实用的功能。
    c) 可以应对缺失数据;
    d)当存在分类不平衡的情况时,随机森林能够提供平衡数据集误差的有效方法;
    e ) 高度并行化,易于分布式实现
    f) 由于是树模型,不需要归一化即可之间使用
    缺点:
    a)随机森林在解决回归问题时并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续型的输出。当进行回归时,随机森林不能够作出超越训练集数据范围的预测,这可能导致在对某些还有特定噪声的数据进行建模时出现过度拟合。
    b)对于许多统计建模者来说,随机森林给人的感觉像是一个黑盒子——你几乎无法控制模型内部的运行,只能在不同的参数和随机种子之间进行尝试。
    c) 忽略属性之间的相关性
    随机森林在sklearn中的参数解释
    splitter:特征切分点选择标准,决策树是递归地选择最优切分点,spliter是用来指明在哪个集合上来递归,有“best”和“random”两种参数可以选择,best表示在所有特征上递归,适用于数据集较小的时候,random表示随机选择一部分特征进行递归,适用于数据集较大的时候。
    max_depth:决策树最大深度,决策树模型先对所有数据集进行切分,再在子数据集上继续循环这个切分过程,max_depth可以理解成用来限制这个循环次数。
    min_samples_split:子数据集再切分需要的最小样本量,默认是2,如果子数据样本量小于2时,则不再进行下一步切分。如果数据量较小,使用默认值就可,如果数据量较大,为降低计算量,应该把这个值增大,即限制子数据集的切分次数。
    min_samples_leaf:叶节点(子数据集)最小样本数,如果子数据集中的样本数小于这个值,那么该叶节点和其兄弟节点都会被剪枝(去掉),该值默认为1。
    min_weight_fraction_leaf:在叶节点处的所有输入样本权重总和的最小加权分数,如果不输入则表示所有的叶节点的权重是一致的。
    max_features:特征切分时考虑的最大特征数量,默认是对所有特征进行切分,也可以传入int类型的值,表示具体的特征个数;也可以是浮点数,则表示特征个数的百分比;还可以是sqrt,表示总特征数的平方根;也可以是log2,表示总特征数的log个特征。
    random_state:随机种子的设置,与LR中参数一致。
    max_leaf_nodes:最大叶节点个数,即数据集切分成子数据集的最大个数。
    min_impurity_decrease:切分点不纯度最小减少程度,如果某个结点的不纯度减少小于这个值,那么该切分点就会被移除。
    min_impurity_split:切分点最小不纯度,用来限制数据集的继续切分(决策树的生成),如果某个节点的不纯度(可以理解为分类错误率)小于这个阈值,那么该点的数据将不再进行切分。
    class_weight:权重设置,主要是用于处理不平衡样本,与LR模型中的参数一致,可以自定义类别权重,也可以直接使用balanced参数值进行不平衡样本处理。
    n_estimators:随机森林中树的棵树,默认是10棵。
    criterion:样本集切分策略,默认是gini指数,此时树模型为CART模型,当值选为信息增益的时候,模型就成了ID3模型,默认为CART模型。
    bootstrap:是统计学中的一种重采样技术,可以简单理解成是有放回地抽样,默认是True,即采取有放回抽样这种策略,这不就是bagging的思想么。
    oob_score:袋外估计(out-of-bag),这个外是针对于bagging这个袋子而言的,我们知道,bagging采取的随机抽样的方式去建立树模型,那么那些未被抽取到的样本集,也就是未参与建立树模型的数据集就是袋外数据集,我们就可以用这部分数据集去验证模型效果,默认值为False。

随机森林的应用场景
由于随机性,对于降低模型的方差很有作用,故随机森林一般不需要额外做剪枝,即可以取得较好的泛化能力和抗过拟合能力(Low Variance)。当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些(High Bias),仅仅是相对的。
应用:
不要求是linear features (do not expect linear features or even features that interact linearly), 比如LR很难处理categorical features,而Tree Ensembles,是一些决策树的集合,可以很容易得处理这些情况
由于算法构建的过程(bagging or boosting),这类算法很容易处理高维的数据,大量的训练数据的场景

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值