Libsvm和Liblinear的使用經驗談《轉》

2021-06-26 18:28:39 字數 1609 閱讀 2576

libsvm和liblinear都是國立台灣大學的chih-jen lin博士開發的,libsvm主要是用來進行非線性svm 分類器的生成,提出有一段時間了,而liblinear則是去年才建立的,主要是應對large-scale的data classification,因為linear分類器的訓練比非線性分類器的訓練計算複雜度要低很多,時間也少很多,而且在large scale data上的效能和非線性的分類器效能相當,所以liblinear是針對大資料而生的。

這位網友對libsvm在matlab中的使用說明的很詳細,可以參考下。

有關liblinear和libsvm各自的優勢可以歸納如下:

1.libsvm用來就解決通用典型的分類問題

2.liblinear主要為大規模資料的線性模型設計

以下為一位網友採用liblinear進行資料分類的實驗效能說明「

」今天試用了以下liblinear,速度很快(快到我沒有想到), 

我的實驗資料: 

訓練集:21504 * 1500(1500是樣本的數量,21504是維度) 

測試集:21504 * 2985 

速度用秒來衡量,20次實驗總共不到2分鐘。 

同樣的問題我用了libsvm實驗速度上相差太大,libsvm實驗5次,每次將近10分鐘,時間是其次,發現乙個問題就是,libsvm比liblinear的結果相差1個百分點,沒有讀liblinear的文章,不知道問題出在那個地方,libsvm我直接用的預設引數,線性模型。這樣必然引起乙個問題,如果我想評價線性模型和非線性模型的效能,我不可能乙個用liblinear乙個用libsvm,如果兩個都用libsvm,報告的效能肯定有一些問題。 

所以如果你的問題維度很大(線性模型就有非常好的效能),不妨考慮liblinear. 「

對於什麼時候用線性模型的問題,我想上面的我舉的例子用linear classifier就比較好,非線性分類不一定比線性分類器好,尤其是在樣本及其有限,同時特徵維度很高的情況下,因為樣本有限的情況下,kernel map通常不準確,很有可能錯誤地劃分類別空間,可能造成比線性模型更差的結果。 

說到scale,我建議不要用libsvm裡自帶的scale,因為一旦使用這個工具,它就會把原來稀疏的資料,變成非稀疏的格式,這樣不但會生成非常大的資料檔案,而且liblinear對稀疏資料快速處理的優勢就不能體現出來了。因此,要scale,就自己寫乙個,以保持原來稀疏的格式

liblinear的好處就是速度快,尤其是對稀疏的特徵。缺點就是太吃記憶體了。10g的資料量需要接近50g的記憶體,資料量再大就沒法做了 。

另外,還有乙個經常提到的svm庫svm-per:

是康奈爾大學的人設計的。好像對計算機硬體的效能要求比liblinear要低...有做影象處理的人使用這個svm-per代替liblinear。

另外,對於多分類問題以及核函式的選取,以下經驗規則可以借鑑:

對於多分類問題:

對於15類場景來說,每類100幅訓練影象,如果直接訓練乙個15類的multi-class classifier,則訓練檔案的label值取1~15,wi標記不用指定(default 1)。如果對於每個類單獨訓練乙個分類器,這樣就把這個類的100幅影象作為正樣本(假設label=1),而其餘所有的訓練影象作為負樣本(共1400幅,假設label=-1),由此可以看出正負樣本不平

Libsvm和Liblinear的比較

libsvm和liblinear都是國立台灣大學的chih jen lin博士開發的,libsvm主要是用來進行非線性svm 分類器的生成,提出有一段時間了,而liblinear則是去年才建立的,主要是應對large scale的data classification,因為linear分類器的訓練比...

Libsvm和Liblinear的使用經驗談

libsvm和liblinear都是國立台灣大學的chih jen lin博士開發的,libsvm主要是用來進行非線性svm 分類器的生成,提出有一段時間了,而liblinear則是去年才建立的,主要是應對large scale的data classification,因為linear分類器的訓練比...

Libsvm使用總結

libsvm使用心得 分類,回歸 libsvm是實現svm的便捷開源工具,應用廣泛 除此之外還有lightsvm,沒用過 由國立台灣大學chih chung chang和 chih jen lin編寫,可以實現基於svm的分類和回歸。由於個人對svm的理論只是 略懂 下面只介紹libsvm在win3...