题主在美国 研究生毕业想转行数据科学领域 自学了一些基本的比如coursera Andrew Ng的课 和Python做data science的课 也自己在Kaggle上面做了一些练手的项目 最近找了一份这方面的实习 是一个初创公司 估计老板是听说机器学习在金融领域是一个未来趋势吧 想试试水 感觉他自己也不是很懂这方面 公司里也没其他人懂
他是属于那种什么领域都懂一点 又不是很清楚的那种类型 主要还是比较懂金融领域吧
他们主要是分析预测每一个Sector的趋势 是涨还是跌
他给我的任务是让我做一个机器学习的模型来预测一个基金的走势
但是拿到data我傻眼了 一共只有85行,10列
这和我以前做的不一样啊喂 算了。。反正我也不是很懂 就按我以前练的做吧
插一句: 为什么数据这么少呢?想要预测的基金就只取了每个月的 用了差不多7年也就是85个月的数据
我问为什么不用每天的基金价格来增加数据量 他说因为他们选的feature很多都是一个月或者一个季度公布一次的指标 比如美国货币指数啊 GDP啊这些 没有每天更新 所以没法用每天的基金价格
后来用了Ridge regression 发现由于数据太少 overfitting很严重
之后自己看了一下每个feature和要预测的基金的correlation 手选了几个feature 情况好了一些
今天老板就问我啊 说你这个machine learning. Learning的过程在哪里呢? 你这个和普通的统计学上面做regression有什么区别啊。至少你的machine要帮我选选该用哪些variable吧?
我仔细想了一下 好像确实没有什么区别 老板让我明天回答他 我到现在都不知道怎么讲
后来我问了一个在微软和facebook做machine learning做了7,8年的朋友
他告诉我说: 数据小, feature少的时候machine learning就是做统计
不过选variable这个倒是真的有feature selection这种事 不过数据这么小 做不了吧? 又不能在training set上面做feature selection
对不起 楼主是个话痨
总而言之一句话: 请问这么小的数据做machine learning真的科学吗?
我该怎么跟老板说 应不应该跟他提建议让我做做别的项目 跟他提提有什么金融领域真正用的machine learning?
这么少的数据,机器学习和深度学习都帮不了你。这么少的数据,就用人工分析吧。
一般至少要几万数据吧。
大兄弟,我实话告诉你,你做的是机器学习,也是统计学习。
---------------------------------------------------------------------
我做机器学习,或者说统计学习这些年的经验是:
1. 实际应用中大数据量可遇不可求,所以所有以神经网络为基础的算法一般效果都不好。
2. 实际应用中我们要求模型的可解释度,所以偏向于选择表现正常且可解释的模型。这样的模型有两种,一种是广义线性模型,一种是以决策树为基地的模型。
3. 你做的这个模型根据描述没什么太大的用,回测可能效果还可以但放到真实数据上肯定不行。首先不谈数据量,你这个模型明显是时间序列吧?直接做回归其实丧失掉了时间这个维度。
那么问题来了,如果老板问你让你选择变量重要性,你怎么办?
我推荐你使用 gradient boosted decision tree regression来做回归,做完以后查看r^2来看看拟合程度,怕过拟合就用交叉验证算r^2。用这个模型最大的好处是,它会自动生成一个模型重要度的排序...
代码很短,就像下面这么长:
之后你还可以得到不同变量的重要性(数值越大越好):
除此之外你还能做些什么?
做这些大概可以给你的老板交差,给他提供一些思路,至少告诉他为什么项目做不到他想要实现的效果。
---------------------------------------------------------------------
至于你该怎么委婉的老板说现在这个方案不靠谱,有两个建议:
1. 你自己对这个领域加深了解,确保比你老板懂得多,不然很容易被他反问住。
2. 慢慢来,对于不靠谱的项目,先从里面发掘一些价值,至少不至于毫无所获。比如可能变量重要性在这个项目里面还是有一些意义的。慢慢给你的老板科普知识,但不要直接就跟他说:“你丫就一sb。。。”
祝你好运:)
重点回答头一个问题,因为这也是很多机器学习研究者普遍存在的问题:“我的项目需要多少训练数据?”
高性能模型与低性能模型之间区别的一个重要原因就是训练数据的质量。因此,为了确保你的 AI 应用能够具有最大性能,必须弄明白你需要多少训练数据。
然而,这个问题经常让不少开发者非常苦恼。实际上,这个问题回答起来比看上去要复杂的多,因为其中要涉及到很多因素,比如你使用的模型类型,模型在实际业务中的用途等等。下面我们看看围绕需要多少训练数据出现的痛点,然后探讨针对自己的项目需要多少训练数据。
为何很难预估你的数据集大小?
确定目标数据量的许多困难源于训练过程的目标。有很多文章都讲到了模型训练过程的工作原理,但要记住,我们训练的目的是构建一个能理解数据背后模式和关系的模型,而不仅仅是理解数据本身。收集数据时,我们需要确保所拥有的数据数量能教会算法数据中的关系,以及数据和结果之间的关系。
这看起来很容易预测。但实际上机器学习项目的目标多种多样,可以产生大量的训练数据类型。因此,每个项目都有各自独特的多种因素,这使得提前计算数据需求变得非常困难,可能包括以下部分或全部内容:
从上面这些因素可以清楚地看到,我们需要的数据量取决于项目的独特需求和预期目标。最后,项目负责人必须自己平衡这些因素,并提出自己的目标。那么有没有什么方法呢?
有,接下来就看看有哪些方法可以帮我们在刚开始时确定所需的数据量。
我们该如何计算数据需求?
确定任何给定算法所需的确切数据数量可能无法做到。幸好,基于整体预估的方法能帮你分析项目的训练数据需求量,以下两种方法均可:
通常,最好在刚开始时用手头已有的数据训练模型,在你认为有必要时再添加更多数据。一旦项目取得一些结果,你对数据的需求会越来越明显。不过,有些朋友还是希望能在项目开水前有个确切的数字,下面是我们在网上找到的项目数据集大小的一些估计。也许这些例子能让你对自己项目所需的数据集大小心里有个数。
数量 VS 质量
数据的局限性也会是模型的局限性。但是,在所有关于你需要多少数据的讨论中,不要忘记这条也适用于数据质量和数量。对于模型来说,一百万个混乱的数据反而不如 100 个干净数据,后者实际上更有助于算法达成目标。无论你正在搭建什么样的模型,都要确保正在使用的数据能为你提供坚实的基础和最佳的成功机会。
此前知名机器学习博主 Jason BrownLee 曾发过一篇文章探究机器学习究竟需要多少训练数据:https://machinelearningmastery.com/much-training-data-required-machine-learning/
在文中,Jason Brownlee 也认为训练机器学习模型需要多少数据要根据很多因素,比如:
Jason BrownLee 也根据自己从事机器学习研究的经历,分享出了一些估算训练数据数量的经验:
希望以上提及的这些方法对大家在确定训练数据数量时有所帮助。
参考资料:
https://gengo.ai/articles/how-much-ai-training-data-do-you-need/
https://machinelearningmastery.com/much-training-data-required-machine-learning/
黑五全场特惠中,欢迎来访集智课堂:
10倍法则的话差不多哦
一点拙见,数据量需要多少其实和具体的问题,数据场景关系很大。
比如老一辈统计学家Fisher他们做农田实验,有几十个样本就可以开干做假设检验,得到统计推断结果了(机器学习、统计学习没有泾渭分明的区别,暂且举一个统计的例子)。有的数据,比如生物,医疗,农业生产,数据中的信号是通常是很强的,这时候用小样本就可以得到显著的统计推断。
题主想要做一个金融相关的模型,金融数据公认是信噪比很弱的,就是噪声很大,随机波动很大,而信号相对较弱。比如,如果来看每个周的上证指数波动,它本身就处在市场各方力量的博弈之下,空头多头大军厮杀之中,某一周指数涨了,很难说是在波动范围内还是真的有上升趋势了。对这样的数据,想要得到靠谱的结果,一般确实需要数据量大一些。而且金融数据上通常模型会需要高强度用到随机过程,时间序列的方法。
对于题主这个课题,两点微小的建议哈
1.预测涨跌不一定是个很好的目标,比如涨1%和涨10%都是涨,但是实际投资肯定不会涨1%就冲了。很多金融分析的关心是预测收益率和波动这俩目标,用资产的收益率和波动来作为投资决策的依据。我觉得是可以先看看金融人主流的做法是啥。模型很多会用时间序列分析的模型,比如GARCH,还有因子模型,都可以参考一下。
2.我感觉目前数据少,有一个比较大的原因是"将就最了低频的那个数据",因为报告是月度的,所以其他数据也对齐到月度了。实际上不压缩其他数据也是可行的,可以用混频的模型,就是当数据既有高频,比如日度的金融时间序列甚至日内的记录,也有低频,像月度的gdp啊这样的,可以一样建模。这样的话可以利用的数据信息要多很多。中国人民大学的吴奔老师有发过关于混频金融数据建模的文章,可以参考~
公司名称: 万泰-万泰平台-万泰中国加盟站
手 机: 13800000000
电 话: 400-123-4567
邮 箱: admin@youweb.com
地 址: 广东省广州市天河区88号