作者:杰少

DoubleEnsemble

简介

本文,我们介绍一种新的集成算法,算法的基本思想是希望让噪音样本的权重减小,让难以分类的样本权重增大从而提升模型的效果,从论文的思路和实验结果来看都是非常不错的,和大家一起分享一下。

在金融数据集中,数据的信噪比是非常低的,使用复杂的NN模型最大的挑战就是过拟合问题,而且相对并不稳定。当前非常多交易公司会生产非常多的特征(也称因子)。如何自动选择有效的特征成为一个迫在眉睫的问题。为了解决这些问题,本文提出DoubleEnsemble,这是一个集成框架,利用基于学习轨迹的样本重新加权和基于shuffle的特征选择。

具体地说,我们根据每个样本的训练动态识别关键样本,并通过shuffle根据每个特征的消融影响提取关键特征。

我们的模型适用于广泛的基础模型,能够抽取复杂的模式,同时缓解金融市场预测的过度拟合和不稳定问题。我们进行了广泛的实验,包括加密货币和股票交易的价格预测,使用DNN和GBDT作为基础模型。实验结果表明,与几种基线方法相比,DoubleEnsemble具有更好的性能。

背景

金融数据中存在较低的信噪比,为了解决低信噪比的问题,本文提出了一种新的金融市场预测集成框架DoubleEnsemble。特别地:

  • 在ensemble中逐个构造子模型,其中每个子模型都使用样本的权重和精心选择的特征进行训练。

在学习子模型时,可以使用多种基本模型,如线性回归模型、boosting决策树和深度神经网络。每次,使用基于采样重新加权机制的学习路径,我们对原始训练集合中的每个样本赋予一个权重,我们根据前一个子模型的损失曲线和当前集合的损失值(称之为学习轨迹),为原始训练集中的每个样本分配一个权重。此外,我们通过shuffle技术根据特征对当前集合的贡献来选择特征。

提出的方法

特征矩阵




,标签




, 其中,其中




为样本个数,




是特征个数。







为第




个样本特征向量,

























是第




个样本的标签。

在过程中,我们序列化地构建




哥自模型,
















,在构建完第




哥自模型之后,我们定义当前的集成模型为:

































,DoubleEnsemble的输出为




















个子模型的均值。

每个子模型是在训练数据集








以及一个选出的特征集合








, 权重为



















,其中







为第




个样本的权重,对于第一个子模型,我们使用所有的特征以及一样的权重,对于接下来的子模型,我们使用基于采样重新加权的学习路径以及基于特征选择的shuggle技术来决定权重并且选择特征。

SR(Sample Reweighting)

我们抽取在前一个模型的训练损失曲线和当前集成的损失曲线,假设在之前子模型的训练中有




轮迭代。我们使用















来表示学习曲线,其中











是在第




轮的第




个样本的误差,我们使用















表示损失值,







为第




个样本的当前集成的误差(即


























的误差);

FS(Feature Selection)

我们直接提供训练数据以及当前的集成结果。

DoubleEnsemble算法

01

算法

其中SR为:

SR算法中的(1)为,

为了防止极值的影响,我们将样本划分为B个分桶,并且给予同一个分桶中的样本一样的权重,



























其中b



为第



个分桶的平均



值,


为衰减因子,这样可以是的后续的集成子模型更加均匀。

02

背后的思想

如上图所示:我们考虑分类任务中的三类样本:

  • 容易被正确分类的简单样本;

  • 接近真实决策边界的难被分类的样本,容易被错误分类;

  • 以及可能误导模型的噪声样本。

我们希望我们重新加权方案能够提高难以分类的样本的权重,同时降低简单样本和噪声样本的权重

  • 简单样本无论如何都可以拟合,而拟合噪声样本可能会导致拟合过度。









项有助于减少简单样本的权重。具体而言,简单样品的损失很小,会导致







值较大,因此权重较小。

然而,该项也会增强噪声样本,因为仅根据损失值很难区分噪声样本和难以分类的样本。我们通过







的损失曲线来区分它们(上图b)。我们为具有递减归一化损失曲线的样本分配了较大的权重。由于训练过程是由大多数样本驱动的,因此大多数样本的损失趋于减少,而噪声样本的损失通常保持不变甚至增加。因此,噪声样本的归一化损耗曲线将增加,从而导致较大的







值和较小的权重。对于简单易分类的样品,它们的标准化损耗曲线更有可能保持不变或者轻微波动,这会导致







值适中。对于难以分类的样本,它们的归一化损失曲线在训练过程中缓慢下降,这表明它们对决策边界的贡献。这导致







值较小,因此权重较大。如果上图1c所示。使用







不仅增加了难分类样本的权重,而且也增加了难分类样本的权重。

最终通过















的结合,我们可以减少容易分类样本的权重和噪音样本的权重。

03

shuffling based feature selection

该算法用来对特征进行选择,并且将选择的特征输入到下一轮当中。

实验

从上面的实验中,我们发现:

  • 本文的算法获得了最佳的实验效果;

  • DoubleEnsemble(SR+FS)实现了50%以上的年化回报,且风险较低。夏普比接近5.0,最大drawdown小于6.0%。这表明Doubleensemble的策略具有优越而稳定的性能。

小结

本文通过学习基于轨迹的样本重加权和基于洗牌的特征选择,提出了一种稳健有效的集成模型DoubleEnsemble。基于学习轨迹的样本重加权方法将不同难度的样本赋予不同的权重,非常适合于高噪声和不规则的市场数据。基于shuffle的特征选择可以识别特征对模型的贡献,并为不同的子模型选择权重和多样的特征。目前该方法代码已经开源,有兴趣的朋友可以尝试一下。

参考文献

  1. https://arxiv.org/pdf/2010.01265.pdf


往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑黄海广老师《机器学习课程》课件合集
本站qq群851320808,加入微信群请扫码:

【数据竞赛】DoubleEnsemble--专治硬样本的神奇集成技术。相关推荐

  1. 【数据竞赛】高质量数据科学竞赛平台汇总

    前言 学习过机器学习算法的小伙伴大多数都听说过"打比赛",一些同学自己参与过一些比赛项目,从中获益匪浅.今天来详细罗列一下国内外的比赛平台,方便即时找到自己感兴趣的项目,pc点击阅 ...

  2. 【数据竞赛】kaggle竞赛宝典-样本组织篇!

    作者: 尘沙杰少.樱落.谢嘉嘉.DOTA.有夕 样本筛选.样本组织之样本组织部分 这是一个系列篇,后续我们会按照我们第一章中的框架进行更新,因为大家平时都较忙,不会定期更新,如有兴趣欢迎长期关注我们的 ...

  3. 「专治不明觉厉」之“大数据”

    大数据(Big Data) 大数据,官方定义是指那些数据量特别大.数据类别特别复杂的数据集,这种数据集无法用传统的数据库进行存储,管理和处理.大数据的主要特点为数据量大(Volume),数据类别复杂( ...

  4. 30分钟搞定数据竞赛刷分夺冠神器LightGBM!

    作者 | 梁云1991 来源 | Python与算法之美(ID:Python_Ai_Road) [导读]LightGBM可以看成是XGBoost的升级加强版本,2017年经微软推出后,便成为各种数据竞 ...

  5. 数据竞赛Tricks集锦

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 本文将对数据竞赛的『技巧』进行全面的总结,同时还会分享下个人对比赛方法论的思考.前者比 ...

  6. 谷歌发布新编程语言,专治SQL各种“不服”

    丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 天下苦SQL久矣. 写个查询语句而已,动不动就上百行-- 不过谷歌新推出的这个逻辑编程语言,对于"SQL党"来说可谓是福 ...

  7. 赛后总结:第四届工业大数据竞赛注塑成型

    赛后总结:第四届工业大数据竞赛注塑成型 原文首发于我的公众号 前言 以第四届工业大数据竞赛虚拟量测任务为例,介绍大家的思路.自己代码乱写,导致不知道最后要复现的是哪个,加上工作上各种人员优化,就没有进 ...

  8. 【数据竞赛】Kaggle知识点:树模型特征Embedding

    在对数据进行编码的过程中,经常会遇到一些非结构化的字段(如列表.文本),或者高维稀疏的字段. 在使用树模型的过程中,上述字段对树模型很不友好,会增加树模型的训练时间,一般情况需要通过人工特征提取,然后 ...

  9. 【数据竞赛】5行代码检测分布不一致,代码少效果好!

    5行代码系列,是包大人班车日更精选的原理简单明确,效果立竿见影的机器学习武器库. 往期: 5行代码提升GBDT,提升巨大! 5行代码提升时间序列预测,都有用! 5行代码实现的对比学习,效果超好! 我们 ...

最新文章

  1. python2 webserver class
  2. postman全局变量操作
  3. OpenGL Drawing Commands绘图命令的实例
  4. 互斥锁在python中的应用
  5. 什么时候应该避免写代码注释?
  6. Spring中异步注解@Async的使用、原理及使用时可能导致的问题
  7. 继淘宝特价版之后 闲鱼已向微信提交小程序申请
  8. vue语音播放通知功能
  9. android+浮层布局,如何使用Android实现单页面浮层可拖动view
  10. Tensor A must be from the same graph as Tensor B
  11. 手机科普(软硬件简介——android)看了会懂很多东西的!
  12. mysql 1062_mysql #1062 报错
  13. [Python图像处理] 合成微缩效果
  14. 声纹识别与声源定位(一)
  15. 交流耦合仪表放大器(AC-Coupled Instrumentation Amplifier)
  16. 苹果新Apple TV出现Bug如何解决?
  17. XILINX DSP Slice功能特点
  18. NSSCTF刷题wp——单表替换密码
  19. Protobuf—简介,优缺点
  20. Linux驱动加载实例

热门文章

  1. Android 数据加密算法 Des,Base64详解
  2. ObservableCollection 类 详解
  3. php mysqli::close()
  4. 关闭 Sublime Text 3 自动更新
  5. JavaScript变量作用域和内存问题(js高级程序设计总结)
  6. 各浏览器抗uaf机制
  7. 在SQL 语句批量替换数据库字符串的方法
  8. [28期] lamp兄弟连28期学员手册,请大家务必看一下
  9. 如何让Visual Studio 2010支持HTML5和CSS3
  10. 查被占用的端口号由哪个程序运行