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:代碼綜合征 |