在網際網路行業中常常有利用數據分析或者數據挖掘的結論來應用到產品中,驅動產品的優化,提升產品的各項KPI 指標, 在數據挖掘和數據分析的背後會涉及到一些數據挖掘或者機器學習的算法。本文主要是knn算法原理的介紹,以及在它在網際網路行業中的具體應用,後續會介紹這個算法的具體實現(R 語言和python 語言)。
現在假如有一個樣本, 樣本中的每一個叫做個體, 我們已經知道這些個體所屬的類別,現在有一個新的未知類別的個體,我們可以通過計算它與樣本中所有個體的相似距離,然後找出與它具體最小的k個個體, 這k個個體最多的類別就是這個新的個體的預測的類別。
算法步驟:
計算具體之前需要對數據中的每一個屬性進行數據歸一化,防止數據過大對距離的計算產生影響:
數據歸一化:
x* = (x – x_mean)/(x_max -x_min)
x_mean 表示數據的均值, x_max 表示數據的最大值, x_min 表示數據的最小值
例如有一個屬性的取值為:20, 40, 80, 100,則首先計算平均值: (20+30+80+100)/4=60。
最小值:20 ,最大值: 100,則歸一化後每個值為:
現在某app 上了一個歌詞製作的功能, 每天會有一定的用戶去使用歌詞製作的功能,製作的歌詞會經過外包團隊的審核,來判斷這個歌詞是否能夠投入使用。
現在根據一段時間的審核,已經能夠根據製作歌詞質量的好壞來將整體歌詞製作的用戶細分為:優質用戶,即製作的歌詞數目又多質量又高;一般用戶,製作的歌詞數和質量都屬於普通的情況;垃圾用戶,即製作的歌詞數目不多質量又差。
業務方需要提高整體的歌詞製作質量所以希望能夠根據現有的優質用戶具有的特徵,去發現更多這種類似的用戶,來不斷提高整體的UGC 歌詞。
數據分析師根據對業務的理解與業務方溝通,探討可能決定一個歌詞製作的用戶是否是優質用戶可能具有的特徵,以及業務方根據業務的熟悉和敏感度給出的分析建議,然後再次分析這個需求的需求目的以及需求執行的可行性(是否有支持的數據)。
根據溝通後的結論,數據分析師從數據倉庫提取相對應的數據,即提取三類用戶的一些屬性特徵及其用戶ID,如下圖所示:
本次例子假如是沒有缺失值和異常值,一般來說要對數據中的缺失值和異常值進行處理。比如去掉異常值,對缺失值進行均值或者眾數來代替。
假如已經知道這個用戶的播放量為140,報錯次數為3,歸一化處理後為:0.932203,0.5
首先對上面的數據進行歸一化處理:
計算這個新的用戶和圖中的每一個用戶的歐式距離為:
((0.932203- 0.762711864)^2+(0.5-0.833333333)^2) 的開方根
依次計算結果如下:
則最小距離的前三位分別為0.373948311, 1.16863508, 1.537825481,他們對應的type 都是 2 ,即優質用戶, 則可以判斷這個新用戶為優質用戶。
類似的大盤的所有的用戶都可以採取這種方式來找出優質用戶進行拉新。
將這個模型的預測過程和結果與業務方溝通,並且安排模型落地,並監控上線之後的效果,不斷改善模型.
根據這個模型業務方發現了優質用戶所具有的特徵屬性,通過運營的方式拉取很多優質用戶,大大提高整體的優質歌詞的比例,提高KPI 指標。
本文由 @陳友洋 原創發布於人人都是產品經理。未經作者許可,禁止轉載。
題圖來自 pexels,基於CC0協議