最近鄰規則算法(KNN)

最近鄰算法(KNN)是一個基於實例學習的分類算法。
如果一個實例在特徵空間中的K個最相似(即特徵空間中最近鄰)的實例中的大多數屬於某一個類別,則該實例也屬於這個類別。所選擇的鄰居都是已經正確分類的實例。
算法步驟:
1、把所有分類好的(有標籤label)的數據(實例)作爲訓練集;
2、選擇好參數K;
3、計算未知實例與所有已知實例的距離;
4、選擇最近K個已知實例;
5、根據少數服從多數的原則,把未知實例歸類爲K個最近鄰樣本中最多數的類別;
用於逼近連續值的目標函數:

優點:簡單,易於實現;
通過對K的選擇可具備丟噪聲數據的健壯性
缺點:  需要大量空間儲存所有已知實例
          算法複雜度高(需要比較所有已知實例與要分類的實例)
          當其樣本分佈不平衡時,比如其中一類樣本過大(實例數量過多)佔主導的時候,新的未知實例容易被歸類爲這個主導樣本,因爲這類樣本實例的數量過大,但這個新的未知實例實際並木接近目標樣本

改進:根據距離加上權重(例:1/d)
arg max f(x): 當f(x)取最大值時,x的取值



附:歐式距離(Euclidean Distance):

其他距離衡量:餘弦值(cos), 相關度 (correlation), 曼哈頓距離 (Manhattan distance)
基於實例的學習:只是簡單地把訓練樣例存儲起來,從這些實例中泛化的工作被推遲到必須分類新的實例時,每當學習器遇到一個新的查詢實例,它分析這個新實例與以前存儲的實例的關係,並據此吧一個目標函數值賦給新實例。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章