機(jī)器學(xué)習(xí):基于Knn算法的用戶屬性判斷方案設(shè)計(jì)
本文作者通過(guò)Knn算法進(jìn)行了一次用戶判斷預(yù)測(cè)的流程,文章為作者根據(jù)自身經(jīng)驗(yàn)所做出的總結(jié),希望通過(guò)此文能夠加深你對(duì)Knn算法的認(rèn)識(shí)。
knn算法簡(jiǎn)介
K最近鄰(k-Nearest Neighbor,KNN)分類算法,是一個(gè)理論上比較成熟的方法,也是最簡(jiǎn)單的機(jī)器學(xué)習(xí)算法之一。knn的基本思路是:如果一個(gè)樣本在特征空間中的k個(gè)最相似(即特征空間中最鄰近)的樣本中的大多數(shù)屬于某一個(gè)類別,則該樣本也屬于這個(gè)類別。
如下圖所示,如何判斷綠色圓應(yīng)該屬于哪一類,是屬于紅色三角形還是屬于藍(lán)色四方形?
如果K=3,由于紅色三角形所占比例為2/3,綠色圓將被判定為屬于紅色三角形那個(gè)類
如果K=5,由于藍(lán)色四方形比例為3/5,因此綠色圓將被判定為屬于藍(lán)色四方形類。
由于KNN最鄰近分類算法在分類決策時(shí)只依據(jù)最鄰近的一個(gè)或者幾個(gè)樣本的類別來(lái)決定待分類樣本所屬的類別,而不是靠判別類域的方法來(lái)確定所屬類別的,因此對(duì)于類域的交叉或重疊較多的待分樣本集來(lái)說(shuō),KNN方法較其他方法更為適合。
因此,k值的選擇、距離度量以及分類決策規(guī)則是k近鄰算法的三個(gè)基本要素。
真實(shí)業(yè)務(wù)場(chǎng)景
某公司存在有一些數(shù)據(jù)樣本(500*5矩陣),是關(guān)于人群屬性的一些特征,希望通過(guò)已知數(shù)據(jù)的特征,推測(cè)出部分目標(biāo)數(shù)據(jù)的性質(zhì),假如特征向量包含:
- 平均每日游戲時(shí)長(zhǎng)-game time
- 異性朋友數(shù)-female friends
- 周末在家時(shí)長(zhǎng)-stay-in time
- 用戶接受類型-attr(attr是目標(biāo)判斷屬性,同時(shí)也是標(biāo)記屬性)
問(wèn)題:我們需要根據(jù)已知的這些屬性,判斷最后一個(gè)樣本的屬性是“Y”還是“N”
數(shù)據(jù)特征分析
我們所拿到的這批數(shù)據(jù)是500*5的矩陣,以平均每日游戲時(shí)長(zhǎng),異性朋友數(shù),周末在家時(shí)長(zhǎng)為軸,將不同屬性的點(diǎn)用不同顏色區(qū)分,利用matplotlib繪制散點(diǎn)圖,最終效果如圖。
由于這些測(cè)試數(shù)據(jù)在空間的分布非常集中,所以對(duì)于需要驗(yàn)證的點(diǎn)(紅,綠兩點(diǎn)),我們很容易區(qū)分出這些點(diǎn)的屬性
結(jié)合本次的業(yè)務(wù)場(chǎng)景,我們將通過(guò)前三種特征的空間分布,對(duì)attr屬性進(jìn)行預(yù)測(cè)
具體算法
在三維空間中,我們可以直觀判斷,那在具體的算法實(shí)現(xiàn)中,可以考慮使用
n維空間的歐氏距離:
通過(guò)以上公式,我們能對(duì)多維度數(shù)據(jù)進(jìn)行分析,得到目標(biāo)與各點(diǎn)的距離。
同時(shí),細(xì)心的讀者肯定考慮到,我們已知的這些特征,存在量級(jí)之間的差異,所以我們通常需要通過(guò)歸一化特征值,對(duì)消除不同量級(jí)造成的影響。因此,我們選用0-1標(biāo)準(zhǔn)化(0-1 normalization)對(duì)原始數(shù)據(jù)的線性變換。
0-1標(biāo)準(zhǔn)化:
在通過(guò)以上兩步對(duì)數(shù)據(jù)預(yù)處理完成后,我們將所得的距離進(jìn)行排序,并選取合適的K值對(duì)目標(biāo)數(shù)據(jù)進(jìn)行預(yù)測(cè)。
在此選擇k=10(僅舉例),可以發(fā)現(xiàn),前10項(xiàng)中Y出現(xiàn)的次數(shù)最多,因此我們可以認(rèn)為目標(biāo)數(shù)據(jù)的值為Y。
knn算法總結(jié)
在數(shù)據(jù)分析團(tuán)隊(duì)確定好數(shù)據(jù)特征后,對(duì)相應(yīng)數(shù)據(jù)進(jìn)行收集及清洗,對(duì)各數(shù)據(jù)特征進(jìn)行歸一化處理(視具體業(yè)務(wù)場(chǎng)景定,或需特征考慮權(quán)重),完成以上流程后,進(jìn)行以下通用流程:
- 計(jì)算測(cè)試數(shù)據(jù)與各個(gè)訓(xùn)練數(shù)據(jù)之間的距離;
- 按照距離的遞增關(guān)系進(jìn)行排序;
- 選取距離最小的K個(gè)點(diǎn);
- 確定前K個(gè)點(diǎn)所在類別的出現(xiàn)頻率;
- 返回前K個(gè)點(diǎn)中出現(xiàn)頻率最高的類別作為測(cè)試數(shù)據(jù)的預(yù)測(cè)分類。
最后,我們簡(jiǎn)單總結(jié)一下Knn的適用場(chǎng)景
- 數(shù)據(jù)已存在標(biāo)記特征,Knn是監(jiān)督算法
- 樣本數(shù)在100k以下,由于算法會(huì)對(duì)每個(gè)目標(biāo)值進(jìn)行多維度距離計(jì)算,所以樣本過(guò)大可能超負(fù)荷
- 樣本非文本,或可轉(zhuǎn)化為數(shù)值
以上便是通過(guò)Knn算法進(jìn)行了一次用戶判斷預(yù)測(cè)的流程,文中所展示內(nèi)容均為模擬數(shù)據(jù),且選擇了其中最簡(jiǎn)單的判斷屬性。如文中有遺漏及不足,請(qǐng)各位指出。
本文由 @Dave Fu 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自 unsplash,基于 CC0 協(xié)議
- 目前還沒(méi)評(píng)論,等你發(fā)揮!