集成学习(期末复习)

集成学习

参考:

机器学习-浅谈随机森林的几个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个训练样例中以有放回抽样的方式,抽样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并不侧重任何特定的实例
      • 随机森林

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
      • 加权一次/二次线性模型
      • 其他复杂类:在线学习,深度学习,群体智能

总结

降低了什么数据分类器聚合
baggingvariance有放回的随机抽样 并行不相关的投票=分类 平均= 回归
boostingbias序列化的,有依赖关系相关的弱学习器投票
stackingbias & variance多样的相关的强学习器元学习器


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部