2013-05-29 32 views
0

我正在嘗試使用LibSVM進行迴歸。我試圖檢測面孔(10種不同的面孔)。我將1-10標記爲面部類別,將11標記爲非面部類別。我想開發一個腳本usig LibSVM,如果測試圖像落在10個人臉類別中的任何一個上,它會給我一個0-1之間的連續分數,否則它會給我-1(非臉部)。從這個分數,我可以預測我的經驗。如果測試圖像與第一課匹配,分數應該在0.1左右。同樣,如果測試圖像與類別10匹配,分數應該在1左右(任何連續值接近1)。我正在嘗試使用LibSVM的SVR來解決這個問題。我可以很容易地通過分類獲得預期的課程。但我想要一個連續得分值,我可以通過迴歸來獲得。現在,我正在使用LibSVM查看網絡中SVR的函數或參數,但是我找不到任何東西。在這方面有誰能幫助我?在Matlab中使用LibSVM進行支持向量迴歸的參數

+2

這仍然不是真正的迴歸。使用Platt縮放可以預測0到1之間的值,從而將SVM轉換爲概率模型。 –

回答

1

這不是一個迴歸問題。通過迴歸解決它不會產生好的結果。

您正在處理多類分類問題。解決這個問題的最好方法是構造10個具有概率輸出的單比較分類器。爲了得到概率輸出(例如在區間[0,1]中),您可以使用C-SVC的-b 1選項進行訓練和預測(-s 0)。

如果10個分類器中的任何分類器對其正類產生足夠大的概率,則使用該概率(接近於1)。如果10個分類器中沒有一個產生具有足夠高置信度的正面標籤,則可以將其默認爲-1。

所以簡而言之:製作一個多類分類器,其中包含具有概率輸出的一分類分類器。隨後按照我所述對預測進行後處理,使用您選擇的概率閾值(例如0.7)。

+0

謝謝馬克。我曾試過那個。但是我很困惑,我怎麼能爲某個班級獲得一定的正面價值(在0.0到1.0之間)。例如,如果圖像足夠接近第1類,我希望獲得0.1的理想分數,如果測試圖像足夠接近第2類,則需要0.2;如果測試圖像足夠接近第3類,則需要0.3;以此類推(1.o如果測試圖像足夠接近第10課)。此外,得分不能離散,menaing它可以有一個值6.56(在這種情況下,我會認爲它接近第7類enoungh – user2433638

+0

@ user2433638:你可以做到這一點使用2個步驟:(1)找到分類與(k)(2)value = k-1 + prob(k)。如果找到的最大概率低於您指定的閾值,則產生-1。 –

+0

)。現在,我可以使用參數'-b 1'得到分數,並以最高的概率得分來分類(我已經這樣做了),但是不同的等級將具有相同的概率值(意味着以概率得分8.81,等級1或者10類或5類可以在不同的執行中分類)。相反,我希望得分8.81,我會知道測試圖像被歸類爲第9類。「 – user2433638

相關問題