簡體   English   中英

支持向量機參數matlab

[英]Support vector Machine parameters matlab

我正在研究人工智能問題,並且正在按照此示例中的說明進行操作:

Matlab深度學習示例

在那里,他們使用支持向量機進行分類:

classifier = fitcecoc(trainingFeatures, trainingLabels, ...
    'Learners', 'Linear', 'Coding', 'onevsall', 'ObservationsIn', 'columns');

我使用自己的數據集對該示例進行了嘗試,它的運行頻率為89.5%,效果很好,但是現在我想使用自己的設置而不是默認設置來嘗試使用自己的SVM。

我在文檔中閱讀到fitcecoc默認情況下使用帶有線性內核的SVM,現在我想嘗試不同的內核,例如高斯和多項式。

在課程學習的機器學習課程中,我知道SVM具有一個參數(Andrew NG將其稱為C) ,並且每個內核都有其自己的參數。 我還在此Mathworks URL中找到了有關內核參數的信息:

內核參數...

根據那個鏈接。

  • 高斯核的參數為SIGMA
  • 多項式內核的參數P是多項式函數的階數

所以我寫下了這段代碼:

Oursvm = templateSVM('KernelFunction','polynomial');
classifier = fitcecoc(trainingFeatures, trainingLabels,'Learners',...
    Oursvm,'Coding', 'onevsall', 'ObservationsIn', 'columns');

現在,我想更改P參數,在Template SVM Doumentation中,我發現可以這樣設置:

Oursvm = templateSVM('KernelFunction','polynomial','PolynomialOrder',9);

模板支持向量機

默認值為3,但無論我為PolynomialOrder使用哪個數字,對於p = 1或p = 2甚至p = 9,精度始終是相同的3.2258

是不是很奇怪?

  • 我想念什么?

  • 另外,如何為高斯內核設置SIGMA參數? 因為使用默認配置進行培訓的准確性非常低,並且在SVM模板文檔中,他們沒有指定如何清楚地設置此參數。

  • 如何設置SVM的C參數?

  • 最終,我讀到您需要的訓練樣本至少是輸入數據維度的10倍,如果輸入數據的維度是深度學習示例,那么有可能僅使用201個樣本(每個類別67個,總共三個類別)是4096?

吳安德(Andrew Ng)在week7 kernels2視頻中描述了您遇到的問題:

大C-產生較低的偏差,較大的方差(易於過度擬合)

小C-產生較高的偏差,低方差(容易擬合不足)

高斯核的Sigmas相反:

大西格瑪(Sigma)-提供更高的偏差,低方差(容易擬合不足)

小Sigma-產生較低的偏差,高方差(易於過度擬合)

因此,您可以嘗試及時調整一個參數。 因此,作為安德魯,我看不出使用多項式內核的原因。 通常是線性的和高斯的,取決於數字的例子和特征。 GL

對於最后一個問題,在訓練示例數量少且功能太多的情況下,您應該嘗試線性核

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM