K-最近鄰法(KNN)簡介
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 :
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2215431/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 機器學習演算法——kNN(k-近鄰演算法)機器學習演算法KNN
- K近鄰法(KNN)原理小結KNN
- 機器學習——KNN(K近鄰)機器學習KNN
- k-近鄰演算法演算法
- k-均值聚類簡介聚類
- K-近鄰演算法介紹與程式碼實現演算法
- K-鄰近均值演算法演算法
- 機器學習實戰2.1. 超詳細的k-近鄰演算法KNN(附Python程式碼)機器學習演算法KNNPython
- 機器學習——KNN近鄰演算法機器學習KNN演算法
- Python:K-近鄰演算法Python演算法
- 機器學習-K近鄰演算法-KNN機器學習演算法KNN
- 機器學習筆記1(K-近鄰演算法)機器學習筆記演算法
- 用Python實現K-近鄰演算法Python演算法
- 什麼是機器學習分類演算法?【K-近鄰演算法(KNN)、交叉驗證、樸素貝葉斯演算法、決策樹、隨機森林】機器學習演算法KNN隨機森林
- 【python資料探勘課程】二十.KNN最近鄰分類演算法分析詳解及平衡秤TXT資料集讀取PythonKNN演算法
- 什麼是機器學習的分類演算法?【K-近鄰演算法(KNN)、交叉驗證、樸素貝葉斯演算法、決策樹、隨機森林】機器學習演算法KNN隨機森林
- k-鄰近演算法實現約會網站的配對效果演算法網站
- Tcl語法簡介
- 德爾菲法簡介(轉)
- 機器學習——最鄰近規則分類(K Nearest Neighbor)KNN演算法機器學習RESTKNN演算法
- 機器學習演算法-K近鄰(KNN)演算法(三):馬絞痛資料--kNN資料預處理+kNN分類pipeline(程式碼附詳細註釋)機器學習演算法KNN
- 【機器學習】機器學習建立演算法第2篇:K-近鄰演算法【附程式碼文件】機器學習演算法
- Azure Bicep(二)語法簡介
- 機器學習——最鄰近規則分類(K Nearest Neighbor)KNN演算法的應用機器學習RESTKNN演算法
- 第一篇:K-近鄰分類演算法原理分析與程式碼實現演算法
- GOLANG簡介與基礎語法Golang
- Go 語言簡介(上)— 語法Go
- 第三篇:基於K-近鄰分類演算法的手寫識別系統演算法
- 無法訪問網路上的芳鄰
- 第二篇:基於K-近鄰分類演算法的約會物件智慧匹配系統演算法物件
- Typora編輯器Markdown語法簡介
- flex設計思想和語法簡介Flex
- Abstract Syntax Tree 抽象語法樹簡介抽象語法樹
- K-單調
- 圖說十大資料探勘演算法(一)K最近鄰演算法大資料演算法
- 《機器學習實戰》k最近鄰演算法(K-Nearest Neighbor,Python實現)機器學習演算法RESTPython
- 如何在Python中快速進行語料庫搜尋:近似最近鄰演算法Python演算法
- 機器學習經典分類演算法 —— k-近鄰演算法(附python實現程式碼及資料集)機器學習演算法Python