KNN是最簡單的機器學習算法之一。
在模式識別中,K-近鄰算法(或近鄰的簡稱)是一種用於分類和回歸的非參數方法。[ 1 ]在這兩種情況下,輸入包含k個最近的訓練樣本在特征空間中。輸出取決於近鄰是用於分類或回歸:
l 在kNN分類中,輸出的是一個分類的關系。一個對象是由其鄰居投票進行分類,被分類到最近的K個最近鄰對象(k是一個正整數,通常小的)。如果k = 1,那么對象只是分配到單個最近鄰。
l 在KNN回歸中, 輸出該對象的屬性值,這個值是k個鄰居的平均值。
K-NN是一種基於實例的學習,或懶惰的學習,其中函數是近似的局部和所有計算遞延至分類。K-NN算法是其中最簡單的機器學習算法。 K-NN算法是最簡單的機器學習算法之一。
用於分類和回歸,它可以根據分類貢獻權重到最近的鄰居,所以,附近的鄰居有助於平均比更遙遠的。例如,一個普通的加權方案是給每個鄰居重1 / D,其中D是鄰居的距離。
鄰居是從一組對象的類(k-NN分類)或對象的屬性值(k-NN回歸)是已知的。這可以看作是對算法的訓練,雖然沒有明確的訓練步驟是必需的。
一個缺點是K-NN算法是對數據的局部結構敏感。不能與k-均值混為一談,另一種流行的機器學習技術。
算法
一個KNN分類的示例,測試樣本(綠色的園)應該分類到哪一個類別,藍色的正方形或者紅色的三角形。如果k=3,(實線圈) 他會被分到第二類中,因為有兩個三角形但是只有一個方形在這個圈里面。如果k=5,(虛線圈)他會被分到類別1(在圈里面有3個正方形,2個三角形)。
訓練樣本是在多維空間中的一組向量。每個樣本有一個分類類別。在算法訓練階段值包括特征向量和訓練樣本的分類類別。在分類階段,K是用戶自定義的一個常數,和一組未標示的向量(查詢或者測試點)指定標簽在離查詢點最近的K個樣本中出現頻率最高的那個類,
一種常用的 連續變量 距離度量是 歐氏距離。對於離散變量,如文本分類,另一個度量可以使用,如 重疊度量 (或 漢明距離)。 在微陣列基因表達數據的上下文中 ,例如,在微陣列基因表達數據中,k-近鄰還應用Pearson 和 spearman 提出的相關系數。通常情況下,使用距離度量學或者專門的算法k-近鄰分類精度可以顯著提高,如大邊緣最近鄰或鄰里成分分析。 最基本的一個缺點"多數表決"分類時發生類分布不均衡。那就是,更頻繁的類的例子傾向於統治預測的新示例中,因為他們往往是常見的 k 個最近鄰居,因為他們的數量很多。一種方法來克服這一問題是重量的分類,考慮到測試距離指向每個其 k近鄰。類 (或回歸問題中的值) 的每個 k 個最近點乘以正比從那點到測試點距離的逆的重量。另一種方式來克服不均衡是由抽象數據的表示形式。例如在自組織映射(SOM) 中,每個節點是群集的相似點的代表 (中心),不管他們在原始的訓練數據中的密度。K-NN可應用於SOM。
參數選擇
K 的最佳選擇取決於數據 ;一般來說,k 值越大降低噪聲對分類的影響,但使類之間的界限不明顯。一個好的 k 可以選擇通過各種啟發式技術 (請參見參數優化)。將預計選擇為最靠近的訓練樣本的類的特殊情況下(即當 k = 1)稱為的最近鄰居算法。
屬性
k-近鄰是用一個統一的核函數的可變帶寬,核密度"氣球"估計的一個特殊情況。[8][9]
原始版本的算法很容易實現通過計算對所有存儲的例子來計算測試用例之間的距離,但對於大量訓練樣本卻是計算密集型操作。使用適當的最近鄰搜索算法使 k-近鄰在計算上更適用於大型數據集。多年來 ; 提出了很多最近的近鄰搜索算法,這些算法通常設法減少距離評價實際執行的數目。
k-近鄰有一些強一致性的結果。隨着數據量趨於無窮,該算法保證產量錯誤率沒有兩次貝葉斯錯誤率 更糟(給出的數據分布可實現的誤差最小率)。k-近鄰在一些k值下被保證接近貝葉斯錯誤率 (k增加通過一個數據點條目的函數)。通過使用接近圖,對 k-近鄰的各種改進是可能的。
度量學習
K-近鄰鄰居分類性能往往可以通過 (監督) 的度量學習顯著改善。流行的算法是Neighbourhood components analysis 和 Large margin nearest neighbor 。監督度量學習算法使用的標簽信息來學習一種新的度量或偽度量。
特征提取
當對輸入的數據和算法是太大,無法進行處理,它被懷疑是出現了冗余 (例如使用英尺和米同時測量) 然后輸入的數據將變為一個精簡的特征的集合 (也稱為特征矢量)。將輸入的數據轉換為特征的集合稱為特征提取。如果提取的特征都經過精心挑選預期功能集將從輸入數據提取相關信息,以執行所需的任務,使用這減少的特征的集合而不使用全尺寸輸入。應用 k-近鄰算法在特征空間中的變換數據之前進行原始數據進行特征提取。
示例使用 k-近鄰包括人臉識別典型的計算機視覺計算中特征提取和尺寸減少的處理步驟 (通常使用 OpenCV 實現):
- Haar face detection 小波人臉檢測
- Mean-shift tracking analysis 均值漂移跟蹤分析
- PCA 或 Fisher 線性判別分析投影到特征空間,其次是 k-近鄰分類
降維
對於高維數據 (例如,用 10 多個維度數目) 通常是采用 降維來避免維數災難對k-近鄰算法的影響。
在 k-近鄰上下文中的維數災難基本上意味着歐幾里德距離是高維度是無益的,因為所有向量都是幾乎等距搜索查詢向量 (想象更多或更少躺在一個圓上,查詢點為中心的多個點 ; 從查詢到的搜索空間中的所有數據點的距離是幾乎相同)。
特征提取和維數約簡可以組合使用主成分分析 (PCA)、 線性判別分析 (LDA)或典型相關分析 (CCA) 技術作為一個預處理步驟,緊接着由 k-NN處理降維后的特征向量。在機器學習這一過程也稱為低維嵌入。
非常高維數據集 (例如當執行相似性搜索視頻直播、 DNA 數據或高維時間序列上),從 VLDB 工具箱 運行使用局部性敏感散列算法( locality sensitive hashing )的快速近似 k-近鄰搜索,"隨機投影"(random projection ),"草圖" (sketches )或其他高維相似性搜索技術可能是唯一可行的方案。
聚類邊界
最近鄰規則實際上隱式計算決定邊界。它還有可能來顯式地計算決定邊界,這樣的計算復雜度是邊界復雜度。
數據約簡
數據約簡是處理龐大的數據集工作的最重要問題之一。通常情況下,要准確的分類只需要部分數據點。這些數據被稱為原型,可以通過如下方法找到:
1.類-異常值的選擇,訓練按 k-近鄰 (對於給定的 k) 分類的不正確的數據
2.將其余的數據分成兩組: (i) 用於決定分類的一些原型點 (ii) 通過K-NN原型分類正確的點,然后刪除這些點。
類-異常值的選擇
訓練示例包圍其他類的實例被稱為類異常。類異常的原因包括:
隨機誤差
l 此類 (一個孤立的例子,而不是群集) 的訓練示例很少
l 缺少重要特征 (類分隔在其他方面,我們不知道)
l 對於小數據量的類會打不過數據量很大的類(不平衡)
異常點對於K-近鄰類產生噪聲。他們可以檢測到並分離供將來分析。給定兩個自然數、 k > r > 0,訓練的例子稱為( k- r) NN 類異常,如果其 k 近鄰包含超過r個其他類的例子。
CNN用於數據約簡
凝聚最近鄰 (CNN,哈特算法) 是設計來減少 k-近鄰分類算法數據集的。它在訓練數據中選擇數據集原型 U ,這樣 1NN 使用U可以與 1NN使用整個數據集 一樣准確地分類。
對於訓練集 X,CNN 以迭代方式工作:
- 掃描 X中的元素,從 U 中尋找其最近的原型, 具有一個和x不同的標簽
- 從 X中刪除 x 並將其添加到 U
- 重復掃描,直到沒有更多的原型添加到U。
使用U分類而不是X。不是原型的點被稱為"吸收"點。
它是有效掃描依次降低訓練示例的邊界比率。訓練示例的邊界比率 x 被定義為
a(x) = | |x'-y||/ ||x-y||
| |x-y||是x到最近的擁有不同顏色示例 y的距離, | |x'-y||是從 y 到其最近標簽為x的最近的一點節點的距離。
計算邊界比例
邊界比是在 [0,1] 區間,因為 | |x'-y||永遠不會超過 | |x-y||。這種排序優先考慮到類的邊界列入 prototypes U 集合中。不同的標簽比 x 點被稱為 x 的外部。計算邊界比率是右圖所示。數據點標簽的顏色: 初始點是 x 和它的標簽是紅色的。外部點是藍色和綠色。接近外部點 x 是 y。最接近 y 紅點是 x'。邊框比 (x) = | |x'-y||/||x-y||是屬性的初始點 x。
下面是 CNN 在一系列的數字說明。有三類 (紅色、 綠色和藍色)。圖 1: 最初有 60 個點中的每個類。圖 2 顯示了 1NN 分類圖: 按 1NN 分類的每個像素使用的所有數據。圖 3 顯示了 5NN 分類圖。白色區域對應的非機密的地區,那里 5NN 投票綁 (例如,如果有兩個綠色,兩個紅色和 5 最近鄰之間的一個藍點)。圖 4 顯示了減少的數據集。十字架是類離群值選定的 (3,2) 的神經網絡規則 (所有這些實例三近鄰屬於其他類) ;正方形是原型,並吸收的點的空圓圈。左下角顯示的類異常、 原型和所有三類吸收的點的數量。原型數目變化從15%到 20%在此示例中的不同類別。圖 5 顯示了與原型 1NN 分類圖是非常相似,與初始數據集。
圖1 數據集 1NN分類圖
5NN分類圖 降低數據的圖
基於元組的1NN分類
k-近鄰回歸
在 k-近鄰回歸 k-近鄰算法用於估計連續變量。這樣一種算法使用加權的平均的 k個最近鄰居,他們之間的距離的倒數加權。這種算法如下所示:
1.計算從查詢示例的到標志示例的歐幾里德或馬氏距離。
2.通過距離增加來決定例子的標簽。
3.找到最近鄰,基於 RMSE 啟發式最優數的 k。這樣做是使用交叉驗證。
4.與 k-近鄰的多元鄰居計算反距離加權平均。