【中级】第8章 机器学习基础算法建模(8.4 集成学习算法)V1.1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一个是输入数据是随机的从整体的训练数据中选取一部分作为一棵决策树的构建,而且 是有放回的选取;
第二个是每棵决策树的构建所需的特征是从整体的特征集随机的选取的。
这两个随机过程使得随机森林在很大程度上避免了过拟合现象的出现。
第28页
Bagging——随机森林算法
随机森林算法的过程
随 机 选 择 训 练 数 据
第24页
Bagging
Bagging
• Bagging全称是bootstrap aggregation,基本思想是训练多个分类器,各个分类器 之间不存在强依赖关系,再对计算结果求平均值。
• 随机森林算法是其中的典型代表。
第25页
Bagging
Bagging全称是bootstrap aggregation,基本思想是训练多个分类器,各个分类器之 间不存在强依赖关系,再对计算结果求平均值。
随机森林算法是其中的典型代表。
第26页
Bagging——随机森林算法
随机森林算法
• 随机森林算法是上世纪80年代Breiman等人提出来的,其基本思想是构造很多棵决策树,形 成一个森林,再用这些决策树共同决策输出类别是什么。
第27页
Bagging——随机森林算法
在整个随机森林算法的过程中,有两个随机过程。
第8章 机器学习基础算法建模
第0页
目录
1. 机器学习 2. 分类算法 3. 回归算法 4. 集成学习算法 5. 聚类算法 6. 关联规则算法 7. 智能推荐算法
第1页
集成学习算法
在机器学习的有监督学习算法中,目标是学习出一个稳定的且在各个方面表现都较好的 模型,但实际情况往往达不到理想状态,有时只能得到多个有偏好的模型(弱分类器, 在某些方面表现较好)。
第12页
Boosting——Adaboost算法的应用
Adaboost算法主要应用方向
用于特征选择; 用于做分类任务的baseline; 用于对badcase的修正。
第13页
Boosting——Adaboost算法的应用实例
Python机器学习库scikit-learn的ensemble模块提供的AdaBoostClassifier类用于构建Adaboost 模型。
第14页
Boosting——Adaboost算法的应用实例
AdaBoostClassifier类的主要参数及其说明
参数名称
base_estimator n_estimators
说明
接收object。表示选择的分类学习器,默认为“DecisionTreeClassifier” 接收int。表示弱学习器的最大迭代次数,默认为50
分类器间存在一定的差异性,会导致分类的边界不同,可以理解为分类器是一 个比较专精的专家,它有它自己一定的适用范围和特长。
通过一定的策略将多个弱分类器合并后,即可拓展模型的适用范围,减少整体 的错误率,实现更好的效果。
第3页
集成学习算法
集成学习在各个规模的数据集上都有很好的策略。
数据过大时会导致训练一个模型太慢,而集成学习可以分别对数据集进行划分和 有放回的操作,从而产生不同的数据子集,再使用数据子集训练不同的分类器, 最终再将不同的分类器合并成为一个大的分类器。
GradientBoostingClassifier类基本使用语法
sklearn.ensemble.GradientBoostingClassifier(loss='deviance', learning_rate=0.1, n_estimators=100, subsample=1.0, criterion='friedman_mse', min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_decrease=0.0, min_impurity_split=None, init=None, random_state=None, max_features=None, verbose=0, max_leaf_nodes=None, warm_start=False, presort='deprecated', validation_fraction=0.1, n_iter_no_change=None, tol=0.0001, ccp_alpha=0.0)
AdaBoostClassifier类基本使用语法
sklearn.ensemble.AdaBoostClassifier(base_estimator=None, n_estimators=50, learning_rate=1.0, algorithm='SAMME.R', random_state=None)
第19页
Boosting——GBDT算法的优缺点
GBDT算法的优点
预测的精度高。 适合低维数据。 可以处理非线性数据。 可以灵活处理各种类型的数据,包括连续值和离散值。 使用一些健壮的损失函数,对异常值的鲁棒性非常强。
第20页
Boosting——GBDT算法的优缺点
GBDT算法的缺点
由于弱学习器之间存在依赖关系,难以并行训练数据。 如果数据维度较高时,会加大算法的计算复杂度。 执行效果依赖于弱分类器的选择。
第29页
每 棵 树
投票 进
输出结果 行 预ห้องสมุดไป่ตู้测
Bagging——随机森林算法
从训练数据中选取n个数据作为训练数据输入。 • 一般情况下,n远小于整体的训练数据N,这样就会造成有一部分数据是无法被取到,这 部分数据称为袋外数据,可以使用袋外数据做误差估计。
选取了输入的训练数据后,需要构建决策树。 • 构建的具体方法是每一个分裂结点从整体的特征集M中选取m个特征构建,一般情况下m 远小于M。
第5页
集成学习算法
目前常见的集成学习算法
Boosting Bagging
第6页
Boosting
Boosting
• Boosting方法是一种用于提高弱分类器准确度的方法,这种方法从原始训练数据 出发,通过调整训练数据的概率分布(权值分布)来生成多个子分类器,多个 子分类器的产生是有序的,即一个分类器依赖于前一个分类器,并且着重关注 于前一个分类器错误分类的样本,提升错误分类样本的权重,由于新的分类器 重点关注错误分类的样本,生成新的分类器的过程中就会不断的降低误差,从 而降低整个模型的偏差。
learning_rate
接收float。表示每个弱学习器的权重缩减系数,取值范围为0到1,默认为1.0
algorithm
第15页
接收str。选择Adaboost分类算法,可选择的值为“SAMME”和“SAMME.R”,其含义如下 “SAMME”:使用对样本集分类效果作为弱学习器权重 “SAMME.R”:使用对样本集分类的预测概率大小作为弱学习器权重 默认为“SAMME.R”
GBDT在GB算法的基础上,通过损失函数的负梯度的进行损失误差的拟合,从而解决分类 回归问题。
第17页
Boosting——GBDT算法的数据输入
GBDT算法的输入要求
训练数据集。 基于决策树算法的弱分类器。
第18页
Boosting——GBDT算法的输出
GBDT算法通过模型训练后的输出为强分类器。
重复步骤(2)和步骤(3)多次,每一次输入数据对应一棵决策树,即可得到随机森林,用 于对预测数据进行决策。 选择输入的训练数据后,多棵决策树也随之构建成功。
• 对预测数据进行预测,输入一个待预测数据,会有多棵决策树同时进行决策,最后采用 多数投票的方式进行类别的决策。
第21页
Boosting——GBDT算法的应用
GBDT算法的应用
GBDT算法几乎可用于所有回归问题,包含线性和非线性的回归问题,也可以用于二分类问 题。
第22页
Boosting——GBDT算法的应用实例
Python机器学习库scikit-learn的ensemble模块提供的GradientBoostingClassifier类用于构建 GBDT模型。
集成学习
• 集成学习是组合多个弱分类器,得到一个更好且更全面的强分类器,即将多个分 类器聚集在一起,以提高分类的准确率。
• 这些分类器可以是不同的算法,也可以是相同的算法。如果把单个分类器比作一 个决策者,那么集成学习的方法就相当于多个决策者共同进行一项决策。
第2页
集成学习算法
集成学习的作用
将多个弱分类器合并,实现更好的效果。
Boosting——GBDT算法
GBDT全称为Gradient Boosting Decision Tree(梯度提升迭代决策树),是一种基于迭代所构造的决 策树算法,这种算法在实际问题中将生成多棵决策树,并将所有树的结果进行汇总而得到最终答案。 所以该算法将决策树与集成思想进行了有效的结合。 GBDT是由梯度提升(Gradient Boosting,GB)算法而来。
第23页
Boosting——GBDT算法的应用实例
GradientBoostingClassifier的主要参数及其说明
参数名称
说明
接收str。表示算法中的损失函数,可选择的值为“deviance”和“exponential”,其含义如下
loss
“deviance”:对数似然损失函数 “exponential”:指数损失函数
第30页
Bagging——随机森林算法
决策树的构建 • 在构造每棵决策树的过程中,按照选取最小的基尼系数进行分裂节点的选取,然后进行 决策树的构建。 • 决策树的其他结点都采取相同的分裂规则进行构建,直至该节点的所有训练样本都属于 同一类或达到树的最大深度。
第31页
Bagging——随机森林算法
数据过小时则会导致训练不充分,而集成学习可以利用Bootstrap方法进行抽样, 得到多个数据集,分别训练多个模型后再进行组合。如此便可提高训练的准确度 和速度,使得之前很难利用的数据得到充分的利用。
第4页
集成学习算法
将多个模型进行融合。
对于存在多个异构的特征集的时候,很难进行融合,可以考虑使用集成学习的 方式,将每个数据集构建一个分类模型,然后将多个模型进行融合。
第7页
Boosting——Adaboost算法
Adaboost是Boosting中较为代表的算法,基本思想是通过训练数据的分布构造一个分类器,然后通 过误差率求出这个弱分类器的权重,通过更新训练数据的分布,迭代进行,直至达到迭代次数或者 损失函数小于某一阈值。 由于Adaboost属于Boosting中的算法,采用的是加权模型,对每个学习器的输出结果加权处理,只
会得到一个输出预测结果,所以标准的Adaboost只适用于二分类任务。
第8页
Boosting——Adaboost算法的数据输入
Adaboost算法的输入要求
训练数据集。 各个弱分类器。
第9页
Boosting——Adaboost算法的输出
Adaboost算法通过模型训练后的输出为强分类器。
第16页
Boosting——GBDT算法
GB算法的主要思想
在之前建立模型的损失函数的梯度下降方向上建立新的模型。
损失函数
损失函数是评价模型性能(一般为拟合程度+正则项),认为损失函数越小,性能越好。 让损失函数持续下降,可以使得模型不断调整提升性能,其最好的方法是使损失函数沿着
梯度方向下降。
第10页
Boosting——Adaboost算法的优缺点
Adaboost算法的优点
可以将不同的分类算法作为弱分类器。 很好的利用了弱分类器进行级联。 具有很高的精度。
第11页
Boosting——Adaboost算法的优缺点
Adaboost算法的缺点
容易受到噪声干扰。 训练时间过长。 执行效果依赖于弱分类器的选择。
默认为“deviance”
learning_rate n_estimators
接收float。表示每个弱学习器的权重缩减系数,取值范围为0到1,默认为0.1 接收int。表示弱学习器的最大迭代次数,默认为100
subsample
接收float。表示是否子采样,如果取值为1,则全部样本都使用,如果取值小于1,则只有一部分样本 会去做GBDT的决策树拟合。选择小于1的比例可以减少方差,即防止过拟合,但是会增加样本拟合的 偏差,因此取值不能太低。推荐在[0.5, 0.8]之间,默认为1.0
第二个是每棵决策树的构建所需的特征是从整体的特征集随机的选取的。
这两个随机过程使得随机森林在很大程度上避免了过拟合现象的出现。
第28页
Bagging——随机森林算法
随机森林算法的过程
随 机 选 择 训 练 数 据
第24页
Bagging
Bagging
• Bagging全称是bootstrap aggregation,基本思想是训练多个分类器,各个分类器 之间不存在强依赖关系,再对计算结果求平均值。
• 随机森林算法是其中的典型代表。
第25页
Bagging
Bagging全称是bootstrap aggregation,基本思想是训练多个分类器,各个分类器之 间不存在强依赖关系,再对计算结果求平均值。
随机森林算法是其中的典型代表。
第26页
Bagging——随机森林算法
随机森林算法
• 随机森林算法是上世纪80年代Breiman等人提出来的,其基本思想是构造很多棵决策树,形 成一个森林,再用这些决策树共同决策输出类别是什么。
第27页
Bagging——随机森林算法
在整个随机森林算法的过程中,有两个随机过程。
第8章 机器学习基础算法建模
第0页
目录
1. 机器学习 2. 分类算法 3. 回归算法 4. 集成学习算法 5. 聚类算法 6. 关联规则算法 7. 智能推荐算法
第1页
集成学习算法
在机器学习的有监督学习算法中,目标是学习出一个稳定的且在各个方面表现都较好的 模型,但实际情况往往达不到理想状态,有时只能得到多个有偏好的模型(弱分类器, 在某些方面表现较好)。
第12页
Boosting——Adaboost算法的应用
Adaboost算法主要应用方向
用于特征选择; 用于做分类任务的baseline; 用于对badcase的修正。
第13页
Boosting——Adaboost算法的应用实例
Python机器学习库scikit-learn的ensemble模块提供的AdaBoostClassifier类用于构建Adaboost 模型。
第14页
Boosting——Adaboost算法的应用实例
AdaBoostClassifier类的主要参数及其说明
参数名称
base_estimator n_estimators
说明
接收object。表示选择的分类学习器,默认为“DecisionTreeClassifier” 接收int。表示弱学习器的最大迭代次数,默认为50
分类器间存在一定的差异性,会导致分类的边界不同,可以理解为分类器是一 个比较专精的专家,它有它自己一定的适用范围和特长。
通过一定的策略将多个弱分类器合并后,即可拓展模型的适用范围,减少整体 的错误率,实现更好的效果。
第3页
集成学习算法
集成学习在各个规模的数据集上都有很好的策略。
数据过大时会导致训练一个模型太慢,而集成学习可以分别对数据集进行划分和 有放回的操作,从而产生不同的数据子集,再使用数据子集训练不同的分类器, 最终再将不同的分类器合并成为一个大的分类器。
GradientBoostingClassifier类基本使用语法
sklearn.ensemble.GradientBoostingClassifier(loss='deviance', learning_rate=0.1, n_estimators=100, subsample=1.0, criterion='friedman_mse', min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_decrease=0.0, min_impurity_split=None, init=None, random_state=None, max_features=None, verbose=0, max_leaf_nodes=None, warm_start=False, presort='deprecated', validation_fraction=0.1, n_iter_no_change=None, tol=0.0001, ccp_alpha=0.0)
AdaBoostClassifier类基本使用语法
sklearn.ensemble.AdaBoostClassifier(base_estimator=None, n_estimators=50, learning_rate=1.0, algorithm='SAMME.R', random_state=None)
第19页
Boosting——GBDT算法的优缺点
GBDT算法的优点
预测的精度高。 适合低维数据。 可以处理非线性数据。 可以灵活处理各种类型的数据,包括连续值和离散值。 使用一些健壮的损失函数,对异常值的鲁棒性非常强。
第20页
Boosting——GBDT算法的优缺点
GBDT算法的缺点
由于弱学习器之间存在依赖关系,难以并行训练数据。 如果数据维度较高时,会加大算法的计算复杂度。 执行效果依赖于弱分类器的选择。
第29页
每 棵 树
投票 进
输出结果 行 预ห้องสมุดไป่ตู้测
Bagging——随机森林算法
从训练数据中选取n个数据作为训练数据输入。 • 一般情况下,n远小于整体的训练数据N,这样就会造成有一部分数据是无法被取到,这 部分数据称为袋外数据,可以使用袋外数据做误差估计。
选取了输入的训练数据后,需要构建决策树。 • 构建的具体方法是每一个分裂结点从整体的特征集M中选取m个特征构建,一般情况下m 远小于M。
第5页
集成学习算法
目前常见的集成学习算法
Boosting Bagging
第6页
Boosting
Boosting
• Boosting方法是一种用于提高弱分类器准确度的方法,这种方法从原始训练数据 出发,通过调整训练数据的概率分布(权值分布)来生成多个子分类器,多个 子分类器的产生是有序的,即一个分类器依赖于前一个分类器,并且着重关注 于前一个分类器错误分类的样本,提升错误分类样本的权重,由于新的分类器 重点关注错误分类的样本,生成新的分类器的过程中就会不断的降低误差,从 而降低整个模型的偏差。
learning_rate
接收float。表示每个弱学习器的权重缩减系数,取值范围为0到1,默认为1.0
algorithm
第15页
接收str。选择Adaboost分类算法,可选择的值为“SAMME”和“SAMME.R”,其含义如下 “SAMME”:使用对样本集分类效果作为弱学习器权重 “SAMME.R”:使用对样本集分类的预测概率大小作为弱学习器权重 默认为“SAMME.R”
GBDT在GB算法的基础上,通过损失函数的负梯度的进行损失误差的拟合,从而解决分类 回归问题。
第17页
Boosting——GBDT算法的数据输入
GBDT算法的输入要求
训练数据集。 基于决策树算法的弱分类器。
第18页
Boosting——GBDT算法的输出
GBDT算法通过模型训练后的输出为强分类器。
重复步骤(2)和步骤(3)多次,每一次输入数据对应一棵决策树,即可得到随机森林,用 于对预测数据进行决策。 选择输入的训练数据后,多棵决策树也随之构建成功。
• 对预测数据进行预测,输入一个待预测数据,会有多棵决策树同时进行决策,最后采用 多数投票的方式进行类别的决策。
第21页
Boosting——GBDT算法的应用
GBDT算法的应用
GBDT算法几乎可用于所有回归问题,包含线性和非线性的回归问题,也可以用于二分类问 题。
第22页
Boosting——GBDT算法的应用实例
Python机器学习库scikit-learn的ensemble模块提供的GradientBoostingClassifier类用于构建 GBDT模型。
集成学习
• 集成学习是组合多个弱分类器,得到一个更好且更全面的强分类器,即将多个分 类器聚集在一起,以提高分类的准确率。
• 这些分类器可以是不同的算法,也可以是相同的算法。如果把单个分类器比作一 个决策者,那么集成学习的方法就相当于多个决策者共同进行一项决策。
第2页
集成学习算法
集成学习的作用
将多个弱分类器合并,实现更好的效果。
Boosting——GBDT算法
GBDT全称为Gradient Boosting Decision Tree(梯度提升迭代决策树),是一种基于迭代所构造的决 策树算法,这种算法在实际问题中将生成多棵决策树,并将所有树的结果进行汇总而得到最终答案。 所以该算法将决策树与集成思想进行了有效的结合。 GBDT是由梯度提升(Gradient Boosting,GB)算法而来。
第23页
Boosting——GBDT算法的应用实例
GradientBoostingClassifier的主要参数及其说明
参数名称
说明
接收str。表示算法中的损失函数,可选择的值为“deviance”和“exponential”,其含义如下
loss
“deviance”:对数似然损失函数 “exponential”:指数损失函数
第30页
Bagging——随机森林算法
决策树的构建 • 在构造每棵决策树的过程中,按照选取最小的基尼系数进行分裂节点的选取,然后进行 决策树的构建。 • 决策树的其他结点都采取相同的分裂规则进行构建,直至该节点的所有训练样本都属于 同一类或达到树的最大深度。
第31页
Bagging——随机森林算法
数据过小时则会导致训练不充分,而集成学习可以利用Bootstrap方法进行抽样, 得到多个数据集,分别训练多个模型后再进行组合。如此便可提高训练的准确度 和速度,使得之前很难利用的数据得到充分的利用。
第4页
集成学习算法
将多个模型进行融合。
对于存在多个异构的特征集的时候,很难进行融合,可以考虑使用集成学习的 方式,将每个数据集构建一个分类模型,然后将多个模型进行融合。
第7页
Boosting——Adaboost算法
Adaboost是Boosting中较为代表的算法,基本思想是通过训练数据的分布构造一个分类器,然后通 过误差率求出这个弱分类器的权重,通过更新训练数据的分布,迭代进行,直至达到迭代次数或者 损失函数小于某一阈值。 由于Adaboost属于Boosting中的算法,采用的是加权模型,对每个学习器的输出结果加权处理,只
会得到一个输出预测结果,所以标准的Adaboost只适用于二分类任务。
第8页
Boosting——Adaboost算法的数据输入
Adaboost算法的输入要求
训练数据集。 各个弱分类器。
第9页
Boosting——Adaboost算法的输出
Adaboost算法通过模型训练后的输出为强分类器。
第16页
Boosting——GBDT算法
GB算法的主要思想
在之前建立模型的损失函数的梯度下降方向上建立新的模型。
损失函数
损失函数是评价模型性能(一般为拟合程度+正则项),认为损失函数越小,性能越好。 让损失函数持续下降,可以使得模型不断调整提升性能,其最好的方法是使损失函数沿着
梯度方向下降。
第10页
Boosting——Adaboost算法的优缺点
Adaboost算法的优点
可以将不同的分类算法作为弱分类器。 很好的利用了弱分类器进行级联。 具有很高的精度。
第11页
Boosting——Adaboost算法的优缺点
Adaboost算法的缺点
容易受到噪声干扰。 训练时间过长。 执行效果依赖于弱分类器的选择。
默认为“deviance”
learning_rate n_estimators
接收float。表示每个弱学习器的权重缩减系数,取值范围为0到1,默认为0.1 接收int。表示弱学习器的最大迭代次数,默认为100
subsample
接收float。表示是否子采样,如果取值为1,则全部样本都使用,如果取值小于1,则只有一部分样本 会去做GBDT的决策树拟合。选择小于1的比例可以减少方差,即防止过拟合,但是会增加样本拟合的 偏差,因此取值不能太低。推荐在[0.5, 0.8]之间,默认为1.0