libsvm中的dec_values以及分類結果評分問題


    最近一個圖像識別項目里需要對分類的結果進行打分,因為使用的是libsvm3.12,一開始決定直接將svm_predict_values函數的dec_values作為評分返回,后來研究了之后才覺得里面有的東西還挺有趣。

    首先介紹一下SVM中的多分類方法。目前SVM多分類流行的策略有one-against-all以及one-against-one兩種,libsvm中的多分類是采用的one-against-one策略,其他有一些開源庫如SVM-Light采用one-against-all。對於N類的數據,one-against-all建立N個分類器,但有一些缺點,如:數據集偏斜、分類重疊、不可分現象等(參見:http://www.blogjava.net/zhenandaci/archive/2009/03/26/262113.html);one-against-one建立N*(N-1)/2個分類器,每個分類器對樣本進行投票,票數最多對應的類別作為識別結果。在分類器里用來決定投票給誰的依據,就是decision value,也就是libsvm中的dec_values。

    以下考慮線性核的情況。

    直觀上以為decision value就是樣本點到最優超平面的距離,其實並不是,分析如下:

    假設計算出的分類決策面能將兩類(P, N)完全分開,則有: ,其中w理解為最優超平面的法向量,計算式為,αj對應於libsvm中svm_model結構體的sv_coef。

    分類間隔。所以支撐向量到最優超平面的距離為。也就是說,對於其他樣本點,decision value為,到最優超平面的距離為,支撐向量就是的情況。libsvm里只進行decision value的計算,沒有除去||ω||,想要進一步計算超平面距離,參考:http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#f4151 。

    另外decision value也跟概率無關(用在回歸時確實表示概率,但在分類時則不是)。根據我看到的說法,由decision value的計算式,它的取值范圍應該是在實數域上的(這是在一篇外國的碩士論文上看到的說法,見Andreas Vlachos的《Active Learning with Support Vector Machines》,2004)。不過我覺得這樣說好像也不對,假設我們對樣本特征數據做了scale,那么所有的樣本點就被限定在一個有限空間里,既然最優超平面也是在這個空間里確定的,那么只要所有的測試樣本點做了scale處理,到最優超平面的距離肯定是有上界的。具體這個上界怎么去推導,暫時還不懂。

    多分類時one-against-one的策略里有一點小問題就是,各個二分類器的計算得出的decision value其實是沒有可比性的,而one-against-all沒有這個問題。為什么這么說呢?這是因為:1)one-against-all各個分類器訓練參數跟數據集是一樣的,只不過是label做了改變。所以比較不同分類器的decision value是合法的;2)one-against-one各個分類器的訓練時,用的是不同數據集,因此分類器之間的decision value不能直接比較。按照我的理解,前者是在同一個空間里比較,后者就不是了。

    按照在國內外論壇上別人的說法,甚至不能給decision value附件任何含義,除了線性核的SVM里可以用decision value進一步計算距離(參見http://stackoverflow.com/questions/11030253/decision-values-in-libsvm ,不過我覺得老外也未必都是對的)。穩妥的說法就是decision value可以用來作為分類結果置信度的評價。

    回到對分類結果進行打分的問題上來,在網上查找資料時,看到有人也做了類似的工作,見:http://blog.csdn.net/zhzhl202/article/details/7438313 。他的方法是:,其中k為所有支持判別類得個數,n為所有類別個數,si 為所有支持判別類的分數。我覺得這種方法兼顧了投票數與decision value兩方面的信息,比直接累加dec_values然后取平均肯定要好,但是公式的由來,似乎又沒有堅實的理論依據。不過沒有其他好方法之前,我項目里暫時就這么用了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM