前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习技术如何应用于股票价格预测?(上)

机器学习技术如何应用于股票价格预测?(上)

作者头像
AiTechYun
发布2019-07-05 14:27:01
9910
发布2019-07-05 14:27:01
举报
文章被收录于专栏:ATYUN订阅号ATYUN订阅号

编译 | sunlei

发布 | ATYUN订阅号

机器学习的应用已经非常广泛,其中之一就是预测时间序列。最有趣(或许也是最赚钱)的预测时间序列之一的当属股价了。

最近我读了一篇用机器学习技术预测股价的博客文章。这是一篇写得很好的文章,其中探讨了各种技术。然而,我觉得这个问题可以用更严谨的学术态度来处理。例如,文章中的方法“移动平均”、“线性回归”、“k-近邻”、“Auto ARIMA”和“Prophet”具有预测期,而“Long – Short Term Memory (LSTM)”具有1天的预测期。在文章的最后,它指出“LSTM已经轻松地超过了我们目前看到的任何算法。但很明显,我们并不是在拿苹果和苹果做比较。这是我对这个问题的看法。

问题陈述

我们的目标是利用前N天的数据预测Vanguard Total Stock Market ETF (VTI)每日调整后的收盘价。我们将使用2015年11月25日至2018年11月23日这三年VTI的历史价格,可以从雅虎财经轻松下载。下载后,数据集如下:

VTI下载的数据集

我们将把这个数据集分成60%的序列、20%的验证和20%的测试。模型将使用列车组进行培训,模型超参数将使用验证集进行调整,最后将使用测试集报告模型的性能。下图显示了调整后的收盘价拆分为相应的列车、验证和测试集。

将数据集分为60%的训练、20%的验证和20%的测试

为了评估我们的方法的有效性,我们将使用均方根误差(RMSE)和平均绝对百分比误差(MAPE)指标。对于这两个指标,值越低,预测效果越好。

最后一个值

在最后一个值方法中,我们将简单地将预测设置为最后一个观测值。在我们的上下文中,这意味着我们将当前调整后的收盘价设置为前一天调整后的收盘价。这是最具成本效益的预测模型,通常用作比较更复杂模型的基准。这里没有需要优化的超参数。

下图显示了使用最后一个值方法进行的预测。如果你仔细观察,你会发现每一天的预测(红十字)仅仅是前一天的值(绿十字)。

使用最后一个值方法进行预测

移动平均线

在移动平均法中,预测值是前N个值的平均值。在我们的上下文中,这意味着我们将当前调整后的收盘价设置为前N天调整后收盘价的平均值。需要调整超参数N。

下图显示了验证集上实际值和预测值之间的RMSE,对于不同的N值,我们将使用N=2,因为它给出了最低的RMSE。

验证集上的实际值和预测值之间的RMSE,用于不同的N

下图显示了使用移动平均法的预测结果。

使用移动平均法进行预测

线性回归

线性回归是一种线性方法,用于建模因变量和一个或多个自变量之间的关系。我们在这里使用线性回归的方法是将一个线性回归模型与前面的n个值相匹配,并使用这个模型来预测当天的值。下图是n=5的例子。实际调整后的收盘价显示为深蓝色十字,我们希望预测第6天的价值(黄色正方形)。我们将通过前5个实际值拟合一条线性回归线(浅蓝色线),并使用它在第6天(浅蓝色圆)进行预测。

用N=5的线性回归预测下一个值

下面是我们用来训练模型和做预测的代码。

下图显示了验证集上实际值和预测值之间的RMSE,对于不同的N值,我们将使用N=5,因为它给出了最低的RMSE。

下图显示了使用线性回归方法进行的预测。可以看出,该方法没有捕捉方向的变化(即下降趋势到上升趋势,反之亦然)。

使用线性回归方法进行预测

当然,今天我们是讲不完的,休息一下,下次继续学习。

End

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ATYUN订阅号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题陈述
  • 最后一个值
  • 移动平均线
  • 线性回归
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档