在金融领域使用机器学习的 9个技巧

news2024/11/15 18:42:23

机器学习已经倍证明可以预测结果和发掘隐藏的数据模式。但是必须小心使用,并遵循一些规则,否则就会在数据的荒野中徘徊而无所获。使用机器学习进行交易的道路充满了陷阱和挑战,只有那些勤奋认真地遵循规则的人才能从中获得收益。下面是一些技巧可以帮助你更好的使用机器学习进行交易。

技巧1:缩放数据

价格数据是金融任务中最常见的数据,不同的资产价格数据存在很大的差别。通过缩放数据可以减少模型在不同尺度数据上的泛化偏差,并增加收敛速度。
常见的数据缩放方法有三种:最小-最大缩放(Min-Max Scaling)、Z-Score缩放(Z-Score Scaling)和对数缩放(Log Scaling)。

  • 最小-最大缩放是将数据的值线性映射到一个特定的区间内(通常是[0, 1]或[-1, 1])。这种方法可以用于已经有固定区间的情况(如图像处理),但对于金融领域中存在异常值的情况则不太适用。因为最小-最大缩放对异常值比较敏感,容易受到极端值的影响。

  • Z-Score缩放是通过将数据归一化,使其均值为0,标准差为1来实现的。这种方法通常用于服从正态分布的数据,但也可以用于非正态分布的数据,因为它可以在一定程度上降低异常值的影响。这种方法在机器学习算法中被广泛应用,可以帮助模型更快地学习,并提高算法的准确性。

  • 对数缩放是通过对数据取对数来实现的,通常用于对包含极端值的数据进行缩放。对数缩放可以把大范围的数值压缩到一个比较小的区间内,从而更容易可视化和比较数据的变化。这种方法在金融领域中非常有用,因为财务数据通常具有大范围的数值变化。

选择缩放方法必须符合您的模型目标——有时它更像是一门艺术而不是一门科学。一种简单但有效的方法是使用百分比回报。虽然这不会将数据置于任何固定范围内,但它将遵循相当一致的分布(即大多数回报以零为中心)。对于某些模型(如ARIMA),假定平稳性,如果没有它,您可能无法捕获数据的潜在关系。

技巧2:避免前瞻性偏差

前瞻性偏差是指你不小心向你的模型展示未来数据的情况。听起来很难做到,不是吗?已经发布的新闻文章和推文可以被再次编辑。没有什么能够阻止这些最初包含虚假信息的内容会在后来进行修改(或反之亦然),从而导致价格波动并引起关注?基本面数据也可能会在未来被调整,这意味着你可能没有看到实际的数据,而这些数据可能会导致股票价格的波动。
如果你使用集中方法(如移动平均法)平滑时间序列数据,你可能会用未来的数据来调整过去的数据。我曾经犯过这个错误,在训练和测试中得到了看起来会让我一夜暴富的结果。因此,如果你的结果看起来过于美好,那么请检查是否存在前瞻性偏差!

技巧3: 不要将重点放在价格预测上

预测价格是很难的。如果它很容易,那么其他人也会发现同样的事情,你的优势会很快消失。在金融领域,机器学习有更好、更易于掌握的用途。

  • 模式识别 - 例如,可以创建自己的扫描器来识别股市的任意模式。

  • 学习你的策略何时起作用 - 你可以让机器学习算法为你提供基于数据支持的决策成功的概率。

技巧4:不要直接使用神经网络

神经网络是非常强大和令人惊叹的工具——但只有在用于正确的问题并且具有大量的数据时才是如此。如果你的问题很简单,例如特征小于10个,样本数量为100-1000,那么可以使用逻辑回归!如果你的问题更复杂,有更多的样本和特征,那么应该使用随机森林!这些模型的优点在于更易于解释、不容易过拟合,训练速度也通常较快,且无需使用大量的计算资源。
在拥有足够大的训练集时,使用神经网络也有优势,特别是在时间序列分类领域,可以使用最新的LSTM层等高级技术。我的模式扫描器就是用这种方法实现的!

技巧5: 注意不要让模型过拟合

如果你正在使用神经网络,那么过度拟合是很容易发生的。这通常表明两件事情:

  • 你的数据量不够 - 因此模型很容易学习到数据所需的准确模式。

  • 你的模型容量太大 - 你应该降低它的容量以迫使它更好地进行泛化学习。

你可以使用一些技术,如dropout层和正则化来帮助避免过度拟合问题。另一个建议的技术是使用验证数据集来评估模型在训练期间对未见过的数据的表现。如果你的验证数据集准确率上升的速度和训练数据集准确率一样,则说明模型并没有发生过拟合。
但是,你也可能会通过其他方式出现过度拟合的情况。例如,你是否只考虑了单一的市场条件?如果是这样,你可能会“过度拟合”到该情况,并且如果市场发生变化,你的模型可能会出现困难。

技巧6: 不要盲目复制他人的代码和模型

在当今信息量极大的时代,获取和使用他人工作的诱惑很大,但我们必须谨慎地评估和理解这些代码和模型。不能简单地复制并希望它会像预期的那样工作,必须经过深思熟虑、审慎评估后再进行决策。这是确保机器学习模型的准确性和可靠性的关键。

技巧7:适当分割训练数据

如果我给你一枚有偏向性的硬币,70%几率抛出正面,那么你会一直猜正面。机器学习有时也是如此。如果展示一个不平衡的数据集,它可能很快学会猜测主导类别以获得成功的预测。为了避免这种情况发生,在二分类问题中,我们可以考虑将训练数据按类别分成50/50的比例来迫使模型进行泛化学习,这样训练出来的模型准确率高于50%时,我们可以确定该模型不是随机猜测的。这个技巧有助于提高机器学习模型的性能和准确性。

技巧8: 分析模型失误的原因

很可能你的模型不会100%准确 - 如果是,我会怀疑你是不是误把答案告诉它了!一个好的做法是深入研究你的测试结果:你的模型在哪里失败了?这些例子是否能让你更好地了解如何进行特征工程来帮助模型更好地学习?
做分类问题?使用混淆矩阵!它将帮助你了解模型预测错误的哪些类别。做回归问题?深入研究差异最大的示例!有时,一个简单的绘图可以代表千言万语,真正帮助你了解模型的弱点。例如,本文中我展示了一个简单的绘图,可视化出哪些分类是错误的。
以下图为例,模型在处理更多的"横向"价格波动方面遇到了困难,那么可能需要增加与梯度相关的特征来改善模型表现。

技巧9: 注意维度灾难

当我们试图在高维特征空间中使用有限数量的数据样本来学习自然状态时,就会出现这种情况。由于每个特征包含一定范围的可能值,因此确保所有值的组合都可以充分地在训练数据中表示变得具有挑战性。但是,通过仔细的特征选择和降维技术,我们可以克服这个障碍,并建立准确有效的模型。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/446941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何建立到NAS中新增容器的ssh连接

注:首先需按照教程建立Zerotier连接,然后进入新建的nginx镜像,为root用户建立密码。 查看容器类型 Debian 系镜像: cat /etc/issue Redhat 系镜像: cat /etc/redhat-release Alpine 系镜像: cat /etc/os-release 安装并启动ssh apt-get …

SHELL环境变量和引用

目录 1、判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查一次磁盘剩余空间。 a.安装邮件服务 b.创建脚本对要求进行设计 c.编辑配置文件 ​编辑d.做计划任务 ​编辑 e.进行测试 2、判断web服务是否运行…

POLARDB 从一个使用者的角度来说说,POALRDB 怎么打败 MYSQL RDS

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

记录-实现深拷贝的四种方式

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 概念介绍 深拷贝:在堆内存中重新开辟一个存储空间,完全克隆一个一模一样的对象 浅拷贝:不在堆内存中重新开辟空间,只复制栈内存中的引用地址。本质上两个…

Python双向循环链表的操作

目录 一、双向循环链表 双向循环链表图 二、双向循环链表的操作 1、判断链表是否为空 2,链表长度 3,遍历整个链表 4,在链表头部添加元素 5、链表尾部添加元素 6,在指定位置插入元素 7,修改指定位置的元素 8&a…

被裁后找不到工作,本质上是因为原来的能力就配不上高薪,如果技术好,根本不怕被裁,相当于白送n+1!...

被裁员后,能要求公司补缴公积金吗? 一位网友问: 被裁员了,要求公司把历史公积金全部足额缴纳,现在月薪2.3万,但公司每个月只给自己缴纳300元公积金,结果一次补了二十多万,一次性取出…

进程等待、进程替换

目录 进程等待 waitpid函数 wait函数 进程替换 进程等待 进程等待的意义 如果子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏。 另外,进程一旦变成僵尸状态,那就刀枪不入&#xff…

5.5G的关键一跳!将数智未来照进现实

编辑:阿冒 设计:沐由 作为数字时代的三大思想家之一,乔治吉尔德在1993年就指出,未来25年内主干网的带宽每6个月增长一倍,其增长速度是摩尔定律预测的CPU增长速度的3倍。 这就是著名的吉尔德定律(Gilder’s …

Qt开源项目:校医院远程诊断系统介绍

本人研一参考技术书籍开发的一款Qt程序,两年前已上传到GitHub,有兴趣的同学可以去看看。可能之前上传的项目不够完整,导致有一些同学没有在自己的环境上跑通,所以今天将整个工程都重新上传一遍,包括使用到的opencv的动…

Lambda 表达式中的变量必须是 final 的吗

如果我们定义了一个变量,想要在Lambda 表达式中修改变量的值,编译器会发出警告:“variable used in lambda expression should be final or effectively final”。 比如对一个list进行遍历,遍历的过程中对i进行操作 Java 规范中…

浅理解 ES6 新增的数组方法Array.of() 和 Array.from()

文章目录 📋前言🎯Array.of() 方法🎯Array.from() 方法🎯二者区别📝最后 📋前言 在前端开发的面试过程中, ES6 新增是一个很常见的考点,比如说箭头函数、模板字符串、let 和 const …

宁波汽车运输集团:引入二维码技术,实现车辆精细化管理

宁波市汽车运输集团有限公司是宁波市道路货运业的龙头企业之一,主营全国各地的普通货运以及货物专用运输(集装箱、罐式)。 作为汽车运输集团,车辆的安全问题极其重要。因此,公司设备安全部门要求每个驾驶员在作业之前…

netfilter filter表(二)

这次继续分析filter表,不同与之前的分析方式,这次通过将内核中的数据打印出来,对比结构关系图来分析。这是本次分析涉及的几个数据结构: struct xt_table { struct list_head list; /* What hooks you will enter on */ unsigned …

4、SpringBoot接收和响应xml报文请求

背景 平时开发的接口,基本是使用 json 格式的请求报文。然而,有时候也避免不了有 xml 报文请求的场景,最近就遇到了这种情况,在此记录下。另外,工程中使用的是 controller-service……这种结构。 xml请求报文&#x…

链表(JS实现)

📝个人主页:爱吃炫迈 💌系列专栏:数据结构与算法 🧑‍💻座右铭:道阻且长,行则将至💗 文章目录 链表链表的分类创建链表LinkedList类的骨架 实现链表的方法push尾部添加元…

chatgpt智能提效职场办公-ppt怎么蒙层

作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 在 PowerPoint 中添加蒙版图层,可以在幻灯片中创建一个半透明的矩形或形状,并在其上方添加或放置其他对象。 下…

FPGA终于可以愉快地写代码了!Vivado和Visual Studio Code黄金搭档

如果你是一位FPGA开发者,那么你一定会对VIvado这款软件非常熟悉。但是,对于vivado兼容的第三方编辑器软件,你知道Visual Studio Code吗?这是个非常不错的选择,Visual Studio Code搭配众多插件,能让你FPGA开…

【SpringBoot】一:SpringBoot的基础(下)

文章目录 1.外部化的配置1.1 配置文件基础1.1.1 配置文件格式1.1.2 application文件1.1.3 application.properties1.1.4 application.yml1.1.5 environment1.1.6 组织多文件1.1.7多环境配置 1.2 绑定Bean1.2.1 简单的属性绑定1.2.2 嵌套Bean1.2.3 扫描注解1.2.4 处理第三方库对…

【移动端网页布局】移动端网页布局基础概念 ② ( 视口 | 布局视口 | 视觉视口 | 理想视口 )

文章目录 一、视口1、布局视口 ( 网页大小 | 网页大小 > 设备大小 )2、视觉视口 ( 设备大小 | 网页大小 > 设备大小 )3、理想视口 ( 网页大小 设备大小 ) 一、视口 浏览器 显示 网页页面内容 的 屏幕区域 被称为 " 视口 " ; 视口分为以下几个大类 : 布局视口…

项目协同中的git

在远程代码仓库(云效,gitee,github,Coding等)新建一个代码库, 我使用的云效 新建一个develop分支,后续所有人的提交代码都合并到develop分支上面,一般develop分支是用来开发用的&…