[英]Support vector Machine parameters matlab
我正在研究人工智能問題,並且正在按照此示例中的說明進行操作:
在那里,他們使用支持向量機進行分類:
classifier = fitcecoc(trainingFeatures, trainingLabels, ...
'Learners', 'Linear', 'Coding', 'onevsall', 'ObservationsIn', 'columns');
我使用自己的數據集對該示例進行了嘗試,它的運行頻率為89.5%,效果很好,但是現在我想使用自己的設置而不是默認設置來嘗試使用自己的SVM。
我在文檔中閱讀到fitcecoc
默認情況下使用帶有線性內核的SVM,現在我想嘗試不同的內核,例如高斯和多項式。
在課程學習的機器學習課程中,我知道SVM具有一個參數(Andrew NG將其稱為C) ,並且每個內核都有其自己的參數。 我還在此Mathworks URL中找到了有關內核參數的信息:
根據那個鏈接。
所以我寫下了這段代碼:
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.