K-最近邻法(KNN)简介
K-最近鄰法(K-Nearest Neighbor, KNN)最初由Cover和Hart于1968年提出,是一個(gè)在理論上比較成熟的分類(lèi)算法。
KNN是一類(lèi)可用于分類(lèi)或回歸的技術(shù)。作為一個(gè)非參數(shù)學(xué)習(xí)算法,K-最近鄰并不局限于固定數(shù)目的參數(shù)。我們通常認(rèn)為K-最近鄰算法沒(méi)有任何參數(shù),而且使用訓(xùn)練數(shù)據(jù)的簡(jiǎn)單函數(shù)。事實(shí)上,它甚至也沒(méi)有一個(gè)真正的訓(xùn)練階段或?qū)W習(xí)過(guò)程。反之,在測(cè)試階段我們希望在新的測(cè)試輸入x上產(chǎn)生y,我們需要在訓(xùn)練數(shù)據(jù)X上找到x的K-最近鄰。然后我們返回訓(xùn)練集上對(duì)應(yīng)的y值的平均值。這幾乎適用于任何類(lèi)型可以確定y值平均值的監(jiān)督學(xué)習(xí)。
在模式識(shí)別領(lǐng)域中,KNN算法是一種用于分類(lèi)和回歸的非參數(shù)統(tǒng)計(jì)方法。
算法:訓(xùn)練樣本是多維特征空間向量,其中每個(gè)訓(xùn)練樣本帶有一個(gè)類(lèi)別標(biāo)簽。算法的訓(xùn)練階段只包含存儲(chǔ)的特征向量和訓(xùn)練樣本的標(biāo)簽。在分類(lèi)階段,k是一個(gè)用戶(hù)定義的常數(shù)。一個(gè)沒(méi)有類(lèi)別標(biāo)簽的向量將被歸類(lèi)為最接近該點(diǎn)的k個(gè)樣本點(diǎn)中最頻繁使用的一類(lèi)。一般情況下,將歐式距離作為距離度量,但是這只適用于連續(xù)變量。在文本分類(lèi)這種離散變量情況下,另一個(gè)度量----重疊度量(或漢明距離)可以用來(lái)作為度量。
參數(shù)選擇:如何選擇一個(gè)最佳的K值取決于數(shù)據(jù)。一般情況下,在分類(lèi)時(shí)較大的K值能夠減少噪聲的影響,但會(huì)使類(lèi)別之間的界限變得模糊。一個(gè)較好的K值能通過(guò)各種啟發(fā)式技術(shù)來(lái)獲取。噪聲和非相關(guān)性特征的存在,或特征尺度與它們的重要性不一致會(huì)使K近鄰算法的準(zhǔn)確性嚴(yán)重降低。在兩類(lèi)分類(lèi)問(wèn)題中,選取k為奇數(shù)有助于避免兩個(gè)分類(lèi)平票的情形。在此問(wèn)題下,選取最佳經(jīng)驗(yàn)k值的方法是自助法。
KNN算法的核心思想:如果一個(gè)樣本在特征空間中的K個(gè)最相鄰的樣本中的大多數(shù)屬于某一個(gè)類(lèi)別,則該樣本也屬于這個(gè)類(lèi)別,并具有這個(gè)類(lèi)別上樣本的特性。KNN方法在類(lèi)別決策上僅僅依據(jù)最鄰近的一個(gè)或者幾個(gè)樣本的類(lèi)別來(lái)決定待分樣本所屬的類(lèi)別。
優(yōu)點(diǎn):簡(jiǎn)單,易于理解,易于實(shí)現(xiàn);無(wú)需估計(jì)參數(shù);無(wú)需訓(xùn)練。特別適合于多分類(lèi)問(wèn)題。
缺點(diǎn):K值的確定,比較好的選取K值的方法只能是通過(guò)反復(fù)試驗(yàn)調(diào)整;當(dāng)樣本不平衡時(shí),如一個(gè)類(lèi)的樣本容量很大,而其它類(lèi)樣本容量很小時(shí),有可能導(dǎo)致當(dāng)輸入一個(gè)新樣本時(shí),該樣本的K個(gè)鄰居中大容量類(lèi)的樣本占多數(shù);計(jì)算量大,KNN算法的時(shí)間復(fù)雜度和存儲(chǔ)空間的增加會(huì)隨著訓(xùn)練集規(guī)模和特征維數(shù)的增大而快速增加。
距離度量表示法:(1)、歐式距離;(2)、曼哈頓距離;(3)、切比雪夫距離;(4)、閔可夫斯基距離;(5)、標(biāo)準(zhǔn)化歐式距離;(6)、馬氏距離;(7)、巴氏距離;(8)、漢明距離;等。
K-最近鄰法例子(來(lái)自:維基百科):
以上內(nèi)容主要摘自:??維基百科
GitHub:?https://github.com/fengbingchun/NN_Test
總結(jié)
以上是生活随笔為你收集整理的K-最近邻法(KNN)简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: libsvm库简介及使用
- 下一篇: OpenCV3.3中 K-最近邻法(KN
