電子信箱 service [at] bituzi.com
幣圖誌首頁 facebook粉絲團 google plus google plus

什麼 ? SVM會賺錢 !



在前一篇文章”SVM演算法簡介”,貓大已經為各位讀者介紹了什麼是SVM,相信大家對SVM多多少少都有些基本的認知了,而在這一篇文章當中就是要介紹如何實際應用SVM了,貓大會為各位介紹LIBSVM以及如何使用LIBSVM來解決財務金融的投資問題。

問題

接續上一篇SVM演算法簡介,咪咪在了解了SVM之後,咪咪就問貓大,她說SVM能不能幫我賺錢,讓我可以有更多的錢,養更多貓?貓大說當然可以呀!
我們可以利用SVM來幫我們解決財務金融的投資問題,相信大家都知道若想在股票市場中獲利,最簡單的方法就是買低賣高,也就是做多;又或者是賣高買低,也就是所謂的做空,這兩種方式都能幫助我們在股市中獲利。

所以我們可以透過SVM來監測股票,看這一支股票在每一秒鐘分別是屬於做多還是做空的哪一類。

假設我們現在處於時間點t,想要做多,那麼SVM就會決定時間點t是要做多還是不做事,若要做多SVM會發出1的訊號,不做事則是0的訊號,這都是取決於時間點t以後股市的走向。

資料預處理

資料的原始樣貌為[年月日]/[時間]/[區域]/[市場]/[標的]/[粒度]/[開]/[高]/[收]/[低]/[成交量]/[成交價],每一筆資料皆是以一秒為單位,我們會根據這些資料,將這些資料轉換成許多技術指標,如移動平均、乖離率、隨機指標、威廉指標等等多達數十種,一天約有18,000筆,每一筆約有1000個特徵值,然後就可以利用這些資料來建立模型了。

建立模型

咪咪問貓大,我們已經準備好了資料,但是要如何使用SVM到現在都沒提過,難不成要我自己寫一支SVM的程式嗎?這不太可能吧!貓大告訴咪咪不用緊張,已經有人寫好SVM的程式給大家用,而且還是免費的,那就是LIBSVM。
LIBSVM是一個容易上手使用的SVM套件,目前有很多不同程式語言所撰寫的版本,使用者可以根據自身需求選擇下載,而這些資源有非常容易取得,只要進入LIBSVM的官網即可下載,其網址為http://www.csie.ntu.edu.tw/~cjlin/libsvm/。
雖然有非常多版本,不過各版本其實都大同小異。
使用步驟如下:
  1. 首先就到LIBSVM的官網下載LIBSVM的zip檔案,並解壓縮。
  2. 凡是要用LIBSVM做測試或訓練的資料,其資料格式都有規定,如下[label] [index1]:[value1] [index2]:[value2] ...
    舉例說明:+1 1:0.708333 2:1 3:1 4:-0.320755 5:-0.105023 6:-1 7:1 8:-0.419847
    +1表示標籤值,也就是屬於哪一類,而後面的1:0.708333,其1表示索引值,0.708333就是特徵值了。
    所以我們就必須將那一天18000筆的資料轉換成LIBSVM所需格式,其中12000筆當成訓練資料,存成一個名為train的檔案,剩下的60000比當成測試資料,存成名為test的檔案。
  3. 接著就當剛剛解壓縮的資料夾裡開啟cmd視窗,準備開始要建立模型了,其指令語法為
    svmtrain (options) training_file (model_file)
    options就是參數值,可有可無,在這邊可以設定SVM類型、核函數類型等等,更多詳細內容可以參考LIBSVM的文件,training_file就是我們的訓練用資料,最後model_file就是建立模型後的檔案名稱。
    所以我們只要打上svm-train.exe train,這樣就會開始建立模型了,模型建立完成後會多一個train.model的檔案。
  4. 模型建立完成後當然就要來測試了,其指令語法為
    svmpredict test_file model_file output_file
    test_file也就是測試資料檔, model_file就是模型的檔案,也就是train.model,output_file就是最後的分類結果。
    所以我們現在就可以開始測試,打上svm-predict.exe test.t train.model result。
  5. 最後就會跑出預測的分類結果了。

模型評估

上述的過程當中一開始採取建立模型的方式,就是很自然的直接將全部的訓練資料交給LIBSVM訓練,但是我們發現建立出的模型,其預測的結果並不是非常理想,這是因為當訓練資料各類別數量相差很大,換句話說就是訓練資料的訊號0類數量很多,而訊號1類的數量很少,這就有可能會造成數量少的那一群常會被忽略。

所以我們選擇的改進方法就是在跑LIBSVM時,把數量多的那一類切成好幾個小塊,每一個小塊的數量都跟數量少的那一類一樣,舉例來說是1的資料只有一千筆,而0的資料有一萬筆,所以會把0的那一類分成10個等份,最後0的每一份都會配1的那一類,所以總共會有10組資料丟進去給LIBSVM,於是我們最後就會得到10個模型。

所以當我們把測試資料給每一個模型做預測時,每一個模型對同一筆測試資料都會有不同的預測結果,於是到底這一筆測試資料是屬於哪一類?我們就寫了一支程式為預測的結果做投票,選出獲得票數最多的那一類,則這一筆測試資料就是那一類了。
SVM可以解決許多分類問題,其應用範圍非常廣泛,如財務投資、信用評等、風險評估等等,至於如何實際應用SVM,我們可以通過LIBSVM,這是一個簡單易用的SVM套件,可以幫助使用者解決分類問題。所以我們可以透過SVM來監測股票,看這一支股票在每一秒鐘分別是屬於做多還是做空的哪一類。

採礦貓

採礦貓過去在許多金控公司當過顧問,看到很多台灣散戶投資者被國外的投資公司坑殺,因而希望能提供散戶強大的投資工具與武器以提升獲利率、避免走上被坑殺的道路。

0 意見: