關於
libsvm
的介紹以及相關**網上很多,感興趣可以找找。
這是libsvm
這裡主要是針對之前學習過的幾種特徵篩選演算法用
libsvm
進行比較。
採用搜狗實驗室的資料,選擇商業類文字
1001
篇,娛樂類文字
1208
篇,測試集
29904
篇。分別採用文件頻次,卡方分布,互資訊,資訊增益來篩選特徵——詞。
對於每個演算法分別選出該演算法認為最重要的詞
200個詞。然後對各個測試文字進行分詞,向量化,訓練,測試。
特徵值採用詞頻,歸一化方法如下
其中wi表示詞wi
在當前文件中出現的次數。
特徵篩選演算法
召回率(%
) 準確率(%)
正確率(%
) 文件頻次
93.5558
98.593
95.0508
卡方分布
96.1419
97.2563
95.82
互資訊97.4928
96.8817
96.4085
資訊增益
96.5887
96.782
95.7865
從這個結果來看效果還是不錯,其中從正確率的角度來看互資訊稍微好些。其實這乙個效果比我之前在微軟實習時候用
svm做的分類效果好多了,乙個可能的原因可能是這些語料確實非常乾淨。
tf-idf簇的計算公式非常多,從最簡單的到後續研究人員針對其特點進行優化的。下面選用一套最簡單的公式進行計算比較。在tf
作為特徵值裡直接用的裸
tf,即
tf(t,d)=
,這裡打算對詞進行一些平滑處理,如下:
tf(t,d
)= 1 + logtf(i,j)
idf——逆文件頻次,計算方法如下:
為所有文件數,
df(t)為t
在文件集中出現的文件數。為什麼
idf,有什麼好處?從
idf的計算公式可以看出
df(t)
越大其值越小,這也說明乙個詞如果在越多文件中出現,那麼它的重要性也就越低,反之也是成立的。這是符合我們對乙個事物重要性判斷的直覺的。
當前的權重計算方法已經確定如下:
歸一化方法和前面介紹的一樣。
特徵篩選演算法
召回率(%
) 準確率(%)
正確率(%
) 文件頻次
92.0894
99.1623
94.4723
卡方分布
95.1432
98.584
96.0407
互資訊90.4809
99.5835
93.7032
資訊增益
96.1997
97.8455
96.2346
從這兩個**對比來看
tfidf
提高了分類的準確性,但是召回率下降了。
libsvm文字分類使用筆記 一
參考按其步驟一步步往前走,記錄中間步驟和遇到的問題cd bamboo mkdir build cd build cmake dcmake build type release make allmake install 第四步 安裝bamboo的php擴充套件 cd opt bamboo exts p...
利用LibSVM進行二類文字分類系列
筆者按 此系列博文僅對於libsvm二分類做入門性的介紹,並非研究libsvm的專業水準文章。至於如何用libsvm進行回歸,多分類,筆者目前還沒有涉及,請您查閱libsvm的相關文件說明。這裡給出文字預處理模組 python語言編寫 呼叫libsvm進行文字分類模組採用c語言編寫 實驗結果處理模組...
文字分類四
下面是使用knn演算法來做的。資料均是由前面的程式生成的。做完這個之後,就是將每一步整合起來。然後再盡可能的優化,使得程式效率更好。然後可以嘗試不同的特徵選擇演算法和分類演算法,當然最後要是能有自己的一些小小改進就好了。不過至少有了乙個還可以的結果了。include include include ...