集成学习方法bagging,boosting,stacking
-
Bagging bootstrap aggregation的简写。
- 使用场景:model 很复杂,担心会overfit,减低variance.
- Bagging是有放回的抽样,并且每个自己的样本数量必须和原样本数量一致,允许子集存在重复数据
- 使用__多数投票__、__求均值__的方式来统计最终分类结果。
-
- Random forest
- bagging of decision tree
- 决策树做分支的时候,考虑的是所有的属性。而随机森林分支的时候是对随机选出的属性做分类。
- 样本随机,选择特征随机
- 示例, 初音形状的分类
-
- Boosing ——improving weak classifiers 能够将弱学习器转化为强学习器的一类算法
- 提升学习是一种机器学习技术,可以用于回归和分类问题。它每一步产生弱预测模型 (如决策树),并加权累加到总模型中
- Framework of boosting
- Obtain the first classifier f1( x)
- Find another function f2( x) to help f1(x) 找出f2和f1互补, f1,f2要非常不同
- Obtain the second classifier f2(x)
- f3与f2互补......Finally, combining all the classifiers
- The classifiers are learned sequentially.
- Training on different dataset
- 不同模型在Boosting处理过程中的差异体现在根据效果更改数据这一步。
- Re-sampling and Re-weighting training data to form a new set
-
Adaboost
-
-
-
找到f2, 思路 - u1n,weight 开始一样的。
- error rate = 分类结果错误 +1 ,乘 u1 , 加起来的总和 , 除以 u1n的总和,normalize
- f1的 error rate 小于 0.5, 如果大于0.5, 反过来。
- 权重u2 使得 error rate = 0.5
计算f2的 u2, 对于每个x
权重u 分类错误×d1,分类正确除以d1,
求d1
为了方便用一个公式来表示, 加入ln,
使用ut+1 = ut × exp(正负1×at)表示
error rate 越小, 权重越大。
- Adaboost example 三棵树, 使用 weak classifier decision stump(单层决策树)
-
- 现象, training data 的几个weak classifier 的 error rate 变成0, 但是随着树的增加, test error rate 会越来越小。随着error rate 变成0, 还要多增加T进行训练
-
H(x)决策函数, y 和 g(x) 同号说明判断正确,所以g(x)越大越好,对结果影响更大。
黄色是adaboost 的 upperbound, 可以证明它会随着T increase 越来越小。随着margin的 增加, upperbound越来越小。
-
- Gradient Boosting
- boosting 的general的演算法。
- 优点是可以任意更改object function,创建不同的boosting方法
- 目标函数 (object function) = 损失函数 (loss function) = 代价函数 (cost function)
-
一般的Gradient Boosting
将损失定义为任意函数的boosting就是Gradient Boosting。
直接优化上式是一个很困难的任务,我们只能退而求其次
对于任意损失函数L(y,F(x)),在第m步,
这时我们想想梯度下降法求函数极值的过程,考虑,回忆梯度下降法,我们每步的迭代方向为负梯度方向,即有 这样我们就只要每次训练θm是得上式想等,就可以进行更新 这就是所谓的每次预测负梯度方向 - 下面可以略过。。。。。
-
-
- Stacking
- Stacking简单理解就是讲几个简单的模型,一般采用将它们进行K折交叉验证输出预测结果,然后将每个模型输出的预测结果合并为新的特征,加上正确的label,并使用新的模型加以训练。第二层会选择简单点的模型, 如logistic regression
这个 例子讲的很清楚 https://blog.csdn.net/wstcjf/article/details/77989963