當前位置:
首頁 > 最新 > K最鄰近演算法

K最鄰近演算法

使用K最鄰近演算法創建分類系統,學習特徵抽取。學習回歸,即預測數值。學習K最鄰近演算法的應用案例和局限性。


橙子還是柚子

人是如何判斷看到的一個水果到底是橙子還是柚子?看與它長得像的幾個鄰居中,是橙子多還是柚子多。

實際上這個思考的過程,就是使用K最近鄰(k-nearest neighbours,KNN)演算法進行了分類!

它的演算法非常簡單,如何對一個對象分類?看它鄰近的幾個鄰居是屬於什麼類別,它就更有可能屬於哪個類別。


創建推薦系統

假設Netflix要為用戶創建一個電影推薦系統。

將用戶放入一個圖表中,這些用戶在圖表中的位置取決於其喜好,因此喜好相似的用戶距離較近。如果要向A推薦,可以找出五位與他最接近的用戶。

接下來的問題就是如何確定用戶的相似程度。

特徵抽取將每位用戶轉換為一組坐標,比如根據他們的喜好,定義出A(喜劇片3,動作片4,生活片4,恐怖片1,愛情片4),B(喜劇片4,動作片3,生活片5,恐怖片1,愛情片5)。

這樣A與B用戶的是否相近就可以直接通過畢達哥拉斯公式計算出來。


假設你不僅要推薦電影,還要預測A給這部電影打多少分。

與A相似的人有k個,你求這些人打的分的平均值,結果為4.2。這就是回歸(regression)。

使用KNN可以做兩項基本工作——分類和回歸:

分類就是編組;

回歸就是預測結果(如一個數字)。

前面計算兩位用戶的距離時,使用的都是距離公式。在實際工作中,經常使用餘弦相似度(cosine similarity)。

比如有兩位品味類似的用戶,但其中一位打分時更保守。如果你使用距離公式,這兩位用戶可能不是鄰居,雖然他們的品味非常接近。

餘弦相似度不計算兩個矢量的距離,而比較它們的角度,因此更適合處理前面所說的情況。


OCR:OCR指的是光學字元識別(optical character recognition),這意味著你可拍攝印刷頁面的照片,計算機將自動識別出其中的文字。

如何自動識別出這個數字是什麼呢?可使用KNN演算法。

(1) 瀏覽大量的數字圖像,將這些數字的特徵提取出來。

(2) 遇到新圖像時,你提取該圖像的特徵,再找出它最近的鄰居都是什麼。

OCR的第一步是查看大量的數字圖像並提取特徵,這被稱為訓練(training)。大多數機器學習演算法都包含訓練的步驟:要讓計算機完成任務,必須先訓練它。

創建垃圾郵件過濾器:垃圾郵件過濾器使用一種簡單演算法——樸素貝葉斯分類器(Naive Bayes classifier)。

假設你收到一封主題為「collect your million dollars now!」的郵件,你可研究這個句子中的每個單詞,看看它在垃圾郵件中出現的概率是多少。

例如,使用這個非常簡單的模型時,發現只有單詞million在垃圾郵件中出現過。樸素貝葉斯分類器能計算出郵件為垃圾郵件的概率,其應用領域與KNN相似。


KNN用於分類和回歸,需要考慮最近的鄰居。

分類就是編組。

回歸就是預測結果(如數字)。

特徵抽取意味著將物品(如水果或用戶)轉換為一系列可比較的數字。

能否挑選合適的特徵事關KNN演算法的成敗。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 代碼綜合征 的精彩文章:

演算法——狄克斯特拉演算法
演算法——分治和快速排序

TAG:代碼綜合征 |