2017年9月22日 星期五

策略模組- 類神經網路(1)

類神經網路(Neural Network)是人工智慧的一支,我十幾年前就開使接觸這類東西,現在好像已改名叫『深度學習』。本質上就是利用數學所建構出來的一門學問,如果要玩玩其實也不難,我以前就是用matlab的工具箱,把參數設一設,然後把資料丟進這個黑盒子,也不去探究其理論(這理論說實在的,也不容易懂),結果程式跑出來就是"Garbage In,  Garbage Out"。所以建議有心要把這玩意應用到股票市場的人,要對其數學理論有些了解才行,這方面資料請見參考資料一 。

matlab有個壞處,它可能為了商業利益,幾乎年年改版,雖然只是改一些皮毛的東西(核心部分很少改) ,但如果版本不符,程式執行時就會有問題。在此將利用Java語言為工具,重新檢視類神經網路及其應用,本篇只是開頭,後面將有實際應用到股票市場的預測。首先,來作一個Iris(鳶尾花)的分類問題,為什麼會先作這個問題﹖Iris資料集可說是在樣式辨認研究中,最常被引用到的資料集,它可以很客觀地確認系統的分類能力,這樣去作更複雜的問題才能走得更穩。

此外,在這邊使用一個Oracle的開源碼 - Neuroph,它是用來開發神經網路架構的輕量級java框架。該框架提供一個java程式庫以及一個GUI工具(稱為NeurophStudio),可以用它來在java項目中創建和訓練自己的神經網路,其下載點見參考資料二。
 




上圖第37行顯示創建一個多層前饋倒傳遞網路(Multilayer Feedforward Neural Network with Backpropagation Training),多層前饋網路(通常應用上只會用到三層,也就是只有一層隱藏層)是目前被應用最多的網路結構,而倒傳遞則是最常用的監督式網路學習法則。這個網路共有三層,輸入層、隱藏層、輸出層的神經元個數分別為4163

第45~53行則分別建立訓練資料及測試資料,訓練資料有100筆,其餘的50筆則留作測試資料。

訓練資料的精確度可達98%,而測試資料的精確度也可達96%,也就是50個樣本只會錯 2個。很多人看到這個結果一定相當滿意了,也對類神經網路的能力刮目相看。其實這是因為這個dataset太『純淨』,特徵也太明顯了,說句比較不入流的話,就算不用類神經網路,用其他的分類器隨便作,預測的結果也應該都不錯。相對而言,股票的資料就充滿雜訊,也可能會有互相衝突的訊號,因此預測結果的好壞,關鍵其實是在特徵選擇(Feature Selection)及資料的前處理,不過這個主題必須另闢專章來討論了。


參考資料
Hagan & Demuth & Beale, "Neural Network Design", Thomson Learning,Inc.,1996. 台灣翻譯本: 類神經網路設計,譯者: 汪惠健, 經銷商: 普林斯頓國際公司。

二、http://neuroph.sourceforge.net/download.html

三、資料檔及程式碼下載 :  https://drive.google.com/file/d/1HSzx4If2rBjOyz-yjo2hzHz_DoTT89OY/view?usp=sharing
 
   

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁