集成学习-Majority Voting
认识
集成学习(Ensemble Methods), 首先是一种思想, 而非某种模型, 是一种 "群体决策" 的思想, 即对某一特定问题, 用多个模型来进行训练.
像常见的单个模型, KNN, LR, 逻辑回归, 贝叶斯, SVM, 决策树, LDA, PCA ... 这些都是单个模型来训练可能并不能很直观说哪个最好, 但有种直觉, 多个模型来来整, 肯定由于单个模型, 这就是集成学习的思想.
如何 "管理" 多个模型?
- bagging:
 - boosting:
 
主流集成学习方法
- Majority Voting
 - Bagging
 - Random Forests
 - Stacking
 
Majority Voting
嗯, 我就翻译为, "民主决策"吧.
以分类问题为例, 就是将样本 X , 训练出不同的模型, 然后进行测试, 进行投票, 得票最多的模型则 被被认为是最好.
输入: X
训练: m1 = knn_tarin(X), m2 = svm(X), m3=kernel_svm(X), m4 = LDA(X)....
输出: m1, m2, m3...\(m_n\)
....
测试:
输入: 各每个模型 输入测试数据 X_test
输出: m1(X_test), m2(X_test)....
然后投票voting 取众数 mode 即可:
\(y = mode(m1_(X_test), m2(X_test)...)\)
证明voting 是可行的
假设有 n 个独立的分类模型, 每一个的错误率都为 \(\epsilon\). (独立就意味着误差是不相关的).
然后假设这里是一个二元分类场景, 而每个模型, 又非常地烂, 也不针对谁, 都是一些, 错误率比随机猜要好一点点.
\(\forall _{\epsilon _i} \in {\epsilon _1}, \epsilon _2, ... \epsilon_n, \ \epsilon_i <0.5\)
即模型错误率低于 0.5. 于是可以计算一波概率, 假设有n个模型, 其中对于 k 个模型,都是错误的概率(最终错误的概率):
\(P(k) = \begin {pmatrix} n\\k \end {pmatrix} \epsilon ^k (1-\epsilon)^{n-k} \ 其中 k > 0.5n\)
最终错误率:
\(\epsilon =\sum \limits _{k}^n \begin {pmatrix} n\\k \end {pmatrix} \epsilon ^k (1-\epsilon)^{n-k}\)
栗子: 假设一共有 11 个模型, 每个模型的误差是 0.25 , 则误差为:
\(\epsilon = \sum \limits _{k=6}^{11} \begin {pmatrix} n\\k \end {pmatrix} 0.25^k (1-0.25)^{11-k} = 0.034\)
这样就比较直观看出, 多个模型肯定是由于单个模型的哦.
soft voting
针对模型, 可以输出一个 分类标签出现的 概率值, 比如像 逻辑回归. 输出不仅仅是最终分类, 还会输出其概率有多大.
\(\hat y = argmax_j \sum \limits _{i=1}^n w_iP_{i, j}\)
\(P_{i,j}\) 表示第 i 个分类模型, 输出类别为 i 的概率
\(w_i\) 表示第 i 个分类模型的权重, 如都一样则: \(w_i = \frac {1}{n}\)
其实就是给类别, "附加上了该结果 出现的预测概率当然,也可以给不同模型的权重值.
case
假设样本是 X, 问题是二分类 (0, 1), 然后有训练好3个模型 \(m_1, m_2, m_3\), 这三个模型, 我假设再给一个主观经验的权重, 比如 分别是 0.2, 0.4, 0.6
现用测试集测试, 3个模型分别得到输出如下:
\(m_1(X) = [0.9, 0.1] \\ m_2(X) = [0.8, 0.2] \\ m_3(X) = [0.4,0.6]\)
则:
\(P(y=1|X) = 0.2*0.9 + 0.2*0.8 + 0.6*0.4 = 0.58\)
\(P(y=0|X) = 0.2*0.1 + 0.2*0.2 + 0.6*0.6 = 0.42\)
关于投票, 还是很好理解的吧.
集成学习-Majority Voting的更多相关文章
- 【笔记】集成学习入门之soft voting classifier和hard voting classifier
		
集成学习入门之soft voting classifier和hard voting classifier 集成学习 通过构建并结合多个学习器来完成学习任务,一般是先产生一组"个体学习器&qu ...
 - 集成学习(ensemble learning)
		
集成学习,又称为“多分类器系统”(multi-classifier system).“基于委员会的学习”(committee-based learning)等.基本的想法是结合多个学习器,获得比单一学 ...
 - Ensemble_learning  集成学习算法  stacking 算法
		
原文:https://herbertmj.wikispaces.com/stacking%E7%AE%97%E6%B3%95 stacked 产生方法是一种截然不同的组合多个模型的方法,它讲的是组合学 ...
 - Python机器学习笔记 集成学习总结
		
集成学习(Ensemble learning)是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合,从而获得比单个学习器显著优越的泛化性能.它不是一种单独的机器学习算法啊,而更像是一种优 ...
 - 第七章——集成学习和随机森林(Ensemble Learning and Random Forests)
		
俗话说,三个臭皮匠顶个诸葛亮.类似的,如果集成一系列分类器的预测结果,也将会得到由于单个预测期的预测结果.一组预测期称为一个集合(ensemble),因此这一技术被称为集成学习(Ensemble Le ...
 - 集成学习算法汇总----Boosting和Bagging(推荐AAA)
		
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
 - 集成学习一: Bagging
		
目录 偏倚与方差 Bagging 自助采样 投票 随机森林 参考文献: ''团结就是力量'' 对问题进行建模时, 算法无论如何优化都无法达到我们的要求,又或者精准算法的实现或调优成本太大, 这时,我们 ...
 - 集成学习算法总结----Boosting和Bagging(转)
		
1.集成学习概述 1.1 集成学习概述 集成学习在机器学习算法中具有较高的准去率,不足之处就是模型的训练过程可能比较复杂,效率不是很高.目前接触较多的集成学习主要有2种:基于Boosting的和基于B ...
 - 机器学习:集成学习(集成学习思想、scikit-learn 中的集成分类器)
		
一.集成学习的思想 集成学习的思路:一个问题(如分类问题),让多种算法参与预测(如下图中的算法都可以解决分类问题),在多个预测结果中,选择出现最多的预测类别做为该样本的最终预测类别: 生活中的集成思维 ...
 
随机推荐
- Win10打开控制面板的方式
			
Win10打开控制面板的方式方式1:1.打开运行框 windows键 + R2.在运行框中输入 control 方式2:右击开始图标->控制面板 方式3:在命令行cmd中输入 contro ...
 - Git 克隆远程仓库到本地
			
Git 克隆远程仓库到本地 参考 $ git clone --help https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%8E%B7% ...
 - 2019SDN上机第2次作业
			
1. 利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名.交换机名以及端口对应正确,请给出拓扑Mininet执行结果,展示端口连接情况 创建拓扑: 拓扑支持OpenFlo ...
 - 【微信小程序】手写索引选择器(城市列表,汽车品牌选择列表)
			
摘要: 小程序索引选择器,点击跳转相应条目,索引可滑动,滑动也可跳转 场景:城市选择列表, 汽车品牌选择列表 所用组件: scroll-view(小程序原生) https://developers.w ...
 - 509道Java面试题解析:2020年最新Java面试题
			
<Java面试全解析>是我在 GitChat 发布的一门电子书,全书总共有 15 万字和 505 道 Java 面试题解析,目前来说应该是最实用和最全的 Java 面试题解析了. 我本人是 ...
 - sync 异步编程
			
using System; using System.Net; using System.Threading; using System.Threading.Tasks; namespace Cons ...
 - Spring事务调用类自己方法失效解决办法和原因
			
问题 正常情况下,我们都是在controller里调用service里的方法,这个方法如果需要加事务,就在方法上加上@Transactional,这样是没问题的,事务会生效. 可是如果像下面这样,绕以 ...
 - | C语言I作业12
			
C语言I作业12-学期总结 标签:18软件 李煦亮 问题 答案 这个作业属于那个课程 C语言程序设计I 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/S ...
 - FastDFS与hadoop的HDFS区别
			
主要是定位和应用场合不一样 HDFS: 要解决并行计算中分布式存储数据的问题.其单个数据文件通常很大,采用了分块(切分)存储的方式. FastDFS: 主要用于大中网站,为文件上传和下载提供在线服务. ...
 - JavaScript变量与数据类型
			
变量 javascript的变量很松散,每个变量初始仅仅用于保存一个占位符而已.定义变量的操作符是 var, var 后面跟着一个标识符--当作变量的名字. 比如: var myname;//定义了一 ...