◆楊濟萍
基于主成分降維模型的手寫數字識別研究
◆楊濟萍
(蘭州交通大學 甘肅 730070)
手寫數字識別是光學字符識別技術的一個分支,因其受不同國家背景、個人書寫習慣等因素的影響,脫機手寫數字識別依舊是模式識別領域的重要難題.因此如何利用適當的圖像預處理過程消除冗雜信息對特征提取的影響,為不同形態的手寫體數字提供精準高效的算法模型是本文所研究的重點。
手寫數字識別;K近鄰;支持向量機;主成分分析
計算機文字識別是一類光學字符識別(Optical Character Recognition,簡稱OCR),是一個結合模式識別的基本理論和許多典型處理技術的應用,數字識別是模式識別領域中的冰山一角,在各類字符識別理論和技術的推廣上有著不可小覷的潛力。其中,數字識別中的脫機手寫數字識別因其不同國家背景、個人書寫習慣等因素的影響,對比人腦數字識別準確率較低,因而尋找較高識別準確率和較快識別速度的系統算法一直是學者們研究的熱點。
本文選取阿拉伯數字為對象,采取KNN、SVM等經典算法與PCA-KNN、PCA-SVM優化模型實現阿拉伯數字的脫機手寫數字識別,本文擬從手寫數字圖像預處理、單一識別算法模型和PCA“降維”優化后的手寫數字識別模型三大模塊進行。
文章通過對手寫圖像的處理還原了MNIST數據集的創建過程,在基本預處理如圖像規范化、“平滑去噪”等步驟后。本文通過SVM算法與KNN算法,對比單一模型實現圖像識別效果。主要研究PCA“降維”對單一算法的優化效果,從PCA“降維”的原理到PCA-SVM優化模型的實現,并將結果與單一模型進行比較。
2.1.1 KNN算法的基本步驟
KNN算法的基本原理,簡單概括為:在確定訓練集中樣本分布和特征的情況下,先把測試數據輸入并與訓練集中對應的特征進行互相對照,再比對訓練集中與其最為相似的前K樣本,那么K樣本中出現次數最多的那個類別,就是該測試數據最終得到的分類類別。
2.1.2 KNN算法的系統實現與結果分析
本文在Anaconda.Python3.6集成開發環境(Integrated Development Environment,簡稱IDE)實現對MNIST數據集中訓練集的訓練,并且利用測試集對模型進行了誤差分析。
對于KNN模型的實現,本文通常采用兩種方法進行建模:一種是利用Numpy結合KNN分類原理,通過設定待分類數據,利用Numpy模塊構造矩陣進行距離運算,最后對距離排序得出最優結果;另一種是利用sklearn工具中的KNN函數:“neighbors.Kneighbors”將數據集導入,然后進行K值的設定,并且計算歐氏距離,再對距離進行排序,得到最終分類結果,單獨利用KNN算法進行脫機手寫數字識別準確率在98%以上。對Numpy與KNN原理結合的算法,當K值選定為“3”時,最高準確率為98.73%,可以說對10000個測試樣本中9873個樣本進行了正確的識別;而在sklearn工具包中,K值選定為“4”時,最高準確率為98.9315%,可以解釋為對10000個測試樣本中9893個樣本進行了正確的識別,可見正確率有所上升。但KNN算法整體上來看,該算法耗時太長,平均在半小時左右,并且對設備要求較高,不利于系統的推廣應用。
SVM在解決非線性、高維模式識別及小樣本數據集中有許多特有的長處,在處理線性可分的問題時有一定的優勢,并且能通過構建函數來解決非線性問題的學習分類。
2.2.1 SVM算法基本原理
SVM分類原理是要找出一個能夠將兩類樣本進行完全精確分類的分界線即超平面。優化的目標就是要求分界線將兩類樣本準確分開并使安全間隔(Margin)越大越好。
2.2.2構建SVM分類模型
對于本文中的手寫數據集來說,就是將多個二分類問題不斷地進行拆分,轉化為有限個十分類問題進行分類判別的實現。實驗中常用的拆分方法主要有以下兩種:一對一拆分法(One Versus One,簡稱OVO)和一對多拆分法(One Versus Rest,簡稱OVR)

2.2.3結果展示與分析
利用SVM進行手寫數字字體識別從精度和時效方面來看還是切實可行的,模型識別準確率為94.9843%,用時僅需196.58s,可以說對10000個測試樣本中9498個樣本進行了正確的識別。相比較單獨運用KNN進行識別時的98。73%高準確率和30分鐘的識別時長,SVM在準確率損失下大大減少了識別所需要的時間,對于人腦0.02s的反應速度來說,SVM模型更適合于圖像識別分類。由此可見相比較KNN算法SVM模型更具有推廣性和實用性。
基于SVM算法對脫機手寫數字識別的實現發現:當數據涉及高維度特征向量的問題時,算法學習所需要的數據量增加,使得大數據集訓練學習需要較高的實驗設備,例如在運行KNN傳統算法對手寫數字進行分類時,時長均在30分鐘以上,可見該算法雖然可靠性較高,但識別效率不高,因此希望通過PCA實現在保留更多變量的同時,將“高維數據”集映射到“低維空間”,結合SVM計算原理,以實現手寫數字識別算法的優化。
在對數據進行讀取的同時輸入數據標簽,抽取一部分數字組成n×n矩陣,對數據在不同維度下的精確率進行排序選取,精確率最高的維度即為該數據集最適合進行特征提取的維度,對PCA處理“降維”后的數據利用SVM算法進行距離的計算與排序,得到基于PCA“降維”優化后,再通過SVM運算得到脫機手寫數字識別可靠度。
3.3.1分類模型的實現
此處沿用第三章中提到的MNIST數據集,該數據集每行代表一幅數字,一幅數字圖像是28×28像素,即共有784列(維)。在輸入數據和標簽后,本文選取了前64維數字組成一個8×8的矩陣。
通過PCA“降維”的方法對數據進行多次嘗試,測試過程中發現從784個維度至10維度隨機選取的9個維度準確率結果如表1顯示,在維度的變化中,在選取25維度時準確率已經達到96%,“降維”效果較好。

表1 PCA 維度對準確率的影響展示表
而在25維度之后,由于PCA維度驟減導致方差較小但重要的信息被過濾,從而使得準確率降低,如圖1所示:

圖1 PCA維度對準確率的影響
3.3.2結果展示與分析
為了進一步證實PCA“降維”對分類模型的優化,本文運用算法進行了數據集的識別,相比較單獨運用KNN(k=4)算法實現手寫數字識別結果可見,雖然在PCA維度縮減和KNN(k=4)模型重建之后的數據特征會損失2%左右的預測準確性,但是對于原784特征的實驗數據來說,PCA數據維度的運用大大減少了冗雜數據對數字骨架特征提取的影響,使得模型便于對數據集進行特征提取與劃分,并且在時效的提高和實驗設備的運行損耗上有了明顯的改善。在同樣運用SVM運算模塊前提下,PCA“降維”后的模型在準確度上有明顯的提高,錯誤數減少了195個,雖然所用時間變長,但其確保了對數據識別的準確率,由此可見PCA“降維”處理對模型優化效用明顯,在不同單獨算法模型的推廣和運用上可行性較高。
本文著重探討了如何利用PCA“降維”對脫機手寫數字識別算法模型進行優化。在此期間運用經典算法例如KNN、SVM分別實現對MNIST數據集識別、分類,由此證明PCA“降維”對手寫字符數據的優化處理能提高原模型的識別精確率,并且,PCA-SVM模型可靠性最高,時長最短。

[1]章仁飛.基于支持向量機的多類數字調制識別方法[J] 世界科技研究與發展.2013(1):1-3.
[2]趙曉娟.手寫體數字及英文字符的識別研究[D].吉林.東北師范大學.2010.
[3]劉荷葦.基于CUDA編程的神經網絡手寫數字識別[D].成都.西南交通大學.2013.
[4]白天毅.基于神經網絡的手寫數字識別關鍵技術研究[D].西安.西安工業大學.2014.