當前位置:首頁 » 股市行情 » 基於SVM的股票價格預測核函數
擴展閱讀
今兒真高興 2025-06-24 05:33:19
601000股票代碼 2025-06-24 01:44:07
貝因美加盟 2025-06-24 01:26:27

基於SVM的股票價格預測核函數

發布時間: 2022-05-31 17:12:30

㈠ SVM幾種核函數的對比分析以及SVM演算法的優缺點

SVM核函數的作用

SVM核函數是用來解決數據線性不可分而提出的,把數據從源空間映射到目標空間(線性可分空間)。

SVM中核函數的種類

1、線性核

優點:

  • 方案首選,奧卡姆剃刀定律

  • 簡單,可以求解較快一個QP問題

  • 可解釋性強:可以輕易知道哪些feature是重要的

  • 限制:只能解決線性可分問題

    2、多項式核

    基本原理:依靠升維使得原本線性不可分的數據線性可分;
    升維的意義:使得原本線性不可分的數據線性可分;

    優點:

  • 可解決非線性問題

  • 可通過主觀設置冪數來實現總結的預判

  • 缺點:

  • 對於大數量級的冪數,不太適用

  • 比較多的參數要選擇

  • 通常只用在已經大概知道一個比較小的冪數的情況

    3、高斯核

    優點:

  • 可以映射到無限維

  • 決策邊界更為多樣

  • 只有一個參數,相比多項式核容易選擇

  • 缺點:

  • 可解釋性差(無限多維的轉換,無法算w)

  • 計算速度比較慢(解一個對偶問題)

  • 容易過擬合(參數選不好時容易overfitting)

  • 4、Sigmoid核

    採用Sigmoid函數作為核函數時,支持向量機實現的就是一種多層感知器神經網路,應用SVM方法,隱含層節點數目(它確定神經網路的結構)、隱含層節點對輸入節點的權值都是在設計(訓練)的過程中自動確定的。而且支持向量機的理論基礎決定了它最終求得的是全局最優值而不是局部最小值,也保證了它對於未知樣本的良好泛化能力而不會出現過學習現象。

    在實戰中更多的是:

  • 特徵維數高選擇線性核

  • 樣本數量可觀、特徵少選擇高斯核(非線性核)

  • 樣本數量非常多選擇線性核(避免造成龐大的計算量)

  • SVM的優缺點

    1、SVM演算法對大規模訓練樣本難以實施

    SVM的空間消耗主要是存儲訓練樣本和核矩陣,由於SVM是藉助二次規劃來求解支持向量,而求解二次規劃將涉及m階矩陣的計算(m為樣本的個數),當m數目很大時該矩陣的存儲和計算將耗費大量的機器內存和運算時間。針對以上問題的主要改進有有J.Platt的SMO演算法、T.Joachims的SVM、C.J.C.Burges等的PCGC、張學工的CSVM以及O.L.Mangasarian等的SOR演算法。如果數據量很大,SVM的訓練時間就會比較長,如垃圾郵件的分類檢測,沒有使用SVM分類器,而是使用了簡單的naive bayes分類器,或者是使用邏輯回歸模型分類。

    2、用SVM解決多分類問題存在困難

    經典的支持向量機演算法只給出了二類分類的演算法,而在數據挖掘的實際應用中,一般要解決多類的分類問題。可以通過多個二類支持向量機的組合來解決。主要有一對多組合模式、一對一組合模式和SVM決策樹;再就是通過構造多個分類器的組合來解決。主要原理是克服SVM固有的缺點,結合其他演算法的優勢,解決多類問題的分類精度。如:與粗集理論結合,形成一種優勢互補的多類問題的組合分類器。

    3、對缺失數據敏感,對參數和核函數的選擇敏感

    支持向量機性能的優劣主要取決於核函數的選取,所以對於一個實際問題而言,如何根據實際的數據模型選擇合適的核函數從而構造SVM演算法。目前比較成熟的核函數及其參數的選擇都是人為的,根據經驗來選取的,帶有一定的隨意性.在不同的問題領域,核函數應當具有不同的形式和參數,所以在選取時候應該將領域知識引入進來,但是目前還沒有好的方法來解決核函數的選取問題。

㈡ svm 線性可分為什麼還要核函數

只了解一些SVM中的核函數,歡迎交流SVM本身是線性分類器,使用了核函數後,相當於把原來的數據,映射到一個高維空間(在相對低維度的空間中難分類的樣本,很可能在映射到高維空間後用線性分類器就可以分開)。而在SVM中使用核函數,我理解是替換了SVM中衡量內積的方式(x*z)為K(x,z),以此來達到映射的目的的。

㈢ SVM的類型和核函數選擇

線性分類:線性可分性、損失函數(loss function)、經驗風險(empirical risk)與結構風險(structural risk)。

核函數的選擇要求滿足Mercer定理(Mercer's theorem),即核函數在樣本空間內的任意格拉姆矩陣(Gram matrix)為半正定矩陣(semi-positive definite)。

常用的核函數有:線性核函數,多項式核函數,徑向基核函數,Sigmoid核函數和復合核函數,傅立葉級數核,B樣條核函數和張量積核函數等。



(3)基於SVM的股票價格預測核函數擴展閱讀

SVM被提出於1964年,在二十世紀90年代後得到快速發展並衍生出一系列改進和擴展演算法,在人像識別、文本分類等模式識別(pattern recognition)問題中有得到應用。

核函數具有以下性質:

1、核函數的引入避免了「維數災難」,大大減小了計算量。而輸入空間的維數n對核函數矩陣無影響,因此,核函數方法可以有效處理高維輸入。

2、無需知道非線性變換函數Φ的形式和參數。

3、核函數的形式和參數的變化會隱式地改變從輸入空間到特徵空間的映射,進而對特徵空間的性質產生影響,最終改變各種核函數方法的性能。

4、核函數方法可以和不同的演算法相結合,形成多種不同的基於核函數技術的方法,且這兩部分的設計可以單獨進行,並可以為不同的應用選擇不同的核函數和演算法。

㈣ SVM演算法採用高斯核函數,核函數的參數對結果影響大嗎

核函數一般是為了解決維度過高導致的計算能力不足的缺陷,實質就是特徵向量內積的平方。
為什麼會提出核函數:
一般我們在解決一般的分類或者回歸問題的時候,給出的那個數據可能在低維空間並不線性可分,但是我們選用的模型卻是在特徵空間中構造超平面,從而進行分類,如果在低維空間中直接使用模型,很明顯,效果必然會大打折扣。
但是!如果我們能夠將低緯空間的特徵向量映射到高維空間,那麼這些映射後的特徵線性可分的可能性更大【記住這里只能說是可能性更大,並不能保證映射過去一定線性可分】,由此我們可以構造映射函數,但問題隨之而來了,維度擴大,那麼隨之而言的計算成本就增加了,模型效果好了,但是可用性降低,那也是不行的。
於是有人提出了核函數的概念,可以在低維空間進行高維度映射過後的計算,使得計算花銷大為降低,由此,使得映射函數成為了可能。舉個簡單的例子吧,假設我們的原始樣本特徵維度為2,將其映射到三維空間,隨便假設我們的映射函數為f(x1,x2)
=
(x1^2,
x2^2,
2*x1*x2),那麼在三維空間中,樣本線性可分更大,但是向量內積的計算開銷從4提高到9【如果從10維映射到1000維,那麼計算花銷就提高了10000倍,而實際情況下,特徵維度幾萬上百萬十分常見】,再看對於樣本n1=(a1,a2),n2=(b1,b2),映射到三維空間之後,兩者的內積I1為:a1^2
*
b1^2
+
a2^2
*
b2^2
+
4
*
a1
*
a2
*
b1
*
b2,此時,又有,n1,n2在二維空間中的內積為:a1b1
+
a2b2,平方之後為I2:a1^2
*
b1^2
+
a2^2
*
b2^2
+
4
*
a1
*
a2
*
b1
*
b2,此時
I1

I2
是不是很相似,只要我們將f(x1,x2)調整為:
(x1^2,
x2^2,
根號(2*x1*x2)
)
,那麼此時就有I1
=
I2,也就是說,映射到三維空間里的內積,可以通過二維空間的內積的平方進行計算!
個人博客:www.idiotaron.org
里有關於svm核函數的描述~
實際上核函數還是挺難找的,目前常用的有多項式核,高斯核,還有線性核。
希望能幫到你,也希望有更好的想法,在下面分享下哈。

㈤ 怎麼利用svm對時間序列進行建模

SVM理論是在統計學習理論的基礎上發展起來的,由於統計學習理論和SVM方法對有限樣本情況下模式識別中的一些根本性的問題進行了系統的理論研究,很大程度上解決了以往的機器學習中模型的選擇與過學習問題、非線性和維數災難、局部極小點問題等。應用SVM進行回歸預測的步驟具體如下:
1)實驗規模的選取,決定訓練集的數量、測試集的數量,以及兩者的比例;2)預測參數的選取;3)對實驗數據進行規范化處理;4)核函數的確定;5)核函數參數的確定。其中參數的選擇對SVM的性能來說是十分重要的,對於本文的核函數使用RBF核函數,對於RBF核函數,SVM參數包括折衷參數C、核寬度C和不敏感參數E。目前SVM方法的參數、核函數的參數選擇,在國際上都還沒有形成統一的模式,也就是說最優SVM演算法參數選擇還只能是憑借經驗、實驗對比、大范圍的搜尋和交叉檢驗等進行尋優。實際應用中經常為了方便,主觀設定一個較小的正數作為E的取值,本文首先在C和C的一定范圍內取多個值來訓練,定下各個參數取值的大概范圍,然後利用留一法來具體選定參數值
股價時間序列的SVM模型最高階確定
股價數據是一個時間序列,從時間序列的特徵分析得知,股價具有時滯、後效性,當天的股價不僅還與當天各種特徵有關,還與前幾天的股價及特徵相關,所以有必要把前幾天的股價和特徵作為自變數來考慮。最高階確定基本原理是從低階開始對系統建模,然後逐步增加模型的階數,並用F檢驗對這些模型進行判別來確定最高階n,這樣才能更客觀反映股票價格的時滯特性。具體操作步驟如下:假定一多輸入單輸出回歸模型有N個樣本、一個因變數(股價)、m- 1個自變數(特徵),由低階到高階遞推地採用SVM模型去擬合系統(這兒的拓階就是把昨天股價當做自變數,對特徵同時拓階),並依次對相鄰兩個SVM模型採用F檢驗的方法判斷模型階次增加是否合適[ 7]。對相鄰兩模型SVM ( n)和SVM ( n+ 1)而言,有統計量Fi為:Fi=QSVR (n)- QSVR( n+1)QSVR (n)1N - m n - (m -1)mi =1,2,,, n(1)它服從自由度分別為m和(N - m n - (m -1) )的F分布,其中QSVR (n)和QSVR( n+1)分別為SVR ( n)和QSVR( n+1)的剩餘離差平方和,若Fi< F(?,m, N-m n- (m-1) ),則SVM (n )模型是合適的;反之,繼續拓展階數。
前向浮動特徵篩選
經過上述模型最高階數的確定後,雖然確定了階數為n的SVM模型,即n個特徵,但其中某些特徵對模型的預測精度有不利影響,本文採用基於SVM和留一法的前向浮動特徵特徵篩選演算法選擇對提高預測精度有利影響的特徵。令B= {xj: j=1,2,,, k}表示特徵全集, Am表示由B中的m個特徵組成的特徵子集,評價函數MSE (Am)和MSE (Ai) i =1,2,,, m -1的值都已知。本文採用的前向浮動特徵篩選演算法如下[9]:1)設置m =0, A0為空集,利用前向特徵篩選方法尋找兩個特徵組成特徵子集Am(m =2);2)使用前向特徵篩選方法從未選擇的特徵子集(B -Am)中選擇特徵xm +1,得到子集Am+1;3)如果迭代次數達到預設值則退出,否則執行4);4)選擇特徵子集Am+1中最不重要的特徵。如果xm+1是最不重要的特徵即對任意jXm +1, J (Am +1- xm+1)FJ(Am +1- xj)成立,那麼令m = m +1,返回2) (由於xm+1是最不重要的特徵,所以無需從Am中排除原有的特徵);如果最不重要的特徵是xr( r =1,2,,, m )且MSE (Am+1- xr) < MSE (Am)成立,排除xr,令A'm= Am+1- xr;如果m =2,設置Am= A'm,J (Am) = J (A'm), ,返回2),否則轉向步驟5);5)在特徵子集A'm中尋找最不重要的特徵xs,如果MSE (A'm- xs)EM SE (Am-1),那麼設置Am= A'm, MSE (Am)= MSE (A'm),返回2);如果M SE (A'm- xs) < M SE (Am -1),那麼A'm從中排除xs,得到A'm-1= Am- xs,令m = m -1;如果m =2,設置Am= A'm, MSE (Am) = MSE (A'm)返回2),否則轉向5)。最後選擇的特徵用於後續建模預測。
預測評價指標及參比模型
訓練結果評估階段是對訓練得出的模型推廣能力進行驗證,所謂推廣能力是指經訓練後的模型對未在訓練集中出現的樣本做出正確反應的能力。為了評價本文模型的優劣,選擇BPANN、多變數自回歸時間序列模型( CAR)和沒有進行拓階和特徵篩選的SVM作為參比模型。採用均方誤差(mean squared error, MSE)和平均絕對誤差百分率(mean ab-solute percentage error, MAPE)作為評價指標。MSE和MAP定義如下:M SE=E(yi- y^i)2n( 2)MAPE=E| yi- y^i| /yin( 3)其中yi為真值, y^i為預測值, n為預測樣本數。如果得出M SE, MAPE結果較小,則說明該評估模型的推廣能力強,或泛化能力強,否則就說明其推廣能力較差

㈥ 如何使用libsvm進行回歸預測

<1> 下載Libsvm、Python和Gnuplot。我用的版本分別是:Libsvm(2.8.1),Python(2.4),Gnuplot(3.7.3)。注意:Gnuplot一定要用3.7.3版,3.7.1版的有bug.

<2> 修改訓練和測試數據的格式(可以自己用perl編個小程序):
目標值 第一維特徵編號:第一維特徵值 第二維特徵編號:第二維特徵值 ...
...
例如:
2.3 1:5.6 2:3.2
表示訓練用的特徵有兩維,第一維是5.6,第二維是3.2,目標值是2.3

注意:訓練和測試數據的格式必須相同,都如上所示。測試數據中的目標值是為了計算誤差用

<3> 分別使用Libsvm中的Windows版本的工具svmscale.exe進行訓練和測試數據的歸一化,svmtrain.exe進行模型訓練,svmpredict.exe進行預測
(1)svmscale.exe的用法:svmscale.exe feature.txt feature.scaled
默認的歸一化范圍是[-1,1],可以用參數-l和-u分別調整上界和下屆,feature.txt是輸入特徵文件名
輸出的歸一化特徵名為feature.scaled
(2)svmtrtrain.exe訓練模型
我習慣寫個批處理小程序,處理起來比較方便。例如svm_train.bat中訓練語句為:
svmtrain.exe -s 3 -p 0.0001 -t 2 -g 32 -c 0.53125 -n 0.99 feature.scaled
訓練得到的模型為feature.scaled.model

具 體的參數含義可以參考幫助文檔。這里-s是選擇SVM的類型。對於回歸來說,只能選3或者4,3表示epsilon-support vector regression, 4表示nu-support vector regression。-t是選擇核函數,通常選用RBF核函數,原因在「A Practical Guide support vector classification」中已經簡單介紹過了。-p盡量選個比較小的數字。需要仔細調整的重要參數是-c和-g。除非用 gridregression.py來搜索最優參數,否則只能自己慢慢試了。

用gridregression.py搜索最優參數的方法如下:
python.exe gridregression.py -svmtrain H:/SVM/libsvm-2.81/windows/svmtrain.exe -gnuplot C:/gp373w32/pgnuplot.exe -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -v 10 -s 3 -t 2 H:/SVM/libsvm-2.81/windows/feature.scaled > gridregression_feature.parameter

注意:-svmtrain是給出svmtrain.exe所在路徑,一定要是完整的全路徑
-gnuplot是給出pgnuplot.exe所在路徑。這里要用pgnuplot.exe這種命令行形式的,不要用wgnupl32.exe,這個是圖形界面的。
-log2c是給出參數c的范圍和步長
-log2g是給出參數g的范圍和步長
-log2p是給出參數p的范圍和步長
上面三個參數可以用默認范圍和步長
-s選擇SVM類型,也是只能選3或者4
-t是選擇核函數
-v 10 將訓練數據分成10份做交叉驗證。默認為5
最後給出歸一化後訓練數據的全路徑
搜索最優參數的過程寫入文件gridregression_feature.parameter(注意別少了這個>符號啊)

根據搜索到的最優參數修改feature.scaled.model中的參數
(3)用svmpredict.exe進行預測
svmpredict.exe feature_test.scaled feature.scaled.model feature_test.predicted
其中feature_test.scaled是歸一化後的測試特徵文件名,feature.scaled.model是訓練好的模型,SVM預測的值在feature_test.predicted中。

㈦ 用libsvm做時間序列預測,為什麼訓練數據越少越准確

樓主的說法似乎不太對


首先,訓練數據的主要區別是什麼是測試數據:


如果我有一堆計時數據,首先隨機分為兩堆,一堆訓練只用於看模型是好的,然後前者稱為訓練數據。下面是幾個訓練數據序列。(注意不要把訓練數據的結果作為模型質量的度量,這是最基本的)。

最後,如果像預測股票價格一切都那樣簡單,那麼就不需要這么多機器學習和金融專家才能進行高頻交易

㈧ 在svm演算法中引入核函數,核函數是什麼意思

實質上是一種映射函數,將低維空間非線性問題映射到高維空間編程線性問題進行處理。許多在低維空間難以處理的非線性分類問題,轉換到高維空間和容易得到最優分類超平面,這是其最核心的思想。

㈨ 請教faruto老師關於libsvm工具箱預測時核函數的選擇問題

cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 -p 0.02 -t 1 '];里的-t 1就是選擇的多項式核函數。
-t 核函數類型:核函數設置類型(默認2)
0 -- 線性核函數: u'*v
1 -- 多項式核函數: (gamma*u'*v + coef0)^degree
2 -- RBF核函數: exp(-gamma*|u-v|^2)
3 -- sigmoid核函數: tanh(gamma*u'*v + coef0)
4 -- 預定義核函數(指定核矩陣)

㈩ SVM中的核函數與概率密度估計中的非參數估計里的核函數有什麼內在聯系

我覺得一樣,都是對距離的度量。