2017-03-02 63 views
0

目前我使用e1071的庫中的R一起訓練RBF內核的SVM模型,例如,要求具有以下參數的SVM功能:定製的內核函數

這裏的問題是有沒有可能在R中進一步定製RBF內核?我想要做的是增加一個額外的計算到原始的RBF內核,例如: [![2]] [2]

Xi和Xj是代表時間序列的兩個對象在絕對timestampts Ti和TJ:

任何想法是值得歡迎的,並謝謝:)


*您好,感謝來自@lejlot答案,在這裏我只是根據自己的解決方案編輯公式,是它正確:)

denote ai = (xi,ti) and bi = (xi, 1/sqr(g)*ti) 

K(ai, aj) = exp(-g*||xi-xj||^2) exp(-(ti-tj)^2) = 
     = exp(-g*||xi-xj||^2 -(ti-tj)^2) = 
     = exp(-g*||xi-xj||^2 -g(1/sqr(g)*ti-1/sqr(g)*tj)^2) = 
     = exp(-g*(||xi-xj||^2 + (1/sqr(g)*ti-1/sqr(g)*tj)^2)) = 
     = exp(-g*(||xi-xj||^2 + (1/sqr(g)*ti-1/sqr(g)*tj)^2)) = 
     = exp(-g*(||bi-bj||^2)) = RBF(bi, bj)* 

*但是仍然存在另一個問題,你說連接ti(乘以1/gamma)到數據表示,但是如何?

假定X的基質包含4個特徵,如下面:

x1 x2 x3 x4 
3 5 6 7 
4 3 2 4 
8 5 2 2 
3 2 1 0 
9 9 3 2 

關於到時間戳值,由於每行具有相同的谷,響應矩陣可以是:

t1 t2 t3 t4 
1 1 1 1 
2 2 2 2 
3 3 3 3 
4 4 4 4 
5 5 5 5 

在e1071的包中,svm函數只包含x作爲輸入矩陣,我們如何還可以包含用於建模的時間戳矩陣?我不知道這是一個簡單的或愚蠢的問題,但現在它讓我瘋狂:(

謝謝:)

+1

這不是一個有效的內核。也許你的意思是...... x exp( - (ti-tj)^ 2)? – lejlot

+0

嗨,謝謝,是的!你是對的,我只是糾正了描述:),你有什麼建議嗎? – ZAWD

+2

[在R中爲svm編寫自定義內核]的可能的重複(http://stackoverflow.com/questions/42633265/write-custom-kernel-for-svm-in-r) – ZAWD

回答

1

因此,這不是一個通用的解決方案,但在你的特定情況下沒有必要對於定製的內核,讓分別表示AI =(十一,TI)和Bi =(十一,1 /開方(G)* TI)

K(ai, aj) = exp(-g*||xi-xj||^2) exp(-(ti-tj)^2) = 
      = exp(-g*||xi-xj||^2 -(ti-tj)^2) = 
      = exp(-g*||xi-xj||^2 -g(1/sqrt(g)*ti-1/sqrt(g)*tj)^2) = 
      = exp(-g*(||xi-xj||^2 + (1/sqrt(g)*ti-1/sqrt(g)*tj)^2)) = 
      = exp(-g*(||xi-xj||^2 + (1/sqrt(g)*ti-1/sqrt(g)*tj)^2)) = 
      = exp(-g*(||bi-bj||^2)) = RBF(bi, bj) 

因爲

||bi-bj||^2 = SUM_k (bik-bjk)^2 = SUM_k (xik-xjk)^2 + (ti-tj)^2 

因此,所有你需要做的將ti連接(乘以1/sqrt(gamma))至d ata表示並應用常規的RBF內核。

+0

嗨,謝謝你的回答,如果我正確理解你的想法,bi =(xi,1/g * ti)應該是bi =(xi,1/sqr(g)* ti):), – ZAWD

+0

yes,我輸了^ 2 :) – lejlot

+0

嗨,謝謝回覆,但基於你的想法,我們如何在R中實現它? (x1,x2,x3,x4,1/sqrt(g)* t1,1/sqrt(g)* t2,1/sqrt( g)* t3,1/sqrt(g)* t4,這裏甚至認爲t1 = t2 = t3 = t4。那麼只需將RBF正常應用svm模型:真的很期待你的回答,並且謝謝你! – ZAWD