K-最近鄰法(KNN)簡介

dicksonjyl560101發表於2018-10-04


K-最近鄰法(K-Nearest Neighbor, KNN)最初由Cover和Hart於1968年提出,是一個在理論上比較成熟的分類演算法。


KNN是一類可用於分類或迴歸的技術。作為一個非引數學習演算法,K-最近鄰並不侷限於固定數目的引數。我們通常認為K-最近鄰演算法沒有任何引數,而且使用訓練資料的簡單函式。事實上,它甚至也沒有一個真正的訓練階段或學習過程。反之,在測試階段我們希望在新的測試輸入x上產生y,我們需要在訓練資料X上找到x的K-最近鄰。然後我們返回訓練集上對應的y值的平均值。這幾乎適用於任何型別可以確定y值平均值的監督學習。


在模式識別領域中,KNN演算法是一種用於分類和迴歸的非引數統計方法。


演算法:訓練樣本是多維特徵空間向量,其中每個訓練樣本帶有一個類別標籤。演算法的訓練階段只包含儲存的特徵向量和訓練樣本的標籤。在分類階段,k是一個使用者定義的常數。一個沒有類別標籤的向量將被歸類為最接近該點的k個樣本點中最頻繁使用的一類。一般情況下,將歐式距離作為距離度量,但是這隻適用於連續變數。在文字分類這種離散變數情況下,另一個度量----重疊度量(或漢明距離)可以用來作為度量。


引數選擇:如何選擇一個最佳的K值取決於資料。一般情況下,在分類時較大的K值能夠減少噪聲的影響,但會使類別之間的界限變得模糊。一個較好的K值能通過各種啟發式技術來獲取。噪聲和非相關性特徵的存在,或特徵尺度與它們的重要性不一致會使K近鄰演算法的準確性嚴重降低。在兩類分類問題中,選取k為奇數有助於避免兩個分類平票的情形。在此問題下,選取最佳經驗k值的方法是自助法。


KNN演算法的核心思想:如果一個樣本在特徵空間中的K個最相鄰的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。KNN方法在類別決策上僅僅依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。


優點:簡單,易於理解,易於實現;無需估計引數;無需訓練。特別適合於多分類問題。


缺點:K值的確定,比較好的選取K值的方法只能是通過反覆試驗調整;當樣本不平衡時,如一個類的樣本容量很大,而其它類樣本容量很小時,有可能導致當輸入一個新樣本時,該樣本的K個鄰居中大容量類的樣本佔多數;計算量大,KNN演算法的時間複雜度和儲存空間的增加會隨著訓練集規模和特徵維數的增大而快速增加。


距離度量表示法:(1)、歐式距離;(2)、曼哈頓距離;(3)、切比雪夫距離;(4)、閔可夫斯基距離;(5)、標準化歐式距離;(6)、馬氏距離;(7)、巴氏距離;(8)、漢明距離;等。


K-最近鄰法例子(來自:維基百科):



以上內容主要摘自:   維基百科


GitHub :  https://github.com/fengbingchun/NN_Test

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2215431/,如需轉載,請註明出處,否則將追究法律責任。

相關文章