張校非,白艷萍,郝 巖
(中北大學(xué) 理學(xué)院, 太原 030051)
?
基于PCA和PSO-SVM的手寫數(shù)字識別應(yīng)用研究
張校非,白艷萍,郝 巖
(中北大學(xué) 理學(xué)院, 太原 030051)
針對當(dāng)前手寫數(shù)字識別正確率較低這一不足,提出了一種主成分分析(PCA)和粒子群算法優(yōu)化支持向量機(jī)(PSO-SVM)的手寫數(shù)字識別方法。首先,利用PCA降低輸入數(shù)據(jù)的維數(shù),然后把降維的數(shù)據(jù)作為SVM的輸入,用PSO不斷優(yōu)化SVM中的核函數(shù)參數(shù)g和懲罰因子c,以提高分類精度。實驗結(jié)果表明:同傳統(tǒng)的SVM、GA-SVM、網(wǎng)格搜索算法、卷積神經(jīng)網(wǎng)絡(luò)(CNN)相比,PSO-SVM方法分類方法具有最高的識別準(zhǔn)確率且運算效率也較高,達(dá)98.2%,性能上優(yōu)于其他幾種分類算法。
主成分分析;粒子群算法;支持向量機(jī);手寫數(shù)字識別
在模式識別的領(lǐng)域中,手寫數(shù)字識別是其中的一個重要方面。隨著計算機(jī)和信息技術(shù)的日益發(fā)展,特別是大數(shù)據(jù)時代的到來,對手寫數(shù)字識別的準(zhǔn)確度提出了更高的要求。人眼對不同的手寫數(shù)字識別能力有限,目前對各類數(shù)字字體識別,特別是在脫機(jī)手寫數(shù)字識別方面仍處在發(fā)展階段,識別效果仍然不夠好[1]。因此,對于手寫數(shù)字識別的研究具有重大現(xiàn)實意義。
目前,應(yīng)用于手寫數(shù)字識別的算法很多,例如有貝葉斯算法[2]、k-means算法[3]、神經(jīng)網(wǎng)絡(luò)算法[4-5]、支持向量機(jī)(SVM)[6-7]等,其中SVM 分類算法有很好的泛化能力與學(xué)習(xí)能力[8-10]。SVM 分類算法是以結(jié)構(gòu)風(fēng)險最小化為目標(biāo),所求得的解是全局最優(yōu)解,該算法克服“維數(shù)災(zāi)難”問題,使分類算法的效率大大增加,被廣泛應(yīng)用于信號分類、人臉識別、文本分類、垃圾郵件過濾、手寫體的識別等領(lǐng)域[11]。
支持向量機(jī)在性能優(yōu)化上還存在很大的問題,為了使其性能達(dá)到最優(yōu),本文首先用主成分分析(PCA)將手寫數(shù)字?jǐn)?shù)據(jù)進(jìn)行降維,其次將支持向量機(jī)(SVM)與粒子群算法(PSO)相結(jié)合,用PSO優(yōu)化SVM中的相關(guān)參數(shù)(主要是懲罰參數(shù)c和核函數(shù)參數(shù)g),避免了欠學(xué)習(xí)及過學(xué)習(xí)狀態(tài)的發(fā)生。與傳統(tǒng)的SVM、GA-SVM、卷積神經(jīng)網(wǎng)絡(luò)(CNN)相比,粒子群算法(PSO-SVM)的識別正確率有顯著提高。
1.1 主成分分析(PCA)
主成分分析(principal component analysis,PCA)又稱主分量分析,是由皮爾遜(Pearson)于1901年首先引入,后來由霍特林(Hotelling)在1933年進(jìn)行了發(fā)展[1-13]。PCA是一種通過降維方法,把多個變量化為少數(shù)幾個變量主成分的多元統(tǒng)計方法,這些主成分能夠反映原始變量的大部分信息,通常用原始變量的線性組合來表示,為使這些主成分所包含的信息互不重疊,要求各主成分之間相互無關(guān)。
主成分分析降維的過程其實就是坐標(biāo)系旋轉(zhuǎn)變換的過程,新坐標(biāo)系的各個坐標(biāo)軸方向是原始數(shù)據(jù)變差最大的方向,各主成分表達(dá)式就是新舊坐標(biāo)系的轉(zhuǎn)換關(guān)系式[14]。
1.2 粒子群算法(PSO)
粒子群優(yōu)化算法(particle swarm optimization,PSO)最早由Kenney和Eberhart于1995年提出,PSO算法源于對鳥類捕食行為的研究。在鳥類捕食時,每只鳥類找到食物最簡單有效的方法就是搜尋當(dāng)前距離食物最近的鳥類的周圍區(qū)域[15-17]。
PSO的尋優(yōu)步驟為:首先隨機(jī)初始化粒子的位置X和粒子的速度v,然后通過迭代來尋找空間中的最優(yōu)解。在每次迭代過程中,粒子通過個體極值和全局極值來更新自身的速度和位置,更新公式如下:
(1)
(2)
式中,w為慣性權(quán)重;d=1,2,…是種群的維數(shù);i=1,2,…,m是種群的規(guī)模;t為當(dāng)前迭代次數(shù);Vid為粒子的速度;Pid和Pgd分別代表粒子的個體最優(yōu)值和全局最優(yōu)值;a1和a2為正的非負(fù)常數(shù),稱為加速因子;r1和r2為分布在[0,1]之間的隨機(jī)數(shù)。
1.3 PCA和PSO-SVM算法優(yōu)化步驟
由于手寫數(shù)字?jǐn)?shù)據(jù)集中的每一個數(shù)據(jù)為一個28×28像素點的圖像,一共784維數(shù)據(jù),這意味著每個樣本有784維數(shù)據(jù),這樣不但使計算時間增加,而且冗余的信息還會降低分類的精度,所以采用PCA進(jìn)行降維。
懲罰因子c和核函數(shù)參數(shù)g對SVM預(yù)測精度的影響較大,因此本文將識別正確率當(dāng)作PSO的適應(yīng)度函數(shù)來不斷優(yōu)化參數(shù)c、g,使適應(yīng)度函數(shù)的值達(dá)到最大。故提出一種基于粒子群算法的支持向量機(jī)優(yōu)化算法(PSO-SVM),算法步驟如下:
1) 首先用PCA將手寫數(shù)字特征進(jìn)行降維,將降維后的數(shù)據(jù)作為SVM中的輸入;
2) 初始化SVM的懲罰因子c和核函數(shù)參數(shù)g;
3) 初始化種群的位置和速度,以SVM算法所求得的準(zhǔn)確率作為粒子的適應(yīng)度函數(shù);
4) 用PSO算法對個體粒子進(jìn)行更新,產(chǎn)生新的粒子并計算其適應(yīng)度函數(shù)值;
5) 判斷當(dāng)前粒子的個體極值是否為種群的全局最優(yōu)解。若是,則將當(dāng)前的個體極值替換為全局最優(yōu)解;若不是,則返回步驟4;
6) 將優(yōu)化后的參數(shù)用于SVM手寫數(shù)字分類器進(jìn)行訓(xùn)練,并用手寫數(shù)字測試集進(jìn)行測試。
算法主要步驟偽代碼如下:
%數(shù)據(jù)預(yù)處理
[Train_data,Test_data,ps]=scaleForSVM(train_data,test_data,0,0.1);
[Train_data,Test_data]=pcaForSVM(Train_data,Test_data,85);
%% 選擇最佳的SVM參數(shù)c&g
[bestacc,bestc,bestg] = psoSVMcgForClass(train_data_label,data_train);
% 利用最佳的參數(shù)進(jìn)行SVM網(wǎng)絡(luò)訓(xùn)練
cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];
model = svmtrain(train_data_label,data_train,cmd);
%% 子函數(shù) psoSVMcgForClass.m
[bestCVaccuarcy,bestc,bestg,pso_option=psoSVMcgForClass(train_data_label,train,pso_option)
%個體最優(yōu)更新
if fitness(j) < local_fitness(j)
local_x(j,:) = pop(j,:);
local_fitness(j) = fitness(j);
end
if abs(fitness(j)-local_fitness(j) )<=eps && pop(j,1) < local_x(j,1)
local_x(j,:) = pop(j,:);
local_fitness(j) = fitness(j);
end
%群體最優(yōu)更新
if fitness(j) < global_fitness
global_x = pop(j,:);
global_fitness = fitness(j);
end
% SVM網(wǎng)絡(luò)預(yù)測
[predict_label,accuracy] = svmpredict(test_label,test_data,model);
2.1 PCA降維處理
實驗的數(shù)據(jù)來自于MNIST數(shù)據(jù)庫,共有70 000個樣本,從中挑選出60 000個樣本作為PSO-SVM訓(xùn)練數(shù)據(jù)、1 000個樣本作為測試數(shù)據(jù),有的數(shù)字人眼很難區(qū)分,部分樣本如圖1所示。

圖1 手寫數(shù)字樣本
首先進(jìn)行歸一化,經(jīng)過反復(fù)實驗對比,將樣本數(shù)據(jù)歸一化至[0,0.1]區(qū)間時,分類效果最好。數(shù)據(jù)集中每個樣本大小均為28×28,即784維數(shù)據(jù),這意味著每個樣本均有784維數(shù)據(jù),這不僅會增加樣本的訓(xùn)練時間,也影響到分類器的處理性能。所以,首先要進(jìn)行PCA降維,除去樣本中的冗余信息,同時增加分類器的效率。提取輸入數(shù)據(jù)85%的貢獻(xiàn)率,由784維降到59維,降低了92.5%的維數(shù)。降維后的前10個特征貢獻(xiàn)率如圖2所示。

圖2 PCA提取出的前10個主成分
從圖2中可以看出:前10個特征的累積貢獻(xiàn)率達(dá)50%以上,與初始的數(shù)據(jù)維數(shù)相比,降低了98.7%,即用1.3%的數(shù)據(jù)量代表了數(shù)據(jù)50%以上的特征,這大大降低了數(shù)據(jù)的復(fù)雜度,提高了算法的運算效率。
2.2 PSO-SVM仿真實驗
將PCA降維后的數(shù)據(jù)輸入SVM中,利用PSO算法優(yōu)化SVM,初始種群為20,進(jìn)化代數(shù)為200,c1=1.5,c2=1.7。首先對PSO-SVM進(jìn)行訓(xùn)練,適應(yīng)度曲線如圖3所示。

圖3 PSO尋找最佳參數(shù)的適應(yīng)度(準(zhǔn)確率)曲線
圖中x軸代表進(jìn)化代數(shù),y軸代表訓(xùn)練集的準(zhǔn)確率,可以看出:訓(xùn)練過程中粒子的最佳正確率達(dá)98.4%,此時懲罰因子c和核函數(shù)參數(shù)g分別為66.188 8和0.803 34。
下面對測試集進(jìn)行測試,實驗結(jié)果如圖4所示:

圖4 測試結(jié)果
通過測試可知:本文所用的方法對手寫數(shù)字的識別正確率達(dá)98.2%,只錯分了18個數(shù)字,其中對0、1兩個數(shù)字的識別正確率更是高達(dá)100%。又對每種分類器進(jìn)行50次實驗,取50次的平均值:分別與SVM、GA-SVM、網(wǎng)格搜索算法、卷積神經(jīng)網(wǎng)絡(luò)(CNN)等幾種方法進(jìn)行了對比,對比結(jié)果見表1。

表1 各類算法分類性能對比
從表1中可以看出:PSO-SVM對手寫數(shù)字?jǐn)?shù)據(jù)集在這5種算法中的分類正確率最高,達(dá)98.2%。從運行時間上來看,PSO-SVM僅次于SVM,效率高于GA-SVM、網(wǎng)絡(luò)搜索算法、CNN等3種算法。因此,PSO-SVM算法有更高的精度,且在運算時間上也有很大的優(yōu)勢,具有一定的適用性。
本文首先通過PCA將手寫數(shù)字集進(jìn)行降維,其次用PSO算法對SVM中的參數(shù)c、g反復(fù)訓(xùn)練,不斷提升SVM分類器的性能。實驗結(jié)果表明:PSO-SVM算法對手寫數(shù)字集的正確識別率有一定的提高,且運算效率較高。同其他幾種算法相比,該方法在手寫數(shù)字識別上有較好的應(yīng)用前景。
[1] 陳浩翔,蔡建明,劉鏗然,等.手寫數(shù)字深度特征學(xué)習(xí)與識別[J].計算機(jī)技術(shù)與發(fā)展,2016(7):19-23.
[2] 何巖.統(tǒng)計稀疏學(xué)習(xí)中的貝葉斯非參數(shù)建模方法及應(yīng)用研究[D].杭州:浙江大學(xué),2012.
[3] 王偉.Kmeans聚類與多波譜閾值相結(jié)合的云檢測和煙檢測算法研究[D].合肥:中國科學(xué)技術(shù)大學(xué),2011.
[4] 韓力群.人工神經(jīng)網(wǎng)絡(luò)教程[M].北京:北京郵電大學(xué)出版社,2006.
[5] LéCUN Y,BOTTOU L,BENGIO Y,et al.Gradient-based learning applied to document recognition[J].Proceedings of the IEEE,1998,86(11):2278-2324.
[6] VAPNIK V.Statistical Learning Theory[M].New York:Wiley,1998.
[7] 牛強(qiáng),王志曉,陳岱.基于 SVM 的中文網(wǎng)頁分類方法的研究[J].計算機(jī)工程與應(yīng)用,2007,28(8):1893-1895.
[8] 吳益紅,許鋼,江娟娟,等.基于LBP和SVM的工件圖像特征識別研究[J].重慶理工大學(xué)學(xué)報(自然科學(xué)),2016,30(1):77-84.
[9] 朱兵,董恩生,郭綱.基于EIS-SVM的飛機(jī)復(fù)合材料健康監(jiān)測研究[J].壓電與聲光,2016(1):115-120.
[10]程思嘉,張昌宏.基于粒子群算法優(yōu)化最小二乘支持向量機(jī)的電路故障診斷方法[J].四川兵工學(xué)報,2016,37(3):98-101.
[11]崔健明,劉建明,廖周宇.基于SVM算法的文本分類技術(shù)研究[J].計算機(jī)仿真,2013,30(2):299-302.
[12]YANG J,ZHANG D,FRANGI A F,et al.Two-dimensional PCA:a new approach to appearance-based face representation and recognition[J].IEEE Transactions on Pattern Analysis & Machine Intelligence,2004,26(1):131.
[13]KE Y,SUKTHANKAR R.PCA-SIFT:a more distinctive representation for local image descriptors[J].2004,2(2):506-513.
[14]謝中華.MATlAB統(tǒng)計分析與應(yīng)用:40個案例分析[M].北京:北京航空航天大學(xué)出版社,2015.
[15]SHI Y,EBERHART R C.Empirical study of particle swarm optimization[J].Journal of System Simulation,1999,3(1):31-37.
[16]LIANG J J,QIN A K,SUGANTHAN P N,et al.Comprehensive learning particle swarm optimizer for global optimization of multimodal functions[J].IEEE Transactions on Evolutionary Computation,2006,10(3):281-295.
[17]李洋,王小川,郁磊,等.MATLAB神經(jīng)網(wǎng)絡(luò)43個案例分析[M].北京:北京航空航天大學(xué)出版社,2013.
(責(zé)任編輯 何杰玲)
Application Research of Handwritten Numeral Recognition Based on PCA and PSO-SVM
ZHANG Xiaofei, BAI Yanping, HAO Yan
(College of Science, North University of China, Taiyuan 030051, China)
In this paper, a new method of handwritten numeral recognition based on principal component analysis (PCA) and particle swarm optimization (PSO-SVM) is proposed for the problem of low accuracy of handwritten digit recognition. Firstly, the dimension of the input data is reduced by PCA, then the dimension reduction data is used as the input of SVM, and the kernel function parametergand the penalty factorcin SVM are optimized by PSO to improve the classification accuracy. The experimental results show that SVM and GA-SVM, with the traditional grid search algorithm, convolutional neural network (CNN) compared with the classification method of PSO-SVM method and it has higher recognition accuracy rate and the operation efficiency is the highest, reached 98.2%, and the performance is better than other types of classification algorithms.
principal component analysis; particle swarm algorithm; support vector machine; handwritten numeral recognition
2016-12-08
國家自然科學(xué)基金資助項目(61275120);山西省回國留學(xué)人員科研資助項目(2016-088)
張校非(1991—),男,碩士研究生,主要從事現(xiàn)代優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)在組合優(yōu)化中的應(yīng)用研究,E-mail:598095564@qq.com; 白艷萍(1962—),女,教授,博士生導(dǎo)師,主要從事神經(jīng)網(wǎng)絡(luò)在函數(shù)逼近與預(yù)測中的應(yīng)用、神經(jīng)網(wǎng)絡(luò)在組合優(yōu)化中的應(yīng)用、數(shù)據(jù)處理與數(shù)據(jù)融合、非線性動力學(xué)的數(shù)學(xué)建摸與研究,E-mail:974167293@qq.com。
張校非,白艷萍,郝巖.基于PCA和PSO-SVM的手寫數(shù)字識別應(yīng)用研究[J].重慶理工大學(xué)學(xué)報(自然科學(xué)),2017(7):140-144.
format:ZHANG Xiaofei,BAI Yanping,HAO Yan.Application Research of Handwritten Numeral Recognition Based on PCA and PSO-SVM[J].Journal of Chongqing University of Technology(Natural Science),2017(7):140-144.
10.3969/j.issn.1674-8425(z).2017.07.022
TP39
A
1674-8425(2017)07-0140-05