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

2021-01-12 人人都是產品經理

作為想在AI領域長期發展的PM同學來說,對算法有一個初步、通識的了解是非常有必要的。今天我們就從一個最為簡單、易懂的「k-近鄰(KNN)算法」聊起,KNN屬於監督學習算法,即可以用於分類,也可以用於回歸,後續還會逐步為大家介紹一些常用的其他算法。

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

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

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

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

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

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

投票決定:少數服從多數,近鄰中哪個類別的點最多就分為哪類。加權投票法:根據距離的遠近、對鄰近的投票進行加權,距離越近咋權重越大(權重為距離平方的倒數。)看到這兒,是不是有不少小夥伴產生了疑問,那該如何選擇K值呢?K值的大小又將如何影響模型的效果呢?

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

k值過大,非相似數據被包含較多,造成噪聲增加而導致分類結果的降低;k值過小,得到的鄰近數過少,會降低分類精度,同時也會放大噪聲數據的幹擾;經驗規則:k一般低於訓練樣本數的平方根,通常採用交叉檢驗來確定。

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

準備數據,對數據進行預處理;選用合適的數據結構存儲訓練數據和測試元組;設定參數,如k;維護一個大小為k的的按距離由大到小的優先級隊列,用於存儲最近鄰訓練元組。隨機從訓練元組中選取k個元組作為初始的最近鄰元組,分別計算測試元組到這k個元組的距離,將訓練元組標號和距離存入優先級隊列;遍歷訓練元組集,計算當前訓練元組與測試元組的距離,將所得距離L 與優先級隊列中的最大距離Lmax進行比較。若L>=Lmax,則捨棄該元組,遍歷下一個元組。若L < Lmax,刪除優先級隊列中最大距離的元組,將當前訓練元組存入優先級隊列。 遍歷完畢,計算優先級隊列中k 個元組的多數類,並將其作為測試元組的類別。測試元組集測試完畢後計算誤差率,繼續設定不同的k值重新進行訓練,最後取誤差率最小的k 值。基本概念和訓練過程我們都簡單的介紹清楚了,下面來講講K近鄰的優勢及缺陷。

優勢:

簡單,易於理解,易於實現,無需估計參數,無需訓練;特別適合於多分類問題(multi-modal,對象具有多個類別標籤), kNN比SVM的表現要好。缺點:

計算複雜度高、空間複雜度高;樣本嚴重不平衡時,如果一個類的樣本容量很大,而其他類很小,有可能導致輸入一個新樣本時,被誤判為該分類的概率會很大。了解了算法的優勢和局限性,下面就要了解一下它的適用領域了:

模式識別,特別是光學字符識別;統計分類;計算機視覺;資料庫,如基於內容的圖像檢索;編碼理論(最大似然編碼);數據壓縮(mpeg-2標準);嚮導系統;網絡營銷;DNA測序拼寫檢查,建議正確拼寫;剽竊偵查;相似比分算法,用來推動運動員的職業表現。本文由 @燕然未勒 原創發布於人人都是產品經理。未經許可,禁止轉載。

題圖來自 Unsplash ,基於 CC0 協議。

相關焦點

  • k近鄰法(KNN)原理小結
    目錄本博客中使用到的完整代碼請移步至我的github:https://github.com/qingyujean/Magic-NLPer,求贊求星求鼓勵~~~1. k 近鄰法算法 k-nearestneighbors (k-NN),k 近鄰法,用於分類和回歸。
  • KNN算法中的K有多重要
    K-最近鄰(KNN)是一種有監督的機器學習算法,可用於解決分類和回歸問題。它基於一個非常簡單的想法,數據點的值由它周圍的數據點決定。考慮的數據點數量由k值確定。因此,k值是算法的核心。KNN分類器根據多數表決原則確定數據點的類別。如果k設置為5,則檢查5個最近點的類別。也可以根據多數類進行回歸預測,同樣,KNN回歸取5個最近點的平均值。
  • 教你學Python26-knn臨近算法
    KNN 概述k-近鄰(kNN, k-NearestNeighbor)算法是一種基本分類與回歸方法,我們這裡只討論分類問題中的 k-近鄰算法。一句話總結:近朱者赤近墨者黑!輸入沒有標籤的新數據後,將新的數據的每個特徵與樣本集中數據對應的特徵進行比較,然後算法提取樣本最相似數據(最近鄰)的分類標籤。一般來說,我們只選擇樣本數據集中前k個最相似的數據,這就是k-近鄰算法中k的出處,通常k是不大於20的整數。最後,選擇k個最相似數據中出現次數最多的分類,作為新數據的分類。k近鄰算法的輸入為實例的特徵向量,對應於特徵空間的點;輸出為實例的類別,可以取多類。
  • 機器學習:基於Knn算法的用戶屬性判斷方案設計
    本文作者通過Knn算法進行了一次用戶判斷預測的流程,文章為作者根據自身經驗所做出的總結,希望通過此文能夠加深你對Knn算法的認識。knn算法簡介K最近鄰(k-Nearest Neighbor,KNN)分類算法,是一個理論上比較成熟的方法,也是最簡單的機器學習算法之一。
  • KNN分類算法的python實現
    前言 K最近鄰(k-Nearest Neighbor,KNN)分類算法,是一個理論上比較成熟的方法,也是最簡單的機器學習算法之一。該方法的思路是:在特徵空間中,如果一個樣本附近的k個最近(即特徵空間中最鄰近)樣本的大多數屬於某一個類別,則該樣本也屬於這個類別。。
  • 利用k-近鄰算法模擬原油黏度
    利用k-近鄰算法模擬原油黏度本篇文章來自伊朗阿米爾卡比爾工業大學和美國普林斯頓大學等單位Modeling viscosity of crude oil using k-nearest neighbor algorithmMohammad
  • 比KNN快380倍!我們有了新選擇
    如果數據中有1000項的話,要找到一個新產品中K=3的最近鄰,該算法就會把新產品與資料庫中其他產品一起執行1000次距離計算。這還不算太糟糕。但試想在現實中,顧客對顧客(C2C)的市場資料庫裡有著上百萬的產品,並且每天都可能會上傳新的產品。把新產品與所有數百萬的產品進行比對的做法確實太浪費時間了,也就是說根本無法拓展。
  • 標籤傳播算法(Label Propagation)及Python實現
    還有個非常常用的圖構建方法是knn圖,也就是只保留每個節點的k近鄰權重,其他的為0,也就是不存在邊,因此是稀疏的相似矩陣。2.2、LP算法標籤傳播算法非常簡單:通過節點之間的邊傳播label。邊的權重越大,表示兩個節點越相似,那麼label越容易傳播過去。我們定義一個NxN的概率轉移矩陣P:
  • 在機器學習的世界裡打怪升級——KNN算法篇
    所以k近鄰算法既可以做分類,又可以做回歸(限於篇幅,本文只介紹分類)。 boss詳細攻略 該算法的步驟很簡單,主要有以下兩步: 1.找到與x距離最近(如何衡量最近?下文會有介紹)的k個點,k近鄰算法中的k就是這個含義。 2.根據「少數服從多數」的原則,決定x的類別y。
  • 教你用OpenCV實現機器學習最簡單的k-NN算法
    這正是k-NN算法將要處理的問題。理解 k-NN 算法k-NN算法可以認為是最簡單的機器學習算法之一。原因是我們只需要存儲訓練數據集。簡單而言,k-NN算法認為一個數據點很可能與它近鄰的點屬於同一個類。思考一下:如果我們的鄰居是紅隊球迷,我們很可能也是紅隊球迷,否則我們可能很早之前就搬家到其他地方了。對於藍隊球迷而言也是這樣。當然,有些社區可能稍微複雜一些。在這種情況下,我們將不僅僅考慮我們最近鄰的類別(即k=1),而是考慮k個最近鄰的類別。
  • Python機器學習之K近鄰分類器
    最簡單的分類器是近鄰分類器。近鄰算法搜索訓練集,尋找與用作測試的新個體最相似的觀測記錄。講到這裡,弄清楚訓練集和測試集這兩個概念很重要。如果確實只有一個數據集,也沒關係,重要的是不要使用同一份數據同時用於訓練和測試。鑑於此,把數據集分為兩部分:一部分專門用於訓練算法,另一部分用於驗證算法。
  • 小白學數據:教你用Python實現簡單監督學習算法
    為了獲得更高的精度,最好的方法是測試多個不同的算法,同時,對每個算法嘗試不同的參數。可以通過交互檢驗選擇最好的算法和參數。對於給定問題,在選取算法時,算法的精度、訓練時間、線性、參數數目以及特殊情況都要考慮在內。
  • 基於KNN和Kmeans算法利用MNIST數據集實現手寫數字識別
    然而k最近鄰居法因為計算量相當的大,所以相當的耗時,Ko與Seo提出一算法TCFP(text categorization using feature projection),嘗試利用特徵投影法來降低與分類無關的特徵對於系統的影響,並藉此提升系統性能,其實驗結果顯示其分類效果與k最近鄰居法相近,但其運算所需時間僅需k最近鄰居法運算時間的五十分之一。
  • java算法之尋找最小的k個數
    解法四在《數據結構與算法分析--c語言描述》一書,第7章第7.7.6節中,闡述了一種在平均情況下,時間複雜度為O(N)的快速選擇算法。如下述文字:選取S中一個元素作為樞紐元v,將集合S-{v}分割成S1和S2,就像快速排序那樣如果k <= |S1|,那麼第k個最小元素必然在S1中。在這種情況下,返回QuickSelect(S1, k)。
  • 「近水樓臺先得月」——理解KNN算法
    還有一句類似的話:「遠親不如近鄰」,說的是人在有需要時,鄰居比遠處的親戚更加能獲得支持和幫助。在人工智慧領域,有一種算法,非常貼近上述的形象比喻,這就是KNN算法,即K最近鄰算法(K-NearestNeighbors,簡稱KNN),它是一個比較簡單的機器學習算法,也是一個理論上比較成熟的、運用基於樣本估計的最大後驗概率規則的判別方法。
  • AI產品經理必修——揭開算法的面紗(餘弦定理)
    餘弦定理作為初中課本就學過的知識,AI產品經理將會把它運用到相似度計算當中。在數據採集及大數據處理的時候,數據排重、相似度計算是很重要的一個環節,由此引入相似度計算算法。但你知道我們在初中課本中學過的餘弦定理是如何完成相似度計算的嗎?要揭開謎底,我們先來「三步走」。一、TF-IDF單文本詞彙頻率/逆文本頻率值1.
  • 流行的機器學習算法總結,幫助你開啟機器學習算法學習之旅
    在此等式中:Y —因變量a —坡度X-自變量b-截距該算法適用於預測輸出是連續的並且具有恆定斜率的情況,例如:估算銷售額評估風險天氣數據分析預測分析客戶調查結果分析優化產品價格Logistic回歸Logistic回歸算法通常用於二進位分類問題,在這些情況下,事件通常會導致通過或失敗,正確或錯誤這兩個值中的任何一個。
  • 常用推薦算法介紹 | 人人都是產品經理
    在本文中,作者主要是介紹了常見推薦算法的基本原理。這裡其實是需要根據產品的具體情況進行調整。4. 基於用戶的協同過濾基於用戶的協同過濾(user-based CF),通過用戶對不同內容的行為,來評測用戶之間的相似性,基於用戶之間的相似性做出推薦。這部分推薦本質上是給相似的用戶推薦其他用戶喜歡的內容,一句話概括就是:和你類似的人還喜歡下列內容。
  • 機器學習——K最鄰近(KNN)算法詳解
    KNN算法全稱是:K-NearestNeighbor,中文翻譯就是:K最鄰近。它屬於機器學習中最簡單、最基本的分類和回歸算法。那麼什麼叫K最鄰近呢?圖五現在我們假定綠色和紅色屬於一類,那麼如果當K = 1(綠色圈)或6(黑色虛線圈)時,這個算法會把綠色和藍色歸為一類,而當K = 3時,才是正確的結果。
  • AI產品經理的入門必修——概念篇
    四、算法需要懂多少?確認算法的流程通常是由產品經理和算法工程師共同完成,包含:需求確定 -> 算法設計 -> 算法討論 -> 算法確認 -> 算法驗收 -> 持續改進。算法模型的選擇和訓練是個繁瑣且複雜的過程,依賴於具體所解決問題的複雜程度。產品經理除了要明確定位要解決的核心問題,還需要了解模型訓練的整個流程。很多人會說產品經理不需要了解這麼多,不是還有算法工程師嗎?