1. 程式人生 > >機器學習 | 淺談K-近鄰演算法

機器學習 | 淺談K-近鄰演算法

K-近鄰(KNN)演算法是解決分類問題的演算法。既可以解決二分類,也可以解決多分類問題。

其實它也可以解決迴歸問題。

 

 

K-近鄰原理:

  某個樣本的類別,由與之最相近的K個鄰居投票所決定。

  例子:

  現在有一個樣本集,其中所有資料都已經標記好類別,假設有一個未知類別的樣本x需要進行分類。

  在離這個樣本距離最近的K個樣本中,統計各個類別的佔比。假設k=5時,計算出哪5個樣本離未知樣本x最近,

  然後統計它們的類別,如在這5個樣本中,有2個屬於類別A,3個屬於類別B。由於類別B的佔比比較高,

  所以得出樣本x屬於類別B。

  如圖:

        

   紅點的類別為class A ,藍點的類別為class B,黑點表示需要預測類別的樣本x。

   通過Knn演算法,當k=5時:

   

    離黑點(樣本x)最近的5(K所決定)個樣本中,有3個藍點,2個紅點。所以可判定黑點和藍點屬同一個類別,為class B

    既然K的取值決定了取K個鄰居進行投票。那麼當K取其他值,又是什麼情況呢?

    (另一種情況)當k=3時:

        

    此時離黑點最近的3個鄰居中,2個紅點,1個藍點,因此紅點佔比高,所以可以判定黑點和紅點一樣屬於class A類別

    通過對比可知:

       

     在K-近鄰中,K的取值影響了最終預測的結果。

 

K-近鄰虛擬碼:

    1.遍歷訓練集所有樣本,計算每個樣本與樣本x之間的距離,儲存所有距離

    2.對這些距離進行排序(升序),取出k個最近的樣本

    3.對k個樣本的類別進行統計,找出佔比最高的類別

    4.待標記樣本的類別就是佔比最高的類別 

 

      

 

    

&n