2016年9月6日 星期二

[機器學習練習] [Machine Learning Practice] 用 Scikit 學習台灣指數趨勢(四)- 特徵選擇

上一篇練習中,我們已經爬到台股指數期貨的資料,

這一集會分享一下我選擇的特徵還有我使用的演算法

開始吧!

------------------------------------------------------------------------------------------------------------

Step 5 : 特徵選擇

自己學了機器學習到現在兩個多月,

我發現,如果想要好好的使用機器學習,

不僅要好好了解這個技術的架構、使用方法以及背後原理

除此之外,還要對你要使用的領域,有一定的瞭解。

所以在特徵選擇前,我們一樣瞭解一下,到底有什麼東西會影響指數期貨。

這邊推薦一個網站,INVESTOPEDIA,很多金融遊戲的名詞都可以在裡面找到不錯的解釋。

通常大家打開XX分析台,最常聽到的就是什麼 5 日均線、20 日均線、60 日均線

也被分別稱為週線、月線和季線,還有什麼五波上漲、頭肩頸、支撐、壓力、旗型整理

之類的非常 fancy 的東西,我們就拿最好實現的均線來當特徵


那均線是什麼東西呢?


以 5 日均線為例,就是取過去五天指數的平均(或是股價的平均),來當作一個指標。

比如,過去五天台股指數分別為

台股指數期貨 ( 8/29 ~ 9/2 )
8/29 (一)8/30 (二)8/31 (三)9/1 (四)9/2 (五)
90009100920093009400

那我們就知道在 9/2 (五) 的五日均值是 ( 9000 + 9100 + 9200 + 9300 + 9400 ) / 5 = 9200

而把每一天的均值組合起來就得到五日均線,月線和季線也是相同的原理。


知道均線是什麼後,我們還必須知道,這些線有什麼用?


通常呢,週線、月線是給短期操作的人使用的,月線、季線則是給長期操作的人用。

那我們玩期指,還是短期操作就好,所以以下只會使用 5 日和 20 日線。


理論上來說,5 日線向上和 20 日交叉的時候,趨勢上漲

5 日線向下和 20 日線交叉的時候,趨勢下跌

大家可以看一下下圖,這不是亂唬小。




















這是 2016 年年初到今日的台股加權指數變動,紅線是 5 日線綠線是 20 日線

我分別取兩個點出來,第一個是今年四月份左右,5 日線向下和 20 日線交叉的時候,

台股跌了一個半月,跌到八千點,然後總統就職後,5 日線向上和 20 日線交叉,

台股一路狂飆到現今的九千點。

好了,大家可以去買指數賺錢了......









好,當然不是這樣,我們要追求卓越,

不能為了這點蠅頭小利就放棄追求新知識這個甜美果實。

大概瞭解 5 日線和 20 日線的實力後,我們再加上一個 fancy 一點的東西,

這個東西叫做 KD 值 ( 隨機指標 ),要引入 KD 值的觀念前,

我們先講未成熟隨機值 RSV ,因為講的有點累,大家自己在這邊看。



大概瞭解後,我們就決定使用 K9、D9 和均線們來讓機器學習吧!


但是,我們要用什麼演算法呢?

------------------------------------------------------------------------------------------------------------

Step 6 : 演算法選擇

回想一下,機器學習的演算法中,可以被大概分成三種,

分別是 Regression、Clustering、Classification

Regression 就是我們上次河川水位預測時,使用的方法。

Clustering 則是讓資料自動分群,但我們要做的事情,是有絕對的答案的,

每天就是,漲或跌。所以 Classification 將是我們選擇的方法。



在 Classification 中,我是選擇 Nearest Neighbours Classification 方法,也就是 最近鄰居們法

這個演算法是什麼東西呢?

簡單說就是近朱者赤、近墨者黑的概念。

假設,平面上有十個點,如下圖,


















五個綠點五個藍點,我們現在加入新的點,要如何把它分類呢?

以最近鄰居們法,我們就找出三個離它最近的點,分別是二藍一綠,

那最近鄰居們法就會判斷新的點是藍色



當然實際上,這套演算法可以到很複雜,

在很高維度底下要如何找出最近的點們,

還有距離的計算公式和判斷的依據......等很多複雜的東西。

這邊只是稍微淺白地講一下,因為我也只是亂學。



好,選擇好特徵也決定要使用的演算法後,我們就可以開始寫程式碼並實現機器學習了!

------------------------------------------------------------------------------------------------------------

Reference

[1] 期貨 wikipedia

[2] 股票指數 wikipedia

[3] 台灣期貨交易所, http://www.taifex.com.tw/

[4] Codecademy, https://www.codecademy.com/


沒有留言:

張貼留言