技術貼:如何用「線性回歸」和「梯度下降」預測比特幣價格區塊鏈
怎么才能找到最佳值?有一種稱為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觀察網編輯修改或補充。