online gambling singapore online gambling singapore online slot malaysia online slot malaysia mega888 malaysia slot gacor live casino malaysia online betting malaysia mega888 mega888 mega888 mega888 mega888 mega888 mega888 mega888 mega888 什麼 ? 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

在此對話中的人們