集成学习小结
来源:互联网 发布:matlab求解矩阵方程组 编辑:程序博客网 时间:2024/05/22 05:31
在集成学习中,要想获得好的泛化性能,那么个体学习器应该好而不同。即个体学习器要有一定的准确性,即学习器不能太好,并且要有多样性,即学习器间具于差异。
经过数学推导可知,随着集成中个体分类器数目的增大,集成的错误率将指数级下降,且最终趋向于零。
基学习器的结合策略
一般来说,基学习器的结合策略分为:
一、平均法;
1)简单平均法;
2)加权平均法。
其中简单平均法很简单,
即
而加权平均法是实际中用得比较多的。即
而加权平均法的权重一般从训练数据中学习而得(回想下Adaboost)。然而,现实任务中的训练样本通常不充分或者噪声,这将使得学出的权重不完全可靠。尤其是对规模比较大的集成来说,要学习的权重比较多,这不仅会带来很大的计算开销,还会容易导致过拟合。因此,实验和应用均显示出,加权平均法不一定优于简单平均法。一般来说,在个体学习器性能差异(注意是性能,不是多样性)较大时,宜使用加权平均法;而在个体学习器性能相近时,宜使用简单平均法。
二、投票法
1)绝对多数投票法;
2)相对多数投票法;
3)加权投票法。
其中绝对多数投票法,只有在某标记得票过半数时,才预测为该标记;否则拒绝预测;
而相对多数投票法的话,即预测为投票最多的标记;若同时有多个标记获得最高票,则从中随机选择一个。
在实际中,因为绝对多数投票法有拒绝预测这一性质。因此,在可靠性要求较高的学习任务中,这是一种非常好的机制。
三、学习法
当训练数据很多时,一种更为强大的结合策略是使用学习法。Stacking是学习法的典型代表。
需要注意的是:
这里很多多同学可能有疑问,这样搞了之后,次级训练集的个数会不会少了很多呢?答案是不会的,因为Zi是一个集合,所以次级训练集的个数按道理来说是和初级训练集的个数是一样的。其次,因为训练集经过了一次变化,所以初级训练集和次级训练集是完全不同的。所以也不会增加过拟合的风险。
基学习器的性能分析
基学习器的多样性分析。
我们在上面提到过,想要构建泛化能力强的集成,个体学习器应该“好而不同”。经过“误差-分歧分解”之后,我们可以得到这么一个结论:个体学习器准确性越高、多样性越大,则集成性能越好。
在度量基学习器的多样性时,我们引入了“不合度量(disaggreement measure)”,“相关度量(correlation coefficient)”、“Q-统计量(Q-statistic)”、“k-统计量(k-statistic)”等指标。
这些“成队形”性指标,可以很容易的在2维图上表示出来。例如,著名的“k-误差图”
其中横轴的k值代表两个基分类器的相似程度,0代表在数据集上偶然一致,1代表在数据集上完全一致。显然,数据点云的位置越高,则个体分类器的准确性越低;点云的位置越靠右,则个体学习器的多样性越小。所以,理想的情况是要分布在二维平面的左下角是比较好的。
如何增强个体学习器的多样性
一般来说,增强基学习器的多样性的一般做法是在学习过程中引入随机性,通常分为四种做法:
一、数据样本扰动
二、输入属性扰动
三、输出表示扰动
四、算法参数扰动
最后
需要指出的是,由于集成包含多个学习器,即使个体学习器有较好的可解释性,集成仍是黑箱模型。
参考文章
机器学习-周志华-第八章
- 【集成学习】原理小结
- 集成学习原理小结
- 集成学习原理小结
- 集成学习小结
- [学习小结]Mybaits与Spring的集成
- 集成学习之Adaboost算法原理小结
- 集成学习之Adaboost算法原理小结
- 集成学习之Adaboost算法原理小结
- 集成学习之Adaboost算法原理小结
- 集成学习之Adaboost算法原理小结
- 持续集成学习笔记-入门篇(10)小结
- Storm学习小结(二)——集成JDBC和Redis
- 【集成学习】scikit-learn Adaboost类库使用小结
- 【集成学习】Bagging与随机森林算法原理小结
- 【集成学习】scikit-learn随机森林调参小结
- 集成环境注意事项小结
- iis集成验证小结
- 集成类项目小结
- JS实现继承的几种方式
- 帝国cms动态获取文章内容点击数
- maven构建web项目
- 闭包题目
- N的阶乘N!中的末尾有多少个0?
- 集成学习小结
- C语言(一)--其他关键字
- 工作所用的git常用命令
- 数据结构 P43 算法实现 两个一元多项式相乘
- html&css
- vs新建项目时出现“异常来自HRESULT: "问题解决方法
- spring事件(三)--自定义事件
- 卡方检验思想及其应用
- org.apache.ibatis.reflection.ReflectionException: Error instantiating class