2014-01-27 19 views
4

Documentation herescikit learn svc coef0參數範圍

我想知道的coef0參數是多麼重要。對於在多項式和乙狀結腸內核的SVC。據我所知,它是截距項,就像線性迴歸中的一個常數,以從零抵消函數。但據我所知,SVM(scikit使用libsvm)應該找到這個值。

什麼是考過了良好的一般範圍(有嗎?)。例如,一般用C,一個安全的選擇是10^-5 ... 10^5,以指數級上升。

但是對於coef0,該值似乎與數據高度相關,我不確定如何自動爲每個數據集上的每個網格搜索選擇好的範圍。任何指針?

回答

3

首先,雙曲線函數是很少的內核。事實上,幾乎所有參數的值都是,因此它被稱爲誘導有效內核(在Mercer的意義上)。

其次,coef0不是截距項,它是內核投影,其可以被用於克服與多項式核的重要問題之一的參數。在一般情況下,只使用coef0 = 0應該是蠻好的,但多項式內核有一個問題,與P->天道酬勤,它更多點,這<x,y>小於1 <a,b>有更大的價值更多的中隔離對。這是因爲小於1的值的冪更接近於0,而大於1的相同冪的值更接近無窮大。您可以使用coef0來「縮放」您的數據,因此沒有這種區別 - 您可以添加1-min <x,y>,因此沒有值小於1。如果你真的覺得需要調整這個參數,我建議在[min(1-min,0),max(<x,y>)]範圍內搜索,其中max是通過所有訓練集計算出來的。

+0

我不完全理解你的第一句話 - 你爲乙狀結腸內核說這是爲了優化在一個無用的參數?從你的評論的其餘部分,你是否認爲總是對多項式內核使用1來避免值<1是公平的? – lollercoaster

+1

第一條陳述指出,對於大多數參數來說,sigmoid **不是內核**。這與調優無關,通常在內核機器上使用**功能是錯誤的**。它被引入使神經網絡社區更熟悉svms,但這不是一個好主意。對於poly,我會說這是保存coef0值0和1.因爲兩者都可以有一些好的屬性,但我會離開檢查其他值。 – lejlot

+1

我不同意sigmoid是選擇錯誤核心的一般論據。一切都從數據開始。如果您的數據與sigmoid良好映射,那麼sigmoid是您的選擇。我曾遇到過S型病例被證明是建模數據的正確功能的情況。 –