1. 集成学习概念
集成学习的是先通过一定的规则生成多个学习器,再采用某种集成策略进行组合,最后综合判断输出最终结果。一般而言,通常所说的集成学习中的多个学习器都是同质的"弱学习器"。基于该弱学习器,通过样本集扰动、输入特征扰动、输出表示扰动、算法参数扰动等方式生成多个学习器,进行集成后获得一个精度较好的"强学习器"。
2.个体学习器概念
个体学习器通常由一个现有的学习算法从训练数据产生,是为了集成学习而产生的个体,通常有以下几种:
- 只包含同种类型的个体学习器,这样的集成是“同质”的(homogeneous)。同质集成中的个体学习器亦称为”基学习器“(base learning)。
- 集成也可包含不同类型的个体学习器,这样集成是”异质“的(heterogeneous)。相应的个体学习器,常称为”组件学习器“(component learning)或直接称为个体学习器。
3.Boosting & Bagging
根据个体学习器的生成方式,目前集成学习的方法大致可分为两大类:
- 个体学习器间存在强依赖关系、必须串行生成的序列化方法,代表是Boosting;
- 个体学习器间不存在强依赖关系、可同时生成的并行化方法,代表是Baggig和“随机森林”(Random Forest);
3.1 Boosting
什么是 Boosting 算法呢?
Boosting 算法是集成算法中的一种,同时也是一类算法的总称。这类算法先从初始训练集训练出一个弱学习器,然后根据弱学习器的表现对训练样本分布进行调整,不断训练出多个弱学习器,最后将它们进行加权组合成一个强分类器,为什么要这么做呢?因为弱学习器好训练,强学习器不好得。因此要打造一个好的强学习器,最好的方式就是训练多个弱学习器,然后让这些弱学习器组合起来,这样往往可以得到很好的效果。这就是 Boosting 算法的原理。
Boosting 最著名的算法是 AdaBoost算法。
3.2 Bagging
Bagging是并行式集成学习方法的代表,是一种基于自助采样法(bootstrap sampling)发展而来的算法。
假定有m个训练集,我们采用自助采样法,每次随机抽取一个放入采样集中,然后再把样本放回训练集,一共抽取m次,获得一个用于训练的采样集(里面有m个样本)。根据需要我们一共抽取T个采样集,学习出T个基学习器。
在进行预测时,对于分类任务采用简单投票法,回归任务采用简单平均法。
总结:
Boosting 的含义是提升,它的作用是每一次训练的时候都对上一次的训练进行改进提升,在训练的过程中这 K 个“专家”之间是有依赖性的,当引入第 K 个“专家”(第 K 个分类器)的时候,实际上是对前 K-1 个专家的优化。而 Bagging 在做投票选举的时候可以并行计算,也就是 K 个“专家”在做判断的时候是相互独立的,不存在依赖性。
4结合策略(平均法,投票法,学习法)
平均法:简单平均、加权平均
适用范围:
- 规模大的集成,学习的权重较多,加权平均法易导致过拟合
- 个体学习器性能相差较大时宜使用加权平均法,相近用简单平均法。
投票法:
- 绝对多数投票法:某标记超过半数,也就是我们常说的要票过半数,否则就当会拒绝预测;
- 相对多数投票法:预测为得票最多的标记,若同时有多个标记的票最高,则从中随机选取一个,也就是所谓的“少数服从多数”。
- 加权投票法:提供了预测结果,与加权平均法类似。
学习法:
对于学习法,代表方法是stacking,当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。
在这种情况下,我们将弱学习器称为初级学习器,将用于结合的学习器称为次级学习器。对于测试集,我们首先用初级学习器预测一次,得到次级学习器的输入样本,再用次级学习器预测一次,得到最终的预测结果。
5随机森林思想
随机森林的英文是 Random Forest,英文简写是 RF。它实际上是一个包含多个决策树的分类器,每一个子分类器都是一棵 CART 分类回归树。所以随机森林既可以做分类,又可以做回归。当它做分类的时候,输出结果是每个子分类器的分类结果中最多的那个。你可以理解是每个分类器都做投票,取投票最多的那个结果。当它做回归的时候,输出结果是每棵 CART 树的回归结果的平均值。
6随机森林的推广
6.1extra trees
extra trees是RF的一个变种, 原理几乎和RF一模一样,仅有区别有:
1) 对于每个决策树的训练集,RF采用的是随机采样bootstrap来选择采样集作为每个决策树的训练集,而extra trees一般不采用随机采样,即每个决策树采用原始训练集。
2) 在选定了划分特征后,RF的决策树会基于信息增益,基尼系数,均方差之类的原则,选择一个最优的特征值划分点,这和传统的决策树相同。但是extra trees比较的激进,他会随机的选择一个特征值来划分决策树。
从第二点可以看出,由于随机选择了特征值的划分点位,而不是最优点位,这样会导致生成的决策树的规模一般会大于RF所生成的决策树。也就是说,模型的方差相对于RF进一步减少,但是bias相对于RF进一步增大。在某些时候,extra trees的泛化能力比RF更好
6.2 Totally Random Trees Embedding
Totally Random Trees Embedding(以下简称 TRTE)是一种非监督学习的数据转化方法。它将低维的数据集映射到高维,从而让映射到高维的数据更好的运用于分类回归模型。我们知道,在支持向量机中运用了核方法来将低维的数据集映射到高维,此处TRTE提供了另外一种方法。
TRTE在数据转化的过程也使用了类似于RF的方法,建立T个决策树来拟合数据。当决策树建立完毕以后,数据集里的每个数据在T个决策树中叶子节点的位置也定下来了。比如我们有3颗决策树,每个决策树有5个叶子节点,某个数据特征划分到第一个决策树的第2个叶子节点,第二个决策树的第3个叶子节点,第三个决策树的第5个叶子节点。则x映射后的特征编码为(0,1,0,0,0, 0,0,1,0,0, 0,0,0,0,1), 有15维的高维特征。这里特征维度之间加上空格是为了强调三颗决策树各自的子编码。
映射到高维特征后,可以继续使用监督学习的各种分类回归算法了。
6.3 Isolation Forest
Isolation Forest(以下简称IForest)是一种异常点检测的方法。它也使用了类似于RF的方法来检测异常点。
对于在T个决策树的样本集,IForest也会对训练集进行随机采样,但是采样个数不需要和RF一样,对于RF,需要采样到采样集样本个数等于训练集个数。但是IForest不需要采样这么多,一般来说,采样个数要远远小于训练集个数?为什么呢?因为我们的目的是异常点检测,只需要部分的样本我们一般就可以将异常点区别出来了。
对于每一个决策树的建立, IForest采用随机选择一个划分特征,对划分特征随机选择一个划分阈值。这点也和RF不同。
另外,IForest一般会选择一个比较小的最大决策树深度max_depth,原因同样本采集,用少量的异常点检测一般不需要这么大规模的决策树。
对于异常点的判断,则是将测试样本点x拟合到T颗决策树。计算在每颗决策树上该样本的叶子节点的深度ht(x)。,从而可以计算出平均高度h(x)。此时我们用下面的公式计算样本点x的异常概率:
s(x,m)=2−h(x)c(m)
其中,m为样本个数。c(m)的表达式为:
c(m)=2ln(m−1)+ξ−2m−1m,ξ为欧拉常数
s(x,m)的取值范围是[0,1],取值越接近于1,则是异常点的概率也越大。
7.优缺点
随机森林的优缺点
优点:
1)随机森林算法能解决分类与回归两种类型的问题,表现良好,由于是集成学习,采用了随机采样,训练出的模型的方差和偏差都比较小,泛化性能优越;
2)随机森林对于高维数据集的处理能力很好,它可以处理成千上万的输入变量,并确定最重要的变量,因此被认为是一个不错的降维方法。此外,该模型能够输出特征的重要性程度,这是一个非常实用的功能。
- 可以应对缺失数据;
4)当存在分类不平衡的情况时,随机森林能够提供平衡数据集误差的有效方法; - 高度并行化,易于分布式实现,对于大数据时代的大样本训练速度有优势。
- 由于是树模型 ,不需要归一化即可之间使用
7)相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
缺点:
a)随机森林在解决回归问题时并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续型的输出。当进行回归时,随机森林不能够作出超越训练集数据范围的预测,这可能导致在对某些还有特定噪声的数据进行建模时出现过度拟合。
b)对于许多统计建模者来说,随机森林给人的感觉像是一个黑盒子——你几乎无法控制模型内部的运行,只能在不同的参数和随机种子之间进行尝试。
c) 忽略属性之间的相关性
8.sklearn参数
在 sklearn 中,我们使用 RandomForestClassifier() 构造随机森林模型,函数里有一些常用的构造参数:
当我们创建好之后,就可以使用 fit 函数拟合,使用 predict函数预测
9. 应用场景
数据维度相对低(几十维,在初学者的我来说,感觉不低了。。),同时对准确性有较高要求时。
因为不需要很多参数调整就可以达到不错的效果,基本上不知道用什么方法的时候都可以先试一下随机森林。
参考资料:
- EddyLiu2017 的《机器学习》笔记-集成学习(8)https://www.jianshu.com/p/2424fa91534b
- loveitlovelife 的 集成学习三结合策略及(平均、投票、stacking)与多样性https://blog.csdn.net/loveitlovelife/article/details/79398745
- 刘建平Pinard 的 集成学习原理小结 https://www.cnblogs.com/pinard/p/6131423.html 和 Bagging与随机森林算法原理小结
https://www.cnblogs.com/pinard/p/6156009.html - KongQingQing29 的 随机森林,GBDT,XGBoost的对比https://blog.csdn.net/yingfengfeixiang/article/details/80210145