文章原創(chuàng),最近更新:2018-06-25
1.k近鄰算法的初步了解
2.k近鄰算法的基本概念吠谢,原理以及應用
3.k近鄰算法中k的選取以及特征歸一化的重要性
4.將kNN分類器用于的場景
5.將kNN分類器用于的場景
6.本文的一點總結
參考鏈接:
1秘血、 一文搞懂k近鄰(k-NN)算法(一)
2、K-最近鄰算法的應用
3、距離產生美邑彪?k近鄰算法python實現(xiàn)
4选浑、06 K-近鄰算法,初中生也能理解的機器學習
5诞帐、k-近鄰算法
前言:通過網上找的文章,通過歸納總結具體如下:
1.k近鄰算法的初步了解
設想你想了解一個陌生人的飲食風格,如果你對他所知無幾爆雹,那么最容易想到的一個捷徑就是看看他生存的周圍人群的口味停蕉。但是如果你對他的信息知道更多,例如知道他的年齡钙态、收入等慧起,那么這個時候就最好從他周圍的人群中去挑選與他年齡、收入相近的人的飲食風格册倒,這樣預測會更準確一點蚓挤。這其中蘊含的算法就是最近鄰算法。
最近鄰算法的思想很簡單驻子,”距離“相近的事物總會具有更多的共性灿意。其中涉及的數(shù)學知識并不深厚。
要想運用最近鄰算法解決問題崇呵,得明確要個要點,具體如下:
- 一是設定一種距離的定義缤剧,這個距離可能是物理距離,也可能是實際屬性之間的抽象距離域慷;
- 二是要假定物以類聚人以群分荒辕,即距離相近的事物總是有更多的共性。
最近鄰算法是一種預測型算法犹褒,它在實際操作中會忽略很多要素抵窒,只是給出結論而并不會描述結論的具體推理。例如叠骑,預測一個人的飲食風格只是根據與他相近的人來預測的李皇,而并沒有說明這個人的年齡、收入是如何影響他的飲食風格的座云。
為什么要設置成K近鄰呢疙赠?這是因為在實際操作中付材,我們要首先確定一個合理的K值朦拖,假如我們需要預測一個事物的某項特征圃阳,找出被預測事物的K個最近鄰,然后讓這K個最近鄰對預測結果進行投票璧帝,最終去投票最高的作為預測結果捍岳。
2.k近鄰算法的基本概念,原理以及應用
k近鄰算法是一種基本分類和回歸方法睬隶。本篇文章只討論分類問題的k近鄰法锣夹。
k近鄰算法,即是給定一個訓練數(shù)據集苏潜,對新的輸入實例银萍,在訓練數(shù)據集中找到與該實例最鄰近的k個實例,這k個實例的多數(shù)屬于某個類恤左,就把該輸入實例分類到這個類中贴唇。(這就類似于現(xiàn)實生活中少數(shù)服從多數(shù)的思想)根據這個說法,咱們來看下引自維基百科上的一幅圖:
如上圖所示飞袋,有兩類不同的樣本數(shù)據戳气,分別用藍色的小正方形和紅色的小三角形表示,而圖正中間的那個綠色的圓所標示的數(shù)據則是待分類的數(shù)據巧鸭。
這也就是我們的目的瓶您,來了一個新的數(shù)據點,我要得到它的類別是什么纲仍?好的呀袱,下面我們根據k近鄰的思想來給綠色圓點進行分類。
如果k=3郑叠,綠色圓點的最鄰近的3個點是2個紅色小三角形和1個藍色小正方形夜赵,少數(shù)從屬于多數(shù),基于統(tǒng)計的方法锻拘,判定綠色的這個待分類點屬于紅色的三角形一類油吭。
如果k=5,綠色圓點的最鄰近的5個鄰居是2個紅色三角形和3個藍色的正方形署拟,還是少數(shù)從屬于多數(shù)婉宰,基于統(tǒng)計的方法,判定綠色的這個待分類點屬于藍色的正方形一類推穷。
從上面例子我們可以看出心包,k近鄰的算法思想非常的簡單,也非常的容易理解馒铃,那么我們是不是就到此結束了蟹腾,該算法的原理我們也已經懂了痕惋,也知道怎么給新來的點如何進行歸類,只要找到離它最近的k個實例娃殖,哪個類別最多即可值戳。
哈哈,沒有這么簡單啦炉爆,算法的核心思想確實是這樣堕虹,但是要想一個算法在實際應用中work,需要注意的不少額~比如k怎么確定的芬首,k為多少效果最好呢赴捞?所謂的最近鄰又是如何來判斷給定呢?
3.k近鄰算法中k的選取以及特征歸一化的重要性
3.1選取k值以及它的影響
k近鄰的k值我們應該怎么選取呢郁稍?
如果我們選取較小的k值赦政,那么就會意味著我們的整體模型會變得復雜,容易發(fā)生過擬合耀怜!恩結論說完了恢着,太抽象了吧你,不上圖講解號稱通俗講解的都是流氓
好吧封寞,那我就上圖來講解假設我們選取k=1這個極端情況然评,怎么就使得模型變得復雜,又容易過擬合了呢狈究?
假設我們有訓練數(shù)據和待分類點如下圖:
上圖中有倆類碗淌,一個是黑色的圓點,一個是藍色的長方形抖锥,現(xiàn)在我們的待分類點是紅色的五邊形亿眠。
好,根據我們的k近鄰算法步驟來決定待分類點應該歸為哪一類磅废。我們由圖中可以得到纳像,很容易我們能夠看出來五邊形離黑色的圓點最近,k又等于1拯勉,那太好了竟趾,我們最終判定待分類點是黑色的圓點。
由這個處理過程我們很容易能夠感覺出問題了宫峦,如果k太小了岔帽,比如等于1,那么模型就太復雜了导绷,我們很容易學習到噪聲犀勒,也就非常容易判定為噪聲類別,而在上圖,如果贾费,k大一點钦购,k等于8,把長方形都包括進來褂萧,我們很容易得到我們正確的分類應該是藍色的長方形押桃!如下圖:
所謂的過擬合就是在訓練集上準確率非常高,而在測試集上準確率低箱玷,經過上例怨规,我們可以得到k太小會導致過擬合陌宿,很容易將一些噪聲(如上圖離五邊形很近的黑色圓點)學習到模型中锡足,而忽略了數(shù)據真實的分布!
如果我們選取較大的k值壳坪,就相當于用較大鄰域中的訓練數(shù)據進行預測舶得,這時與輸入實例較遠的(不相似)訓練實例也會對預測起作用,使預測發(fā)生錯誤爽蝴,k值的增大意味著整體模型變得簡單沐批。
k值增大怎么就意味著模型變得簡單了,不要急蝎亚,我會解釋的九孩!
哈哈。我們想发框,如果k=N(N為訓練樣本的個數(shù)),那么無論輸入實例是什么躺彬,都將簡單地預測它屬于在訓練實例中最多的類。這時梅惯,模型是不是非常簡單宪拥,這相當于你壓根就沒有訓練模型呀!直接拿訓練數(shù)據統(tǒng)計了一下各個數(shù)據的類別铣减,找最大的而已她君!這好像下圖所示:
我們統(tǒng)計了黑色圓形是8個,長方形個數(shù)是7個葫哗,那么哈哈缔刹,如果k=N,我就得出結論了劣针,紅色五邊形是屬于黑色圓形的(明顯是錯誤的好不)
這個時候校镐,模型過于簡單,完全忽略訓練數(shù)據實例中的大量有用信息酿秸,是不可取的灭翔。
恩,k值既不能過大,也不能過小肝箱,在我舉的這個例子中哄褒,我們k值的選擇,在下圖紅色圓邊界之間這個范圍是最好的煌张,如下圖:
(注:這里只是為了更好讓大家理解呐赡,真實例子中不可能只有倆維特征,但是原理是一樣的1骏融,我們就是想找到較好的k值大辛脆帧)
那么我們一般怎么選取呢?李航博士書上講到档玻,我們一般選取一個較小的數(shù)值怀泊,通常采取 交叉驗證法來選取最優(yōu)的k值失都。(也就是說及汉,選取k值很重要的關鍵是實驗調參,類似于神經網絡選取多少層這種丰嘉,通過調整超參數(shù)來得到一個較好的結果)
3.2距離的度量
在上文中說到凉当,k近鄰算法是在訓練數(shù)據集中找到與該實例最鄰近的k個實例枣申,這k個實例的多數(shù)屬于某個類,我們就說預測點屬于哪個類看杭。
定義中所說的最鄰近是如何度量呢忠藤?我們怎么知道誰跟測試點最鄰近。這里就會引出我們幾種度量倆個點之間距離的標準楼雹。
我們可以有以下幾種度量方式:
其中當p=2的時候模孩,就是我們最常見的歐式距離,我們也一般都用歐式距離來衡量我們高維空間中倆點的距離烘豹。
在實際應用中瓜贾,距離函數(shù)的選擇應該根據數(shù)據的特性和分析的需要而定,一般選取p=2歐式距離表示携悯,這不是本文的重點祭芦。
在實際應用中,距離函數(shù)的選擇應該根據數(shù)據的特性和分析的需要而定憔鬼,一般選取p=2歐式距離表示龟劲,這不是本文的重點。
3.3特征歸一化的必要性
所以我們應該讓每個特征都是同等重要的轴或!這也是我們要歸一化的原因昌跌!歸一化公式如下:
講到這里,k近鄰算法基本內容我們已經講完了照雁。除去之后為了提高查找效率提出的kd樹外蚕愤,算法的原理,應用等方面已經講解完畢,由于每篇文章內容不宜太多萍诱,kd樹等知識下篇講解悬嗓,這里總結一下本文講的內容。
4.將kNN分類器用于的場景
人們將kNN分類器用于:
- Amazon上的物品推薦
- 消費者信貸風險的評估
- 利用圖像分析技術對地表分類
- 人臉識別
- 識別圖像中的人物性別
- 推薦Web網頁
- 推薦度假套餐
5.將kNN分類器用于的場景
其實裕坊,kNN算法非常簡單包竹,可以說在訓練過程中基本沒有算法參與,只有存儲訓練樣本籍凝≈芟梗可以說KNN算法實際上是一種識記類算法。因此饵蒂,kNN雖然簡單声诸,但是其明顯包含了以下幾個缺點:
整個訓練過程需要將所有的訓練樣本極其輸出label存儲起來,因此苹享,空間成本很大双絮。
測試過程中,每個測試樣本都需要與所有的訓練樣本進行比較得问,運行時間成本很大。
采用距離比較的方式软免,分類準確率不高宫纬。
6.本文的一點總結
1.我們提出了k近鄰算法,算法的核心思想是膏萧,即是給定一個訓練數(shù)據集漓骚,對新的輸入實例,在訓練數(shù)據集中找到與該實例最鄰近的k個實例榛泛,這k個實例的多數(shù)屬于某個類蝌蹂,就把該輸入實例分類到這個類中。
更通俗說一遍算法的過程曹锨,來了一個新的輸入實例孤个,我們算出該實例與每一個訓練點的距離(這里的復雜度為0(n)比較大,所以引出了下文的kd樹等結構)沛简,然后找到前k個齐鲤,這k個哪個類別數(shù)最多,我們就判斷新的輸入實例就是哪類椒楣!
2.與該實例最近鄰的k個實例给郊,這個最近鄰的定義是通過不同距離函數(shù)來定義,我們最常用的是歐式距離捧灰。
3.為了保證每個特征同等重要性淆九,我們這里對每個特征進行歸一化。
4.k值的選取,既不能太大炭庙,也不能太小跪另,何值為最好,需要實驗調整參數(shù)確定煤搜!