SVM算法
支持向量機(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解決小樣本、非線性及高維模式識別中表現出許多特有的優勢,并能夠推廣應用到函數擬合等其他機器學習問題中[10]。
支持向量機方法是建立在統計學習理論的VC 維理論和結構風險最小原理基礎上的,根據有限的樣本信息在模型的復雜性(即對特定訓練樣本的學習精度,Accuracy)和學習能力(即無錯誤地識別任意樣本的能力)之間尋求最佳折衷,以期獲得最好的推廣能力[14](或稱泛化能力)。
SVM 方法有很堅實的理論基礎,SVM 訓練的本質是解決一個二次規劃問題(Quadruple Programming,指目標函數為二次函數,約束條件為線性約束的最優化問題),得到的是全局最優解,這使它有著其他統計學習技術難以比擬的優越性。SVM 分類器的文本分類效果很好,是最好的分類器之一。同時使用核函數將原始的樣本空間向高維空間進行變換,能夠解決原始樣本線性不可分的問題。其缺點是核函數的選擇缺乏指導,難以針對具體問題選擇最佳的核函數;另外SVM 訓練速度極大地受到訓練集規模的影響,計算開銷比較大,針對SVM 的訓練速度問題,研究者提出了很多改進方法,包括Chunking 方法、Osuna 算法、SMO 算法和交互SVM 等等[14]。
SVM分類器的優點在于通用性較好,且分類精度高、分類速度快、分類速度與訓練樣本個數無關,在查準和查全率方面都優于kNN及樸素貝葉斯方法[8]。
與其它算法相比,SVM算法的理論基礎較為復雜,但應用前景很廣,我打算專門寫一個系列的文章,詳細的討論SVM算法,stay tuned!

介紹過了幾個很具代表性的算法之后,不妨用國內外的幾組實驗數據來比較一下他們的優劣。
在中文語料上的試驗,文獻[6]使用了復旦大學自然語言處理實驗室提供的基準語料對當前的基于詞向量空間文本模型的幾種分類算法進行了測試,這一基準語料分為20個類別,共有9804篇訓練文檔,以及9833篇測試文檔。在經過統一的分詞處理、噪聲詞消除等預處理之后,各個分類方法的性能指標如下。

                      

其中F1 測度是一種綜合了查準率與召回率的指標,只有當兩個值均比較大的時候,對應的F1測度才比較大,因此是比單一的查準或召回率更加具有代表性的指標。
由比較結果不難看出,SVM和kNN明顯優于樸素貝葉斯方法(但他們也都優于Rocchio方法,這種方法已經很少再參加評測了)。
在英文語料上,路透社的Reuters-21578 “ModApt´e”是比較常用的測試集,在這個測試集上的測試由很多人做過,Sebastiani在文獻[23]中做了總結,相關算法的結果摘錄如下:
   

 

分類算法

Reuters-21578 “ModApt´e”上的F1測度

Rocchio

0.776

樸素貝葉斯

0.795

kNN

0.823

SVM

0.864





















僅以F1測度來看,kNN是相當接近SVM算法的,但F1只反映了分類效果(即分類分得準不準),而沒有考慮性能(即分類分得快不快)。綜合而論,SVM是效果和性能均不錯的算法。

前面也提到過,訓練階段的最終產物就是分類器,分類階段僅僅是使用這些分類器對新來的文檔分類而已,沒有過多可說的東西。
下一章節是對到目前為止出現過的概念的列表及簡單的解釋,也會引入一些后面會用到的概念。再之后會談及分類問題本身的分類(繞口),中英文分類問題的相似與不同之處以及幾種特征提取算法的概述和比較,路漫漫……