使用SVM分类器进行图像多分类
ResNet backbone + SVM分類器
對于樣本較為均衡小型數(shù)據(jù)集,SVM作為分類器的效果與MLP的效果相近。
從經(jīng)驗上看,對于樣本不均衡的大型數(shù)據(jù)集,MLP的效果強于SVM。
本博客在自己的小型數(shù)據(jù)集上進行實驗,本來使用MLP已經(jīng)達到很好的效果,但導(dǎo)師讓試一下SVM分類器,可能會對樣本量較小的數(shù)據(jù)集表現(xiàn)稍好。雖然在心里覺得SVM這種方法不太可能有提高,但趁此機會學(xué)習(xí)一下SVM還是有好處的。
SVM相關(guān)知識:
這里僅作簡單陳述,詳細(xì)地可百度或B站,特別多資源
基本理念:最初的SVM是用來作二分類的,目標(biāo)是在特征空間中找到一個超平面,讓任意樣本的點到平面的距離大于等于1。
如果樣本線性不可分,則需要使用核函數(shù)來進行非線性分類,也就是得到非線性超平面。
核函數(shù)
SVM可以通過核方法(kernel method)進行非線性分類,是常見的核學(xué)習(xí)(kernel learning)方法之一。一些線性不可分的問題可能是非線性可分的,即特征空間存在超曲面(hypersurface)將正類和負(fù)類分開。使用非線性函數(shù)可以將非線性可分問題從原始的特征空間映射至更高維的希爾伯特空間(Hilbert space)H ,從而轉(zhuǎn)化為線性可分問題。
常見的核函數(shù)有:多項式核(階為1時稱為線性核)、徑向基函數(shù)核(又稱RBF核、高斯核)、拉普拉斯核、Sigmoid核。
常用線性核和高斯核。
參考自b站:https://www.bilibili.com/video/BV1mP4y137U4?p=2
線性核函數(shù)
解決問題從簡單的出發(fā),先試一下線性核函數(shù)的效果!
公式注意是內(nèi)積
適用于:特征已經(jīng)比較豐富了,樣本數(shù)據(jù)量大,即十萬、百萬這數(shù)量級。
多項式核函數(shù)(了解即可,不常用):
給定3個參數(shù),Q控制高次項,越高次對應(yīng)越復(fù)雜的邊界,計算量也相應(yīng)越大,具體視任務(wù)情況而定
γ和Q就是要調(diào)的超參,得在煉丹過程中調(diào)整。
高斯核函數(shù)——最常用的
公式如下:
高斯核函數(shù)能把低維特征映射為無窮維的特征,比如有m個數(shù)據(jù),每個數(shù)據(jù)是10維,那么根據(jù)公式可得到每個數(shù)據(jù)Xi和任意數(shù)據(jù)Xk的“距離”Dx,有m個數(shù)據(jù),就計算m次,得到m個Xi與Xk的“距離”,然后將Xi里的第k個元素更換為Xi和Xk的“距離”,也就是變成m維了,因此可用于擴充特征維度,讓模型對數(shù)據(jù)點有更好的認(rèn)識和區(qū)分。
σ越小,越陡,特征越鮮明,可能對分類效果略好,但是風(fēng)險越大,可以看第二張圖。
SVM多分類
SVM如何做多分類呢?有直接法和間接法,但直接法不常用,間接法中常用的時一對一(ovo)和一對多(ovr)策略
具體可以來看這篇文章
總結(jié)
一對一就是訓(xùn)練 m(m-1)/2 個分類器(m為類別總數(shù)),也就是每兩個類別之間訓(xùn)練一個分類器,然后用投票法,將預(yù)測的變量輸入到所有分類器中,預(yù)測為label k,則k的得票+1,統(tǒng)計所有的分類器的輸出結(jié)果,得票最多的類別就是最終預(yù)測結(jié)果。
優(yōu)劣:當(dāng)類別很多時,model的個數(shù)是m(m-1)/2,代價很大哦
一對多就是對于第k個類別,將label k的樣本設(shè)為正類,而其他類別的樣本都設(shè)為負(fù)類,最后訓(xùn)練 m個分類器(m為類別總數(shù))。預(yù)測時,將變量輸入到所有分類器中,如果只有一個分類器輸出正值,則可直接判定結(jié)果為該分類器對應(yīng)的類別,否則選取判別函數(shù)值最大的分類器所對應(yīng)的類別為最終預(yù)測結(jié)果。
優(yōu)點:訓(xùn)練m個分類器,個數(shù)較少,其分類速度相對較快。
缺點:每個分類器的訓(xùn)練都是講全部的樣本作為訓(xùn)練樣本,如果不是線性可分?jǐn)?shù)據(jù),訓(xùn)練速度會隨著訓(xùn)練樣本的數(shù)量增加而急劇減慢;同時由于負(fù)類樣本的數(shù)據(jù)要遠遠大于正類樣本的數(shù)據(jù),從而出現(xiàn)了樣本不對稱的情況,且這種情況隨著訓(xùn)練數(shù)據(jù)的增加而趨向嚴(yán)重。解決不對稱的問題可以引入不同的懲罰因子,對樣本點來說較少的正類采用較大的懲罰因子。還有就是當(dāng)有新的類別加進來時,需要對所有的模型進行重新訓(xùn)練。
SVM的優(yōu)缺點:引用
1、SVM算法對大規(guī)模訓(xùn)練樣本難以實施
SVM的空間消耗主要是存儲訓(xùn)練樣本和核矩陣,由于SVM是借助二次規(guī)劃來求解支持向量,而求解二次規(guī)劃將涉及m階矩陣的計算(m為樣本的個數(shù)),當(dāng)m數(shù)目很大時該矩陣的存儲和計算將耗費大量的機器內(nèi)存和運算時間。針對以上問題的主要改進有有J.Platt的SMO算法、T.Joachims的SVM、C.J.C.Burges等的PCGC、張學(xué)工的CSVM以及O.L.Mangasarian等的SOR算法。如果數(shù)據(jù)量很大,SVM的訓(xùn)練時間就會比較長,如垃圾郵件的分類檢測,沒有使用SVM分類器,而是使用了簡單的naive bayes分類器,或者是使用邏輯回歸模型分類。
2、用SVM解決多分類問題存在困難
經(jīng)典的支持向量機算法只給出了二類分類的算法,而在數(shù)據(jù)挖掘的實際應(yīng)用中,一般要解決多類的分類問題。可以通過多個二類支持向量機的組合來解決。主要有一對多組合模式、一對一組合模式和SVM決策樹;再就是通過構(gòu)造多個分類器的組合來解決。主要原理是克服SVM固有的缺點,結(jié)合其他算法的優(yōu)勢,解決多類問題的分類精度。如:與粗集理論結(jié)合,形成一種優(yōu)勢互補的多類問題的組合分類器。
3、對缺失數(shù)據(jù)敏感,對參數(shù)和核函數(shù)的選擇敏感
支持向量機性能的優(yōu)劣主要取決于核函數(shù)的選取,所以對于一個實際問題而言,如何根據(jù)實際的數(shù)據(jù)模型選擇合適的核函數(shù)從而構(gòu)造SVM算法。目前比較成熟的核函數(shù)及其參數(shù)的選擇都是人為的,根據(jù)經(jīng)驗來選取的,帶有一定的隨意性.在不同的問題領(lǐng)域,核函數(shù)應(yīng)當(dāng)具有不同的形式和參數(shù),所以在選取時候應(yīng)該將領(lǐng)域知識引入進來,但是目前還沒有好的方法來解決核函數(shù)的選取問題。
實現(xiàn)
用scikit-learn包(sklearn)中的svm即可:官網(wǎng)地址
SVC
LinearSVC
我的實現(xiàn)是使用ResNet50作為特征提取器(去掉最后一層),先加上MLP預(yù)訓(xùn)練35個epoch,然后將特征提取器的輸出降維(1024維的特征)輸入到SVM中進行訓(xùn)練并得到輸出,然后評估結(jié)果即可。
在我的小型數(shù)據(jù)集上實現(xiàn)時,后續(xù)要做添加懲罰因子的實驗。
總結(jié)
以上是生活随笔為你收集整理的使用SVM分类器进行图像多分类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Excel在统计分析中的应用—第五章—统
- 下一篇: java 新浪短网址生成器,新浪短链接接