王 云 李 叢
(南京理工大學泰州科技學院 江蘇 泰州 225300)
眾多分類算法中,萬普尼克(Vapnik)提出的支持向量機算法SVM運用尤為廣泛。該算法是一種廣義的線性分離器,對于特定的學習樣本,無差錯地進行識別或者尋找出最優的超平面[1]。SVM在圖像識別、文本分類、人臉識別、入侵檢測等領域都有非常廣泛的應用。
本文首先在傳統GSA算法基礎上,提出自適應引力搜索算法,將改進的算法用于對支持向量機的核函數和懲罰系數進行調優,搜索最優的C和σ的參數組合。最后,基于本文提出的改進方法實現了公安警情信息的高效自動分類。
1) 慣性質量Mi(t)的計算公式為[2]:
(1)
式中:fiti(t)表示粒子在時刻t的適應度值(該值決定粒子慣性質量),best(t)代表t時刻最優適應度值,worst(t)代表最差適應度值。
2) 粒子i的引力計算公式為[3]:
(2)
式中:ε為一個非常小的常量,G(t)為萬有引力常量,Rij(t)表示兩個粒子之間的歐式距離。
3) 萬有引力常數G(t)的一般計算公式為[4]:
G(t)=G0×e-αt/T
(3)
式中:G0為初始值,t為當前迭代次數,T為總迭代次數。
4) 更新后萬有引力常數G(t)的計算公式為[5]:
(4)
式中:G0為G(t)的初始值,alfa表示速度衰減常數,max_it表示最大迭代次數,t為當前迭代次數。
由式(2)知,引力常數G是影響算法性能的一個參數,G的大小直接影響算法中粒子受到的合力和加速度的大小,從而決定著算法運算時粒子每次移動“步長”的大小,是影響粒子能否擺脫局部最優、實現最優精細度最直接的因素[6]。由式(3),G從剛開始就迅速下降,即在算法搜索初期就加大了開發力度,缺少前期的有效探索過程,容易使算法陷入局部最優。顯然,這種情況容易打破算法探索和開發的平衡。
針對上述不足,本文提出了使用引力常數G的自適應策略來改進GSA算法。設計引力常量的自適應變化公式如下:
(5)
式中:n為描述勘探和開發比例的一個參數,當n=1時,式(5)將轉化成式(4)。引入自適應引力常量,改進引力常量的計算公式,通過改變算法比例系數n來調整算法的探索與開發能力,自適應調整算法的尋優步長,使算法在初期加大搜索力度,后期加大開發力度。
算法仿真結果如圖1所示。圖中曲線1為改進前引力常數隨迭代次數t的變化情況,可見引力常量G從剛開始就迅速下降,易陷入局部最優;而曲線2則為本文改進后引力常數隨迭代次數t的變化情況,可見提出的引力常量自適應變化公式可由n來調節算法的探索與開發能力,n值越大,算法初期的搜索力度越大。

圖1 引力常量與迭代次數t的關系
SVM分類器性能主要取決于懲罰因子和核函數參數,而傳統參數選取方法則多采用反復試湊的手工選取方法,效率低下且易獲得局部最優解[7]。針對上述問題,對兩個決定因素進行優化,尋找最優的參數組合顯得尤為重要,下文給出基于本文提出的自適應GSA優化SVM參數的核心技術。
編碼方式采用二進制字符串和SVM參數進行組合編碼。假設一個粒子可以用一條長度為3的染色體來表示,其中長度為3表示一條染色體攜帶3個信息,分別是:進行二進制編碼的字符串、懲罰系數C和核參數σ。解碼后對應的十進制值的計算表達式如下所示:
(6)
選取一個優秀合理的適應度函數可以讓實驗的結果更加準確并且具有說服力。現采用均方差(MSE)作為支持向量機的適應度函數[8]。MSE具體公式如下:
(7)

利用本文提出的自適應的GSA較強的全局搜索能力,采用自適應步長去替換原來的固定步長,不斷優化調整SVM參數,具體算法流程圖如圖2所示。

圖2 基于自適應GSA的SVM算法流程圖
Step1隨機初始化群體位置X,設定樣本數N、維度dim和最大迭代次數max_it。
Step2對粒子進行編碼。
Step3計算MSE作為粒子的適應度值。
Step4利用式(5)計算G(t),并更新Rij(t)、Mi(t)等變量。
Step5計算合力、加速度。
Step6通過改進的自適應策略和引力計算方法計算并更新粒子的位置及速度,完成一次迭代過程。
Step7判斷有無滿足終止條件,若滿足則輸出算法最優解;不滿足需重復算法Step 2-Step 6。
智能巡防系統分為基于Android的移動端和基于.Net的后臺管理端,移動端具備實時勤務、盤查錄入、接處警、勤務查詢、在線學習、警情自動分類等功能;后臺具有對信息的管理功能,主要包括刪改查等數據操作。其中警情自動分類系統是泰州市海陵區公安巡防智能系統的子系統,其分類需求主要包括交通事故類別、反恐類別、刑事類別等。該子系統可以實現將采集的情報文本自動歸類到已設定的類別中,便于案情研判者選擇其感興趣的類別,并與同類別或不同類別信息進行對比分析。
本系統基于Windows 10操作系統,使用Java編程語言編制智能巡防分類模塊核心代碼,并將其打包成一個功能jar包,供外部應用調用。
公安巡防信息中,警情類別有多種,針對二分類問題的SVM算法則顯得無能為力。本文采用間接法構造多個分類器,從而克服傳統SVM算法分類的不足,根據需要,共需n(n-1)/2個SVM,而其中每個SVM均采用二分類訓練集進行訓練[9]。例如,以下給出在a和b兩個類中尋找最優的超平面訓練集:
(8)
(9)
(10)
在建立n(n-1)/2個SVM模型基礎上,對檢測樣本進行判斷分類。經過篩選淘汰之后,最終輸出的類別就是測試樣本類別。
警情自動分類模塊由訓練樣本和分類兩部分組成。對于已知類別的訓練樣本,采用分類算法計算分類模型;對于測試樣本,使用上步計算結果的分類模型判斷待分類樣本點所屬類別,后對分類器的性能進行評價。警情文本分類模塊設計如圖3所示。

圖3 警情文本分類模型設計圖
本文所實施的警情分類識別步驟如下:
Step1收集原始的文本數據。
Step2對數據進行預處理,使得處理后的結果可以作為自動分類子系統的輸入,減少樣本訓練使用的時間,加快收斂速度,從而加強對警情的判別能力。
Step3把預處理的數據交由SVM作為輸入,通過自適應GSA-SVM算法優化得到最優參數。
Step4使用Step 3結果進行樣本訓練時,針對不同數量的警情類別樣本數,須采用不同的方法訓練樣本(樣本數較多時,采用邊界樣本方法,否則采用虛擬樣本),最后進行組合構造,最終建立最優警情判別模型。
Step5基于Step 4建立的警情判斷模型,加入測試樣本集合進行檢測。
Step6輸出加入的測試樣本的警情判斷結果。
為了驗證算法改進的效果及公安巡防自動分類系統設計的合理性,本文測試選取警情中的多個類別,多組數據綜合進行驗證。
1) 測試數據。文本分類中的語料庫指用于測試和訓練學習機器的文本集合,語料庫選擇是否合適,將直接影響文本分類器的性能。語料庫應廣泛代表分類系統所需處理的實際存在的各類別文本。本文測試中,語料庫來源于泰州市海陵區公安情報文本集,訓練文本共計1 521條,測試文本共計612個。測試分為10組進行,為了前后測試的連貫性,每組測試中訓練文本集始終保持不變。測試用數據分布要求如表1所示。

表1 測試用的數據分布表
2) 性能評估標準。采用目前普遍使用的準確率和查全率以及兩者的綜合評價指標F1測試值作為分類器性能的評價指標[10]。
1) SVM參數優化方法的有效性測試。首先,確定自適應引力搜索算法的初始參數,如:樣本數為1 200,維數為800,最大迭代次數為30。然后在編碼范圍里隨機尋找多個點作為粒子群的初始位置,按照適應度函數來搜索全局最優點。詳細的實驗結果如表2所示。

表2 SVM參數優化結果
表2列出了在SVM參數的優化過程中,隨著迭代次數的增加,得到了(C,σ2)的最優解(935.246,11.842)。通過查看表中數據,可以發現隨著迭代次數的增加,錯分率在下降的同時,適應度有所提高。
2) 分類性能比較。為了便于比較,現分別采用GSA和本文改進的自適應GSA算法對SVM進行訓練,最大迭代次數設為2 000,粒子數為40,G0設為50。采用泰州市海陵區公安巡防智能系統情報文本集中的100個警情文本數據作為測試集,兩種方法比較結果如表3所示。

表3 性能比較
結果表明,基于自適應的GSA優化SVM參數產生了較高的精度和較強的泛化能力。
兩種方法對公安巡防警情信息的分類效果比較如圖4所示。

圖4 兩種方法比較SVM分類的效果
可以看出,本文所用的SVM參數優化方法無論是在準確率、查全率及綜合評價指標F1方面,都優于傳統GSA算法,采用基于自適應GSA的SVM方法可以得到更優的SVM參數。
本文在傳統GSA的基礎上,提出一種自適應的引力搜索算法。該算法避免了傳統GSA易于得到局部最優解的缺點,用改進的GSA優化SVM參數,參數優化結果的精度有所提高。將研究的方法應用于實際的公安巡防警情自動分類中,實驗結果表明,本文提出的改進方法是合理、有效的。