zoukankan      html  css  js  c++  java
  • 集成学习

    一.相关概念

    1.集成思想:我们的目标是探寻数据的规律,试图找到一个模型,通过学习数据来增强模型表现数据真实规律的性能,但是,我们是不知道数据真实规律对应的模型的,我们只是假设一个能够表现数据的模型,然后通过训练数据来改善它,即使到最后,这个模型也不能完完全全表现数据,不能表现的部分也就是误差,因此,总结以上:一个模型能够学习到数据的一部分特点(模型的偏向),但总是学不会所有特点,因为它是我们的假设,并非真实,我们能做到不过是尽量减少真实数据规律与模型所表现的数据规律之间的差距,于是有了集成学习:每个模型能够学到数据的一部分特点,利用各种方法组合多个模型来表现数据的真实规律,这样,多个模型组成的一个整体的模型也就能表现数据更多的特点,尽量接近真实,同时也减少了模型偏向带来的不稳定性。

    2.集成学习(Ensemble Learning):通过构建并结合多个学习器来完成学习任务。

    3.集成学习的精度依赖于各个模型的精度:每个模型学习数据的一部分特点,

    (1)若每个模型都只能学到一小部分数据特点,则就算用来集成方法,最后的集成模型的精度也不会太高,所以每个模型的精度也应该尽量高,模型应该尽量好

    (2)若模型都一样,学到的数据特点一致,则集成方法就无意义了,若这些模型学习的特点不一样,则整个集成模型的精度就越高,也就是说模型之间要尽量有差异

    4.集成方法的分类:每个小的模型也被称为组件,根据组合组件的方法不同,分为串行方法-boosting;并行方法-bagging和随机森林

    二.串行方法

    1.串行方法:每个组件间相似,存在强依赖关系,必须串行生成的序列化方法

    2.基本思想:先选择一个较好的组件,让它学习数据的大部分特点,从而也就有未学到的数据特点,然后用相似的组件来学习这部分未学到的数据特点,又会得到更小的未学到的数据特点,重复该过程直至某个条件停止,这样,数据的真实规律就被一点点学得,由于组件相似,串行学习,所以相当于对一个组件性能的提升-boosting,最后的模型是所有组件的权重相加,因为组件相似可加

    3.具体方法:

    (1)AdaBoost(Adaptive boosting):数据未被学到的特点以训练数据的角度考虑,通过赋予失败训练数据较大的权重,来提高对之前未学到的数据特点的学习程度。每一次迭代改变训练数据的权值分布,不同模型也能学到不同的数据特点,不易发生过拟合。整个模型一般是各个组件的线性组合,多用于二分类问题

    (2)GBDT(Gradient Boost Decision Tree):数据未被学到的特点以预测值的角度考虑,以损失函数的负梯度值作为残差的近似值,通过不断学习来提高模型性能

    4.特点:重点关注降低偏差,通过提高拟合能力降低偏差,从而提高泛化能力,而且由于串行的特性,不易过拟合

    三.并行方法

    1.并行方法:每个组件不存在强依赖关系,可同时并行生成

    2.基本思想:同时并行生成一些组件,这些组价都能体现数据的部分特点,由于这些组件并不完全相同,所以学到的数据特点有不同,也有相同,整个模型是把这些组件的结果组合起来作为最终的预测,整个模型表现的数据特点就是所有组件的交集

    3.具体方法:

    (1)Bagging:从训练数据的角度出发,bagging是有放回的样本采样方法,通过对原训练集采样得到若干个子训练集,用不同组件进行学习数据特点,再通过某种方法预测模型结果,实质是提取所有组件学到的数据共性,也就是相当于提高了数据预测的稳定性,关注点在于降低方差,常用于易受数据扰动的组件上(比如神经网络,决策树),可用于多任务、回归问题上。而且由于是bagging,可以对泛化性能进行包外估计

    (2)随机森林:从预测的角度,对一个训练集训练出一些决策树,通过这些树进行预测,把所有预测结果作平均或投票处理作为最终模型的预测,引入了随机性,采取并行的方法,相当于对于模型的训练做了蒙特卡洛模拟,提高了预测的稳定性

    4.特点:根据数据有随机变量的特性,用类似蒙特卡洛模拟的方法来降低模型预测的随机性,提高模型预测的稳定性,也就是降低方差,提高泛化能力

    四.结合策略

    1.多个组件结合的策略,多个组件结合能够有效降低单组件承担的风险,因为不可能所有的组件都很差,而且增加了能够学习的数据特点,不管它是否是我们要的

    2.主要方法

    (1)数值平均法:组件差异大用加权平均,组件差异小用一般平均

    (2)投票法:绝大多数、加权多数、相对多数--可能涉及概率

    (3)学习法:stacking:用一个学习器来对所有组件的输出进行处理,所有组件的输出作为该学习器的输入,该学习器的输出作为模型的预测

    五.增强组件之间的多样性:引入随机性:数据扰动的影响(训练集不同)、输入属性的扰动(特征不同)、输出表示的扰动(标签不同)、模型参数的扰动(模型不同)

  • 相关阅读:
    Mysql 数据库学习笔记03 存储过程
    Mysql 数据库学习笔记02 编程
    Mysql 数据库学习笔记01查询
    Struts2学习笔记04 之 拦截器
    Struts2学习笔记03 之 Result组件
    Group by与having理解
    Spring Assert断言工具类
    字符集、编码
    hibernate中Query的list和iterator区别(续)
    hibernate中Query的list和iterator区别
  • 原文地址:https://www.cnblogs.com/yu-liang/p/12853950.html
Copyright © 2011-2022 走看看