《机器学习-Python实战(微课版)》课件 第八章 随机森林_第1页
《机器学习-Python实战(微课版)》课件 第八章 随机森林_第2页
《机器学习-Python实战(微课版)》课件 第八章 随机森林_第3页
《机器学习-Python实战(微课版)》课件 第八章 随机森林_第4页
《机器学习-Python实战(微课版)》课件 第八章 随机森林_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章随机森林通过本章学习可以:掌握集成学习算法的原理掌握Bagging概念掌握随机森林算法的原理和应用掌握随机森林算法的scikit-learn实现学习目标集成学习Bagging随机森林随机森林的scikit-learn实现应用案例三个臭皮匠,顶个诸葛亮。众人拾柴火焰高。这些古话有什么样的寓意?引入集成学习:Ensemble

Learning。集成学习通过构建并结合多个“个体学习器”(individual

learner)来完成学习任务,有时也被称为多分类器系统(multi-classifier

system)。依据每个个体学习器所采用的学习算法是否相同,可以分为同质集成和异质集成。同质集成中,个体学习器由相同的学习算法生成,个体学习器称为基学习器。异质集成中,个体学习器由不同的学习算法生成,个体学习器称为组件学习器。集成学习通过将多个学习器进行结合,通常可获得比单一学习器更优的效果。集成学习先产生一组“个体学习器”,然后通过某种策略将它们结合起来。集成学习一般结构个体学习器1个体学习器2个体学习器T……结合策略输出投票法:对分类任务来说,最常见的结合策略是投票法。平均法:对数值型输出,最常见的结合策略就是平均法。学习法:当训练数据很多时,一种更强大的组合策略是“学习法”,解决投票法和平均法误差较大的问题。集成学习结合策略投票法通常用于分类问题。做法:每个模型的预测都被视为一次“投票”。票数最多的预测结果被用作最终预测结果。即对T个学习器的分类结果做一个统计,出现次数最多的类作为预测类。例如:当你让5位朋友来评价你拍的短视频(1-10分);假设其中三位将它评为8分,而另外两位将它评为9分。由于多数人的评分结果为8分,所以最终评分为8分。此时,可以将此结果当作采用了所有预测的众数(mode)。投票法平均法主要处理数值类问题。做法:对每个数据样本的多次预测结果进行算数平均。也就是把所有模型的预测结果取平均值作为最终预测。平均法可用于回归问题或在分类问题计算概率时使用。例如,在前一页的问题中,平均法将取所有值的平均值。即(8+8+8+9+9)/5=8.4。平均法平均法和投票法是对弱学习器的结果做平均或者投票,相对比较简单,但是可能学习误差较大,于是就有了学习法。学习法是一种更为强大的结合策略,即通过另一个学习器来进行结合。Stacking是学习法的典型代表。Stacking先从初级数据集训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当作样例输入特征。学习法

集成学习的一般过程描述根据弱学习器之间是否存在依赖性,分为Bagging和Boosting。Bagging:核心思想是对训练集进行有放回地抽取,从而为每一个基本分类器都构造出一个同样大小但各不相同的的训练集,从而训练出不同的基分类器。代表算法是随机森林。Boosting:是一种可以用来减小监督学习中偏差的机器学习算法。在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提升分类的性能。代表算法有Adaboost和GradientBoostingTree(GBDT)。集成学习分类Bagging的思想Boosting的思想集成学习Bagging随机森林随机森林的scikit-learn实现应用案例Bagging[Breiman,1996a]是并行式集成学习方法最著名的代表。Bagging是BootstrapAggregating的简写。Bootstrap称为自助法,它是一种有放回的抽样方法。在Bagging方法中,利用bootstrap方法从整体数据集中采取有放回抽样得到T个包含m个样本的数据集,在每个数据集上学习出一个基学习器,最后将这T个基学习器进行结合。具体地:分类问题采用简单投票法,回归问题采用简单平均法。BaggingBagging运行原理图M个训练样本第1个样本采样集第2个样本采样集随机采样….第T个样本采样集弱学习器2弱学习器3弱学习器T弱学习器1强学习器训练训练训练训练从大小为M的原始数据集D中独立随机地抽取m个数据(m<=M),形成一个自助数据集;重复上述过程,产生出T个独立的自助数据集;利用T个自助数据集训练出T个最优模型;分类问题:最终的分类结果由这T个最优模型各自的判别结果投票决定;回归问题:对T个模型的值求平均得到最终结果。Bagging算法流程Bagging通过降低基学习器的方差改善了泛化误差:bagging对样本进行有放回的重采样,学习结果是各个学习模型的平均值。由于重采样的样本集具有相似性以及使用相同的学习器模型,因此,各学习模型的结果相近,即模型有近似相等的偏差和方差。我们可以看到,均值没变,但是方差却减小到只有原方差的1/n^2。另外由于每一个样本被选中的概率相同,因此bagging并不侧重于训练数据集中的任何特定实例。因此对于噪声数据,装袋不太受过分拟合的影响。Bagging特点(1)Bagging是一个很高效的集成学习算法,其复杂度与基学习器同阶。由于每一个样本被选中的概率相同,因此bagging并不侧重于训练数据集中的任何特定实例。因此对于噪声数据,bagging不太受过分拟合的影响。关于bagging的一个问题:bagging的代价是不用单个学习器来做预测,具体哪个变量起到重要作用变得未知,所以bagging改进了预测准确率但损失了解释性。Bagging特点(2)集成学习Bagging随机森林随机森林的scikit-learn实现应用案例随机森林(RandomForest,简称RF)

[Breiman,2001a]是Bagging的一个扩展变体。RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。

Bagging+决策树=随机森林随机森林1.自助采样法:同bagging;2.随机属性选择:传统决策树在选择划分属性时是在当前结点的属性集合(假定有d个属性)中选择一个最优属性。在随机森林中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度:若令k=d,则基决策树的构建与传统决策树相同;若令k=1,则是随机选择一个属性用于划分。随机森林核心思想

随机森林算法流程模型拟合曲线随机森林拟合曲线目的:根据已有训练集生成里对应的随机森林,随机森林利用某个人的5个特征来预测他的收入层次。收入层次:Band1:Below$40,000Band2:$40,000–150,000Band3:Morethan$150,000案例(1)这里假设森林中有5棵CART树,总特征个数N=5,生成每棵树时特征树取m=1(即假设每棵CART树对应一个不同的特征)。CART1:VariableAge案例(2)CART2:VariableGenderCART3:VariableEducation案例(3)CART4:VariableResidenceCART5:VariableIndustry案例(4)模型形式案例(5)假设要预测的某个人的信息如下:Age:35years;

Gender:Male;

HighestEductaionalQualification:Diploma;Industry:Manufacturing;Residence:Metro;根据这5颗CART树的分类结果,我们可以针对这个人的信息建立收入层次的分布情况;最后我们得出结论,这个人的收入层次70%是Band1,大约24%为Band2,6%为Band13,所以最终认定该人属于Band1收入层次(小于$40,000)。案例(6)森林中任意两棵树的相关性:相关性越大,错误率越大;森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低。随机森林的影响因素简单、容易实现、计算开销小、准确率高;能够有效地运行在大数据集上,可以实现并行训练;能够处理具有高维特征的输入样本,而且不需要降维;能够评估各个特征在分类问题上的重要性;对部分缺失特征不敏感;由于是树模型,不需要归一化,可直接使用;在生成过程中,能够获取到内部生成误差的一种无偏估计,同时不需要通过交叉验证或者用一个独立的测试集来获得该无偏估计,它可以在内部进行评估。随机森林优点随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合。对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。随机森林缺点国内外大赛如百度校园电影推荐系统大赛、阿里巴巴天池大数据竞赛、Kaggle数据科学竞赛中,随机森林的使用有很高的占比。对于市场营销,随机森林算法可以用于统计客户来源,留存和流失;对于银行,随机森林算法可用于发现忠诚客户以及客户欺诈行为等;对于股市,随机森林算法可以用于识别股票的波动行为,预估损失或收益;……随机森林应用Extremelyrandomizedtrees,极端随机树,简称ET。Extratree是RF的一个变种,区别在于:对于每棵决策树的训练集,RF使用的是自助采样(bootstrap)法选择采样集作为每个决策树的训练集,而extratree一般不采用随机采样,即每个决策树采用原始训练集。RF随机选择k个特征,然后会基于信息增益,基尼系数,均方差来选择一个最优的特征值进行划分。而Extratree则是随机地选择一个特征值来进行划分。随机森林的变种-ExtraTree随机森林属于有监督学习算法的范畴,与其他算法相比存在如下几方面的区别:与线性回归类算法相比,随机森林算法采用的是折线拟合的方式,其本质在于属性空间拆分,因此当树足够多时,其训练数据拟合效果会比较好,同时由于样本和属性选择的随机性,以及类别权重控制,对于处理倾斜数据存在一定效果,而由于其本身主要的关注点在于样本本身,当训练数据与实际数据存在分布差异时,效果会有所下降。与最近邻算法和贝叶斯算法相比,决策树类算法专注的是类别边界的求取,与概率和距离类算法区分类别差异性存在较大的区别,在面对样本类别分不均匀问题的时,前者表现会较好,而后者极易受到多占比样本的影响,从而丧失对小样本的区分能力。综上所述,当处理实际有监督分类问题时,当离散属性占比较多,样本分布不均匀时,推荐使用随机森林算法。与其他监督学习算法对比集成学习Bagging随机森林随机森林的scikit-learn实现应用案例由于随机森林属于集成学习算法的范畴,因此随机森林被放置在scikit-learn的sklearn.ensemble包中,其包含两种实现方式,分别是:RandomForestClassifier和RandomForestRegressor,而Extra

Tree的方法分别是:ExtraTreesClassifier和ExtraTreesRegressor。随机森林调用方式如下:fromsklearn.ensembleimportRandomForestClassifierfromsklearn.ensembleimportRandomForestRegressorextra

tree算法的调用方式如下:fromsklearn.ensembleimportExtraTreesClassifierfromsklearn.ensembleimportExtraTreesRegressor随机森林的scikit-learn实现超参数:在机器学习中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。随机森林常用超参数分别是:max_features:寻找最佳分裂点时考虑的属性数目随机森林允许单个决策树使用特征的最大数量。用于构造不同类型的树,增强模型的泛化能力,取值有:Auto/None,sqrt等;n_estimators:森林中树的个数。主要用于提升模型的复杂度,从而提升模型预测的准确性;max_depth:树的最大深度,约束单颗树的复杂度,防止过拟合,integer或者None;min_samples_split:分裂内部节点需要的最少样例数。应用于约束模型树的生长;min_samples_leaf:叶子节点上应有的最少样例数。对树进行剪枝处理,防止过拟合;class_weight:

“banlanced”模式是根据y标签值自动调整权值与输入数据的类频率成反比,计算公式是:n_samples/(n_classes

np.bincount(y)).用于处理倾斜数据集;criterion:切分策略:gini或者entropy,默认是gini,与树相关。随机森林的scikit-learn实现–超参数最重要的两个参数n_estimators:森林中树的数量,初始越多越好,但是会增加训练时间,到达一定数量后模型的表现不会再有显著的提升。max_features:各个基学习器进行切分时随机挑选的特征子集中的特征数目,数目越小模型整体的方差会越小,但是单模型的偏差也会上升,经验性的设置回归问题的max_features为整体特征数目,而分类问题则设为整体特征数目开方的结果。随机森林的scikit-learn主要优化参数模型主要输出参数:predict(X):返回输入样本的预测类别,返回类别为各个树预测概率均值的最大值;predict_proba(X):返回输入样本X属于某一类别的概率,通过计算随机森林中各树对于输入样本的平均预测概率得到,每棵树输出的概率由叶节点中类别的占比得到;score(X,y):返回预测的平均准确率。特征重要性评估:feature_importances_:一棵树中的特征的排序(比如深度)可以用来作为特征相对重要性的一个评估,居于树顶端的特征相对而言对于最终样本的划分贡献最大(经过该特征划分所涉及的样本比重最大),这样可以通过对比各个特征所划分的样本比重的一个期望值来评估特征的相对重要性,可以用于特征选择。随机森林的scikit-learn主要输出参数集成学习Bagging随机森林随机森林的scikit-learn实现应用案例本案例旨在通过鸢尾花卉的表征特征,从而实现花卉的识别和区分。Iris数据集是机器学习任务中常用的分类实验数据集,由Fisher在1936收集整理。Iris中文名是安德森鸢尾花卉数据集,是一类多重变量分析的数据集。应用案例-背景介绍Iris一共包含150个样本,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。Id:鸢尾花编号SepaLengthCm:

花萼长度,单位cmSepalWidthCm:

花萼宽度,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论