亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于TensorFlow進行股票預測的深度學習模型的設(shè)計與實現(xiàn)

        2018-07-05 02:42:36韓山杰談世哲中國海洋大學信息科學與工程學院山東青島266100
        計算機應(yīng)用與軟件 2018年6期
        關(guān)鍵詞:模型

        韓山杰 談世哲(中國海洋大學信息科學與工程學院 山東 青島 266100)

        0 引 言

        股票市場是國民經(jīng)濟發(fā)展變化的“晴雨表”,股票價格的漲跌也是政治、經(jīng)濟、社會等諸多因素的綜合反映[1]。所謂“凡事預則立,不預則廢”。對股票投資者來說,對股市的變化趨勢預測與利潤的獲取有著直接的聯(lián)系,預測越準確,對風險的防范就越有把握;對上市公司來說,股票指數(shù)反映了該公司的經(jīng)營情況以及未來發(fā)展趨勢,影響著整個公司的效益,是分析和研究該公司的主要技術(shù)指標;對國家的經(jīng)濟發(fā)展而言,股票預測研究同樣具有重要作用。因此對股市的內(nèi)在價值及預測的研究具有重大的理論意義和應(yīng)用前景。目前,股票預測的方法已經(jīng)有很多種,大致可以分為兩類:統(tǒng)計學方法和人工智能方法。統(tǒng)計學方法有Logistic回歸模型、ARCH模型等;人工智能方法有多層感知器神經(jīng)網(wǎng)絡(luò)、支持向量機[2-3]等。

        TensorFlow是谷歌第二代分布式機器學習系統(tǒng),最初設(shè)計的意圖是加速機器學習的研究并快速地將原型轉(zhuǎn)化為產(chǎn)品。與原來的系統(tǒng)相比,TensorFlow更快,更加智能化,也更加靈活,因此可以更加輕松地適應(yīng)新產(chǎn)品和研究工作[4]。除了執(zhí)行深度學習算法,TensorFlow還可以實現(xiàn)很多其他算法,包括線性回歸、邏輯回歸、隨機森林等。TensorFlow建立的大規(guī)模深度學習模型的應(yīng)用場景非常廣泛,包括語音識別、自然語言處理、計算機視覺、機器人控制、信息抽取、數(shù)據(jù)分析及預測等[5]。TensorFlow提供了很多構(gòu)建神經(jīng)網(wǎng)絡(luò)的API接口,便于構(gòu)建MLP神經(jīng)網(wǎng)絡(luò)模型,也簡化了編程工作,與傳統(tǒng)平臺構(gòu)建的模型相比,極大地提高了效率。

        1 TensorFlow深度學習框架

        1.1 TensorFlow技術(shù)特性

        TensorFlow既是一個實現(xiàn)機器學習算法的接口,同時也是執(zhí)行機器學習算法的框架[6]。它前端支持Python、C++、go等多種開發(fā)語言,后端使用C++、CUDA(Compute Unified Device Architecture)等寫成。TensorFlow使用數(shù)據(jù)流式圖來規(guī)劃計算流程,它可以將計算映射到不同的硬件和操作系統(tǒng)平臺。無論是個人的PC還是大規(guī)模GPU集群,TensorFlow都能在這些平臺上良好運行。TensorFlow中的計算可以表示為一個有向圖,或稱為計算圖,其中每一個運算操作將作為一個節(jié)點,節(jié)點與節(jié)點之間的連接稱為邊[7]。圖1描述了數(shù)據(jù)的計算流程[8],其中每個運算操作都代表了一種類型的抽象運算,比如矩陣乘法或者向量加法。這些運算還負責維護和更新狀態(tài),用戶可以對計算圖的分支進行控制或循環(huán)操作。

        圖1 TensorFlow計算示例

        本文通過在Linux操作系統(tǒng)上安裝TensorFlow,并基于TensorFlow構(gòu)建MLP神經(jīng)網(wǎng)絡(luò)模型,在此基礎(chǔ)上使用Python語言實現(xiàn)股票的預測程序。并且采用多項指標對比了傳統(tǒng)MATLAB平臺構(gòu)建的BP神經(jīng)網(wǎng)絡(luò),驗證基于TensorFlow構(gòu)建的深度學習模型的優(yōu)越性能。

        1.2 使用Anacond在Linux下安裝TensorFlow的CPU版本

        1.2.1 Anaconda 簡介

        Anaconda是一個用于科學計算的Python發(fā)行版,支持 Linux、Mac、Windows系統(tǒng),提供了包管理與環(huán)境管理的功能,可以很方便地解決多版本Python并存、切換以及各種第三方包安裝問題。Anaconda利用工具/命令conda來進行package和environment的管理,并且已經(jīng)包含了Python和相關(guān)的配套工具。

        1.2.2 TensorFlow 安裝

        1) 首先到Anaconda官網(wǎng)(www.continuum.io/downloads)下載電腦所對應(yīng)版本的Anaconda,這里下載的是最新的Linux版本。

        2) 到下載完成的路徑執(zhí)行:

        bash Anaconda3-4.4.0-Linux-x86_64.sh

        3) 創(chuàng)建一個conda運行環(huán)境,我們起名tensorflow,Python版本采用Python3.6:

        conda create -n tensorflow python=3.6

        4) 激活TensorFlow環(huán)境:

        source activate tensorflow

        1.3 TensorFlow的計算流程

        TensorFlow程序可以分為構(gòu)建圖和執(zhí)行圖兩個階段[9],如圖2所示。

        圖2 TensorFlow計算流程圖

        1) 構(gòu)建圖:TensorFlow在計算之前首先必須完成計算圖的構(gòu)建,包括初始化節(jié)點、定義程序中所需的變量和常量。用戶可以通過session的Extend方法添加新的節(jié)點和邊,用以創(chuàng)建計算圖。

        2) 執(zhí)行圖:圖構(gòu)建完之后就可以通過session對象的run方法執(zhí)行計算圖,包括執(zhí)行節(jié)點之間的相應(yīng)操作并更新變量值,最后得到相應(yīng)數(shù)據(jù)。

        2 MLP神經(jīng)網(wǎng)絡(luò)設(shè)計與實現(xiàn)

        多層感知器(MLP)基于前向反饋人工神經(jīng)網(wǎng)絡(luò),含有多層節(jié)點,包括輸入層、隱含層和輸出層,每層節(jié)點與網(wǎng)絡(luò)的下一層節(jié)點完全連接[10]。輸入層節(jié)點代表輸入數(shù)據(jù)集,其他層的節(jié)點通過將輸入數(shù)據(jù)與層上節(jié)點的權(quán)重W以及閾值b組合且應(yīng)用一個激活函數(shù)得到該層相應(yīng)的輸出。MLP的學習規(guī)則是使用最速下降法,通過反向傳播來不斷調(diào)整神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,使網(wǎng)絡(luò)的均方誤差達到最小[11]。

        2.1 多層感知器(MLP)

        三層MLP神經(jīng)網(wǎng)絡(luò)模型如圖3所示,分為輸入層,隱含層和輸出層,神經(jīng)網(wǎng)絡(luò)中的參數(shù)主要有:

        W1:輸入層到第一個隱含層的權(quán)重。

        W12:隱含層到輸出層的權(quán)重。

        b1:隱含層的激活閾值。

        b2:輸出層的激活閾值。

        f1:隱含層激活函數(shù)采用sigmod型的激活函數(shù):

        (1)

        f2:輸出層使用softmax方程:

        (2)

        圖3 MLP神經(jīng)網(wǎng)絡(luò)模型

        三層MLP神經(jīng)網(wǎng)絡(luò)可以寫成矩陣形式如下:

        a2=f2(w2f1(w1p+b1)+b2)

        (3)

        誤差函數(shù):均方誤差函數(shù)MSE是:

        (4)

        式中:Yi是神經(jīng)網(wǎng)絡(luò)預測輸出結(jié)果,Ti是期望輸出結(jié)果,n是樣本總量。

        MLP算法的核心是依據(jù)梯度下降法,通過計算輸出層誤差,調(diào)整輸入層和隱含層,隱含層和輸出層之間的權(quán)值和閾值。通過反復修正,一直到MSE函數(shù)值最小或者達到指定訓練次數(shù)。圖4是MLP算法簡單流圖。

        圖4 MLP算法流程

        2.2 基于TensorFlow的MLP實現(xiàn)

        本實驗采用從互聯(lián)網(wǎng)上獲取的蘋果公司的股票價格作數(shù)據(jù)集,數(shù)據(jù)集包含240天的股票信息,分為每日開盤價格和收盤價格,存儲在本地并命名為apple.csv。將數(shù)據(jù)集中的70%作為訓練集,30%作為驗證集。以開盤價格作為訓練數(shù)據(jù),收盤價格作為目標數(shù)據(jù),使用Python語言和TensorFlow庫編寫算法程序,以此構(gòu)建股票預測的神經(jīng)網(wǎng)絡(luò)模型。

        輸入層設(shè)計:將每日股票開盤價格作為訓練數(shù)據(jù),收盤價格作為目標數(shù)據(jù),輸入到神經(jīng)網(wǎng)絡(luò)中作為輸入層:

        x=tf.placeholder(″float″, [None, 1])

        y=tf.placeholder(″float″, [None,1])

        其中x是訓練數(shù)據(jù),y是目標數(shù)據(jù)。

        隱含層設(shè)計:n_input是輸入層神經(jīng)元節(jié)點數(shù),n_hidden_1是當前隱含層節(jié)點數(shù)。

        weight_1是輸入層與隱含層之間連接權(quán)重,bias_1是隱含層的閾值。

        weights_1=np.empty([n_input,n_hidden_1],

        dtype=np.float32)

        bias_1=np.empty(n_hidden_1,dtype=np.float32)

        輸出層設(shè)計:輸出層采用softmax回歸函數(shù)。

        y=softmax(wx+b)

        (5)

        softmax是tf.nn下面的一個函數(shù),而tf.nn包含了大量神經(jīng)網(wǎng)絡(luò)的組件[12],我們用一行簡單的代碼就定義了softmax regression,語法和直接寫數(shù)學公式很像。

        誤差計算:訓練過程與MSE的作用類似,但是克服了MSE做誤差函數(shù)帶來的權(quán)重更新過慢問題。

        pred=multilayer_perceptron(x, weights, biases)

        cost=tf.reduce_mean(tf.square(pred-y))

        其中pred是訓練過程中的網(wǎng)絡(luò),cost是誤差。

        使用訓練好的模型進行預測:

        y_predicted=pred.eval(feed_dict={x:x_test})

        y_predicted=scaler.inverse_transform(y_predicted)

        y_test=scaler.inverse_transform(y_test)

        其中,y_predicted是網(wǎng)絡(luò)預測的結(jié)果,y_test是實際的股票價格。

        在完成了網(wǎng)絡(luò)訓練后,使用訓練完成的網(wǎng)絡(luò)進行預測,需要對模型的準確率進行評測。計算根均方誤差RMSE,并作為網(wǎng)絡(luò)模型優(yōu)劣的評判標準:

        RMSE=math.sqrt(metrics.mean_squared_error(y_predicted, y_test))

        3 實驗結(jié)果討論與分析

        3.1 預測結(jié)果

        訓練完成后,將測試樣本輸入至MLP神經(jīng)網(wǎng)絡(luò)模型,得到預測的結(jié)果,如圖5所示。

        圖5 收盤價格預測結(jié)果

        其中,圓點表示的是預測結(jié)果,折線表示的測試樣本的價格,可以看出每個圓點幾乎都落在了折線的轉(zhuǎn)折點處,而轉(zhuǎn)折點處就是實際的每日收盤價格。這表明構(gòu)建的股票預測神經(jīng)網(wǎng)絡(luò)模型效果理想,能夠很好地應(yīng)用到金融數(shù)據(jù)分析當中。

        同時我們參考文獻[13-14]中使用BP神經(jīng)網(wǎng)絡(luò)進行預測的方法,使用相同的數(shù)據(jù)集進行了對比試驗,試驗結(jié)果如圖6所示。

        圖6 BP神經(jīng)網(wǎng)絡(luò)預測結(jié)果

        對比兩個預測結(jié)果圖明顯看出BP網(wǎng)絡(luò)預測點偏離期望輸出更大;而且從數(shù)據(jù)上來看,TensorFlow模型的RMSE=0.624 5,而BP神經(jīng)網(wǎng)絡(luò)的RMSE=0.894 2,顯示出TensorFlow在預測準確度上更勝一籌。更有,我們在統(tǒng)計了50次試驗中每個神經(jīng)網(wǎng)絡(luò)預測所用時間的平均值Tm之后,TensorFlow神經(jīng)網(wǎng)絡(luò)模型的Tm=1.221 s而BP神經(jīng)網(wǎng)絡(luò)的Tm=2.483 s,顯示了TensorFlow在并行計算模式的支持下,加速神經(jīng)網(wǎng)絡(luò)訓練的效果十分明顯。

        3.2 迭代次數(shù)對訓練誤差的影響

        訓練誤差我們采用RMSE,隨著訓練迭代次數(shù)的增加,RMSE的變化如圖7所示。

        圖7 迭代次數(shù)對訓練誤差的影響

        (6)

        從圖7可以看出,隨著迭代次數(shù)的增加,神經(jīng)網(wǎng)絡(luò)模型的準確度也在不斷提高,但當?shù)螖?shù)達到1 000之后,準確度幾乎沒有明顯變化,說明此時神經(jīng)網(wǎng)絡(luò)訓練的權(quán)值和閾值已經(jīng)達到穩(wěn)定,接下來的實驗將采用1 000為迭代次數(shù)進行訓練。

        3.3 隱含層數(shù)量和節(jié)點數(shù)對模型的影響

        神經(jīng)網(wǎng)絡(luò)的隱含層數(shù)量和隱含層節(jié)點數(shù)對于其模型準確度有很大影響。對于不是很復雜的問題,1個或2個隱含層就能達到不錯的效果,太多反而會增加訓練的和預測的時間。本實驗針對這兩種情況做了實驗,結(jié)論是當隱含層節(jié)點數(shù)相同的情況下,2個隱含層的RMSE最小,但訓練用時Tm稍大于一個隱含層的情況,鑒于該時間因素影響不大,所以后續(xù)實驗采用隱含層數(shù)為2。

        對于隱含層節(jié)點數(shù)量,始終沒有一個非常權(quán)威而可靠的方式,一般在經(jīng)驗公式的基礎(chǔ)上采用逐步實驗法找出最佳的節(jié)點數(shù)。

        (7)

        式中:m是隱含層節(jié)點數(shù),n是輸入層節(jié)點數(shù),l是輸出層節(jié)點數(shù),a是1~10之間的常數(shù)。

        當隱含層層數(shù)固定為2時,隱含層最大節(jié)點數(shù)對于預測效果的影響如圖8和圖9所示。

        由圖可知,通過增加節(jié)點數(shù)可以在一定階段內(nèi)提高預測準確度;但是當節(jié)點數(shù)量達到一定程度時,誤差幾乎不變,但是預測的時間會迅速增加。因此我們在實際應(yīng)用中要根據(jù)具體要求,同時考慮到模型運行時間和準確度,找到最佳的網(wǎng)絡(luò)結(jié)構(gòu)。

        TensorFlow提供了一個很好的機器學習算法框架,可以幫助我們在極短的時間內(nèi)快速構(gòu)建神經(jīng)網(wǎng)絡(luò)模型。數(shù)據(jù)并行,模型并行和流水線并行的并行計算模式加速了神經(jīng)網(wǎng)絡(luò)的訓練,使我們可以快速找到合適的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。

        圖8 節(jié)點數(shù)對于訓練誤差的影響

        圖9 節(jié)點數(shù)對于預測時間的影響

        4 結(jié) 語

        TensorFlow具有編程簡單,算法集成度高和靈活的優(yōu)點,使其能夠提升建模、分析的效率。使用TensorFlow框架設(shè)計并實現(xiàn)了用于股票預測的深度學習流程以及算法框架,并得到了有較高準確率的預測模型。根據(jù)TensorFlow的平臺特性和在深度學習中的優(yōu)勢,我們進行了相關(guān)實驗。

        本文通過實驗驗證了TensorFlow構(gòu)建神經(jīng)網(wǎng)絡(luò)的優(yōu)勢并分析了隱含層層數(shù)和節(jié)點數(shù)對網(wǎng)絡(luò)模型的影響,結(jié)果表明,合適的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)有助于提高模型的預測效果。通過與其他平臺構(gòu)建的神經(jīng)網(wǎng)絡(luò)方法對比,顯示出本文所構(gòu)建的MLP神經(jīng)網(wǎng)絡(luò)模型不僅能夠取得較好的預測效果,而且耗時更少??梢娀赥ensorFlow設(shè)計的神經(jīng)網(wǎng)絡(luò)模型具有較大的應(yīng)用潛質(zhì)。由于影響

        股票變動的因素很多,未來的工作計劃是為股票預測的神經(jīng)網(wǎng)絡(luò)模型增加更多指標,并且隨著指標維度的增加,下一步將采用更加強大的卷積神經(jīng)網(wǎng)絡(luò)建立分析模型。

        [1] 陳星, 武麗芳, 王福明. 基于GA-BP神經(jīng)網(wǎng)絡(luò)的股票預測研究[J]. 山西電子技術(shù), 2014(1):93- 94.

        [2] 郝知遠. 基于改進的支持向量機的股票預測方法[J]. 江蘇科技大學學報(自然科學版), 2017, 31(3):339- 343.

        [3] 楊君岐, 孫少乾, 樂甲. 基于Elman網(wǎng)絡(luò)的股價預測模型及在浦發(fā)銀行股票預測中的應(yīng)用[J]. 陜西科技大學學報, 2007, 25(6):127- 130.

        [4] 佚名. 谷歌推出TensorFlow機器學習系統(tǒng)[J]. 電信工程技術(shù)與標準化, 2015,28(11):92- 92

        [5] 黃文堅,唐源. TensorFlow實戰(zhàn)[M]. 北京:電子工業(yè)出版社,2017:2- 3.

        [6] Rampasek L, Goldenberg A. TensorFlow: Biology’s Gateway to Deep Learning?[J]. Cell Systems, 2016, 2(1):12.

        [7] Abadi M. TensorFlow: learning functions at scale[J]. Acm Sigplan Notices, 2016,51(1):1- 1.

        [8] 張俊, 李鑫. TensorFlow平臺下的手寫字符識別[J]. 電腦知識與技術(shù), 2016, 12(16):199- 201.

        [9] 劉帆, 劉鵬遠, 李兵, 等. TensorFlow平臺下的視頻目標跟蹤深度學習模型設(shè)計[J]. 光學學報, 2017, 54(9):1- 1.

        [10] 邱啟榮, 于婷. 基于主成分分析的BP神經(jīng)網(wǎng)絡(luò)對房價的預測研究[J]. 湖南文理學院學報(自科版), 2011, 23(3):24- 26.

        [11] Sokouti B, Haghipour S, Tabrizi A D. A framework for diagnosing cervical cancer disease based on feedforward MLP neural network and ThinPrep histopathological cell image features[J]. Neural Computing & Applications, 2014, 24(1):221- 232.

        [12] 李文鵬,高宇菲,錢佳佳, 等. 深度學習在量化投資中的應(yīng)用[J]. 統(tǒng)計與管理,2017(8):104- 106.

        [13] 吳微, 陳維強, 劉波. 用BP神經(jīng)網(wǎng)絡(luò)預測股票市場漲跌[J]. 大連理工大學學報, 2001, 41(1):9- 15.

        [14] Li Z X, Wu W, Gao W D. Prediction of Stock Market by BP Neural Networks with Technical Indexes as Input[J]. Journal of Mathematical Research & Exposition, 2003, 23(1):83- 97.

        猜你喜歡
        模型
        一半模型
        一種去中心化的域名服務(wù)本地化模型
        適用于BDS-3 PPP的隨機模型
        提煉模型 突破難點
        函數(shù)模型及應(yīng)用
        p150Glued在帕金森病模型中的表達及分布
        函數(shù)模型及應(yīng)用
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
        3D打印中的模型分割與打包
        国产精品女同一区二区久| 久久99久久99精品免观看| 国产精品11p| 精选二区在线观看视频| 国产亚洲精品在线视频| 成人欧美日韩一区二区三区| 青青青国产精品一区二区| 26uuu欧美日本在线播放| 日韩一级精品视频免费在线看| 久久人妻av一区二区软件| 久久久精品2019免费观看| 亚洲国产精品无码久久九九大片健| 国产自拍视频免费在线观看| 亚洲色欲久久久综合网东京热| 亚洲国产成人va在线观看天堂| 国产视频嗯啊啊啊| 日本一区二区三区不卡在线| 国产xxx69麻豆国语对白| 精品国产福利一区二区在线| 大香蕉久久精品一区二区字幕| 国产日韩精品中文字幕| 在线欧美中文字幕农村电影| 中文字幕国产欧美| 国语自产啪在线观看对白| 伊人情人色综合网站| 日本边添边摸边做边爱的网站| 男人阁久久| 亚洲中文字幕精品久久a| 麻豆一区二区三区蜜桃免费| 久久免费视频国产| av天堂一区二区三区精品| 国产成人综合久久久久久| 国产精品免费大片| 欧美日一本| 91精品国产一区国产二区久久| 亚洲午夜福利在线视频| 国产成人精品亚洲午夜| 亚洲中文字幕乱码在线观看| 久久久久人妻精品一区三寸| 男人扒开女人双腿猛进女人机机里| 少妇被日到高潮的视频|