众所周知,如今在众多数据科学竞赛中的获奖方案中,使用集成学习算法已然成为了家常便饭。集成学习独有的依据一系列假设对大量机器学习算法进行训练的能力,不仅增加了模型的稳定性,同时也使得模型的精确程度得到了较高的提升。在此之前,如果你对集成学习还是没有什么印象的话,之前推送的文章《关于集成学习基础的简单描述》或许会对你有所帮助。

话说回来,在构建集成模型时,如何找到最佳的权重往往是人们面临的常见挑战之一。说实话,并没有多少人会去真正直面这样的挑战,那些勇气不足的数据工作者们经常会说服自己去使用简单的套袋方法,也就是赋予所有学习算法相同的权重,并将平均预测值作为模型的最终结果。

这么做的效果通常来说也很不错,因为等权平均的方法同样能够减少单个模型所带来的方差。然而,我们都知道,分配相等的权重往往并不是获得最佳模型组合的最好方法,那么问题就来了,我们到底该怎么做?在本文中,我们将基于R语言中的神经网络相关功能,为您找到在集成模型中确定最佳权重的可行方法。

先来考虑一个简单的问题

现在我们假设你已经基于一个给定的(假想的)数据集构建了三个模型,每一个模型都具有预测目标事件发生概率的能力。在下图中:Model 1, Model 2和Model 3分别表示我们构建的三个预测模型,它们各有所长,但“团队合作”将会更好地优化它们的预测表现。

我们之前的假设是赋予每个模型33.33%的权重,并由此构建一个集成模型。而在这里,我们面临的挑战将是最优化模型的权重w1,w2和w3,从而建立一个更加高效强大的集成模型。

解决这一问题的传统途径是什么?

假设P1,P2和P3为三个模型的三个输出。我们需要以最优化目标函数的形式来得到最优化的W1,W2和W3。让我们试着用数理的方法来表示约束和目标函数:

约束:

w1 + w2 + w3 = 1

p = w1 * p1 + w2 * p2 + w3 * p3

目标函数(极大似然函数):

Maximize ([ (p) ^ (y) * (1-p) ^ (1-y) ]对于所有观测样本的乘积)
其中,
y:观测的目标反应
p:通过集成模型得到的预测概率
p1,p2,p3 : 单个模型得到的预测概率
w1,w2,w3 : 各个模型所对应的权重

上述的是一个经典的纯优化方法。然而,当我们需要对大量模型进行套袋,并且每次都用数学公式来对它进行表达与运算时,往往会导致巨大的工作压力和时间上的消耗。因此,我们需要一个更聪明的方法。

接下来,我们将尝试着改变一下确定这些权重的方式,运用神经网络方法而非那些繁琐的数学公式。

如何运用神经网络来实现权重的最优化?

我明白,要完全弄懂神经网络的实施原理有时会很复杂。因此,为了解决本文中迫在眉睫的问题,我们不会去深入钻研深层神经网络的那些复杂概念。

从最基本的方面来说,神经网络方法就是在寻找相邻点之间的权重(输入变量到隐藏节点和隐藏节点到输出节点)。而此时,我们的目标则是要找到从输入节点直接到输出节点的正确权重组合,这似乎和神经网络的初衷不太一样。

我们用一个简单但是实用的方法来解决这个问题:我们将神经网络中隐藏节点的个数限制为1,这将使得隐藏节点到输出节点的权重被自动调整为1。这也意味着,神经网络中的隐藏节点和输出节点不再是不同的,如下图所示:

就这样,我们找到了一个方法——借助计算机编程,需要我们进行大量人工计算的数学方程将由计算机自动完成,相关的R代码如下:

#x is a matrix of multiple predictions coming from different learners
#y is a vector of all output flags
#x_test is a matrix of multiple predictions on an unseen sample
x <- as.matrix(prediction_table)
y <- as.numeric(output_flags)
nn <- dbn.dnn.train(x,y,hidden = c(1), activationfun = "sigm",learningrate = 0.2,momentum = 0.8)
nn_predict <- n.predict(nn,x)
nn_predict_test <- n.predict(nn,x_test)

结束语

笔者曾经将上述最优权重确定的逻辑运用到Kaggle数据建模竞赛中的很多问题里,并且得到了一系列令人欣喜的好结果,下列是在近期竞赛中的该方法获得的成绩:简易逻辑模型的评分为100,最佳机器学习模型的评分为107,简易套袋技术最终获得了110的评分,而利用神经网络优化模型权重则得到了113的高分。

在这篇文章中,笔者解释了在集合模型中找到最佳的权重的方法,传统的方法很经典,但更受推荐的无疑还是神经网络,希望这对你有所帮助。

原文作者: TAVISH SRIVASTAVA

运用神经网络方法找寻集成学习中的最优权重相关推荐

  1. 图解集成学习中的梯度提升思想

    摘要: 本文讲述集成学习中的梯度提升方法的思想,以简单算术及图片的形式展示整个过程,一看就懂! 简介 机器学习(ML)中的一个关键步骤是选择适合数据的最佳算法,根据数据中的一些统计数据和可视化信息,机 ...

  2. 集成学习中的随机森林

    摘要:随机森林是集成算法最前沿的代表之一.随机森林是Bagging的升级,它和Bagging的主要区别在于引入了随机特征选择. 本文分享自华为云社区<集成学习中的随机森林>,原文作者:ch ...

  3. (七)集成学习中-投票法Voting

    集成学习第一法宝:投票! 参考:DataWhale教程链接 集成学习(上)所有Task: (一)集成学习上--机器学习三大任务 (二)集成学习上--回归模型 (三)集成学习上--偏差与方差 (四)集成 ...

  4. 集成学习中boosting、bagging、随机森林算法的介绍

    集成学习的概念 定义:集成学习通过构建并结合多个学习器来完成学习任务. 分类:只包含同种类型的个体学习器,这样的集成是"同质"的,例如都是神经网络或者决策树:包含不同类型的个体学习 ...

  5. 集成学习中的软投票和硬投票机制详解和代码实现

    快速回顾集成方法中的软投票和硬投票 集成方法是将两个或多个单独的机器学习算法的结果结合在一起,并试图产生比任何单个算法都准确的结果. 在软投票中,每个类别的概率被平均以产生结果. 例如,如果算法 1 ...

  6. 集成学习中的Boosting和Bagging

    集成学习是一大类模型融合策略和方法的统称,其中包含多种集成学习的思想. Boosting Boosting方法训练基分类器时采用串行的方式,各个基分类器之间有依赖. 它的基本思路是将基分类器层层叠加, ...

  7. 摸鱼也要讲究方法:工作学习中玩手机并不能缓解无聊和疲劳

    撰文 | 王聪 编辑 | nagashi 排版 | 水成文 智能手机的出现,对社会产生了深远的影响,人们不仅可以用智能手机来拨打电话或发送短信,还用于处理各种应用程序.当代社会,手机早已成为人们生活. ...

  8. Stacking 集成学习在多因子选股中的应用

    Stacking 集成学习模型简介 Stacking 集成学习的原理 Stacking 是一种常见的集成学习框架.一般来说,Stacking 将训练一个多层(一般是两层, 本文中默认两层)的模型结构, ...

  9. 机器学习中集成学习的一些知识

    集成学习 (ensemble learning) 通过构建并结合多个学习器来完成学习任 务,有时也被称为多分类器系统(multi-classifier system) .基于委员会的学 (commit ...

最新文章

  1. Windows网络通信(二):socket异步编程
  2. php mysql操作封装_php封装MySQL数据库基本操作
  3. 深度学习(23)随机梯度下降一: 随机梯度下降简介
  4. 空间金字塔池化_回顾语义分割—DenseASPP (密集空洞空间金字塔池化)
  5. Python让你成为AI 绘画大师,简直太惊艳了!(附代码)
  6. 数字图像处理(五) 图像复原
  7. 读《林锐-我的大学十年》
  8. 什么是Service(服务)?
  9. 谈谈我职业生涯中的三次潦倒 Leo病中的思考 续
  10. K8S 多 Maser 集群架构和 Dashboard UI 的二进制部署
  11. 罗技 连点 脚本_轻松办公 如入无人之静 罗技MK295静音键鼠套装全球首发震撼上市...
  12. 要闻君说:又一家云服务关停,原来是网易;MongoDB又爆泄露大新闻;Google 的中国版搜索引擎项目其实仍在继续...
  13. 开发基础 练习2总结
  14. linux中查看文件大小命令
  15. 解决番茄插件visual assist x 不能安装的问题
  16. Python计算机视觉编程第一章 基本的图像操作与处理
  17. txt文件批量转换为excel文件
  18. 微信多群直播助手功能介绍
  19. IDEA:运行Tomcat时报错“1099”:Address localhost:1099 is already in use
  20. PyTorch源码解析--torchvision.transforms(数据预处理、数据增强)

热门文章

  1. hbase windows安装
  2. 从实际案例聊聊Java应用的GC优化--转
  3. 热点推荐:秒杀系统架构分析与实战--转载
  4. The LMAX disruptor Architecture--转载
  5. 分布式ActiveMQ集群--转载
  6. jvm性能调优实战 - 32一个10万并发的BI系统,如何定位和解决频繁Young GC问题?
  7. 全局事件-广播(Broadcast)
  8. 紧致差分的matlab程序,对流占优扩散方程的一种新C—N 紧致差分格式
  9. 剑指offer 11. 旋转数组的最小数字(很详细!)
  10. python查看方法作用_python学习笔记1,新手小白也能看得懂