機器學習---KNN算法(保證寫得很通俗易懂)

剛學完了,還是寫博客記上,忘了好回頭看。裏面有個小問題沒明白,算了,自當過幾天就能搞懂吧。

KNN算法原理

KNN(K-nearst neighbors KNN),就是K個最近的鄰居的意思,說的是每個樣本都可以用它最接近的K個鄰居來代表。在現實生活中,有點**“近朱者赤,近墨者黑”**的意思。
看完後邊再回來看這個,能理解KNN既可用在分類應用中,也可應用在迴歸應用中。不同之處在於:KNN在做分類預測時,一般採用多數表決法,做迴歸時採用平局值法,這樣說可能不直觀,下面的例子說明,多數表決法。
例1:下面是一個做分類預測時的例子,
在這裏插入圖片描述
例2:
假如不知道什麼食物的情況下,我們來對這些食物進行分類。已知這些食物中每種食物都有兩種屬性,甜度(取值範圍1-10)脆度(取值範圍1-10),按照這三個屬性,把食物分成三類,水果、蔬菜和蛋白質。如下表所示。
在這裏插入圖片描述
對上面的表格,以
甜度
爲橫座標軸,脆度爲縱座標軸做出二維散點圖。
在這裏插入圖片描述
對水果進行分類,如下圖所示。
在這裏插入圖片描述
那麼問題來了,再來一個西紅柿,會是圖中的哪個點呢?如果把西紅柿放在圖上,應該是下圖的位置。
在這裏插入圖片描述
那麼它應該屬於哪種食物呢?影響這個決策分類的主要啊因素有如下三個:

  1. K值的選擇:一般選擇較小的值,通過交叉驗證最終選擇一個合適的終值。選擇K值有兩種情況,太小和太大。
    K選的太小,表示用較小的領域的樣本進行預測,訓練誤差就會變小,模型會過複雜, 容易
    過擬合

    K值選太大,表示用較大領域的樣本進行預測,訓練誤差會變大,模型變得簡單,容易欠擬合
  2. **度量:**上面的西紅柿到選擇的樣本值之間用歐氏距離計算。
  3. 決策規則:在分類模型中,主要使用多數表決法或者加權多數表決法
    在迴歸模型中(請看下面的線性迴歸預測講解),主要使用**“平局值法”或者加權平均值法**

什麼是多數表決法和加權多數表決法

多數表決法
每個鄰近樣本的權重是一樣的,也就是說最終預測的結果爲出現類別最多的那個類,比如下圖中藍色問號的最
終類別爲紅色;
在這裏插入圖片描述
加權多數表決法
每個鄰近樣本的權重是不一樣的,一般情況下采用權重和距離成反比的方式來計算。上圖中,假如三個紅點到藍色問號的距離是2,相應地權重就會變小。兩個黃色五角星到預測樣本的距離爲1,但是權重會變大,最終藍色圓圈的最****終類別是黃色五角星。

那麼KNN做線性迴歸的時候如何預測呢

在做線性迴歸的時候採用平均值法和加權平均值法
平均值法:每個鄰近的樣本的權重是一樣的,也就是說最終預測的結果爲所有鄰近樣本的目標屬性均值,請看下圖:
在這裏插入圖片描述
藍色問號最終的值爲:(3+3+3+2+2)/5=2.6
加權平均值法:
每個鄰近樣本的權重是不一樣的,一般情況下采用權重和距離成反比的方式來計算,也就是說在計算均值的時候進行加權操作。如下圖所示,假如上面三個圈權重爲3,下面兩個圈權重爲2,那麼?就是
在這裏插入圖片描述
假設上面三個點到待預測樣本點的距離均爲2,下面兩個點到待預測樣本點距離爲1,藍色圓圈的最終預測值爲:2.43

算法的實現

**蠻力實現:**計算預測樣本到所有訓練樣本之間的距離,然後選擇最小的K個距離即可得到K個最近鄰點。這個方法適合小樣本情況,否則執行效率極低。
KD樹首先構建KD樹,再進行求解,樣本大的時候的一種解決方案。

KD Tree構建方式

KD樹採用從m個樣本的n維特徵中,分別計算n個特徵取值的方差,用方差最大的第k維特徵n k 作爲根節點。對於這個特徵,選擇取值的中位數n kv 作爲樣本的劃分點,對於小於該值的樣本劃分到左子樹,對於大於等於該值的樣本劃分到右子樹,對左右子樹採用同樣的方式找方差最大的特徵作爲根節點,遞歸即可產生KD樹。構建方式如下圖所示:
在這裏插入圖片描述
在這裏插入圖片描述
構建好KD樹之後,就可以去預測測試集裏的樣本節點了。

KD tree查找最近鄰

對於一個目標節點首先在KD樹裏面找到包含目標節點的葉子節點。以目標節點爲圓心,以目標節點到葉子節點的樣本的示例爲半徑,得到一個超球體,最近鄰的點在超球體內部。然後返回葉子節點的父節點,檢查另一個子節點包含的超矩形體是否和超球體相交,如果相交就到這個子節點尋找是否有更加近的近鄰,有的話就更新最近鄰。如果不相交那就簡單了,我們直接返回父節點的父節點,在另一個子樹繼續搜索最近鄰。當回溯到根節點時,算法結束,此時保存的最近鄰節點就是最終的最近鄰。
請看下面的例子理解這段話:
在這裏插入圖片描述
在這裏插入圖片描述
下面這張圖是做出的圓,從圖中可以看出以(2,4.5)爲圓心,d2爲半徑做出的圓。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章