【《基于機器學習算法的股票市場預測分析》15000字】_第1頁
【《基于機器學習算法的股票市場預測分析》15000字】_第2頁
【《基于機器學習算法的股票市場預測分析》15000字】_第3頁
【《基于機器學習算法的股票市場預測分析》15000字】_第4頁
【《基于機器學習算法的股票市場預測分析》15000字】_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1-基于機器學習算法的股票市場預測分析目錄1引言31.1選題背景31.2研究意義41.3研究計劃41.4文獻綜述51.5論文框架72機器學習算法理論72.1機器學習簡介72.2K-臨近算法82.3線性回歸算法102.4長短期記憶網(wǎng)絡算法122.5移動平均算法143獲取數(shù)據(jù)和數(shù)據(jù)處理163.1獲取股票數(shù)據(jù)163.2數(shù)據(jù)存儲173.3數(shù)據(jù)處理183.4特征選擇與處理204系統(tǒng)的界面搭建與完善204.1Django簡介204.2使用Django搭建web界面214.3系統(tǒng)完善255實證分析275.1效果分析275.2算法分析27結論29參考文獻301引言1.1選題背景早在1990年代,中國股票市場就已經(jīng)重啟,到現(xiàn)在已有超過30年的歷史,滬、深兩指數(shù)已有近3000支股票,整個A股市場也有將近3000多家上市公司,成為了世界第二大股票市場,總市值超過50億元。在當今社會中,股票已成為大眾的集聚地,關注股票走勢的投資者數(shù)量在不斷地增長,人們開始嘗試通過股票圖線指導自己的投資預測。然而,盡管國內(nèi)股票市場在逐漸成熟、投資數(shù)量有著穩(wěn)步提升,準確的預測股票的走勢、從中選出具有投資價值的股票對于投資者來講仍然是一件十分困難的事情,投資者不僅需要具備足夠的投資交易經(jīng)驗,還需要對市場有相當?shù)拿舾卸?。在過去的市場中,投資者主要根據(jù)股票的價值和趨勢進行分析,即基本面分析和技術分析。發(fā)行股票的企業(yè)創(chuàng)造現(xiàn)金流的能力很大程度上決定了股票的價值,或者說是股票的價格,若想獲得利潤,應該先對企業(yè)的現(xiàn)金流有一個合理的預估,在企業(yè)未來的自有現(xiàn)金流折現(xiàn)高于當前的值時買入;趨勢分析,基于的角度是歷史會再重演,圖像化市場的變化,對有用的信息進行捕捉,根據(jù)股票的歷史價格和成交量、收盤價等綜合判斷該股票的走勢。綜合來講,企業(yè)的基本面分析相對來講比較容易,投資者可以通過網(wǎng)絡等渠道直觀地獲得企業(yè)的綜合信息和發(fā)展狀況,因此,在技術層面對股票的數(shù)據(jù)和圖像進行分析將成為實現(xiàn)股票預測的重要一步。在國外,股票市場的分析在很早以前就已經(jīng)開始了,研究人員將各種數(shù)學理論、數(shù)據(jù)挖掘技術以及計算機技術等結合起來,并在股票分析軟件中使用它們,再通過研究過去時間內(nèi)的交易數(shù)據(jù),探索出了股票價格走勢的大致規(guī)律。機器學習在股票預測領域發(fā)揮了相當重要的作用,很多細小微妙的、固有的和非線性的關系都可以被它捕捉到。自1970年開始,經(jīng)過不斷的成長,機器學習的功能性和實用性有了非常大的提升,例如數(shù)據(jù)可用性的增長、計算能力的增長、來自包括但不限于計算機科學和統(tǒng)計學的新技術,催生了強大的機器學習的新算法,讓我們相信機器學習算法可以提供比線性模型更好的方法。機器學習算法已經(jīng)應用到了金融以外的許多領域,并被證明比許多傳統(tǒng)的技術更加有效,例如語音識別(如siri)、圖像識別(如自動駕駛)或是推薦引擎(Amazon的應用)等,因此,機器學習在股票預測領域會發(fā)揮非常優(yōu)秀且可靠的作用是值得信任的。過去的幾年里,隨著經(jīng)濟發(fā)展和科技水平的不斷提高,在現(xiàn)實生活和工作中對于股票預測的需求不斷加大,針對此原因,不論是國內(nèi)還是國外,都越來越重視在股票市場的研究中使用機器學習技術。利用不斷學習的新內(nèi)容,機器學習可以對預測模型進行優(yōu)化和完善,給出可靠地預測結果,并且不需要人為過多地進行干涉。同時,在股票市場的預測中引入機器學習技術,從股票歷史數(shù)據(jù)中提取出重要信息,這樣不僅可以幫助股民研究股票,為價格預測提供理論支撐,又可以為企業(yè)領導人的決策、計劃等提供技術支持。根據(jù)此現(xiàn)狀和需要,本文選擇機器學習作為股票分析和預測的研究技術,分析股票市場和當今環(huán)境,選擇動量策略作為研究策略,獲取滬、深兩指數(shù)的股票數(shù)據(jù)并進行數(shù)據(jù)分析和處理,將Python作為開發(fā)工具,使用線性回歸算法、移動平均算法、K-臨近算法和長短期記憶網(wǎng)絡算法對股票數(shù)據(jù)進行預測并給出預測結果,建立友好交互界面,輸出預測圖像。1.2研究意義1.2.1理論意義研究機器學習算法、數(shù)據(jù)處理、特征選擇、模型訓練等,通過此方面的研究為選股提供可靠的技術和理論依據(jù)1.2.2現(xiàn)實意義近年來,隨著國家經(jīng)濟的不斷進步和國民生活質量的不斷提升,股票逐漸走入大眾的日常生活。目前現(xiàn)存的一些選股系統(tǒng)大多魚龍混雜,多以廣告、盈利為主,甚至存在一些諸如詐騙、傳銷等非法問題。從現(xiàn)實中的情況來看,A股市場的發(fā)展歷程比較短,很多股票的定價都存在偏差,且非理性人投資行為也普遍存在。正是因為這些問題的存在,我國的股市市場的預測分析擁有十分巨大的進步空間。因此,一款正規(guī)、有效的選股系統(tǒng)必將為眾多股民帶來福音,為其提供切實可靠的股市分析和選股預測。同時也能促進證券市場的健康蓬勃發(fā)展,挑動更多的國民投資股票,刺激我國證券行業(yè)的進步。據(jù)此來看,本文研究基于機器學習的選股預測,其現(xiàn)實意義和社會意義十分重要。1.3研究計劃首先獲取股市數(shù)據(jù),選取滬深指數(shù)下的股票數(shù)據(jù)作為訓練數(shù)據(jù),并對股票數(shù)據(jù)進行處理;再通過機器學習反轉策略、動量策略、均值回歸策略等策略方法判斷股票是否可以獲利,利用機器學習算法如LSTM算法、K-臨近算法、線性回歸算法等預測股票走勢并回測,利用最小二乘法判斷擬合效果;最后完善前后端接口,給出友好交互界面,實現(xiàn)選股功能(在界面中可以輸入股票代碼,根據(jù)不同的算法分別給出預測,再由用戶自行選擇)。從機器學習和股票市場來看,選擇動量策略有更大的可能性獲得較高利潤。具體如下:1)分行業(yè)拿到歷史數(shù)據(jù),找到估值的上下沿(比如,對于一些傳統(tǒng)行業(yè)適用于市盈率pe,或市凈率pb)2)利用LSTM、K-臨近、線性回歸等、移動平均算法對股票數(shù)據(jù)進行預測,并對預測結果進行驗證擬合3)建立相應的投資組合,并拿部分數(shù)據(jù)回歸測試,驗證效果4)實現(xiàn)交互界面,輸出預測圖像,給出選股建議1.4文獻綜述利用機器學習對股票進行預測離不開計算機技術和數(shù)理金融的研究,下面就一些機器學習、股票投資的相關內(nèi)容做一個簡單的總結。由文獻[5][6]可知,股票收益來源大約分為三類,均值回歸、趨勢延續(xù)和盈利增長,其中均值回歸適用于熊市或者震蕩市,趨勢延續(xù)適用于牛市;盈利增長兩者均可,收益取決于買點,需要具體分析。在獲取到股票數(shù)據(jù)后,對此采用不同的策略、在不同的市場情況下可能會有不同的預測結果,并且股市的各種狀況以及社會環(huán)境都可能會對股民的決策造成影響。文獻[1]中指出,隨著經(jīng)濟的發(fā)展,股票投資成為越來越多人青睞的對象,使用機器學習SVM算法和DTW算法構建股票的分析和預測模型,選取盤中模型作為之后模型評估的基準線。其分別選取了上證指數(shù)、鴻達興業(yè)股票、鼎漢股票數(shù)據(jù),利用已構建的支持向量機和時間動態(tài)扭曲模型在Python平臺上進行預測分析。其結果為,針對上證指數(shù)而言,支持向量機(SVM)預測下逆向策略效果更好,對于鴻達興業(yè)股票和鼎漢股票而言,支持向量機預測下正向策略效果更好;基于時間動態(tài)扭曲算法(DTW)的預測方法對于特定的股票有較高的精度和可信度。針對其研究結果與實際情況能夠看出,當股票的類型不同時,不一樣的算法給出的結果可能不同,甚至有可能出現(xiàn)很大的偏差,因此是否需要考慮針對不同的股票采用不同的算法分別進行預測,給出基于不同算法的預測結果,由用戶綜合考量決定。同時本人認為,“盤中策略”并不是一個很好的策略,其盈利情況并不理想。針對目前的股票市場,應該尋找一個更有效、更適合、盈利可能性更大的策略。LKCChan(2000)【12】在JournalofFinance發(fā)表了一篇《動量策略》,其研究結果表面,動量確實會對股票的價格產(chǎn)生影響,就相當于物理學中所說的慣性,市場出現(xiàn)波動后,這些波動并不會在發(fā)生之后就立刻消失,而是會在一定的時間內(nèi)仍持續(xù)存在。因此,動量策略在當今的股票市場中成為了一種十分重要的量化投資策略,為本文選取策略提供了新的思路,同時動量策略對于趨勢的捕捉也十分有利。文獻[2]又給出了一個新的方向,通過XGBoost算法建模,利用定價信號來判斷買入還是賣出。他們試圖利用大量的股票特征來對股票的“公允價值”進行預測,并對“錯誤定價”信號進行量化,即買入或賣空估值過低或過高的股票,在此基礎上還加入了新聞情緒信號作為疊加,進一步完善了策略。摩根大通【2】的這種研究方法更加注重投資者的興趣以及投資能力,綜合考慮了超過37種可能有助于預測股票市場的股票特征,從估值、盈利能力、運營效率、質量、增長、情緒和風險等角度進行分析,能使結果更加理性和貼近人性需求,但是影響股票市場的不確定因素太多,未來難以預測的事情也有很多,例如戰(zhàn)爭、疫情等都會對股市產(chǎn)生影響。另外本人認為“錯誤定價”對于投資者來說說服力不夠強,人們或許更愿意買入預測出是直線上漲的股票,而并非低估/高估的股票。李映照和黃琳(2010)[3]運用多元線性回歸提取出了機構增持股的21個財務特征的公因子,得出公司規(guī)模,每股指標,經(jīng)營收益等9個因子對機構持股偏好有影響。李辰穎,田治威(2014)[4]基于遺傳神經(jīng)網(wǎng)絡的獨立機構投資者持股偏好研究指出,投資者更喜歡比較安全和有良好收益的股票,而企業(yè)規(guī)模和市場收益率兩個非財務特征是安全性的兩個主要內(nèi)容,盈利性主要包含每股收益和凈資產(chǎn)收益率兩個財務特征,這為本文股票特征的選取提供了參考。同時,近些年隨著計算機技術的不斷進步和發(fā)展,將機器學習算法應用與金融尤其是股票領域相結合逐漸成為熱門的研究方向。由于金融數(shù)據(jù)關系十分的復雜,線性的、參數(shù)化的模型通常不能很好的擬合數(shù)據(jù)關系,這時,機器學習算法就可以充分地利用它自身非線性、非參數(shù)的優(yōu)勢,快速地挖掘龐大的數(shù)據(jù),從而探索出其中復雜的關系。近幾年以來,許多國內(nèi)學者都在這個領域開始了研究探索。湯凌冰(2014)【13】對機器學習算法應用于投資領域的思想和策略進行了系統(tǒng)的總結整理,初步提出了線性回歸算法、移動平均算法應用于股票預測,和曾經(jīng)經(jīng)常使用的高斯核函數(shù)相比,收益有很明顯的提升。黃卿(2018)【14】等利用神經(jīng)網(wǎng)絡、SVM和LSTM預測分析了具有股票指數(shù)的期貨的高頻收益變動方向,三種方法都具備一定的預測能力,LSTM的擬合結果最好。綜上所述,我國股票投資市場的規(guī)模和股票開戶數(shù)據(jù)都呈迅速增長的趨勢,不論是從國內(nèi)的股票市場規(guī)模以及國外股票市場的發(fā)展經(jīng)驗來看,股票市場、量化投資擁有十分令人期待的發(fā)展前景。本文將進一步利用機器學習算法對股票市場進行預測和分析,給出選股建議,以期為股票預測提供新的思路和方法,拓寬該領域的研究。1.5論文框架本文由六部分內(nèi)容構成,各個部分主要內(nèi)容如下:第一章為緒論,主要是當今股票市場、股票預測等發(fā)展情況的介紹以及機器學習技術在數(shù)據(jù)預測方面應用的現(xiàn)狀和成果,以及對相關文獻的學習,闡述本文的研究角度和研究意義。第二章為機器學習相關算法的介紹與應用,包括線性回歸算法、長短期記憶網(wǎng)絡算法、移動平均算法、K-臨近算法,以及應用這些算法對股票數(shù)據(jù)進行訓練和回測。第三章為數(shù)據(jù)獲取和數(shù)據(jù)處理部分,主要闡述獲取股票數(shù)據(jù)的方法,以及對股票數(shù)據(jù)的清洗、處理和儲存,使其能夠被利用。第四章為系統(tǒng)界面的搭建,才用Django作為Web框架,實現(xiàn)交互功能和預測圖線的輸出,以及其他簡單應用的實現(xiàn)。第五章為實證分析,對算法的有效性和穩(wěn)定性進行驗證。最后為結論,對本文進行概括,總結研究的不足,并期望能分析指出未來機器學習在金融股票領域可能的研究方向和作用。2機器學習算法理論2.1機器學習簡介作為近幾年大熱的研究方向之一,機器學習的主要功能為:根據(jù)相關計算機的技術、學習已有數(shù)據(jù)的規(guī)律,進而分析預測未來的數(shù)據(jù)。機器學習主要分為監(jiān)督學習、無監(jiān)督學習和半監(jiān)督學習,監(jiān)督學習中的數(shù)據(jù)集是由特征以及標簽組成,其目的是訓練機器,從而對標簽取值準確的預測。例如:房價預測、腫瘤判定等;無監(jiān)督學習則是不知道數(shù)據(jù)的答案和標簽,不對數(shù)據(jù)集作任何說明,其目的是讓機器自動將一堆混亂的數(shù)據(jù)分成幾個簇(類),而分類的標準沒有人為的事先提供。顯然,對于股價的預測應屬于監(jiān)督學習,從所給的訓練數(shù)據(jù)集(股票數(shù)據(jù))中訓練出一個函數(shù)(模型參數(shù)),當新的數(shù)據(jù)到來時,可以根據(jù)這個函數(shù)預測結果。在監(jiān)督學習中,其訓練集包括輸入和輸出兩部分,有時也被稱為特征和目標。訓練集中的目標是由人來進行標注的,為了達到預測的目的,首先要訓練已有的訓練樣本(對應到本項目中為已知股票數(shù)據(jù)及其對應的輸出),得到一個最優(yōu)模型;再通過這個模型,把全部的輸入映射為相應的輸出,并初步判斷這些輸出。本文要做的就是要訓練股票數(shù)據(jù),建立預測模型,預測輸出股票的大致走向,從而可以建議用戶在最優(yōu)的時機買入股票,進而獲得最大的利潤。2.2K-臨近算法2.2.1K-臨近算法簡介K-臨近算法,全稱是KNearestNeighbors(KNN),意為K個最相近的鄰居,屬于有監(jiān)督學習中的分類算法。從它的名字我們可以直觀地看出,其算法的基本原理就是,當想要預測一個新的值x時,根據(jù)它距離最近的K個點的類別進而判斷x的類別。如圖2-1,假設綠色的點為想要預測的點,此時K=3,則K-臨近算法就去尋找與它最近的三個點(圖內(nèi)圓圈內(nèi)的點),看哪種點的類別多一些,則把要預測的點歸為這一類。本例中藍色的三角形多一些,這個綠色的點被歸為藍色三角形一類。如圖,當K=5時,則變成紅色的圓多一些,那么新來的點被歸為紅色的圓。由此可見,預測結果的準確度十分依賴K值的選取和點距離的計算。圖2-SEQ圖2-\*ARABIC1K-臨近算法預測舉例2.2.2距離計算對于計算兩個點之間的距離,可以使用歐拉公式來計算,以二維平面為例,二維空間中兩點之間的距離計算公式為:ρ(公式2-1二維空間兩點間距離公式)K-臨近算法就是將待預測的點與平面中各個點之間的距離進行計算,保存后再對其進行排序,選出前K個值,觀察這K個值內(nèi)哪些類別比較多,待預測的這個點就可被化為哪一類。2.2.3K值選擇通過先前的例子可以看出,K值的選擇十分重要。本文計劃采用交叉驗證法選擇K的值,將樣本數(shù)據(jù)按照8:2拆分出用于訓練的數(shù)據(jù)和用于驗證的數(shù)據(jù),首先從較小的值開始,再不斷增加K值,然后計算驗證集合的方差,直到找到一個最優(yōu)的值。通過交叉驗證計算方差后得到的大致圖線如下:圖2-SEQ圖2-\*ARABIC2交叉驗證計算方差的結果從圖中可以看出,增大K時,錯誤率會先降低,因為周圍有了更多的可以用來借鑒的樣本,其效果會更好。為了更好的實現(xiàn)預測效果,本文計劃使用SKLearn數(shù)據(jù)包,調(diào)用其中的K-臨近算法,指定出參數(shù)范圍為[2,9],該數(shù)據(jù)包會自動運行所有參數(shù)組合并建立模型,最后返回出效果最好的一組。如圖為采用K-臨近算法對浦發(fā)銀行股票的預測圖線:圖2-SEQ圖2-\*ARABIC3利用K-臨近算法對浦發(fā)銀行股票數(shù)據(jù)預測的結果2.3線性回歸算法2.3.1線性回歸算法簡介很明顯,線性回歸屬于回歸問題,也是監(jiān)督學習的一種。線性回歸(LinearRegression)是一種線性的模型,它通過使用線性組合來對所給數(shù)據(jù)進行訓練和預測,其訓練目標是將訓練數(shù)據(jù)集間的關系擬合成直線或者是平面,盡可能地降低估計值和實際值之間的誤差。2.3.2線性回歸算法模型線性回歸算法的模型很簡單,假設每批數(shù)據(jù)有n個特征,每個特征都對應著一個屬于自己的權重值,將數(shù)據(jù)與權重值的乘積再加上一個偏離值,就得到了線性回歸的模型,公式如下:y=w(公式2-2線性回歸模型)權重w即為線性回歸要學習的參數(shù),通過模型的訓練將w的值計算出來,再代回公式,即可得到數(shù)據(jù)的預測值。2.3.3損失函數(shù)很明顯,對模型的預測得出的值與實際值約接近,這個模型越好,為此,定義了損失函數(shù)。在線性回歸中,通常使用均方根誤差表示,即最小二乘法。先假設出這個線的方程,然后再把數(shù)據(jù)點代入假設的方程,得到觀測值,進而再求得實際值與觀測值相減的平方和最小的參數(shù)。損失代價函數(shù)為:Jθ其中,y=[(公式2-3損失代價函數(shù))接下來就是求解公式中的向量θ,使得J(θ)最小。求解J(θ)有兩種方法:梯度下降法和正規(guī)方程法。1)梯度下降算法,是經(jīng)過每次迭代后,使得當前的向量θ代入J(θ)損失函數(shù)后,其值逐漸降低,直到最后收斂。2)正規(guī)方程法,提供了一種求解最優(yōu)θ的解析解法。只需要對J(θ)函數(shù)中每個θj?(j=0,1,…,n)求偏導,求出每個θj?使得偏導等于0。這些解組合成對應的向量將梯度下降法和正規(guī)方程對比,將特征值進行縮放可能是梯度下降算法的一個必不可少的步驟;在特征縮放梯度下降算法中,學習率α需要自己決定,并且其值要適當,且迭代運算要進行很多次。與梯度下降相比,當n比較小時,使正規(guī)方程法能更快地得到結果,因此其在普通的線性回歸問題中用的比較多。但是在機器學習中,梯度下降法有更大的適用范圍。綜上所述,由于股票數(shù)據(jù)的n很大,進行矩陣運算會有很大的代價,正規(guī)方程求解的過程也會變的很慢,所以梯度下降更適合系統(tǒng),因此選用梯度下降的方法來計算損失代價函數(shù)。2.3.4使用線性回歸算法進行預測同樣,為了預測的有效性和易實施性,本文依舊調(diào)用SKLearn中的線性回歸方法。采用線性回歸算法對浦發(fā)銀行股票數(shù)據(jù)進行預測結果如下:圖2-SEQ圖2-\*ARABIC4利用線性回歸算法對浦發(fā)銀行數(shù)據(jù)進行預測的結果2.4長短期記憶網(wǎng)絡算法2.4.1長短期記憶網(wǎng)絡算法簡介長短期記憶網(wǎng)絡(LongShort-TermMemory,下文稱LSTM算法),因為其擁有記憶功能,所以通常被用在一些具有時間特性的場景中,并解決了原始的RNN算法的梯度消失問題。假設模型為依次輸入一句話,我們要對單詞進行分類,例如arriveTianjinonNov,11th,和leaveTianjinonNov,11th,’Tianjin’分別是目的地和出發(fā)地,如果使用普通的神經(jīng)網(wǎng)絡,輸入是’Tianjin’,輸出是確定的。然而,我們的期望是,‘Tianjin’前是‘a(chǎn)rrive’時,‘Tianjin’被識別為目的地;‘Tianjin’前是‘leave’時,則被識別為出發(fā)地。這就是LSTM常見的應用,它可以記住歷史信息,在讀到‘Tianjin’時,LSTM會知道它前面是‘leave’還是‘a(chǎn)rrive’,根據(jù)歷史信息的不同來做出判斷,即使有相同的輸入,由于歷史信息不同,輸出也會不同。2.4.2長短期記憶網(wǎng)絡算法模型普通的神經(jīng)元是一個輸入,一個輸出,而對于LSTM來講,它有四個輸入,分別是input(模型輸入),forgetgate(遺忘門),inputgate(輸入門)和outputgate(輸出門)。遺忘門用來決定前一時刻的memory中的是否會被記住,當遺忘門打開(為1)時,前一刻的memory會被保留,當遺忘門關閉(為0時),前一刻的memory則會被清空。輸入門的作用是決定目前的輸入序列有多少會被記憶下來,在輸入序列中,清除掉那些無用的輸入信息。輸出門則用來決定當前memory內(nèi)的信息有多少被用來輸出。如圖,假設用ft表示遺忘門,it表示輸入門,Ot表示輸出門。C代表memorycell,用來存儲記憶信息,Ct-1表示上一個時刻的記憶信息,圖2-5LSTM基本模型遺忘門計算:f輸入門計算:i當前輸入:c當前時刻的記憶信息的更新:c輸出門計算:o輸出門:h2.4.3模型的訓練和實現(xiàn)LSTM的訓練過程大致為:首先計算各個神經(jīng)元的輸出值,再反向對每個神經(jīng)元的誤差項進行計算,根據(jù)相應的誤差項,把各個權重的梯度計算出來,再代回公式進行預測。對于算法的實現(xiàn),選擇調(diào)用TensorFlow庫和SKLearn數(shù)據(jù)包:fromkeras.layersimportLSTM,接下來對模型進行了一定的調(diào)參,使用默認的超參數(shù)設置,并在訓練過程中持續(xù)觀察loss的變化,初步給定的參數(shù)范圍為[0,60],60%的數(shù)據(jù)作為訓練集,40%作為驗證集。關鍵代碼如下:foriinrange(60,len(train)):

x_train.append(scaled_data[i-60:i,0])

y_train.append(scaled_data[i,0])

x_train,y_train=np.array(x_train),np.array(y_train)訓練過程中,觀察到trainloss逐漸下降,valloss也在不斷下降,這表明網(wǎng)絡依舊在學習,因此需要加大數(shù)據(jù)集。同時,為了使數(shù)據(jù)的訓練數(shù)據(jù)更好,將訓練集增加到80%,最終選擇的參數(shù)為50,此時圖線擬合的效果最好。結果如下:圖2-6利用LSTM算法對浦發(fā)銀行股票數(shù)據(jù)預測的結果2.5移動平均算法2.5.1移動平均算法簡介移動平均(MovingAverage),又稱滑動平均,經(jīng)常用來去衡量當前趨勢的方向。移動平均算法適用于即期預測,當產(chǎn)品的需求既不呈現(xiàn)快速上漲的趨勢也不呈現(xiàn)急速下降的趨勢,且季節(jié)性的因素對其沒有明顯影響時,使用該算法能夠把預測過程中的隨機波動有效地清楚掉。移動平均和平日所提到的平均的概念是一致的,都是通過計算過去的數(shù)據(jù)的平均值從而得到數(shù)學結果。該算法經(jīng)常應用于金融領域的預測,通過繪制圖線將計算出的平均值顯示出來,以便于觀察平滑的數(shù)據(jù),而不是聚焦于金融市場內(nèi)固有的價格波動。移動平均可以過濾掉高頻噪聲,反映出中長期的低頻趨勢,進而輔助投資者做出投資判斷。移動平均與普通的平均的不同之處在于,它使用的不是簡單的平均值,而是采用“移動”平均技術,這個技術能夠為每一個預測使用一組最新的值,對于每個后續(xù)步驟,從集合中刪除掉最舊的觀察值,同時考慮預測值,即數(shù)據(jù)集在不斷地“移動”,因而這種算法能夠確保只對當前信息進行核算,并保證了平滑性。2.5.2移動平均算法模型移動平均算法的根本理念是,依據(jù)時間行列的資料,一項一項推移,分別計算得出包括特定項數(shù)的序時平均值,進而對長時間的趨勢進行描述。因此,當時間序列的數(shù)值受周期變動和隨機波動的影響,有較大的起伏,且事件的趨勢不容易被展現(xiàn)出來時,使用移動平均算法能夠清除掉這些元素帶來的影響,把待預測事件的發(fā)展方向和趨勢展現(xiàn)出來,然后根據(jù)趨勢線對待預測序列的長遠發(fā)展趨勢進行分析。移動平均法可以分為:簡單移動平均和加權移動平均,本文主要采用的是簡單移動平均的方法,調(diào)用了Tensorflow中的移動平均模型。Ft(公式2-7簡單移動平均)公式中:·Ft:·n:移動平均的時期個數(shù);·At·At-2,At-2和2.5.3模型的訓練和實現(xiàn)在對移動平均數(shù)進行計算時,每次計算需要使用多少個值,其決定依賴于時間序列的序數(shù)和變動的周期。如果時間序數(shù)多,變動周期長,則能夠使用每6個月直到每12個月來進行計算;反之,可以采用每2個月或每5個月來計算。對獲取到的股票數(shù)據(jù)的移動平均數(shù),本文采用每5個月的實際值來進行計算。對于模型的實現(xiàn),本文計劃使用TensorFlow中的ExponentialMovingAverage()來實現(xiàn)。在TensorFlow中,ExponentialMovingAverage()可以傳入兩個參數(shù):衰減率(decay)和數(shù)據(jù)的迭代次數(shù)(step),此處decay對應著β,step對應著和num_updates,實現(xiàn)移動平均模型的步驟如下:1)定義訓練輪數(shù)step2)定義滑動平均的類3)指定要用到移動平均模型的變量(w和b)4)執(zhí)行模型,將變量轉換為指數(shù)加權的平均值部署完成后,在每次使用反向傳播的時候,改為使用run.(train_op)就可以正常執(zhí)行模型,實現(xiàn)股票的預測。利用移動平均算法對浦發(fā)銀行股票數(shù)據(jù)進行預測,輸出的圖線如下:圖2-7利用移動平均算法對浦發(fā)銀行股票數(shù)據(jù)進行預測的結果3獲取數(shù)據(jù)和數(shù)據(jù)處理3.1獲取股票數(shù)據(jù)通過查閱相關資料,目前獲取股票數(shù)據(jù)的來源主要有Tushare數(shù)據(jù)包、AKShare數(shù)據(jù)包以及Morgan選股池等,由于Morgan大多為美股數(shù)據(jù),而使用Tushare數(shù)據(jù)包需要的限制過多,且對賬號等級和積分有要求,因此最后本文選擇使用AKShare作為數(shù)據(jù)來源。AKShare是一個開源的數(shù)據(jù)庫接口,它基于Python,其目標是完成對股票、基金、期貨等金融產(chǎn)品和其他金融領域的數(shù)據(jù)從采集、下載、到清洗加工的工具。其特點是獲取到的數(shù)據(jù)為相對權威的財經(jīng)數(shù)據(jù)網(wǎng)站公布的原始數(shù)據(jù),通過利用原始數(shù)據(jù)進行各數(shù)據(jù)源之間的交叉驗證,進而再進行加工,從而得到科學的結論。AKShare提供了眾多數(shù)據(jù)接口,本文計劃使用其中的滬市股票和深市股票數(shù)據(jù),利用這些數(shù)據(jù)進行模型訓練和預測。如圖所示,需要使用的數(shù)據(jù)為股票的市盈率PE(股票每股價格與每股盈利的比率)、股票的市凈率PB(市凈率=股價每股凈資產(chǎn))、PS(市銷率)、ds_ratio(股息率)。同時還有最高價、最低價、成交量、開盤價、收盤價五個,由于本文主要是進行股票的分析和預測,因此在綜合考量各個指標的基礎之上,選擇收盤價作為模型的輸出向量。圖3-SEQ圖3-\*ARABIC1AKShare股票數(shù)據(jù)除了個股股票數(shù)據(jù),本文還獲取了滬深各指數(shù)的數(shù)據(jù),每個指數(shù)下包含不同各股票數(shù)據(jù),并通過一定的計算規(guī)則計算出指數(shù)。除了常規(guī)的單個股票數(shù)據(jù)預測,本文還推出了指數(shù)預測。通過AKShare獲得各個指數(shù)下的股票數(shù)據(jù),并將其保存在本地Excel文件中,在進行股票預測時,可直接輸入某股票指數(shù),進而可直接得到該指數(shù)下的所有股票的預測結果。3.2數(shù)據(jù)儲存為避免網(wǎng)絡擁堵或者數(shù)據(jù)來源不穩(wěn)定,本文計劃把股票數(shù)據(jù)保存到本地,作為數(shù)據(jù)庫調(diào)用。使用AKShare的save命令把滬深兩市3000多支股票201001到202012近11年的歷史數(shù)據(jù)緩存到本地excel中,獲取到的數(shù)據(jù)如圖所示(部分)。圖3-SEQ圖3-\*ARABIC2各股數(shù)據(jù)(部分)圖3-SEQ圖3-\*ARABIC3股票指數(shù)數(shù)據(jù)(部分)3.3數(shù)據(jù)處理通過AKShare獲取到的數(shù)據(jù)并不是直接可用,還存在無用數(shù)據(jù)、雜亂值等等特殊情況,需要進一步的處理,使其符合機器學習訓練集和驗證集的要求,進而實現(xiàn)股票預測。3.3.1Pandas清洗臟數(shù)據(jù)首先利用Pandas進行初步的數(shù)據(jù)清洗。Pandas是一個Python類庫,使用它能夠對數(shù)據(jù)進行科學計算和分析,它提供了功能強大的類庫,對于那些存在數(shù)據(jù)缺失、數(shù)據(jù)錯誤或數(shù)據(jù)格式不統(tǒng)一等問題的數(shù)據(jù)集,都可以進行清洗和排序,最后得到清晰可用的數(shù)據(jù)。對于獲取到的股票數(shù)據(jù),主要存在的問題大致是存在異常字符、有缺失值、空行、長度不統(tǒng)一等,利用Pandas可以很好的處理這些問題,通過刪除行、列、替換為NaN等解決異常字符和空行問題;通過補0可以很輕松地解決掉長度不統(tǒng)一的問題。3.3.2數(shù)據(jù)規(guī)范數(shù)據(jù)的基本格式經(jīng)過處理后,就可以進行下一步的數(shù)據(jù)處理。首先,為規(guī)避股票分拆及分紅對數(shù)據(jù)計量維度的不一致,要進行復權處理。由于股票存在一些諸如配股、分拆、合并和發(fā)放股息等事件,可能會導致股價出現(xiàn)較大的缺口,如果沒有對股價進行復權處理,將會導致它們失去連貫性。股票數(shù)據(jù)復權一般包括前復權處理和后復權處理。前復權處理即保證當前價格不變,增減歷史價格,從而使股價連續(xù)。前復權適用于看盤和疊加技術指標,但是由于其為了保證當前價格不變,每次股票除權除息時都需要重新調(diào)整歷史價格,因此其歷史價格是時變的,這可能會導致在不同的時間點看到的歷史前復權價出現(xiàn)差異;另外,對于有持續(xù)分紅的公司來說,前復權價可能出現(xiàn)負值。后復權處理,則是保證歷史價格相同,在每次股票權益事件發(fā)生后,調(diào)整當前的股票價格。通過后復權處理的股票數(shù)據(jù)可以被看做投資者的長期財富增長曲線,能夠反映投資者的真實收益率情況。在量化投資研究中,普遍采用后復權數(shù)據(jù),因此本系統(tǒng)統(tǒng)一以20100101為基準日期,對所有歷史數(shù)據(jù)進行了后復權處理。使用AKShare中的接口可以直接進行上述操作,接口實例如下:importakshareasakstock_zh_a_daily_hfq_df=ak.stock_zh_a_daily(symbol="sz000002",start_date='20200101',end_date='20200125',adjust="hfq")print(stock_zh_a_daily_hfq_df)后復權后的數(shù)據(jù)示例如下圖所示:圖3-SEQ圖3-\*ARABIC4后復權處理后的股票數(shù)據(jù)(部分)3.3.3歸一化數(shù)據(jù)獲取到的數(shù)據(jù)可能會有不同的取值范圍,而在某些線性模型或與距離相關的模型中,數(shù)據(jù)的取值范圍可能會對最終的結果產(chǎn)生很大的影響。例如二元特征的取值范圍為[0,1],而距離特征取值可能是[0,+∞),因而在應用中,要截斷部分距離,例如[0,4000000]。然而特征的值范圍不同,這使得模型會向取值范圍更大的特征靠近。所以,為了使取值不同的特征互相平衡,我們需要歸一化處理所選取的特征,將特征的對于歸一化數(shù)據(jù),本文計劃使用分維度歸一化的方法,使用最大最小歸一化(這里的最大值最小值指的是數(shù)據(jù)所屬類別的最大最小值,而非全局的最大最小值)。使用TensorFlow中的Timescale(feature_range=(0,1))可直接對數(shù)據(jù)進行歸一化,使數(shù)據(jù)處于同一個量級。3.4特征選擇與處理對于回歸問題,需要采集數(shù)據(jù)。對于得到的采樣數(shù)據(jù),還需要進行一定的劃分。訓練集為數(shù)據(jù)的80%,驗證集為數(shù)據(jù)的20%,同時在此基礎上再給出后續(xù)一段時間內(nèi)的預測。除了采樣外,還需要過濾數(shù)據(jù)的樣本,包括:1)結合業(yè)務情況進行數(shù)據(jù)過濾,去除Crawler,抓取Spam作弊等數(shù)據(jù)。2)異常點檢測,采用異常點檢測算法分析樣本,本文使用聚類算法對異常的點進行檢測。本文計劃選用日期作為數(shù)據(jù)的特征,該特征屬于Lowlevel特征,即較低級別的特征,屬于原始特征,不需在后期進行人工處理和干預。以日期作為特征,將日期設置為索引,創(chuàng)建好帶有日期和目標變量的數(shù)據(jù)幀,再讀取Excel表中的數(shù)據(jù),調(diào)用機器學習算法,對股票數(shù)據(jù)進行預測,展示出預測結果隨著時間的變化結果。4系統(tǒng)的界面搭建與完善在完成了數(shù)據(jù)和算法的部分之后,已經(jīng)可以對股票數(shù)據(jù)進行基礎的預測,但由于本文要完成的是一個選股系統(tǒng),因此還需要將各個部分整合在一起,給出友好交互界面,實現(xiàn)前后端交互。因此本文計劃使用Django作為web框架,搭建系統(tǒng)的前端界面。4.1Django簡介Django是一個開源的模型,它使用Python編程語言驅動,其框架使用MVC設計模式。MVC分別代表Model、View和Controller。Model(模型),是存放和取出數(shù)據(jù)的層次,其職責是對和數(shù)據(jù)相關的內(nèi)容進行處理,包括存取數(shù)據(jù)、驗證數(shù)據(jù)、行為分析以及處理數(shù)據(jù)間的關系等;View(視圖),其主要職責是將數(shù)據(jù)格式化,然后展現(xiàn)給用戶;Controller(控制器),其主要功能是接受外部用戶的一系列操作,根據(jù)用戶的操作訪問Model并獲取數(shù)據(jù),最后調(diào)用View顯示出用戶想要的內(nèi)容。根據(jù)Django的這種模式,視圖對用戶能看到的數(shù)據(jù)起決定作用,但往往忽略用戶的輸入,而Django的模板僅決定如何展現(xiàn)視圖指定的需要展現(xiàn)給用戶的數(shù)據(jù)。對于控制器部分,由Django框架的URLconf來實現(xiàn)。其工作原理是通過正則表達式來與URL進行匹配,然后對需要使用的Python函數(shù)進行調(diào)用。因此在寫代碼時,僅僅需要寫少量的調(diào)用代碼即可。圖4-SEQ圖4-\*ARABIC1Django模型示意圖4.2使用Django框架搭建Web界面一個Django項目包含四個目錄層級,分別是manage.py、init.py、settings.py、urls.py、wsgi.py,其中manage.py是一個命令行工具,通過它,你可以使用多種不同的方式與此Django項目交互;settings.py是項目的配置文件;urls.py用來聲明項目的URL,;wsgi.py是一個Web服務器的入口,它兼容WSGI,用來運行項目。4.2.1Django路由系統(tǒng)URL配置(URLconf)可以看作是Django所支撐的網(wǎng)站的目錄。其本質其實就是一個映射表,將URL的模式和為該URL模式調(diào)用的views間進行映射,即告訴Django,哪個URL對應著調(diào)用哪段URL代碼。將需要被調(diào)用的視圖函數(shù)寫入urlpatterns的表達式下,即可在后續(xù)的請求中調(diào)用該函數(shù)。4.2.2DjangoViews(視圖函數(shù))根據(jù)Web知識可知,Http的請求中心會產(chǎn)生兩個核心的對象,分別是Http請求:HttpRequest對象、Http響應:HttpResponse對象。每次對一個頁面進行請求時,Django會創(chuàng)建一個HttpRequest對象,用來傳遞原數(shù)據(jù)的請求。然后Django會加載被調(diào)用的視圖,Views的第一個參數(shù)是HttpRequest,每個視圖都負責返回一個HttpResponse目標。Django會自動創(chuàng)建HttpRequest對象,然而,HttpResponse對象需要由自己創(chuàng)建,每個View請求處理方法必須要返回一個HttpResponse對象。4.2.3DjangoModels對于模板來說,其實其本質過程就是讀取模板(其中嵌套著模板的標簽),然后將Model中獲取到的數(shù)據(jù)再插入到模板中去,最后將信息返還給用戶。而Model作為Django的抽象層,用來建立Web應用程序的數(shù)據(jù)并對它們進行管理。創(chuàng)建好項目后,就可以繼續(xù)創(chuàng)建項目的應用(Application)。對于本項目來說,之前所實現(xiàn)的獲取股票數(shù)據(jù)和利用機器學習算法訓練數(shù)據(jù),對應著Django項目中的一個模塊,因此,需要對原來的代碼進行一定程度的改寫,將其變?yōu)槊嫦驅ο蟮姆椒?,使其變?yōu)镈jango的一個模型類。改寫完后,將這些模型定義在models.py中,并繼承models.Model類,這樣之前所寫的基于各種機器學習算法的預測就成為了Django項目中的一個model,使用import調(diào)用,將算法模塊引入到此項目中,就可以使預測的輸出的圖線顯示在前端界面中。完成后使用pythonmanage.pyrunserver啟動項目,在瀏覽器輸入默認端口號8000,就可以進入本系統(tǒng),系統(tǒng)界面如下圖所示:圖4-SEQ圖4-\*ARABIC2系統(tǒng)基本界面“算法”輸入框可以選擇想要使用的機器學習算法;“指數(shù)代碼”輸入框可以輸入想要查詢的指數(shù)代碼,系統(tǒng)會調(diào)取該指數(shù)下的所有股票和股票數(shù)據(jù),對其進行預測并輸出在界面中;“股票代碼”輸入框可以輸入想要查詢的單個股票代碼,系統(tǒng)會調(diào)取該指數(shù)下的股票數(shù)據(jù)并輸出結果。圖4-SEQ圖4-\*ARABIC3系統(tǒng)基本功能按鈕示意1)圖4-4到圖4-7為指數(shù)預測的舉例,在算法一欄輸入想要使用的算法,在指數(shù)代碼處輸入想要查詢的指數(shù)代碼,例如sz399350,包含股票為江淮汽車、精工鋼構、伯特利、口子窖等,其預測結果會逐一在界面中顯示。圖4-SEQ圖4-\*ARABIC4sz399350指數(shù)下股票預測結果圖4-SEQ圖4-\*ARABIC5sz399350指數(shù)下股票預測結果圖4-SEQ圖4-\*ARABIC6sz399350指數(shù)下股票預測結果圖4-SEQ圖4-\*ARABIC7sz399350指數(shù)下股票預測結果2)如圖4-8,除了指數(shù)搜索外,也可以選擇單個股票查詢。輸入想要預測的股票代碼和想要實現(xiàn)的算法(最多可同時選擇三種不同的算法),其預測結果會顯示在界面中。如圖4-8所示:圖4-SEQ圖4-\*ARABIC8采用移動平均算法和線性回歸算法對浦發(fā)銀行股票預測結果4.3系統(tǒng)完善經(jīng)過上述內(nèi)容,本系統(tǒng)已經(jīng)大致成型,完成了基本的股票預測、圖線輸出和交互功能,在此又對本系統(tǒng)進行了完善,期望能讓使用感有所提升。首先,在原有的系統(tǒng)基礎上加入了登入登出功能,使用者可注冊成為系統(tǒng)用戶,登陸系統(tǒng)使用選股功能。原本的預測圖線是由訓練部分、預測部分和擬合部分組成,擬合部分的對所有的預測部分進行擬合,為了使預測結果更直觀,在這基礎上又對數(shù)據(jù)進行了一小部分后續(xù)的預測,即在預測-擬合圖線的后面又繪制了一段預測圖線,給出更直觀的預測結果,使用戶能更好的選擇。同時,為了方便用戶選股,在原有的功能基礎上加入了股票排序功能和自定義指數(shù)功能。當用戶選擇一個指數(shù)下的股票預測時,系統(tǒng)會算出各個股票的收益率(即(預測集最高價-訓練集最后一天收盤價)/訓練集最后一天收盤價),根據(jù)股票的收益率對所選指數(shù)下的股票排序,按收益率由高到低輸出預測的圖像??梢越o用戶更直觀的結果,幫助其直觀的了解到該指數(shù)下購買哪支股票可能獲得最高的收益;另外,除所有本地文件內(nèi)的股票指數(shù)數(shù)據(jù),用戶還可以自定義指數(shù)。當用戶自定義一個指數(shù)后,選擇機器學習算法并點擊查詢按鈕,系統(tǒng)會查找對應的Excel文件中所有股票數(shù)據(jù),生成一個新的數(shù)據(jù)文件,作為參數(shù)傳入,并所有該自定義指數(shù)下的股票預測。改進后的預測圖線如下圖所示(以sz399350指數(shù)下的部分股票為例),加入了后續(xù)預測和排序功能。圖4-SEQ圖4-\*ARABIC9系統(tǒng)完善后sz399350指數(shù)下的部分股票預測結果圖4-SEQ圖4-\*ARABIC10系統(tǒng)完善后sz399350指數(shù)下的部分股票預測結果圖4-SEQ圖4-\*ARABIC11系統(tǒng)完善后sz399350指數(shù)下的部分股票預測結果圖4-SEQ圖4-\*ARABIC12系統(tǒng)完善后sz399350指數(shù)下的部分股票預測結果5實證分析5.1效果分析本文引入均方根誤差(Rmse)來對機器學習算法的效果進行評估。其作用是用來衡量觀測值與真實值之間的誤差,經(jīng)常被用來作為機器學習模型預測結果衡量的標準。其公式為:RMSEX,h=(公式5-1均方根誤差公式)計算結果為觀測值與其真值之間的偏差,它可以很好的反應回歸模型的擬合效果。其值越小,則擬合的效果越好。對于該值的計算,在之前使用的SKLearn數(shù)據(jù)包中提供了這個功能,直接調(diào)用即可計算出結果。5.2算法分析 對于本系統(tǒng)的預測,選取了線性回歸算法、移動平均算法、K-臨近算法和長短期記憶網(wǎng)絡算法,對于這些算法的實現(xiàn)借助了Tensorflow庫、SKLearn數(shù)據(jù)包等,保證了算法實現(xiàn)的準確性和高效性,避免了處理大量數(shù)據(jù)的繁瑣問題。同時引入了Nummy、Pandas工具進行函數(shù)和矩陣運算,引入了Matplotlib來繪制股票圖線。根據(jù)第二章的機器學習算法介紹可知,每種算法都有自己各自的特點,對于不同數(shù)據(jù)的預測結果也不盡相同。因此,本文在最后選取了幾種典型的股票類型,針對不同的機器學習算法的預測結果進行了一定的分析,期望能夠根據(jù)不同的股票類型找出最合適的算法。5.2.1LSTM算法首先,針對LSTM算法,由于其預測的實現(xiàn)十分依賴與當前的數(shù)據(jù)值,在第四章的內(nèi)容中,對股票進行后續(xù)的預測時,當把校驗值設置為0時,其預測圖線波動非常大,這是由于當前的數(shù)值的變化較大,然而這種算法在訓練數(shù)據(jù)時又對近期的數(shù)據(jù)集依賴較大。LSTM算法的理念是為了使其具有記憶功能,其特意設計的結構之中具有CEC的特點,誤差向上依次傳遞時只有輕微的衰減,因此權值調(diào)整的時候,對于那些歷史狀態(tài)造成的影響和結尾狀態(tài)造成的影響可以一起發(fā)揮作用,所以最終訓練得到模型能夠記憶很長時間內(nèi)的變動曲線。針對這種特性,該算法對于長遠的股票數(shù)據(jù)預測結果較好,得益于他的記憶功能,他可以很好的對長期數(shù)據(jù)進行預測,使得較長時間內(nèi)的股票預測圖線擬合效果最好。5.2.2線性回歸算法線性,顧名思義,即兩個變量間的關系是一次函數(shù)關系。人們在測量事物的時候,由于客觀條件的限制,求得的往往都是測量值,而不是事物的真實的值。因此,為了能夠得到事物的真實值,需要進行無限次的測量,最后通過這些測量數(shù)據(jù)計算回歸到真實值,這就是回歸的由來。線性回歸算法,通俗的講,就是把真實的數(shù)據(jù),映射到坐標軸中。這些數(shù)據(jù)在坐標軸中,呈現(xiàn)出偏向線狀的形狀。構建一個函數(shù),讓這個函數(shù)對應的數(shù)據(jù)能夠盡可能的接近真實的數(shù)據(jù),讓這個函數(shù)在坐標軸上畫出的圖像盡可能的穿過真實數(shù)據(jù)中的所有點。根據(jù)這種線性回歸這種的特性和輸出的預測圖線,發(fā)現(xiàn)其對于那些具有穩(wěn)定增長值得數(shù)據(jù)預測得效果較好,例如消費類股票,它們得股票價格隨著時間的變化往往呈現(xiàn)逐漸增長的趨勢,因此采用線性回歸算法對這類股票的預測結果比較理想。5.2.3移動平均算法移動平均的本質其實就是濾波,即過濾掉時間序列中的高頻擾動,保留原有的低頻趨勢。移動平均算法通過平均多個數(shù)值,消除需求波動中的隨機因素,這種情況下,實際的需求有的時候高,有的時候低;如果前段時間比較低,接下來的時間內(nèi)就可能變高,通過計算平均值,讓高的部分和低的部分相互消除影響,這樣我們就能使預測結果更平滑、更準確,也讓需求預測更加穩(wěn)定。由于它的這種特性,它更適合滾動的、周期類的數(shù)據(jù),例如煤炭鋼鐵等股票,其股票價格隨著時間往往呈現(xiàn)周期性變化,因此使用移動平均算法的擬合效果往往更好。5.2.4K-臨近算法K-臨近算法思路很簡單,即按照距離來對事物進行分類,某樣本在它所處的特征空間中,與K個最相近的樣本中數(shù)量最多的那一個,屬于相同類別。在本算法中,所挑中的鄰居對象都是已有正確分類的,該方法在決定樣本的分類時,只依賴那些與它最鄰近的樣本,去判定待預測樣本的所屬類別或數(shù)據(jù)走向。該算法的準確率較高,對于異常值和噪聲的容忍度也很高雖然K-臨近算法常用來對未知的事物進行判斷,使用的領域大多是對未知事物的識別,但根據(jù)它判斷離散數(shù)據(jù)的特性,K-臨近算法非常適用于那些類域的交叉或重疊部分較多的樣本集,即那些波動沒有明顯的規(guī)律、數(shù)據(jù)較為離散的股票數(shù)據(jù),它們的股票價格隨著時間的變化往往并沒有呈現(xiàn)出明顯的變化規(guī)律,數(shù)據(jù)分布不太均勻,例如醫(yī)療股票、互聯(lián)網(wǎng)股票等,采用該算法得到的預測結果可能較其它幾種較為準確.結論本文的研究基于機器學習算法,其出發(fā)點和結論基于特定時間(選取股票價格的時間)以及機器學習算法的特性,還需要進一步考察將來的市場情況和它的適應情況。此外,本文所展開的技術面分析基于三個假設:一是市場可以很好的消化那些會對股價造成影響的相關信息,例如上市、輿論等;二是歷史將會不斷地重復;三是股價的變化會是趨勢性的。然而,在實際的生活中,股票價格、股市發(fā)展或受到各種各樣的因素影響,例如宏觀經(jīng)濟的發(fā)展、政治環(huán)境的變化、投資者的心理變化等等,所以在具體運用本文的系統(tǒng)時,仍需要根據(jù)一些實際情況進行改進和優(yōu)化。本文所選取的機器學習算法都有其各自獨特的有點,并且都有很廣泛的應用范圍,然而這些算法在實際的操作中仍然存在許多地方需要改進和完善。在之后的進一步研

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論