在模式識別領域中,最近鄰居法(knn演算法,又譯k-近鄰演算法)是一種用於分類和回歸的非引數統計方法。[1]
在這兩種情況下,輸入包含特徵空間中的k個最接近的訓練樣本。
最近鄰居法採用向量空間模型來分類,概念為相同類別的案例,彼此的相似度高,而可以藉由計算與已知類別案例之相似度,來評估未知類別案例可能的分類。
k-nn是一種基於例項的學習,或者是區域性近似和將所有計算推遲到分類之後的惰性學習。k-近鄰演算法是所有的機器學習演算法中最簡單的之一。
無論是分類還是回歸,衡量鄰居的權重都非常有用,使較近鄰居的權重比較遠鄰居的權重大。例如,一種常見的加權方案是給每個鄰居權重賦值為1/ d,其中d是到鄰居的距離。[2]
鄰居都取自一組已經正確分類(在回歸的情況下,指屬性值正確)的物件。雖然沒要求明確的訓練步驟,但這也可以當作是此演算法的乙個訓練樣本集。
如下圖我們考慮樣本為二維的情況下,利用knn方法進行二分類的問題。圖中三角形和方形是已知類別的樣本點,這裡我們假設三角形為正類,方形為負類。圖中圓形點是未知類別的資料,我們要利用這些已知類別的樣本對它進行分類。
分類過程如下:
1 首先我們事先定下k值(就是指k近鄰方法的k的大小,代表對於乙個待分類的資料點,我們要尋找幾個它的鄰居)。這邊為了說明問題,我們取兩個k值,分別為3和5;
2 根據事先確定的距離度量公式(如:歐氏距離),得出待分類資料點和所有已知類別的樣本點中,距離最近的k個樣本。
3 統計這k個樣本點中,各個類別的數量。如上圖,如果我們選定k值為3,則正類樣本(三角形)有2個,負類樣本(方形)有1個,那麼我們就把這個圓形資料點定為正類;而如果我們選擇k值為5,則正類樣本(三角形)有2個,負類樣本(方形)有3個,那麼我們這個資料點定為負類。即,根據k個樣本中,數量最多的樣本是什麼類別,我們就把這個資料點定為什麼類別。
訓練樣本是多維特徵空間向量,其中每個訓練樣本帶有乙個類別標籤。演算法的訓練階段只包含儲存的特徵向量和訓練樣本的標籤。 在分類階段,k是乙個使用者定義的常數。乙個沒有類別標籤的向量 (查詢或測試點)將被歸類為最接近該點的k個樣本點中最頻繁使用的一類。 一般情況下,將歐氏距離作為距離度量,但是這是只適用於連續變數。在文字分類這種非連續變數情況下,另乙個度量——重疊度量(或海明距離)可以用來作為度量。通常情況下,如果運用一些特殊的演算法來計算度量的話,k近鄰分類精度可顯著提高,如運用大邊緣最近鄰法或者近鄰成分分析法。
「多數表決」分類的乙個缺點是出現頻率較多的樣本將會主導測試點的**結果,那是因為他們比較大可能出現在測試點的k鄰域而測試點的屬性又是通過k領域內的樣本計算出來的[3]
。解決這個缺點的方法之一是在進行分類時將樣本到測試點的距離考慮進去。
最近鄰居搜尋 壓縮儲存
最近鄰搜尋就是在空間資料庫中找出包含查詢關鍵字且離查詢點最近的k個資料點,其中k為常數。2.1ir2 tree information retrieval r tree 基本思想 1 利用雜湊將每個關鍵字對映為位串 bit string 2 用r樹將組織所有資料 3 將位串資訊嵌入到r樹結點中作為關...
kNN 最近鄰分類器
以下都是個人對於knn的一些認識,可能有比較大的問題,望大家批評指正。knn分類器是一種消極的學習期,其並不事先建立明確的學習模型,是一種簡單的基於儲存的學習。應用範圍 主要針對簡單的分類問題。主要思想 找到與待檢測點距離最小的k個樣本點的分類情況,取最多的那類為待檢測點的分類。需要的內容 有標記的...
最近鄰規則演算法(KNN)
最近鄰演算法 knn 是乙個基於例項學習的分類演算法。如果乙個例項在特徵空間中的k個最相似 即特徵空間中最近鄰 的例項中的大多數屬於某乙個類別,則該例項也屬於這個類別。所選擇的鄰居都是已經正確分類的例項。演算法步驟 1 把所有分類好的 有標籤label 的資料 例項 作為訓練集 2 選擇好引數k 3...