集成学习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
集成学习
1.集成学习简介
1)通过构建并结合多个学习器来完成学习任务:先产生一组“个体学习器”(individual learner),再用某种策略将它们结合起来。其中每个IL由一个现有的学习算法从训练数据中产生,如:C4.5决策树算法、BP神经网络等。
2)性能:集成学习器的能力和个体学习器有很大关系,个体学习器本身在具有一定“准确性”的同时,还要有“多样性”,学习器间要具有差异。产生并结合“好而不同”的个体学习器恰恰是集成学习的核心
3)基学习器
第一种就是所有的个体学习器都是一个种类的,或者说是同质的。比如都是决策树个体学习器,或者都是神经网络个体学习器。第二种是所有的个体学习器不全是一个种类的,或者说是异质的。
本文所讲得Boosting和Bagging方法的基学习器都是同质的。
其中:
Boosting方法的个体学习器间存在强依赖关系、必须串行生成的序列化方法。集成方式一般为加权和,分类器权重并不相等,使用所有样本。
Bagging方法的个体学习器间不存在强依赖关系、可同时生成的并行化方法,集成方式
“随机森林(Random Forest)”。为投票,分类器权值是一样的,随机抽取部份样本。如Bagging、
2.Boosting和Bagging学习策略
a.Boosting
这是一族可将弱学习器提升为强学习器的算法
工作机制:先从初始训练集中训练出来一个基学习器,然后根据表现,对训练样本进行调整,是基学习器之前做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器,如此反复,直到基学习器数目达到事先指定的值T,最终将这T 个基学习器进行加权结合。
目前有很多种类,如AdaBoost、Generalized Boosted Models、XGBoost、lightgbm等。
b.Bagging
1)从样本集D中用Bootstrap采样选出n个样本(有放回),执行m次,选出m个样本子集{D1,D2,...,Dm}
2)在所有属性上,分别对应这m个样本子集建立m个学习器{h1(x),h2(x),...,hm(x)}
3)将这m个学习器放在各自的训练数据上进行学习
4)通过投票法或平均法对这m个学习器进行结合20.
3.GBDT(梯度提升决策树)
a特征
该算法由多棵决策树组成,所有树的结论累加起来做最终答案。GBDT中的树是回归树(不是分类树),GBDT用来做回归预测,调整后也可以用于分类。
b优势
GBDT的思想使其具有天然优势可以发现多种有区分性的特征以及特征组合。业界中,Facebook使用其来自动发现有效的特征、特征组合,来作为LR模型中的特征,以提高CTR 预估(Click-Through Rate Prediction)的准确性。
c分类树和回归树
分类树使用信息增益或增益比率来划分节点;每个节点样本的类别情况投票决定测试样本的类别。回归树使用最小均方差划分节点;每个节点样本的均值作为测试样本的回归预测值。
均方差:
其中,y为标签,c为预测结果。
基尼指数:211=(1)1K K k k
k k k G p p p ==-=-∑∑(p ),基尼指数越小,效果越好(当前分类样本
的不确定性越小)。 d 提升树算法
提升树是迭代多棵回归树来共同决策。当采用平方误差损失函数时,每一棵回归树学习的是之前所有树的结论和残差,拟合得到一个当前的残差回归树,残差的意义如公式:残差 = 真实值 - 预测值 。提升树即是整个迭代过程生成的回归树的累加。
举例:
训练集是4个人,A ,B ,C ,D 年龄分别是14,16,24,26。样本中有购物金额、上网时长、经常到百度知道提问等特征。提升树的过程如下:
图(1)
算法流程:
其中,M 表示有M 个特征。
e.GBDT(Gradient Boosting Decision Tree)梯度提升决策树
利用损失函数的负梯度在当前模型的值,作为回归问题中提升树算法的残差的近似值,拟合一个回归树。让损失函数持续下降,就能使得模型不断改性提升性能。
其中,m为第m棵树。N表示样本个数。j表示决策特征(例如图(1)中的第一棵树将购物金额是否大于1k为分割特征)。
算法1步获得使得损失函数最小的常数估计值,是一个只有根节点的树。在2.1步计算损失函数的负梯度在当前模型的值,将它作为残差估计。在2.2步估计回归树的叶结点区域,来拟合残差的近似值。在2.3步利用线性搜索估计回归树叶结点区域的值,使损失函数最小化。2.4更新回归树。第3步获得输出的最终模型。
Eg:为什么损失函数是绝对值损失函数或huber函数,优化就变难了呢?
当损失函数是MSE时,直接求出最优解需要满足X是列满秩的(X表示训练特征矩阵),而且求矩阵的逆比较慢,因此最小二乘法求解存在局限性,可以采用梯度下降法近似求解。
“残差= 真实值- 预测值” 只是负梯度在平方损失函数上的特例。在别的损失函数上,残差就不是这么计算了。
4.Adaboost
AdaBoost Algorithm:
1、初始化样本权值分布
2、基于分布Dt从数据集D中训练处分类器ht
3、估计ht的误差 err.
4、确定分类器ht的权重
5、更新样本分布,其中Zt是规范化因子,以确保Dt+1是一个分布
具体过程见《统计学习方法》P138
AdaBoost应用:
1)用于二分类或多分类的应用场景
2)用于做分类任务的baseline:无脑化,简单,不会overfitting,不用调分类器
3)用于特征选择(feature selection)
4)Boosting用于对badcase的修正:只需要增加新的分类器,不需要变动原有分类器5)邮件过滤、文本分类、人脸识别
Adaoost特性:
1)训练的错误率上界,随着迭代次数的增加,会逐渐下降;
2)adaboost算法即使训练次数很多,也不会出现过拟合的问题。