【任务一 随机森林算法梳理】
- 集成学习概念
集成学习简单理解就是指采用多个分类器对数据集进行预测,从而提高整体分类器的泛化能力。换个角度考虑,训练完成之后就可以看成是单独的一个”假设”(或模型),只是该”假设”不一定是在原”假设”空间里的。因此,Ensemble方法具有更多的灵活性。理论上来说,Ensemble方法也比单一模型更容易过拟合。但是,实际中有一些方法(尤其是Bagging)也倾向于避免过拟合
集成学习有三个流派:
- boosting流派,它的特点是各个弱学习器之间有依赖关系;
包括了常用的应用:Adaboost、GBDT、xgboost等。
- bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合;
全称为Bootstrap aggregating,装袋法。
- stacking流派, 组合学习器的概念,基本的步骤如下:
1.划分训练数据集为两个不相交的集合。
2. 在第一个集合上训练多个学习器。
3. 在第二个集合上测试这几个学习器
4. 把第三步得到的预测结果作为输入,把正确的回应作为输出,训练一个高层学习器,
- 个体学习器概念
个体学习器的基本内容是,子分类器,基于当前数据而建立的简单弱分类器。
- boosting bagging
- Boosting:
Boosting是一种用来提高弱分类算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数。
Boosting:
- 是一种用来提高弱分类算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数。
- 是一种框架算法,主要是通过对样本集的操作获得样本子集,然后用弱分类算法在样本子集上训练生成一系列的基分类器。
- 可以用来提高其他弱分类算法的识别率,也就是将其他的弱分类算法作为基分类算法放于Boosting 框架中,通过Boosting框架对训练样本集的操作,得到不同的训练样本子集,用该样本子集去训练生成基分类器;
- 每得到一个样本集就用该基分类算法在该样本集上产生一个基分类器,这样在给定训练轮数 n 后,就可产生 n 个基分类器,然后Boosting框架算法将这 n个基分类器进行加权融合,产生一个最后的结果分类器,在这 n个基分类器中,每个单个的分类器的识别率不一定很高,但他们联合后的结果有很高的识别率,这样便提高了该弱分类算法的识别率。
- 在产生单个的基分类器时可用相同的分类算法,也可用不同的分类算法,这些算法一般是不稳定的弱分类算法,如神经网络(BP) ,决策树(C4.5)等。
- 基本思想:
原理:寻找多个识别率不是很高的弱分类算法比寻找一个识别率很高的强分类算法要容易得多,比如AdaBoost 算法的任务就是完成将容易找到的识别率不高的弱分类算法提升为识别率很高的强分类算法,这也是 AdaBoost 算法的核心指导思想所在;
如果算法完成了这个任务,那么在分类时,只要找到一个比随机猜测略好的弱分类算法,就可以将其提升为强分类算法,而不必直接去找通常情况下很难获得的强分类算法。通过产生多分类器最后联合的方法提升弱分类算法,让它变为强的分类算法,也就是给定一个弱的学习算法和训练集,在训练集的不同子集上,多次调用弱学习算法,最终按加权方式联合多次弱学习算法的预测结果得到最终学习结果。包含以下2 点:
1、样本的权重
- AdaBoost 通过对样本集的操作来训练产生不同的分类器,他是通过更新分布权值向量来改变样本权重的,也就是提高分错样本的权重,重点对分错样本进行训练。
- (1) 没有先验知识的情况下,初始的分布应为等概分布,也就是训练集如果有 n个样本,每个样本的分布概率为1/ n。
- (2)每次循环后提高错误样本的分布概率,分错的样本在训练集中所占权重增大,使得下一次循环的基分类器
- 能够集中力量对这些错误样本进行判断。弱分类器的权重最后的强分类器是通过多个基分类器联合得到的,因此在最后联合时各个基分类器所起的作用对联合结果有很大的影响,因为不同基分类器的识别率不同,他的作用就应该不同,这里通过权值体现它的作用,因此识别率越高的基分类器权重越高,识别率越低的基分类器权重越低。权值计算如下:
2、基分类器的错误率:
- e = ∑( ht ( x i) ≠yi) Di (1)
基分类器的权重:Wt = F( e) ,由基分类器的错误