分类、集成、属于Boosting
什么是Boosting?
Boosting是一种广泛应用的集成学习框架,该框架一般的训练过程是依次训练基础模型,并在训练过程中对训练集不断地进行调整,也即当前训练所用的训练集由前一次训练的训练集根据某些策略调整得到,最后将所有基础模型组合起来即为最终得到的模型。
监督学习最优方法之一
AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为向前同步算法时的二类分类学习方法。
优点:泛化错误率低,易编码,可以应用到大部分分类器上,少参数调整。
缺点:对离群点敏感。
适用数据类型:数值型和标称型数据 / 二分类问题、多分类问题、回归问题
概念
强可学习
在概率近似正确学习的框架中,一个概念(类),如果存在一个多项式的学习算法能够学习它,并且正确率很高。
弱可学习
在概率近似正确学习的框架中,一个概念,如果存在一个多项式的学习算法能够学习它,学习的正确率仅比随机猜测略好。
提升方法
从弱学习算法除法,反复学习,得到一系列弱分类器(又称基本分类器),然后组合这些弱分类器,构成一个强分类器
基本思路
问题
每一轮如何改变训练数据的权值或者概率分布
提高前一轮中被错误分类的样本的权值,降低被正确分类的样本的权值。
目的:没有得到正确分类的数据的权值的加大受到后一轮弱分类器的关注。
如何将弱分类器组合成一个强分类器
加权多数表决方法。
加大正确率高的弱分类器,减小正确率低的分类器。
基本思路
先从初始训练集合中训练出一个基学习器,再根据基学习器的表现对训练样本的权重进行调整,使得先前基学习器做错的样本在后续得到更多的关注,然后基于调整后的样本权重来训练下一个基学习器,直到基学习器的数目达到事先指定的数目M,最终将这M个学习器进行加权组合。
步骤
输入:
其中
,
和一个弱学习算法
- 初始化训练数据权值
第m个基分类器的样本权重为:
在此权值上训练弱分类器(策略为最小化分类误差率)
计算分类误差率(误分类样本的权值之和)
其中
为第i个基学习器的系数,
为第i个基学习器。
计算分类器系数(要用到上一步的分类误差率)
更新训练权值->
构建基本分类器的线性组合,一直循环,直到基本分类器的线性组合没有误分类点。
Python代码实现
单决策树生成函数:
1 | from numpy import * |
基于单决策树的Adaboosting训练过程:
1 | # 基于单层决策树的Adaboost训练过程 |
daboost分类函数
1 | # adaBoost分类函数 |
拓展
提升树
是以分类树或回归树为基本分类器的提升方法。
提升树被认为是统计学习中性能最好的方法之一。