智能计算平台应用开发(中级)-第8章-机器学习基础算法建模-集成学习算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第8章机器学习基础算法建模
目录
1.机器学习
2.分类算法
3.回归算法
4.集成学习算法
5.聚类算法
6.关联规则算法
7.智能推荐算法
l 在机器学习的有监督学习算法中,目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往达不到理想状态,有时只能得到多个有偏好的模型(弱分类器,在某些方面表现较好)。
•集成学习是组合多个弱分类器,得到一个更好且更全面的强分类器,即将多个分
类器聚集在一起,以提高分类的准确率。
•这些分类器可以是不同的算法,也可以是相同的算法。如果把单个分类器比作一
个决策者,那么集成学习的方法就相当于多个决策者共同进行一项决策。
集成学习
l集成学习的作用
将多个弱分类器合并,实现更好的效果。
l分类器间存在一定的差异性,会导致分类的边界不同,可以理解为分类器是一个比较专精的专家,它有它自己一定的适用范围和特长。
l通过一定的策略将多个弱分类器合并后,即可拓展模型的适用范围,减少整体
的错误率,实现更好的效果。
l 数据过大时会导致训练一个模型太慢,而集成学习可以分别对数据集进行划分和有放回的操作,从而产生不同的数据子集,再使用数据子集训练不同的分类器,
最终再将不同的分类器合并成为一个大的分类器。
l 数据过小时则会导致训练不充分,而集成学习可以利用Bootstrap 方法进行抽样,得到多个数据集,分别训练多个模型后再进行组合。如此便可提高训练的准确度
和速度,使得之前很难利用的数据得到充分的利用。集成学习在各个规模的数据集上都有很好的策略。
将多个模型进行融合。
l对于存在多个异构的特征集的时候,很难进行融合,可以考虑使用集成学习的方式,将每个数据集构建一个分类模型,然后将多个模型进行融合。
l目前常见的集成学习算法p Boosting
p Bagging
Boosting •Boosting 方法是一种用于提高弱分类器准确度的方法,这种方法从原始训练数
据出发,通过调整训练数据的概率分布(权值分布)来生成多个子分类器,多
个子分类器的产生是有序的,即一个分类器依赖于前一个分类器,并且着重关
注于前一个分类器错误分类的样本,提升错误分类样本的权重,由于新的分类
器重点关注错误分类的样本,生成新的分类器的过程中就会不断的降低误差,
从而降低整个模型的偏差。
Boosting
Boosting——Adaboost算法
l Adaboost是Boosting中较为代表的算法,基本思想是通过训练数据的分布构造一个分类器,然后通过误差率求出这个弱分类器的权重,通过更新训练数据的分布,迭代进行,直至达到迭代次数或者
损失函数小于某一阈值。
l由于Adaboost属于Boosting中的算法,采用的是加权模型,对每个学习器的输出结果加权处理,只会得到一个输出预测结果,所以标准的Adaboost只适用于二分类任务。
Boosting——Adaboost算法的数据输入l Adaboost算法的输入要求
p训练数据集。
p各个弱分类器。
Boosting——Adaboost算法的输出l Adaboost算法通过模型训练后的输出为强分类器。
l Adaboost算法的优点
可以将不同的分类算法作为弱分类器。
很好的利用了弱分类器进行级联。
具有很高的精度。
l Adaboost算法的缺点
容易受到噪声干扰。
训练时间过长。
执行效果依赖于弱分类器的选择。
Boosting——Adaboost算法的应用Adaboost算法主要应用方向
用于特征选择;
用于做分类任务的baseline;
用于对badcase的修正。
l Python机器学习库scikit-learn的ensemble模块提供的AdaBoostClassifier类用于构建Adaboost 模型。
l AdaBoostClassifier类基本使用语法
sklearn.ensemble.AdaBoostClassifier(base_estimator=None, n_estimators=50, learning_rate=1.0, algorithm='SAMME.R', random_state=None)
l AdaBoostClassifier 类的主要参数及其说明
参数名称
说明base_estimator
接收object 。表示选择的分类学习器,默认为“DecisionTreeClassifier ”n_estimators 接收int 。表示弱学习器的最大迭代次数,默认为50
learning_rate 接收float 。表示每个弱学习器的权重缩减系数,取值范围为0到1,默认为1.0
algorithm 接收str 。选择Adaboost 分类算法,可选择的值为“SAMME ”和“SAMME.R ”,其含义如下“SAMME ”:使用对样本集分类效果作为弱学习器权重
“SAMME.R ”:使用对样本集分类的预测概率大小作为弱学习器权重
默认为“SAMME.R ”
l GBDT全称为Gradient Boosting Decision Tree(梯度提升迭代决策树),是一种基于迭代所构造的决策树算法,这种算法在实际问题中将生成多棵决策树,并将所有树的结果进行汇总而得到最终答案。
所以该算法将决策树与集成思想进行了有效的结合。
l GBDT是由梯度提升(Gradient Boosting,GB)算法而来。