技術貼:如何用「線性回歸」和「梯度下降」預測比特幣價格區塊鏈

鏈天下官微 2018-08-18 23:51
分享到:
導讀

怎么才能找到最佳值?有一種稱為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觀察網編輯修改或補充。


專題報道