技术贴:如何用「线性回归」和「梯度下降」预测比特币价格区块链
怎么才能找到最佳值?有一种称为GradientDescent(梯度下降)的技术可以帮助我们找到最佳值。

能否窥探到比特币价格走势的一些情况?
在本文中,我将展示梯度下降如何与线性回归相结合,整个过程我将采用比特币价格及其在Google上的搜索次数作为数据来源。
我们假设谷歌搜索比特币的次数与比特币的价格之间存在某种关系。如果我们绘制一个图表,其中x轴是搜索次数、y是价格,我们可以注意到:这中间存在着线性模式,搜索次数越多,比特币价格呈现上涨的结果。

y轴代表美元价格,x代表搜索数量
本文重点在于展示梯度下降的工作原理,并不能准确预测比特币价格涨跌。
我们先绘制一条遵循线性模式的线,为了准确预测,线与数据点接近。
首先,用等式绘制出线条:y = mx b,其中m是线斜率,b是线与y轴相交的交点位置。
我们怎么才能找到最佳值?有一种称为Gradient Descent(梯度下降)的技术可以帮助我们找到最佳值。
什么是梯度下降?
梯度下降是一种优化技术、有助于减少误差函数产生误差的技术,此处的误差函数是误差平方的总和。

可以设想一下,整条线是用m和b的猜测值绘制的,其中的误差是点到线的距离平方之和,再除以点数。
如何减少误差?
我们可以随机猜测m和b的值,并检查下错误是否减少,但这种方法并不理智。
换一种方法,我们先求出部分导数的话就可以知道误差值的移动速度,因此我们可以巧妙地更新这些值,想象一个球向下移动,底部是我们想要到达的地方,导数值可以告诉我们如何更新数据以便更接近底部。

在本例中,y轴是误差,x轴是m或b,而不是图中的w
我们要做什么:
1、 提取比特币价格和谷歌搜索数量;
2、 将价格与搜索日期相匹配;
3、 设置超参数:初始值、学习率,m和b的初始值;
4、 计算误差,检查我们的算法;
5、 计算梯度:求m的导数和b的偏导数;
6、 乘以学习率,并更新与当前m和b的差值。
接着将所有数据放在一起,绘制所得的最佳直线:

使用m和b的最佳值,我们可以画出接近最多点的线,由于梯度下降,我们也能够照需要的方向更新数值并降低错误率,从而生成适合我们想要的线。
Github完整推演过程:
https://github.com/marciok/bitcoin-prices-and-gradient-descent/blob/master/Predicting Bitcoin prices with Google search .ipynb
1.TMT观察网遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2.TMT观察网的原创文章,请转载时务必注明文章作者和"来源:TMT观察网",不尊重原创的行为TMT观察网或将追究责任;
3.作者投稿可能会经TMT观察网编辑修改或补充。

