1. 程式人生 > >AI產品經理必懂演算法:k-近鄰(KNN)演算法

AI產品經理必懂演算法:k-近鄰(KNN)演算法

我們之所以要了解演算法,不僅僅有利於和演算法同學的溝通,更能深入的理解人工智慧為產品賦能的過程,只有將這個過程瞭解透徹,才能清晰明確的把握產品的方向,挖掘產品的亮點。

那麼,今天我們就從一個最為簡單、易懂的“k-近鄰(KNN)演算法”聊起,KNN屬於監督學習演算法,即可以用於分類,也可以用於迴歸,後續還會逐步為大家介紹一些常用的其他演算法。

KNN的核心思想可以用一句俗語表達:“物以類聚、人以群分”,想了解一個人,可以看他交什麼樣的朋友。即它的核心思想是:如果一個樣本在特徵空間中的k個最相鄰的樣本(距離最近的樣本)中的大多數屬於某一個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。該方法在確定分類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。

這裡面提及的距離,一般可以選用歐氏距離、曼哈頓距離、閔式距離等等公式進行計算,對於我們初步瞭解的產品經理來講,就不上各種公式了。

AI產品經理必懂演算法:k-近鄰(KNN)演算法

我們用這個圖做一個簡單的介紹,藍色方形(用B標識)和紅色三角(R)代表兩個不同的分類,綠色圓形(C)是待分類樣本,根據KNN的思想,如果K=3,則C的最近鄰有1B、2R,根據少數服從多數原則,C應該屬於“R”的型別。如果k=5呢?C的最近鄰有3B、2R,C是不是應該屬於“B”型別了呢?

其中判定類別也有兩種方法:

  1. 投票決定:少數服從多數,近鄰中哪個類別的點最多就分為哪類。
  2. 加權投票法:根據距離的遠近、對鄰近的投票進行加權,距離越近咋權重越大(權重為距離平方的倒數。)

看到這兒,是不是有不少小夥伴產生了疑問,那該如何選擇K值呢?K值的大小又將如何影響模型的效果呢?

關於K值的選擇,需要注意:

  • k值過大,非相似資料被包含較多,造成噪聲增加而導致分類結果的降低;
  • k值過小,得到的鄰近數過少,會降低分類精度,同時也會放大噪聲資料的干擾;

經驗規則:k一般低於訓練樣本數的平方根,通常採用交叉檢驗來確定。

接下來我們簡單介紹一下訓練過程,有如下幾步:

  1. 準備資料,對資料進行預處理;
  2. 選用合適的資料結構儲存訓練資料和測試元組;
  3. 設定引數,如k;
  4. 維護一個大小為k的的按距離由大到小的優先順序佇列,用於儲存最近鄰訓練元組。隨機從訓練元組中選取k個元組作為初始的最近鄰元組,分別計算測試元組到這k個元組的距離,將訓練元組標號和距離存入優先順序佇列;
  5. 遍歷訓練元組集,計算當前訓練元組與測試元組的距離,將所得距離L 與優先順序佇列中的最大距離Lmax
  6. 進行比較。若L>=Lmax,則捨棄該元組,遍歷下一個元組。若L < Lmax,刪除優先順序佇列中最大距離的元組,將當前訓練元組存入優先順序佇列。
  7. 遍歷完畢,計算優先順序佇列中k 個元組的多數類,並將其作為測試元組的類別。
  8. 測試元組集測試完畢後計算誤差率,繼續設定不同的k值重新進行訓練,最後取誤差率最小的k 值。

基本概念和訓練過程我們都簡單的介紹清楚了,下面來講講K近鄰的優勢及缺陷。

優勢:

  1. 簡單,易於理解,易於實現,無需估計引數,無需訓練;
  2. 特別適合於多分類問題(multi-modal,物件具有多個類別標籤), kNN比SVM的表現要好。

缺點:

  1. 計算複雜度高、空間複雜度高;
  2. 樣本嚴重不平衡時,如果一個類的樣本容量很大,而其他類很小,有可能導致輸入一個新樣本時,被誤判為該分類的概率會很大。

瞭解了演算法的優勢和侷限性,下面就要了解一下它的適用領域了:

  • 模式識別,特別是光學字元識別;
  • 統計分類;
  • 計算機視覺;
  • 資料庫,如基於內容的影象檢索;
  • 編碼理論(最大似然編碼);
  • 資料壓縮(mpeg-2標準);
  • 嚮導系統;
  • 網路營銷;
  • DNA測序
  • 拼寫檢查,建議正確拼寫;
  • 剽竊偵查;
  • 相似比分演算法,用來推動運動員的職業表現。