機器學習實戰總結(1) K-鄰近算法

1 KNN概述

K-鄰近算法採用測量不同特徵值之間的距離方法進行分類,工作原理是:存在一個樣本數據集合,也稱作訓練樣本集,並且樣本集中每個數據都存在標籤,意思是我們知道樣本集中的每一個數據與所屬分類的對應關係。輸入沒有標籤的新數據後,將新數據的每個特徵與樣本集中數據對應的特徵進行比較,然後算法提取樣本集中特徵最相似數據的分類標籤。選擇k個最相似數據中出現次數最多的分類,作爲新數據的分類。



比如上圖中,假如五角星爲新數據,k=3,那麼我們明顯可以看出來與其最相近的三點爲紅色圓圈,那麼可以將紅色圈的類別作爲五角星⭐️的類別

2 KNN操作流程

對未知類別的數據集中的每個點依次執行以下操作:

  1. 計算已知類別數據集中的點與當前點之間的距離;
  2. 按照距離遞增次序排序;
  3. 選取與當前距離最小的k個點;
  4. 確定前k個點所在類別的出現頻率;
  5. 返回前k個點出現頻率最高的類別作爲當前點的預測分類;

3 常見距離公式

3.1 歐式距離

3.2 曼哈頓距離

3.3 餘弦相似度

3.4 Levenshtein距離

萊文斯坦距離,又稱Levenshtein距離,是編輯距離的一種。指兩個字串之間,由一個轉成另一個所需的最少編輯操作次數。允許的編輯操作包括將一個字符替換成另一個字符,插入一個字符,刪除一個字符。

def lev(a, b):
  if not a: return len(b)
  if not b: return len(a)
  return min(lev(a[1:], b[1:])+(a[0] != b[0]), lev(a[1:], b)+1, lev(a, b[1:])+1)

3.5 JACCARD DISTANCE

雅卡爾指數,又稱爲並交比、雅卡爾相似係數,是用於比較樣本集的相似性與多樣性的統計量。雅卡爾係數能夠量度有限樣本集合的相似度,其定義爲兩個集合交集大小與並集大小之間的比例: 如果A與B完全重合,則定義J = 1。於是有 雅卡爾距離則用於量度樣本集之間的不相似度,其定義爲1減去雅卡爾係數.

3.6 MAHALANOBIS DISTANCE

馬哈拉諾比斯距離是由印度統計學家馬哈拉諾比斯 (英語)提出的,表示數據的協方差距離。它是一種有效的計算兩個未知樣本集的相似度的方法。與歐氏距離不同的是它考慮到各種特性之間的聯繫(例如:一條關於身高的信息會帶來一條關於體重的信息,因爲兩者是有關聯的)並且是尺度無關的(scale-invariant),即獨立於測量尺度。



si爲xi的標準差,如果協方差矩陣爲單位矩陣,馬哈拉諾比斯距離就簡化爲
歐氏距離。

3.7 Minkowski distance

明氏距離又叫做明可夫斯基距離,是歐氏空間中的一種測度,被看做是歐氏距離和曼哈頓距離的一種推廣。



下面是p取不同值的距離公式圖像:


p取1或2時的明氏距離是最爲常用的,p=2即爲歐氏距離,而p=1時則爲曼哈頓距離。當p取無窮時的極限情況下,可以得到切比雪夫距離。

講了這麼多,KNN常用的距離公式是歐式距離和曼哈頓距離,但是也希望大家記住其他的距離公式,面試的時候通常也會考察,另外文本相似性也會用到其他距離公式。

4 KNN優點和缺點

4.1 優點

  • 精度高
  • 對異常值不敏感
  • 無數據輸入假定

4.2 缺點

  • 計算複雜度高,尤其K值較大時
  • 空間複雜度高
  • 樣本不平衡問題(即有些類別的樣本數量很多,而其它樣本的數量很少)
  • 最大的缺點是無法給出數據的內在含義

5 如何選擇合適的K值

  • K值較小,則模型複雜度較高,容易發生過擬合,學習的估計誤差會增大,預測結果對近鄰的實例點非常敏感。
  • K值較大可以減少學習的估計誤差,但是學習的近似誤差會增大,與輸入實例較遠的訓練實例也會對預測起作用,使預測發生錯誤,k值增大模型的複雜度會下降。
  • 在應用中,k值一般取一個比較小的值,通常採用交叉驗證法來來選取最優的K值。

6 參考資料

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