1. 程式人生 > >《演算法圖解》第10章 K最近鄰(K nearest neighbors,KNN)演算法

《演算法圖解》第10章 K最近鄰(K nearest neighbors,KNN)演算法

     今天看到這裡的案例非常有意思,即以座標軸中的座標來作為引數。計算不同點的距離。實際上就是標記一些使用者的喜好和習慣,不同的維度代表不同的專案,在這個維度上的值可表示喜好程度。電影評分、音樂收藏...總之,很多情況都可以用,很有趣。就是標記了很多使用者,看哪些使用者比較相近,來進行推薦。

   分類和迴歸

    分類就是編組。

    迴歸可以做預測。將幾個最近的“鄰居”情況相加算出來平均值,就是我們要預測的個體的情況。兩個人品味相近更多的時候使用餘弦相似度(cosine similarity),不比較兩個向量之間的距離而是比較角度,更適合這種品味相近的情況。如果要使用KNN演算法,必須好好研究一下 餘弦相似度。

    使用KNN演算法挑選合適的特徵比較至關重要,合適的特徵是(已複雜的推薦 電影為例):

           與要推薦的電影緊密相關的特徵

           不偏不倚的特徵(蒐集資料的時候,不要僅限定某些特定的  一個關聯方面  的情況)

挑選合適的特徵沒有放之四海而皆準的標準。

機器學習:

   ocr 光學字元識別(optical character recognition),意味著你拍攝照片時,計算機可以識別其中的文字。

自動識別,使用KNN演算法:

     瀏覽大量數字影象,將這些數字的特徵提取出來。   (訓練 training)

     遇到新影象時,你提取該影象的特徵,找出它最近的特徵是誰。

  垃圾郵件過濾器-- 樸素貝葉斯過濾器(Naive  Bayes classifier),先使用一些資料對這個分類器進行訓練:

    

 

    以後也許會接觸到更有意思的演算法。這裡不做任何形式上的記錄,純粹作為一次簡單有趣的記錄。

有需要我再來補充這次記錄。