機器學(xué)習(xí):基于Knn算法的用戶屬性判斷方案設(shè)計

0 評論 8588 瀏覽 5 收藏 7 分鐘

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

knn算法簡介

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

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

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

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

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

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

真實業(yè)務(wù)場景

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

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

問題:我們需要根據(jù)已知的這些屬性,判斷最后一個樣本的屬性是“Y”還是“N”

數(shù)據(jù)特征分析

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

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

具體算法

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

n維空間的歐氏距離:

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

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

0-1標準化:

在通過以上兩步對數(shù)據(jù)預(yù)處理完成后,我們將所得的距離進行排序,并選取合適的K值對目標數(shù)據(jù)進行預(yù)測。

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

knn算法總結(jié)

在數(shù)據(jù)分析團隊確定好數(shù)據(jù)特征后,對相應(yīng)數(shù)據(jù)進行收集及清洗,對各數(shù)據(jù)特征進行歸一化處理(視具體業(yè)務(wù)場景定,或需特征考慮權(quán)重),完成以上流程后,進行以下通用流程:

  1. 計算測試數(shù)據(jù)與各個訓(xùn)練數(shù)據(jù)之間的距離;
  2. 按照距離的遞增關(guān)系進行排序;
  3. 選取距離最小的K個點;
  4. 確定前K個點所在類別的出現(xiàn)頻率;
  5. 返回前K個點中出現(xiàn)頻率最高的類別作為測試數(shù)據(jù)的預(yù)測分類。

最后,我們簡單總結(jié)一下Knn的適用場景

  • 數(shù)據(jù)已存在標記特征,Knn是監(jiān)督算法
  • 樣本數(shù)在100k以下,由于算法會對每個目標值進行多維度距離計算,所以樣本過大可能超負荷
  • 樣本非文本,或可轉(zhuǎn)化為數(shù)值

以上便是通過Knn算法進行了一次用戶判斷預(yù)測的流程,文中所展示內(nèi)容均為模擬數(shù)據(jù),且選擇了其中最簡單的判斷屬性。如文中有遺漏及不足,請各位指出。

 

本文由 @Dave Fu 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自 unsplash,基于 CC0 協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!