一文讀懂 KNN 算法:簡(jiǎn)單易懂,讓你輕松掌握機(jī)器學(xué)習(xí)精髓!

1 評(píng)論 1472 瀏覽 2 收藏 7 分鐘

在機(jī)器學(xué)習(xí)里,要說哪一款非常實(shí)用的分類和回歸工具,那不得不提到K 近鄰算法(KNN),大家對(duì)它了解嗎?下面這篇文章的筆者整理分享關(guān)于此的內(nèi)容,感興趣的同學(xué)過來了解了解吧!

K 近鄰算法(KNN),聽起來很高大上,其實(shí)本質(zhì)就是一個(gè)“找鄰居”的游戲。在機(jī)器學(xué)習(xí)的世界里,它可是一款非常實(shí)用的分類和回歸工具。

它棱角分明,具有可解釋性強(qiáng),易實(shí)現(xiàn)的優(yōu)點(diǎn),在很多應(yīng)用中扮演重要的角色。我們將一起探究它的算法原理、案例以及適用邊界,一起慢慢地拆解它,使用它。

一、KNN算法的原理

KNN(K-Nearest Neighbors)是一種基于實(shí)例的學(xué)習(xí)方法,它通過測(cè)量新樣本與已知樣本之間的距離,找到距離最近的 K 個(gè)鄰居,然后根據(jù)這 K 個(gè)鄰居的類別來決定新樣本的類別。

概念中提到了一個(gè)詞“最近”,那我們?cè)撊绾味x樣本間距離的遠(yuǎn)近呢?

通常來講,我們會(huì)通過數(shù)學(xué)公式計(jì)算兩個(gè)樣本點(diǎn)之間的距離,最常見的一個(gè)計(jì)算方法就是歐式距離(Euclidean Space)。

最后再做一個(gè)簡(jiǎn)單的統(tǒng)計(jì),找到距離待測(cè)樣本點(diǎn)最近的 K 個(gè)樣本點(diǎn)中,哪些類別最多。當(dāng)然除了歐式距離,還有很多距離計(jì)算的方式,如曼哈頓距離、余弦距離等等。

總得來說,它不僅適用于分類問題,還能處理回歸問題。

二、KNN案例之挑選適合的商店

假設(shè)你是一個(gè)剛搬到城市的農(nóng)村青年,對(duì)城市生活一無所知。但是,你有許多熱情的鄰居,他們?cè)敢鈳椭氵m應(yīng)新環(huán)境。你家的周圍有兩家商店,一家賣水果,一家賣蔬菜。你想知道哪家商店更適合你,于是你開始了探索。

你首先去水果店,店主熱情地迎接你,告訴你水果的新鮮程度和價(jià)格。然后你去蔬菜店,店主也熱情地迎接你,告訴你蔬菜的新鮮程度和價(jià)格。你發(fā)現(xiàn),水果店的水果種類更多,價(jià)格也更貴;而蔬菜店的價(jià)格相對(duì)便宜,種類雖然沒有那么多,但也很豐富。最后,你根據(jù)自己的需求,決定經(jīng)常去蔬菜店購(gòu)買蔬菜。

這個(gè)過程,就像 KNN 算法的工作原理。你就像是待分類的新樣本,兩家商店就像是已知的類別。你通過比較兩家商店的相似度(也就是水果和蔬菜的新鮮程度和價(jià)格),找到了距離你最近的那個(gè)鄰居(也就是最適合你的蔬菜店),然后決定了自己的選擇。

三、KNN算法的應(yīng)用步驟

計(jì)算方式,主要有以下幾個(gè)步驟:

  1. 準(zhǔn)備數(shù)據(jù):收集一批已知類別的樣本,構(gòu)成訓(xùn)練集。
  2. 計(jì)算距離:對(duì)于每一個(gè)新樣本,計(jì)算它與訓(xùn)練集中每個(gè)樣本的距離。
  3. 找到最近鄰:選出距離新樣本最近的 K 個(gè)樣本。
  4. 確定類別:根據(jù)這 K 個(gè)鄰居的類別,決定新樣本的類別。

關(guān)于K值的問題:需要注意的是K值是人工假定的選取樣本數(shù)量,它會(huì)直接影響到模型的預(yù)測(cè)效果。

當(dāng) K 越小的時(shí)候,模型就越容易過擬合,因?yàn)轭A(yù)測(cè)結(jié)果與最近一個(gè)樣本點(diǎn)強(qiáng)相關(guān)。而 K 越大的時(shí)候,就越容易欠擬合,因?yàn)轭A(yù)測(cè)結(jié)果要考慮所有樣本的情況,就相當(dāng)于沒有預(yù)測(cè)。

所以,對(duì)于 K 的取值,一種有效的辦法就是從 1開始不斷地嘗試,并對(duì)比準(zhǔn)確率,然后選取效果最好的那個(gè) K 值。

四、KNN算法的適用邊界和優(yōu)缺點(diǎn)

【優(yōu)點(diǎn)】簡(jiǎn)單易實(shí)現(xiàn),可以快速解決多分類問題,并且相對(duì)于線性分類算法用一條直線來分割數(shù)據(jù)的方式來說,KNN 對(duì)于邊界不規(guī)則的數(shù)據(jù)預(yù)測(cè)效果會(huì)更好。

【缺點(diǎn)】KNN 對(duì)于數(shù)據(jù)的容錯(cuò)性很低。比如,當(dāng)待測(cè)樣本周圍的 K 個(gè)數(shù)據(jù)樣本中存在錯(cuò)誤樣本的時(shí)候,就會(huì)對(duì)預(yù)測(cè)結(jié)果有很大的影響。KNN 一般適用于樣本數(shù)較少的數(shù)據(jù)集。因?yàn)樗谔幚頂?shù)據(jù)量比較大的樣本時(shí)會(huì)非常耗時(shí),所以,在實(shí)際工業(yè)中,我們一般會(huì)選用 Kd-tree 來進(jìn)行預(yù)測(cè)。

【適用場(chǎng)景】在數(shù)據(jù)量不多,特征都相對(duì)單一的業(yè)務(wù)場(chǎng)景下很適合選擇 KNN 算法。

五、最后的話

總的來說,KNN 算法就像是一個(gè)熱情友善的鄰居,它用自己的智慧和經(jīng)驗(yàn),幫助你解決生活中的問題。只要你理解它的原理,掌握它的計(jì)算方法,就能充分利用它的優(yōu)點(diǎn),克服它的缺點(diǎn),它可以快速的幫你實(shí)現(xiàn)目標(biāo)。

如果用一句話來概括它,那就是“近朱者赤,近墨者黑”。

本文由 @柳星聊產(chǎn)品 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自Unsplash,基于 CC0 協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 太深?yuàn)W了,沒看懂。

    來自以色列 回復(fù)