MATLAB支持向量機(jī)學(xué)習(xí)筆記

此文章為《量化投資以MATLAB為工具》一書中支持向量機(jī)(SVM)部分,自己的實(shí)驗(yàn)記錄。

測(cè)試數(shù)據(jù)為上證指數(shù)1990.12.19至2009.08.19的真實(shí)指數(shù),數(shù)據(jù)大小為4579x6的矩陣。其中每一行表示每一個(gè)交易日的上證指數(shù)各種指標(biāo),6列分別表示當(dāng)天上證指數(shù)的開盤指數(shù)、指數(shù)最高值、指數(shù)最低值、收盤指數(shù)、當(dāng)日交易量和當(dāng)日交易額。

下面按書中提到步驟,對(duì)流程進(jìn)行介紹:

獲取上證指數(shù)的數(shù)據(jù)

可以從本書的在線資源中下載所有源碼以及數(shù)據(jù),定位到此章后,即可得到名為『chapter_sh.mat』的數(shù)據(jù)。輸出為圖形,如下所示:

上證指數(shù)每日的開盤指數(shù)

選定自變量與因變量

選取第1個(gè)到第4578個(gè)交易日內(nèi)每日的開盤指數(shù)、指數(shù)最高值、指數(shù)最低值、收盤指數(shù)、交易量和交易額作為自變量,選取第2個(gè)到第4579個(gè)交易日內(nèi)每日的開盤數(shù)作為因變量。

代碼如下:

[m, n] = size(sh);
ts = sh(2:m, 1);
tsx = sh(1: m-1, :);

數(shù)據(jù)預(yù)處理

通過使用mapminmax函數(shù),對(duì)上證指數(shù)進(jìn)行歸一化處理,區(qū)間為1到2。處理后的圖形如下圖所示:

上證指數(shù)每日的開盤指數(shù)歸一化結(jié)果

參數(shù)選擇

通過自定義的SVMcgForRegress.m函數(shù),實(shí)現(xiàn)對(duì)參數(shù)的選擇,先進(jìn)行粗略選擇,再進(jìn)行精細(xì)選擇。

粗略選擇

其二維及三維結(jié)果如下圖所示:

粗略選擇結(jié)果(二維)
粗略選擇結(jié)果(三維)

精細(xì)選擇

其二維及三維結(jié)果如下圖所示:

精細(xì)選擇結(jié)果(二維)
精細(xì)選擇結(jié)果(三維)

訓(xùn)練及回歸預(yù)測(cè)

通過libSVM工具提供的svmtrain以及svmpredict函數(shù)完成對(duì)數(shù)據(jù)的訓(xùn)練。效果如下:

原始數(shù)據(jù)和回歸數(shù)據(jù)對(duì)比

從圖中可以看到兩者的數(shù)據(jù)基本是吻合的。

再通過predict - ts';得到兩者的差值,生成的誤差圖如下:

誤差圖

再求得它們之間的相對(duì)誤差圖,如下所示:

相對(duì)誤差圖

從上圖中可看到,后期預(yù)測(cè)數(shù)據(jù)相對(duì)實(shí)際數(shù)據(jù)的偏差較為平穩(wěn),基本處在0.1(10%)的區(qū)間內(nèi)。

結(jié)語(yǔ)

通過對(duì)書中的隨書代碼進(jìn)行重新校驗(yàn),在此過程中,練習(xí)了MATLAB的使用,以及LibSVM類庫(kù)的安裝。

由于本書編寫的時(shí)間較早,部分接口以及配置等都有所變動(dòng),在實(shí)驗(yàn)過程中,也遇到相關(guān)的問題,不過都通過網(wǎng)絡(luò)方案予以解決。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容