2013-04-09 89 views
12

Invalid probability model for large support vector machines using ksvm in R跟進:線搜索失敗

我正在訓練的SVM使用ksvm從kernlab包R.我想使用的概率模型,但乙狀結腸在裝配過程中,我得到以下錯誤消息:

line search fails -1.833726 0.5772808 5.844462e-05 5.839508e-05 -1.795008e-08 
-1.794263e-08 -2.096847e-12 

當發生這種情況時,所得的prob.model(m)值是所有概率的向量,而不是裝配在這些概率S形函數的預期參數。導致此錯誤的原因是什麼,我該如何防止它?搜索錯誤消息沒有結果。

重現的例子:

load(url('http://roelandvanbeek.nl/files/df.rdata')) 
ksvm(label~value,df[1:1000],C=10,prob.model=TRUE)->m 
prob.model(m) # works as it should, prints a list containing one named list 

# the below, non-working problem, unfortunately takes an hour due to the large 
# sample size 
ksvm(label~value,df,C=10,prob.model=TRUE)->m # line search fails 
prob.model(m) # just a vector of values 
+0

你能想出來嗎? – 2013-06-03 17:56:34

+4

不,我發現它也發生在較小的數據集中,但尚未能找到一致的解釋。通常,減少或增加觀察次數可以修復問題,從而增加其本質的不規則性... – roelandvanbeek 2013-07-03 12:12:37

+0

@roelandvanbeek,當我嘗試爲我的數據集繪製學習曲線時,我看到問題,但是當我僅運行例如某些分裂70/30,它不顯示該問題?這是你的意思嗎減少或增加觀察? – 2017-09-23 03:14:55

回答

1

看的源代碼,this is the line that throws that error

它的方法.probPlatt使用牛頓法優化函數,在這種情況下,普拉特的縮放。如果您檢查line 3007,雖然您會看到有關該方法的一些參數。

其中一個這樣的參數是minstep基本上最小的數字步驟方法應該不斷嘗試優化功能。你看,這正是第3090行錯誤的條件:​​。所以,基本上,即使達到最小步長,功能也不收斂。

您可以嘗試更改minstep以降低值以避開它。 Alexandros甚至評論說這些參數應該可能在界面中。

+0

您是否在說我們應該更改代碼並重新編譯它? – 2017-09-23 03:14:04

+0

@EB是的,關於改變代碼,雖然並不嚴格要求重新編譯。 – 2017-09-23 15:09:45