機器學習:基於Knn算法的用戶屬性判斷方案設計

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

本文作者通過Knn算法進行了一次用戶判斷預測的流程,文章為作者根據自身經驗所做出的總結,希望通過此文能夠加深你對Knn算法的認識。

knn算法簡介

K最近鄰(k-Nearest Neighbor,KNN)分類算法,是一個理論上比較成熟的方法,也是最簡單的機器學習算法之一。knn的基本思路是:如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。

如下圖所示,如何判斷綠色圓應該屬於哪一類,是屬於紅色三角形還是屬於藍色四方形?

如果K=3,由於紅色三角形所佔比例為2/3,綠色圓將被判定為屬於紅色三角形那個類

如果K=5,由於藍色四方形比例為3/5,因此綠色圓將被判定為屬於藍色四方形類。

由於KNN最鄰近分類算法在分類決策時只依據最鄰近的一個或者幾個樣本的類別來決定待分類樣本所屬的類別,而不是靠判別類域的方法來確定所屬類別的,因此對於類域的交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更為適合。

因此,k值的選擇、距離度量以及分類決策規則是k近鄰算法的三個基本要素。

真實業務場景

某公司存在有一些數據樣本(500*5矩陣),是關於人群屬性的一些特徵,希望通過已知數據的特徵,推測出部分目標數據的性質,假如特徵向量包含:

平均每日遊戲時長-game time異性朋友數-female friends周末在家時長-stay-in time用戶接受類型-attr(attr是目標判斷屬性,同時也是標記屬性)

問題:我們需要根據已知的這些屬性,判斷最後一個樣本的屬性是「Y」還是「N」

數據特徵分析

我們所拿到的這批數據是500*5的矩陣,以平均每日遊戲時長,異性朋友數,周末在家時長為軸,將不同屬性的點用不同顏色區分,利用matplotlib繪製散點圖,最終效果如圖。

由於這些測試數據在空間的分布非常集中,所以對於需要驗證的點(紅,綠兩點),我們很容易區分出這些點的屬性 結合本次的業務場景,我們將通過前三種特徵的空間分布,對attr屬性進行預測

具體算法

在三維空間中,我們可以直觀判斷,那在具體的算法實現中,可以考慮使用

n維空間的歐氏距離:

通過以上公式,我們能對多維度數據進行分析,得到目標與各點的距離。

同時,細心的讀者肯定考慮到,我們已知的這些特徵,存在量級之間的差異,所以我們通常需要通過歸一化特徵值,對消除不同量級造成的影響。因此,我們選用0-1標準化(0-1 normalization)對原始數據的線性變換。

0-1標準化:

在通過以上兩步對數據預處理完成後,我們將所得的距離進行排序,並選取合適的K值對目標數據進行預測。

在此選擇k=10(僅舉例),可以發現,前10項中Y出現的次數最多,因此我們可以認為目標數據的值為Y。

knn算法總結

在數據分析團隊確定好數據特徵後,對相應數據進行收集及清洗,對各數據特徵進行歸一化處理(視具體業務場景定,或需特徵考慮權重),完成以上流程後,進行以下通用流程:

計算測試數據與各個訓練數據之間的距離;按照距離的遞增關係進行排序;選取距離最小的K個點;確定前K個點所在類別的出現頻率;返回前K個點中出現頻率最高的類別作為測試數據的預測分類。最後,我們簡單總結一下Knn的適用場景

數據已存在標記特徵,Knn是監督算法樣本數在100k以下,由於算法會對每個目標值進行多維度距離計算,所以樣本過大可能超負荷樣本非文本,或可轉化為數值以上便是通過Knn算法進行了一次用戶判斷預測的流程,文中所展示內容均為模擬數據,且選擇了其中最簡單的判斷屬性。如文中有遺漏及不足,請各位指出。

本文由 @Dave Fu 原創發布於人人都是產品經理。未經許可,禁止轉載。

題圖來自 unsplash,基於 CC0 協議

相關焦點

  • KNN算法中的K有多重要
    K-最近鄰(KNN)是一種有監督的機器學習算法,可用於解決分類和回歸問題。它基於一個非常簡單的想法,數據點的值由它周圍的數據點決定。考慮的數據點數量由k值確定。因此,k值是算法的核心。KNN分類器根據多數表決原則確定數據點的類別。如果k設置為5,則檢查5個最近點的類別。也可以根據多數類進行回歸預測,同樣,KNN回歸取5個最近點的平均值。
  • 基於KNN和Kmeans算法利用MNIST數據集實現手寫數字識別
    作者: 陳千鶴 來源:人工智慧學習圈 KNN算法發展狀況K-最近鄰法(K-Nearest Neighbor, KNN)最初由Cover和Hart於1968年提出,是一個在理論上比較成熟的分類算法。這是一種基於模板匹配思想的算法,雖然簡單,但很有效,至今仍在被使用。
  • 最好的Python機器學習庫
    驅動機器學習的算法相當複雜,包括了很多的數學知識,所以自己動手去實現它們(並保證其正常運行)將會是一件很困難的任務。幸運地是,有很多聰明的、有奉獻精神的人為我們做了這個困難的工作,因此我們只需要專注於手邊的應用程式即可。這並不是一個詳盡無遺的清單。有很多代碼並未在此列出,在這裡我只會發布一些非常相關或知名的庫。下面,來看看這份清單吧。
  • 數據挖掘:基於機器學習方法的POI品類推薦算法
    直觀感覺,「88」、「11」, 「3」、「auyi」、「中國」這些詞對判斷品類並沒有多大幫助,但「酒店」、「自助餐」、「拉麵」對判斷一個POI的品類卻可能起到非常重要作用。那麼問題來了,如何挑選出有利於模型預測的特徵呢?這就涉及到了特徵選擇。特徵選擇方法可以分成基於領域知識的規則方法和基於統計學習方法。
  • 在機器學習的世界裡打怪升級——KNN算法篇
    「全文約2000字,閱讀時間約6分鐘」 來自機器學習世界裡的勇士,你剛走出新手村,還沒完全武裝自己,就碰到了旅途中第一個小boss——KNN算法。 不過也別害怕,這是入門機器學習zui簡單、也zui容易理解的一個算法。
  • 機器學習入門必讀:6種簡單實用算法及學習曲線、思維導圖
    首先,我們要收集能收集到的所有的鳥類信息,包括鳥的各種特徵以及鳥的種類,其中顏色、體重、翅膀等屬性都屬於特徵,而種類則是鳥的標籤。其次,我們建立的機器學習的目的就是讓用戶輸入一個鳥的特徵,然後輸出這個鳥的種類,也就是對應的標籤。這個過程就是一個根據鳥的屬性分類的過程,只不過是由計算機自動完成的。2. 回歸算法回歸算法也是一種有監督學習方法。
  • 每周AI應用精選:虹膜識別解決方案;基於深度學習人臉識別方案等
    將特徵提取得到的特徵編碼與資料庫中的虹膜圖像特徵編碼逐一匹配,判斷是否為相同虹膜,從而達到身份識別的目的。1.對於國際上其它單位的核心算法,中科虹霸的核心算法速度更快,佔用的內存空間更小,整體性能更加優異。
  • 小白學數據:教你用Python實現簡單監督學習算法
    監督學習作為運用最廣泛的機器學習方法,一直以來都是從數據挖掘信息的重要手段。即便是在無監督學習興起的近日,監督學習也依舊是入門機器學習的鑰匙。在監督學習中,我們首先導入包含有訓練屬性和目標屬性的數據集。監督學習算法會從數據集中學習得出訓練樣本和其目標變量之間的關係,然後將學習到的關係對新樣本(未被標記的樣本)進行分類。
  • 五分鐘了解機器學習十大算法
    本文為有志於成為數據科學家或對此感興趣的讀者們介紹最流行的機器學習算法。機器學習是該行業的一個創新且重要的領域。我們為機器學習程序選擇的算法類型,取決於我們想要實現的目標。現在,機器學習有很多算法。因此,如此多的算法,可能對於初學者來說,是相當不堪重負的。
  • 機器學習在搜索中的應用:個性化排序
    一、為什麼有機器學習排序先從搜索的常規三步驟:query解析->召回->排序說起。用戶輸入一個搜索關鍵詞(也稱為query),通過分詞/語義理解後,將從系統資料庫中召回大量相關的內容;接下來的問題就是如何對成百上千條的數據進行排序,把用戶搜索意圖最相關的內容排在前面。
  • 17個機器學習的常用算法!
    在機器學習或者人工智慧領域,人們首先會考慮算法的學習方式。在機器學習領域,有幾種主要的學習方式。將算法按照學習方式分類是一個不錯的想法,這樣可以讓人們在建模和算法選擇的時候考慮能根據輸入數據來選擇最合適的算法來獲得最好的結果。1. 監督式學習:
  • 教你學Python26-knn臨近算法
    輸入沒有標籤的新數據後,將新的數據的每個特徵與樣本集中數據對應的特徵進行比較,然後算法提取樣本最相似數據(最近鄰)的分類標籤。一般來說,我們只選擇樣本數據集中前k個最相似的數據,這就是k-近鄰算法中k的出處,通常k是不大於20的整數。最後,選擇k個最相似數據中出現次數最多的分類,作為新數據的分類。k近鄰算法的輸入為實例的特徵向量,對應於特徵空間的點;輸出為實例的類別,可以取多類。
  • 機器學習算法的基本知識(使用Python和R代碼)
    本指南能夠使你在研究機器學習問題的過程中獲取經驗。 我提供了關於各種機器學習算法以及R&Python代碼的高級理解以及運行它們,這些應該足以使你得心順手。加強學習示例:馬爾可夫決策過程  常見機器學習算法  以下是常用機器學習算法的列表。
  • 流行的機器學習算法總結,幫助你開啟機器學習算法學習之旅
    AI的ML領域是為實現非常精確的目標而創建的,它引入了多種算法,從而可以更順暢地進行數據處理和決策。什麼是機器學習算法?機器學習算法是任何模型背後的大腦,可讓機器學習並使其更智能。這些算法的工作方式是,為它們提供第一批數據,並且隨著時間的流逝和算法的準確性的提高,額外的數據也被引入到算法中。
  • 「機器學習」機器學習算法優缺點對比(匯總篇)
    主要回顧下幾個常用算法的適應場景及其優缺點!機器學習算法太多了,分類、回歸、聚類、推薦、圖像識別領域等等,要想找到一個合適算法真的不容易,所以在實際應用中,我們一般都是採用啟發式學習方式來實驗。但是如果你只是在尋找一個「足夠好」的算法來解決你的問題,或者這裡有些技巧可以參考,下面來分析下各個算法的優缺點,基於算法的優缺點,更易於我們去選擇它。天下沒有免費的午餐在機器學習領域,一個基本的定理就是「沒有免費的午餐」。
  • 算法應用|機器學習python應用,簡單機器學習項目實踐
    使用單變量圖表可以更好地理解每一個特徵屬性。多變量圖表用於理解不同特徵屬性之間的關係。4.1 單變量圖表單變量圖表可以顯示每一個單獨的特徵屬性,因為每個特徵屬性都是數字,因此我們可以通過箱線圖來展示屬性與中位值的離散速度,了解數據偏向和異常值情況。
  • 機器學習算法一覽(附python和R代碼)
    寫這篇文章的目的,就是希望它可以讓有志於從事數據科學和機器學習的諸位在學習算法的路上少走些路。我會在文章中舉例一些機器學習的問題,你們也可以在思考解決這些問題的過程中得到啟發。我也會寫下對於各種機器學習算法的一些個人理解,並且提供R和Python的執行代碼。讀完這篇文章,讀者們至少可以行動起來親手試試寫一個機器學習的程序。
  • 數據科學家應該知道的頂級機器學習算法
    示例算法是對其他靈活方法的擴展。這就假設了如何對未標記的數據建模。按相似度分組的算法ML算法通常在功能方面按相似性分組。例如,基於樹的方法和受神經網絡啟發的方法。我認為這是對機器學習算法進行分組的最有用的方法,也是我們將在此處使用的方法。這是一種有用的分組方法,但並不完美。仍然有一些算法可以輕鬆地適用於多個類別。例如學習向量量化。那都是神經網絡方法和基於實例的方法。
  • ...走向機器學習「正道」:小朋友才迷信算法,大人們更重視工程實踐
    目前專注於機器學習,搜索和推薦系統的設計和開發。以下為王剛所撰寫的正文: 機器學習對很多初學者來說,最大的學習困難和障礙就是模型、算法、「眼花繚亂」的數學公式所帶來的抽象感,無法有效的建立起直覺上的理解。
  • 【方法論】機器學習算法概覽
    3、強化學習  工作機制:這個算法訓練機器進行決策。它是這樣工作的:機器被放在一個能讓它通過反覆試錯來訓練自己的環境中。機器從過去的經驗中進行學習,並且嘗試利用了解最透徹的知識作出精確的商業判斷。 強化學習的例子有馬爾可夫決策過程。