实战 | 机器学习能否预测加密货币的价格?
作者:Michel Kana, Ph.D,翻译:Jeremy
这份实用指南提供了你预测加密货币价格飞速上涨所需的基础知识。
十五年前,我开始探索数字货币的世界,并为一个只使用短信的点对点移动货币平台做了原型。
最近,我的一位合作者问我, 人工智能是否可以预测加密货币的价格 。她对区块链的炒作很好奇。
经过研究,我发现预测加密货币价格是一个可以解决的问题,但绝对不是针对所有市场条件。
加密资产的典型预测模型将利用时间序列预测(如ARIMA、Facebook Prophet)、机器学习(如随机森林算法、线性回归)或深度学习方法(如LSTM)。
在本文中,我研究了在预测给定日期的Litecoin平均价格时,片断插值的表现如何。
数据
我们将关注2013年4月至2021年2月期间Litecoin的历史价格。这些数据取自coinmarketcap,并且是可以免费使用的。我将数据分为80%的训练数据集和20%的测试数据集。后者用于评估我们预测收盘价的准确性。
加密货币Litecoin的价格历史 (Source: Kaggle)
短暂的探索性数据分析显示,平均收盘价在年初和年末是最高的。10月份最低。
多项式回归
你可能听说过多项式回归,这可以说是创建一个阶数为d的基础来近似一个非线性函数(在我们的例子中,加密货币价格波动)的最简单例子。
我对Litecoin的历史价格进行了简单的多项式回归,使用5、25和80的阶数。在每种情况下,R2值将提供一些关于模型在测试数据集上的拟合度好坏的信息。
从下面的蓝线与训练数据的拟合度来看,我们可以观察到随着多项式阶数的增加,曲线越来越陡峭。这是由于模型复杂性增加,因为高阶多项式试图追逐训练集中的每一个单一数据点。
第0天代表2013年4月30日,第2800天代表2021年2月28日。
特别是在有离群值的区域(图的中间部分),高阶多项式往往会向这些离群值的方向发展。因此,80阶多项式的模型具有最高的方差。
它在训练数据上的偏差也是最低的,这体现在最高的R2值上 ,相比之下,低阶多项式的R2更低,意味着更高的偏差但更低的方差。低阶多项式对训练数据的敏感性较低。
分片插值
我发现一个更灵活的方法是使用片断多项式来预测加密货币价格 。
分片插值用低阶多项式拟合大量的数据点。由于我们只使用低阶多项式,我们消除了过度的振荡和非收敛性。
给定一组数据点,分片插值的工作原理是在每一部分数据中使用不同的多项式。
特别是,我们使用连接的分片多项式,也称为样条。
样条的一个例子是下面的截断线性函数。它在4的左边是平的,称为函数的结。
给定几个结点,我们可以将多个线性基函数组合起来,并将其拟合到非线性数据中。
为了检测加密货币价格中存在的高度曲线关系,我使用了一个截断的三次函数,也叫三次样条。
使用三次样条,我们将数据分割成块,并对每个块拟合一个三次样条。每个样条函数在结点处连接到下一个函数。
三次样条是加密货币价格变化的一个非常好的选择,因为连接是平滑的。三次样条的斜率和它们的第一和第二导数都是匹配的。三次样条是3阶的多项式函数,它仍然足够小,以避免差异性。
三次B-样条是三次样条的一个更容易的变体,用于高效计算,因为最多有5个基函数参与贡献插值。下面我们可以看到三次B-样条在Litecoin价格上的表现,将结点放在四分位数上之后。
通过手动选择结点,即在我们有一堆数据点的情况下,与根据四分位数放置结点时的值相比,我们在测试数据集上实现了更好的R2。
在边界附近的三次样条可能表现得很奇怪,你能够在上面的红色图中注意到。 所谓的自然三次样条通过在每个极限处将一个三次多项式改为线性来强制要求函数在极限结点之外是线性的 。
自然三次样条需要选择一个自由度。对于Litecoin的价格,我通过交叉验证找到了最佳自由度:挑选了合适的174个结点的量子作为预测器的日期。结果与三次B-样条相比, 边缘的差异性更小,但测试数据集的R2略差 。
最后,我实现了平滑样条,在惩罚价格变化的同时,使均方误差最小化。
平滑样条似乎是Litecoin价格最合适的分片插值。该模型在测试数据集上实现了迄今为止获得的最佳R2值。
三次样条模型令人兴奋的部分是如何超越用于训练模型的数据范围进行推断。
根据以预测和时间序列工作而闻名的著名统计学家Rob Jhyndman的说法,三次平滑样条模型在预测方面可以作为与ARIMA模型等效的模型,但其参数空间受到限制。Rob声称,样条模型提供了一个平滑的历史趋势以及线性预测函数。
我邀请你进一步试验这个想法。我的计算机代码可以在网上以Jupyter Python/R Notebook形式查看。
本文中使用的Google Colab Notebook
数字货币和加密货币,如Litecoin,是现代全球经济中最具争议和最复杂的技术创新。本文旨在使用一种不太流行的方法: 三次样条来预测Litecoin价格的变化 。