集成学习(期末复习)
集成学习
参考:
机器学习-浅谈随机森林的几个tricks:https://zhuanlan.zhihu.com/p/29408863
机器学习算法之Boosting:https://www.biaodianfu.com/boosting.html
GBDT:https://blog.csdn.net/weixin_42933718/article/details/88421574?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161908832116780357256091%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161908832116780357256091&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-1-88421574.pc_search_result_cache&utm_term=GBDT&spm=1018.2226.3001.4187
集成学习–bagging、boosting、stacking:https://blog.csdn.net/zwqjoy/article/details/80431496
1:集成学习原理
- 原理:将多个个体学习分类器组合在一起,形成一个新的分类器
- 是一个预测模型的元方法
- 特点
- 多个分类器集成在一起,以提高分类的准确性
- 由训练数据构建基分类器,然后根据预测结果进行投票
- 集成学习本身不是一种分类器,而是分类器组合方法
- 集成学习分类器的性能会好于单个分类器
- 单个性能好,差异性较大,就能够很好的提升性能,起正向的作用
- 单个性能好,差异性不大,不能够更好的提升性能,基本不起作用
- 单个性能差,差异性较大,不能提升性能,起副作用
- 举例分析
- 以多数投票法为结合方法,每个二分类器的分类正确率是p
- 则集成分类器的分类正确率是 分类T次, P > 0.5 则
- 求和(T/K) pk(1-p)(T - K) K = T/ 2 + 1
- 当 p > 0.5,且 T 趋向于正无穷,上市为 1
- 准确性和多样性之间的矛盾???
- 核心问题
- 序列集成法
- 基学习器之间有依赖关系,后面的依赖前面生成的学习器
- 减小偏差 bias,中心点选的好
- 并行集成法
- 基学习器是独立的,并行生成
- 减小方差variance,减小波动
- 序列集成法
- 学习和结合策略
- 结合
- 平均(回归)
- 简单平均,或者是加权平均
- 投票法(分类)
- 绝对多数
- 相对多数
- 加权投票
- 学习法(stacking)
- 平均(回归)
- 学习
- 数据层面
- 输入样本的扰动,构建基学习器
- 属性层面
- 随机选择部分属性
- 参数层面
- 算法模型参数的扰动
- 数据层面
- 结合
2:bagging 和随机森林
- 基本原理
- 数据扰动
- 有放回的采样方法,统计的目的是得到统计量的分布以及置信区间
- 从训练集中采用有放回的抽样方法得到多个子训练集,用子训练集训练得到各自的模型,将所有的基模型结合起来,对测试集进行综合的预测。
- 算法
- 随机森林RF
- 用N来表示训练样本的个数,M表示特征的数目,输入特征数目为m,用于确定决策树上一个节点的决策结果;其中m应该远远的小于 M
- 我们有10000 个训练样本,特征数目 是100,输入特征数目是3,
- 用N来表示训练样本的个数,M表示特征的数目,输入特征数目为m,用于确定决策树上一个节点的决策结果;其中m应该远远的小于 M
- 过程
- 从N个训练样例中以有放回抽样的方式,抽样N次,形成一个训练集(bagging)抽样,并用米有抽到的用例做预测,评估其误差。
- 对于每一个节点,随机选择m个特征(通常为M的均方根),根据这m个特征,计算其最佳的分裂方式
- 每棵树都会完整成长而不会剪枝,这有可能在建完一颗正常树状分类器后会被采用几个
- 以上结果做多次,以产生足够多的随机树
- 分析
- 让我们考虑一个回归问题,并且设计每个基算法为 b1(x),b2(x),bn(x),假设存在为所有输入定义的一个真实答案y(x),也就是我们的目标函数,并且数据的分布为p(x),那么我们可以表达每一个回归函数的误差是 bi(x) - y(x)
- 则均方误差Ex(bi(x) - y(x))]^ 2 = Ex[谁他x]^2
- 然后所有的回归函数的平均误差如下
- 为E1 = 1/n 均方误差
- 我们假设所有的误差是无偏差的,并且不相关的
- 则 E(谁他x) = 0
- E(谁他i(X)谁他j(x)) = 0
- 现在让我们构建一个新的回归函数
- a(x) = 1 / n (bi(x)求和)
- 我们找到他的均方误差
- 1/ n E1
- 所有基模型的平均误差
- 整体模型的准确率和基模型的准确率相差无几,整体模型的方差收到基模型方差,相关系数和基模型个数的影响,基模型的个数越大,可以降低过拟合。降低基模型之间的相关性,也可以降低模型的过拟合,这既是为什么随机森林采用行和列随机的方式构成树
- 对于boosting来说,基模型的训练集抽样是强相关的,模型的相关系数近似为1,boosting降低bias,增加基模型的个数逼近目标,但是我们也发现boosting的方差是随着基模型的个数逐渐增大的。所以方差也会逐渐的增高。
- bagging优点
- 降低分类器方差,改善泛化
- 其性能主要依赖于基分类器的稳定性,如果基分类器稳定,则误差主要由bias来决定
- 采样概率相同,bagging并不侧重任何特定的实例
- 随机森林
- 随机森林RF
3:boosting 和GBDT,XGBoost
-
PAC学习理论
- 同等条件下,模型越复杂,泛化性能越差
- 能够从假设空间H中学习到一个好的假设h
- 近似正确:泛化性能E(h)足够小
- 可能正确:以多大概率接近近似正确
- 强分类器和弱分类器
- 强分类器和弱分类器等价
- 可通过boosting将弱分类器转化为强分类器
-
Boosting集成学习框架
- 将训练集中所有的数据训练得到基学习器1
- 将基学习器1分类正确的样本减小权重,将基学习器分类错误的样本增加权重,通过数据得到基学习器2
- …………
- 再讲所有的基学习器进行整合,预测测试集
- 提升树
- 初始化f0(x) = 0
- 对于m = 1,2,……M
- 计算残差 rmi = yi - fm-1(x) ,i = 1,2,3,4,……N
- 拟合残差rmi 学习一个回归树,得到hm(x)
- 更新fm(x) = f(m - 1)(x) + h m(x)
- 得到回归问题提升树
- fM(x) = 求和 【1,M】 hm(x)
- 残差
- f(t - 1)(x) -> L(y,f(t-1)) -> ht(x) -> L(y.ft(x)) = L(y,f(t-1)(x) + ht(x))
- 采用平方损失的时候
- L(y,f(t-1)(x) + h(t)(x)) = (y - f(t-1)(x) -h(t)(x))^2
- =(r -ht(x))^2
- 推广到一般的损失,第t轮第i个样本的负梯度
- 梯度提升树GBDT
- 无论是分类还是回归,采用的都是回归树,分类问题是将拟合值转变为概率来进行分类
- 初始化弱分类器
- 循环
- 对每个样本计算负梯度
- 构建新的样本集合
- 根据对树的约束,构建CART树
- 计算叶子区域的最佳拟合数值
- 更新得到强学习器
- 得到最终的强学习器
- 例子
- 样本0:年龄5,体重20,升高1.1
- 样本1:1:7,30,1.3
- 样本2:21,70,1.7
- 样本3:30,60,1.8
- 预测样本:52,65,??米
- 学习的参数:学习率0.1,迭代的次数为5,树的深度是3
- 1:初始化弱分类器,把他设置为均值,为(1.3 + 1.7 + 1.8 +1.1) / 4 = 1.475
- 2:根据残差,构造新的样本集合
- 样本0: - 0.375
- 样本1:-0.175
- 样本2:0.225
- 样本3:0.325
- 构造CART树
- 开始是年龄 < 21 和 >= 21
- 年龄小于7,和大于等于7,年龄小于30,大于等于30
- 拟合残差,rj = 求和(L(yi,f0(xi) + r)
- 更新强学习器
- f1(x) = f0(x) + 阿尔法求和(四个 *I)
- 最后一步f5(x) = f0(x) + m从1到5 ,j从1到4 rjm*I
-
XGBoost
- 是GBDT的一种高效实现
- 目标函数是通过二阶泰勒展开式做近似
- 定义了树的复杂度,并且应用到目标函数中
- 分裂节点处通过结构打分和分割损失动态生长
- 分裂节点的候选集合可以通过一种分布式的Quantile Sketch得到
- 可以处理稀疏,缺失数据
- 可以通过特征的列采样放置过拟合
- 公式推导:略
4:Adaboost
- 综述
- 训练样本集合为{(x1,y1),(x2,y2),(x3,y3),(……,……)}
- 第K个弱分类器的输出样本权重是D = (wk1,wk2,wkn) w ij = 1 / m
- 最开始的时候,权重都是相等的,都是 1/ m
- 以分类问题为例,分类器的误差率和权重系数
- 第K个弱分类器Gk(x) 在训练集上的加权错误率是
- ek = 求和wki * I(Gk(xi) 不等于 yi)
- 第K个弱分类器Gk(x)的权重系数是 ak = 1/ 2 log(1 - ek / ek)
- 则第K + 1 个弱分类 G(k+1)(x)的样本权重是 错误的就大,正确的就小
- adaboost采用加权来表决 sign(从1到k 样本权重系数 参数权重系数)*
5:其他
- 学习法,stacking算法原理
- 对于model1,将训练集D分为K份,对于每一份,用剩余的数据集训练模型,然后预测出这一份的结果
- 重复上述的步骤,直到每一份都预测出来,得到次级模型的训练集
- 得到K份测试集,平均后得到次级模型的测试集
- 上述重复N次,得到model1,model2,modelM,得到M维的数据
- 选定次级模型,进行训练预测,一般这一层最后一层使用LR(逻辑回归)
- 例子
- 训练集有1000个样本,分为10份,0-99,100-199……,900-999
- model1:用100-999作为训练集,用0-99做测试集,得到结果
- 重复上面的行为,直到每一份都被预测出来~得到次级模型的训练集?
- 堆栈泛化
- 使用第一阶段level0的预测作为下一层预测的特征,比起相互独立的预测模型能够有更强的非线性表述能力,降低泛化误差
- 他的目标是同时降低机器学习模型的bias - variance
- 学习器
- 统计方法:投票,平均
- 容易解释的学习方法类:LR,C45/CART
- 非线性学习算法类:SGVOOST
- 加权一次/二次线性模型
- 其他复杂类:在线学习,深度学习,群体智能
总结
| 我 | 降低了什么 | 数据 | 分类器 | 聚合 |
|---|---|---|---|---|
| bagging | variance | 有放回的随机抽样 并行 | 不相关的 | 投票=分类 平均= 回归 |
| boosting | bias | 序列化的,有依赖关系 | 相关的弱学习器 | 投票 |
| stacking | bias & variance | 多样的 | 相关的强学习器 | 元学习器 |
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
