当前位置:文档之家› 智能计算平台应用开发(中级)-第8章-机器学习基础算法建模-集成学习算法

智能计算平台应用开发(中级)-第8章-机器学习基础算法建模-集成学习算法

第8章￿机器学习基础算法建模目录1.机器学习2.分类算法3.回归算法4.集成学习算法5.聚类算法6.关联规则算法7.智能推荐算法l 在机器学习的有监督学习算法中,目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往达不到理想状态,有时只能得到多个有偏好的模型(弱分类器,在某些方面表现较好)。

•集成学习是组合多个弱分类器,得到一个更好且更全面的强分类器,即将多个分类器聚集在一起,以提高分类的准确率。

•这些分类器可以是不同的算法,也可以是相同的算法。

如果把单个分类器比作一个决策者,那么集成学习的方法就相当于多个决策者共同进行一项决策。

集成学习l集成学习的作用将多个弱分类器合并,实现更好的效果。

l分类器间存在一定的差异性,会导致分类的边界不同,可以理解为分类器是一个比较专精的专家,它有它自己一定的适用范围和特长。

l通过一定的策略将多个弱分类器合并后,即可拓展模型的适用范围,减少整体的错误率,实现更好的效果。

l 数据过大时会导致训练一个模型太慢,而集成学习可以分别对数据集进行划分和有放回的操作,从而产生不同的数据子集,再使用数据子集训练不同的分类器,最终再将不同的分类器合并成为一个大的分类器。

l 数据过小时则会导致训练不充分,而集成学习可以利用Bootstrap 方法进行抽样,得到多个数据集,分别训练多个模型后再进行组合。

如此便可提高训练的准确度和速度,使得之前很难利用的数据得到充分的利用。

集成学习在各个规模的数据集上都有很好的策略。

将多个模型进行融合。

l对于存在多个异构的特征集的时候,很难进行融合,可以考虑使用集成学习的方式,将每个数据集构建一个分类模型,然后将多个模型进行融合。

l目前常见的集成学习算法p Boostingp BaggingBoosting •Boosting 方法是一种用于提高弱分类器准确度的方法,这种方法从原始训练数据出发,通过调整训练数据的概率分布(权值分布)来生成多个子分类器,多个子分类器的产生是有序的,即一个分类器依赖于前一个分类器,并且着重关注于前一个分类器错误分类的样本,提升错误分类样本的权重,由于新的分类器重点关注错误分类的样本,生成新的分类器的过程中就会不断的降低误差,从而降低整个模型的偏差。

BoostingBoosting——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 。

表示弱学习器的最大迭代次数,默认为50learning_rate 接收float 。

表示每个弱学习器的权重缩减系数,取值范围为0到1,默认为1.0algorithm 接收str 。

选择Adaboost 分类算法,可选择的值为“SAMME ”和“SAMME.R ”,其含义如下“SAMME ”:使用对样本集分类效果作为弱学习器权重“SAMME.R ”:使用对样本集分类的预测概率大小作为弱学习器权重默认为“SAMME.R ”l GBDT全称为Gradient Boosting Decision Tree(梯度提升迭代决策树),是一种基于迭代所构造的决策树算法,这种算法在实际问题中将生成多棵决策树,并将所有树的结果进行汇总而得到最终答案。

所以该算法将决策树与集成思想进行了有效的结合。

l GBDT是由梯度提升(Gradient Boosting,GB)算法而来。

l GB算法的主要思想p在之前建立模型的损失函数的梯度下降方向上建立新的模型。

l损失函数p损失函数是评价模型性能(一般为拟合程度+正则项),认为损失函数越小,性能越好。

p让损失函数持续下降,可以使得模型不断调整提升性能,其最好的方法是使损失函数沿着梯度方向下降。

l GBDT在GB算法的基础上,通过损失函数的负梯度的进行损失误差的拟合,从而解决分类回归问题。

Boosting——GBDT算法的数据输入l GBDT算法的输入要求p训练数据集。

p基于决策树算法的弱分类器。

Boosting——GBDT算法的输出l GBDT算法通过模型训练后的输出为强分类器。

l GBDT算法的优点预测的精度高。

适合低维数据。

可以处理非线性数据。

可以灵活处理各种类型的数据,包括连续值和离散值。

使用一些健壮的损失函数,对异常值的鲁棒性非常强。

l GBDT算法的缺点由于弱学习器之间存在依赖关系,难以并行训练数据。

如果数据维度较高时,会加大算法的计算复杂度。

执行效果依赖于弱分类器的选择。

Boosting——GBDT算法的应用l GBDT算法的应用p GBDT算法几乎可用于所有回归问题,包含线性和非线性的回归问题,也可以用于二分类问题。

l Python机器学习库scikit-learn的ensemble模块提供的GradientBoostingClassifier类用于构建GBDT模型。

l 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)l GradientBoostingClassifier 的主要参数及其说明参数名称说明loss 接收str 。

表示算法中的损失函数,可选择的值为“deviance ”和“exponential ”,其含义如下“deviance ”:对数似然损失函数“exponential ”:指数损失函数默认为“deviance ”learning_rate 接收float 。

表示每个弱学习器的权重缩减系数,取值范围为0到1,默认为0.1n_estimators 接收int 。

表示弱学习器的最大迭代次数,默认为100subsample接收float 。

表示是否子采样,如果取值为1,则全部样本都使用,如果取值小于1,则只有一部分样本会去做GBDT 的决策树拟合。

选择小于1的比例可以减少方差,即防止过拟合,但是会增加样本拟合的偏差,因此取值不能太低。

推荐在[0.5, 0.8]之间,默认为1.0•Bagging 全称是bootstrap aggregation ,基本思想是训练多个分类器,各个分类器之间不存在强依赖关系,再对计算结果求平均值。

•随机森林算法是其中的典型代表。

B agg ingl Bagging全称是bootstrap aggregation,基本思想是训练多个分类器,各个分类器之间不存在强依赖关系,再对计算结果求平均值。

l随机森林算法是其中的典型代表。

随机森林算法•随机森林算法是上世纪80年代Breiman等人提出来的,其基本思想是构造很多棵决策树,形成一个森林,再用这些决策树共同决策输出类别是什么。

l在整个随机森林算法的过程中,有两个随机过程。

p第一个是输入数据是随机的从整体的训练数据中选取一部分作为一棵决策树的构建,而且是有放回的选取;p第二个是每棵决策树的构建所需的特征是从整体的特征集随机的选取的。

l这两个随机过程使得随机森林在很大程度上避免了过拟合现象的出现。

l随机森林算法的过程从训练数据中选取n个数据作为训练数据输入。

•一般情况下,n远小于整体的训练数据N,这样就会造成有一部分数据是无法被取到,这部分数据称为袋外数据,可以使用袋外数据做误差估计。

选取了输入的训练数据后,需要构建决策树。

•构建的具体方法是每一个分裂结点从整体的特征集M中选取m个特征构建,一般情况下m远小于M。

决策树的构建•在构造每棵决策树的过程中,按照选取最小的基尼系数进行分裂节点的选取,然后进行决策树的构建。

•决策树的其他结点都采取相同的分裂规则进行构建,直至该节点的所有训练样本都属于同一类或达到树的最大深度。

重复步骤(2)和步骤(3)多次,每一次输入数据对应一棵决策树,即可得到随机森林,用于对预测数据进行决策。

相关主题