徐 曄,李寶雙
(中國船舶重工集團公司第723研究所,揚州 225001)
?
K近鄰算法在雷達信號識別中的應用
徐 曄,李寶雙
(中國船舶重工集團公司第723研究所,揚州 225001)
介紹了機器學習算法中的K近鄰算法,討論了該算法在雷達信號識別中的應用,用python語言實現了雷達識別程序,并分析了得到的結果,闡述了對算法結果產生影響的幾方面內容。
K近鄰算法;python語言;雷達信號識別
雷達信號識別是在信號分選的基礎上,根據得到的雷達射頻、重頻、脈寬等信息,與數據庫中的已知信息進行比對,從而得到雷達的名稱、平臺、型號等信息的過程。雷達信號識別的結果為決策機構提供了相關敵對方雷達的工作方式、平臺類型、威脅程度等信息,是指揮判斷的重要依據。雷達識別的一般流程如圖1所示。

圖1 雷達識別的一般流程圖
雷達信號識別有多種方法,如現在使用的最大隸屬度法、模板匹配法等。本文使用的K近鄰算法屬于機器學習算法的一種。
雷達信號識別的目的就是根據特征對目標雷達進行分類,機器學習中有多種方法進行分類,其中的K近鄰算法屬于學習方法中的一種,因為該類算法需要明確知道目標變量的分類信息,所以被稱為監(jiān)督學習算法,否則被稱為無監(jiān)督學習算法。K近鄰算法的工作原理是:存在一個樣本數據集合,稱之為訓練樣本集,樣本中的每一數據都有自己的分類標志,即樣本中的數據都明確地對應一個所屬的分類。當新輸入的數據沒有明確的分類標志時,將該數據的特征與樣本集中數據的特征進行比較,然后算法提取相似度最高的數個數據的分類標志,以此來確定新輸入數據的類型。一般情況下取前K個最相似數據中出現次數最多的分類標志,并將其作為未知信號的分類。
K近鄰算法的一般流程如下:
(1) 收集數據:可以使用多種方法收集數據。
(2) 準備數據:找到需要的特征值,將數據進行格式化。
(3) 測試算法:計算錯誤率。
(4) 使用算法:首先需要輸入樣本數據和結構化的輸出結果,然后運行K臨近算法判定輸入數據分別屬于哪個分類,最后對計算出的分類進行后續(xù)處理。
K近鄰算法的優(yōu)缺點及適用范圍:
優(yōu)點:精度較高,對異常值不敏感,無數據輸入假定。
缺點:時間、空間復雜度較高。
K近鄰算法可適用于數值型等類型數據。
2.1 參數和測量方法的選取
在雷達識別中使用K近鄰算法,第1步需要收集數據,可使用預設置的雷達信號參數,第2步是確定數據的特征值并對其進行格式化。當前情況下,信號分選可提供的參數主要有雷達的射頻類型、射頻值、重頻類型、重頻值、脈寬值、方位、幅度這幾種。根據經驗可知,方位值及幅度值受單次測量影響較大,無法作為識別的依據。因此,選取射頻、重頻、脈寬3個值作為雷達信號識別的特征值。計算特征值間的距離時,使用歐氏距離進行計算:
(1)
2.2 編程環(huán)境及語言的選擇
為方便編程,選用python語言對數據進行處理。python語言語法較簡單,且可以操作多種高級數據類型,這些類型可以簡單地實現抽象的數學概念,在python中可以使用Numpy庫和Matplotlib庫完成矩陣操作和繪圖操作。這2個庫在編程中都有應用。
2.3 算法實現
2.3.1 數據采集
算法實首先需要收集數據,將15部預先設好的雷達參數存放在文本文件中由程序讀出。數據存放在radar.txt 中,每行順序存放射頻值、重頻值、脈寬值、雷達名稱4項,以換行符為分隔符,每行數據代表1部雷達的1次測量數據。文件中每部雷達有5組測量數據,共有75組測量數據。數據限于篇幅不全部列出,僅對每部雷達取1組數據列出,如表1所示。

表1 雷達參數表
然后需要對數據進行處理,由于頻率參數絕對值較大,直接代入計算將會導致該分量所占比重過大,因此需要對參數進行歸一化處理。15部雷達的數據點分布如圖2~圖4所示。圖2為射頻-重復間隔關系圖,圖3為重復間隔-脈寬關系圖,圖4為射頻-脈寬關系圖。

圖2 射頻-重復間隔關系圖

圖3 重復間隔-脈寬關系圖

圖4 射頻-脈寬關系圖
2.3.2 算法實現及應用
算法流程圖如圖5所示。

圖5 射頻-脈寬關系圖
將文本文件中的數據讀入內存,根據要求,編寫了Filetomatrix函數,代碼如下:
def Filetomatrix (filename):
Fp=open (filename)
Lines=fp.readlines()
returnMat=zeros((len(Lines),3))
LabelVector=[]
Index=0
For line in Lines
Line=line.strip()
Listfromline=line.split(' ')
retunrMat[index,:]=listFromLine[0:3]
LabelVector.append(int(listFromLine[-1]))
Index+=1
return returnMat,LabelVector
首先打開文件,并得到文件的行數,也就是記錄數,然后創(chuàng)建返回的Numpy特征矩陣,并將其置0。Strip函數用來截取所有的回車符,并用' '字符將得到的整行數據分割成一個元素列表,最后將文件內容解析到該矩陣中。由于最后一個元素是雷達名稱,所以選取前3個元素存儲到特征矩陣中。
讀取數據完成后,將數據集中的每條記錄與數據集分別進行計算,得到每條數據的分類結果,最后計算正確率。源代碼如下:
def idetify():①
Errnum=0.0
radardataMat,radarLabels,radarlines=Filetomatrix(‘radar.txt’)②
numberofLines=len(radarlines)③
normMat,ranges,minVals=autoNorm(radarDataMat)④
for index in range(numofLines)
calssResult=classfy(normMat[index],norMat,radarLabels,3)⑤
Print calssResult
If classResult !=radarLabels[index]:
Errnum +=1⑥
return calssResult
第①步,定義函數;第②步,將數據從文件中讀入特征矩陣中;第③步,讀取記錄條數;第④步,將數據歸一化;第⑤步,循環(huán)讀入每條數據進行比對,并將結果打印出來;第⑥步,計算識別的正確率。
當K值取3 時,識別結果的錯誤率為1.3%;當K值取為4時,識別結果的錯誤率為2.6%;當K值取5時,識別結果的錯誤率為0。表2為K=5時的識別結果。
表2中第3列表示關聯(lián)度最高的雷達類型出現次數,可以看到,在參數相似的情況下,識別結果會出現一定的波動,但綜合后仍能給出正確結果。
根據程序實現可知,對識別結果產生影響的主要有以下幾個方面:
(1)K的取值。K值大小對識別結果有一定的影響,取得太大,會導致計算量過大;取得太小,可能造成異常情況的出現,從而影響識別結果。
(2) 樣本數量。樣本數量本身也會對識別結果造成影響,樣本數量過多,容易造成重復計算,影響識別速度;數量過少,則不能完全代表某類數據,造成識別失敗。

表2 K=5識別結果
(3) 特征值數量。特征值的選取是識別中最重要的一環(huán),特征值是識別的依據,因此必須是獨特的,能完全描述被測量信息的真實值,并且該值不會隨外界環(huán)境而改變。在雷達信號識別中,選取的射頻、重頻、脈寬值都符合上述要求,而同是測量參數的方位、幅度等因受外界環(huán)境影響較大,不能作為特征值使用。在信號處理產生的信息中,信號參數類型也是一類特征值,但該特征值會受到信號處理算法正確率的影響,不能完全置信。因此,若需要在算法中將參數類型作為特征值處理時,可以通過將參數類型數據化,并修改其在算法中的比重來修正對識別結果的影響。
雷達識別是一項系統(tǒng)工程,特征參數的選取、信息收集、前端數據測量精度等都會影響到識別結果,K近鄰算法作為一種監(jiān)督學習算法有實現簡單、精確度高、對異常值不敏感等優(yōu)點,在雷達信號識別中可以快速,正確地完成工作,同時由于K近鄰算法需要多次運算,因此在工程實踐中需要更好的優(yōu)化以達到最佳效果。
[1] CONWAY D,WHITE J M.機器學習:實用案例解析[M].陳開江,劉逸哲,孟曉楠譯.北京:機械工業(yè)出版社,2013.
[2] HETLAND M L.python基礎教程[M].2版.司維,曾軍崴,譚穎華譯.北京:人民郵電出版社,2010.
Application of KNN Algorithm to Radar Signal Recognition
XU Ye,LI Bao-shuang
(The 723 Institute of CSIC,Yangzhou 225001,China)
This paper introduces the K-nearest neighbor (KNN) algorithm in machine learning algorithms,discusses the application of KNN algorithm to radar signal recognition,realizes the radar recognition program with python language,and analyzes the results,expatiates several factors influencing the algorithm results.
K-nearest neighbor algorithm;python language;radar signal recognition
2016-05-23
TN971.1
A
CN32-1413(2016)04-0056-03
10.16426/j.cnki.jcdzdk.2016.04.013