通过整合多个分类器(同质/异质)的结果来提高准确率
同质的:选用不同的分类器,例如svm和决策树
异质的:选用同一种分类器,但是参数、数据等不一样
如何集成?
1.平均
2.带权平均
和带权平均的差别在于:不同的数据经过g(x)得到的权重不同,带权平均的w1,w2.。。是固定的
输出作为下一个模型的输入
5.
6.
综合了多个机器学习器的意见
是不是所有的集成都能提高效果?
不一定
并行的方法:
Bagging
Random Forest
顺序的方法:
Boosting(Adaboost)
Gradient Boosting Decision Trees
一、Parallel Methonds
1.bagging
自主采样
有放回的采样,可能有重复
Bagging:采出t个样本
训练每一个模型
分类:大多数投票
如果自主采样没有选择到的话,就把他扔到测试集里面
0.368是一个数据被当test的概率,因为一次不被选中的概率为
1/N,选N次都没有选中
2.Random Forest
随机森林基于CART
随机森林的模型就是决策树的集成
属性集合是随机找出来的
随机选m个,通常m=log2d ,d是总属性个数
然后在m个属性里做决策树
丢失了可解释性,因为集成了属性也不同,不好解释了
随机森林其实是一种bagging
二、Sequential Methods 序列化方法
1.Boosting
Boosting的机器学习器只要比随机猜(弱学习器)好一些就行
弱学习器 ----> 强学习器
学习器是按顺序的训练的
给每一个样本一个权重
前一个学习器会影响后面的学习器
w是数据集的权重,α是学习器的权重
直觉是错误率越低,α越大
前一个学习器分错的,希望能在后面的学习器把他分对,就给他一个大一些的权重。
最后集成:带权重的大多数投票
指示损失函数和逻辑回归的交叉熵很像
fm - fm-1 = αmym
fm = fm-1+αmym
当分对时,tnym是+1,分错时是-1
假设αm固定
E对α求一个导:
如何更新权重?
归一化:让w的和等于1
后续的分类器会对前面分错的点加强关注
error越小的分类器,α越大
基于决策树桩的机器学习器
给不同的阈值,计算出错误率,找出最小的分割点
第一轮,有三个分错
此时由这两个共同决定
结果又有3个错了
2.gbdt
Gradient Boosting
用残差就相当于square loss,对于模型影响太大,不利于模型
引入负梯度,就可以使用其他的loss
给不同的loss,给出不同的负梯度
给出了Absolute loss 和 Huber loss
GBDT
const:前t-1的复杂度之和
xgboost展开到了二阶导
重新定义一颗树,用w和q
树的集成
树的复杂度:
当选择square loss,残差等价于负梯度
学习率选1
可以用其他的loss
对噪音的处理比较好,没有square loss影响那么大
因为是树(离散),不能求导
所以后来重新定义了一颗树
于是选择了加性训练,一次加一个f(t)
映射—输出—叶的index
权重
找到所有的树结构,枚举,得到最优的
但是现实是无法找到所有的树结构的
于是需要用贪婪策略
用Gain来评测
下面的g1,h1是之前一阶导二阶导那个