《机器学习算法的数学解析与Python实现》读书笔记:第11章 集成学习方法

目录

第11章 集成学习方法

11.1 集成学习方法:三个臭皮匠赛过诸葛亮

11.1.1 集成学习方法与经典机器学习算法的关系

11.1.2 集成学习的主要思想

11.1.3 几种集成结构

11.2 集成学习方法的具体实现方式

11.2.1 Bagging算法

11.2.2 Boosting算法

11.2.3 Stacking算法

11.3 在Python中使用集成学习方法

11.4 集成学习方法的使用场景


第11章 集成学习方法

在学习的时候,我们的注意力也许主要集中在模型本身,如模型的原理、结构以及数学表达式等,但在实际使用中,更值得我们关注的是如何提高预测结果的准确率。选择不同的模型,调节模型的各种参数,是最容易想到的方法,但当前业界采用更多的方法是集成学习方法。集成学习方法关注的不是模型内部的结构,而是模型与模型之间的组织关系。

11.1 集成学习方法:三个臭皮匠赛过诸葛亮

11.1.1 集成学习方法与经典机器学习算法的关系

集成方法并不是一种独立的机器学习算法,而是一套能够把独立的机器学习算法“捏”到一起,共同解决问题的协作框架。

集成学习中把学习器分为两种,一种为“基学习器”(Base Learning),另一种为“弱学习器”(Weak Learning)。如果将多个采用同一种算法的机器学习模块进行组合使用,譬如组合使用3个都才用了Logistic回归算法的机器学习模块,这时的学习器称为“基学习器”;如果不同的机器学习模块并非来源于同一款机器学习算法,譬如将分别实现了决策树、支持向量机算法的两个机器学习模块组合使用,这时的学习器就称为“弱学习器”。

11.1.2 集成学习的主要思想

集成学习不是一种独立的机器学习算法,而是把彼此没有关联的机器学习“集成”起来,以取得更好的效果。

机器学习算法最终取得效果的好坏,与算法本身的复杂度没有关系,只受数据分布的影响。因此,没有绝对好的算法,只有合适的算法,换而言之,任何算法都存在局限性,也即“天生不足”,与其绞尽脑汁让一个不合适的算法发挥潜力,不如干脆集成几款机器学习算法,把问题转化为如何在当前数据分布情况下选用更合适的算法来解决问题。

11.1.3 几种集成结构

1.训练如何集成

总的来说,将机器学习算法用集成学习的方法组织起来,主要有两种组织结构,一种是并联,另一种是串联。

所谓并联,就是训练过程是并行的,几个学习器相对独立地完成预测工作,互相之间既不知道也不打扰彼此。

串联则不同,所谓串联,就是训练过程是串行的,几个学习器串在一起合作完成预测,第一个学习器拿到数据集后完成预测,然后把预测结果以及相关数据传递给第二个学习器,第二个学习器也是在完成预测后把结果和相关数据传递下去。

2.预测如何集成

多个学习器可能会产生多个预测结果,那么怎么将它们整合成一个结果并对外部输出呢?把多个结果整合成一个结果的方法主要有两大类,即平均法和投票法。

平均法又具体分为简单平均法和加权平均法,简单平均法就是先求和然后再求均值,加权平均则多了一步——每个学习器通过训练被分别赋予合适的权值,然后求各个预测结果的加权和,最后再求均值。

第二种方法是投票法,具体分为三种:简单多数投票法、绝对多数投票法和加权投票法。简单多数投票法就是哪个预测结果占大多数,这个结果就作为最终的预测结果。绝对多数投票法就多了一个限制,这个“多数”必须达到半数。加权投票法有点类似加权平均,首先仍然是给不同的学习器分配权值,第二步同样是查看哪个结果占大多数,但这里有一点儿不同,这里的“大多数”是权值相加后再比较得到的大多数,最后再以得票多的作为最终预测结果。

11.2 集成学习方法的具体实现方式

11.2.1 Bagging算法

Bagging算法全称为Bootstrap Aggregation,这是一种并行集成学习方法。在单个模型时,进行训练都是采用全部训练集,采用Bagging集成学习则不同,每个具体的学习器所使用的的数据集以放回的采样方式重新生成,也就是说,在每个学习器生成训练集时,每个数据样本都有同样的被采样概率。训练完成后,Bagging采用投票的方式进行预测。

11.2.2 Boosting算法

Boosting算法是一种串行集成学习方法,Boosting集成学习中学习进行串行训练,也就是第一个学习器完成训练后,第二个学习器才开始训练。与Bagging算法不同,Boosting算法的学习器使用全部训练集进行训练,但后面学习器的训练集会受前面预测结果的影响,对于前面学习器发生预测错误的数据,将在后面的训练中提高权值,而正确预测的数据则降低权值。

11.2.3 Stacking算法

Stacking的学习器分两层,第一层还是若干弱学习器,它们分别进行预测,然后把预测结果传递给第二层,第二层通常只有一个机器学习模型,这个模型将根据第一层的预测结果最终给出预测结果,也就是第二层学习器是基于预测结果的预测。

11.3 在Python中使用集成学习方法

1)RandomForestClassifier类

2)RandomForestRegressor类

3)ExtraTreesClassifier类

4)ExtraTreesRegressor类

5)AdaBoostClassifier类

6)AdaBoostRegressor类

7)GradientBoostingClassfier类

8)GradientBoostingRegressor类

11.4 集成学习方法的使用场景

在Kaggle等机器学习领域竞赛中,今天已经很难看到使用单一模型,然后还能取得良好成绩的选手了,使用集成学习方法、博采众长已经成为大家的共识,在比赛中集成学习使用得好的选手往往都能取得比较好的成绩。在这个深度学习大行其道的时代,其他机器学习算法想要与之一较高下,使用集成学习方法是一种比较可行的策略。

集成学习不是一款别具匠心的机器学习算法,而是一套组合多种机器学习模型的框架,它的适用面很广,可以用于分类问题、回归问题、特征选取和异常点检测等各类机器学习任务。

你可能感兴趣的:(#,机器学习,集成学习,python)