用戶分層,學會這些就夠了

如果沒有做分層基本就沒有在做運營這件事。——王慧文

用戶分層是一個應(yīng)用于產(chǎn)品和運營領(lǐng)域的概念。通常由運營人員協(xié)調(diào)數(shù)據(jù)分析部門和產(chǎn)品部門共同完成。

不同的用戶行為會衍生出不同的特性;面對不同特性的用戶,為了提高其更大的價值又對應(yīng)了不同的針對辦法,從而在業(yè)務(wù)上衍生了用戶分層的概念。網(wǎng)上關(guān)于用戶分層的方法已經(jīng)多如牛毛,但在實際應(yīng)用中依然有很多坑并未做詳細的闡述。本文將以我的實戰(zhàn)經(jīng)驗,按照用戶分層的順序,?細數(shù)幾個大家可能不知道的知識點。

一:數(shù)據(jù)是分層的前提??

完善的數(shù)據(jù)打點是用戶分層必不可少的前提。

在分層的最初,最忌諱的就是經(jīng)驗主義者憑借自己的【感覺】對用戶進行切割。

很多分層項目剛展開時,相關(guān)人員會犯?【前端可見】 就是特性的錯誤。打個比方,有10萬名用戶在論壇里發(fā)了內(nèi)容,于是這10萬人被分層到類似「創(chuàng)作者」這樣的類目中,對應(yīng)的可能是50萬人被歸類到「瀏覽者」這樣的層級中。這并不是錯誤的分類,但相較于分層顆粒度太大,且很難做出對應(yīng)的調(diào)整。

10萬人中有多少每天都在發(fā)內(nèi)容?有多少曾經(jīng)發(fā)過內(nèi)容現(xiàn)在不發(fā)了?有多少人在一天內(nèi)發(fā)布的數(shù)量遠超于均值?細數(shù)下去可以有無數(shù)的緯度等待挖掘,而挖掘的前提一定是前端的打點足夠精細。

二:分群必不可少?

分層不等于分群

用戶分層是根據(jù)不同的用戶行為對用戶進行層級的劃分;

用戶分群大多是根據(jù)不同的用戶屬性進行群體的劃分。

打個比方,男生女生、有娃無娃、老師醫(yī)生這些就是用戶群體的劃分,而如果是 說你本次消費了8000元,是當日消費者貢獻金額的前10%,這就是一個層級的劃分。簡單來說 ,分層和分群是動詞和名詞的區(qū)別。

一個用戶可以同時處在多個分群中,但在一個環(huán)境中他僅可能在一個層級里。我可能是男生,同時我也可以是醫(yī)生、我也可以是個有娃的寶爸,但我當前在社會上的地位盡可能是中產(chǎn),不可能除了中產(chǎn)以外又同時是個高凈值人士。

分層前盡可能先分群

很多分層模型搭建以后,會發(fā)現(xiàn)一個不好解釋的問題:當對一個低層級的用戶采取對應(yīng)的運營策略后,并不起實質(zhì)作用。

這個問題的出現(xiàn)往往是因為對分群的忽視。

假設(shè)小明是重點高中學生,小紅是職業(yè)院校的學生,我們用數(shù)學、物理、英語和機械修理的分數(shù)來對兩個人進行分級的話,毫無疑問,小明憑借數(shù)學、物理、英語的得分將遙遙領(lǐng)先于小紅,并處于分層的上級。那么似乎我們找到了對應(yīng)的針對辦法:針對小明要補習機械修理相關(guān)知識;針對小紅,要補習數(shù)學、物理、英語。

補了一個月以后,在下一次的考試中我們會發(fā)現(xiàn),兩人的成績沒有絲毫變化。

問題出現(xiàn)在:不同類型的人對應(yīng)著不同的用戶需求。小明無論機械修理學的多么精深,都不在他的考試清單里,小紅數(shù)學、英文、物理的成績也不會對她的就業(yè)有任何幫助。在日常的產(chǎn)品里,有些人的需求可能是每天來買東西,有些人不僅可以買,還能夠上傳自己的測評報告。

習慣和用戶能力的不同造成了需求的差異,而不同需求的人進入同一個評估體系中就是不公。因此在對用戶的行為進行切割前,依據(jù)產(chǎn)品內(nèi)用戶的不同的習慣進行大顆粒度分群是很有必要的。

三:評估模型? ?

RFM很好用?

RFM模型是經(jīng)典的價值評估模型,誕生至今已有數(shù)十年的歷史。

R:Recency,最近一次交易時間;

F:Frequency,交易頻次;

M:Monetary,交易金額。

網(wǎng)上有關(guān)RFM的介紹已經(jīng)很多,這里不做過多論述,僅說幾個重要的點

RFM模型的傳統(tǒng)三個維度可變。傳統(tǒng)維度RFM一般應(yīng)用于交易平臺,但同樣也可以在其他產(chǎn)品上大顯神威。例如?社區(qū)產(chǎn)品就可以取類似:最近內(nèi)容量、最近互動頻次、最近登陸時長。

RFM相比其他方法最大的優(yōu)勢在于能夠用最精簡的數(shù)據(jù)指標搭建相對完整的評估體系。

?如上圖所示,RFM模型衍生了8個細分層級、但在實際應(yīng)用中并非固定。具體幾個層級要視實際業(yè)務(wù)特性靈活變動。

因為分群的原因,?可能導致某一些用戶在某一個層級下為空。例如在社交產(chǎn)品中,一個僅僅喜歡瀏覽的忠實的用戶,沒有發(fā)內(nèi)容的需求,他在這個層級中就會出現(xiàn)發(fā)布內(nèi)容為空的現(xiàn)象,為了保持分層的公正,這樣的層級應(yīng)該存在且單獨進行評估。

K-means輔助計算

RFM在實際應(yīng)用中都必經(jīng)的一道步驟就是閾值的設(shè)定。數(shù)值多少算是高?多少算作低?常見的應(yīng)用辦法有平均數(shù)、眾數(shù)或是中位數(shù),或者更多的是憑經(jīng)驗拍腦袋。

但我在實際應(yīng)用中發(fā)現(xiàn)以上方法都會造成數(shù)值的偏頗,即假設(shè)小明小紅和小剛都參加了考試,小明考了120分、小紅考了10分、小剛考了60分,按照均值的處理辦法=120+10+60/3=63.3分,按照這個閾值計算,很明顯將小紅和小剛劃分為了一類人,可實際情況可能是小紅從來沒有學過習,而小剛一直在努力,再一次或許就能夠更進步,這樣的分類方法顯然是不公平的。

比較靠譜的方法是k均值聚類算法(k-means clustering algorithm)。是一種迭代求解的聚類分析算法。

其步驟是:

預(yù)將數(shù)據(jù)分為K組,則隨機選取K個對象作為初始的聚類中心,然后計算每個對象與各個種子聚類中心之間的距離,把每個對象分配給距離它最近的聚類中心。聚類中心以及分配給它們的對象就代表一個聚類。每分配一個樣本,聚類的聚類中心會根據(jù)聚類中現(xiàn)有的對象被重新計算。這個過程將不斷重復(fù)直到滿足某個終止條件。終止條件可以是沒有(或最小數(shù)目)對象被重新分配給不同的聚類,沒有(或最小數(shù)目)聚類中心再發(fā)生變化,誤差平方和局部最小。

其著名的解釋有:

有四個牧師去郊區(qū)布道,一開始牧師們隨意選了幾個布道點,并且把這幾個布道點的情況公告給了郊區(qū)所有的村民,于是每個村民到離自己家最近的布道點去聽課。

聽課之后,大家覺得距離太遠了,于是每個牧師統(tǒng)計了一下自己的課上所有的村民的地址,搬到了所有地址的中心地帶,并且在海報上更新了自己的布道點的位置。

牧師每一次移動不可能離所有人都更近,有的人發(fā)現(xiàn)A牧師移動以后自己還不如去B牧師處聽課更近,于是每個村民又去了離自己最近的布道點……

就這樣,牧師每個禮拜更新自己的位置,村民根據(jù)自己的情況選擇布道點,最終穩(wěn)定了下來。

Python實現(xiàn)方法如下:

import?numpy?as?np

import?pandas?as?pd

import?random

import?sys

import?time

class?KMeansClusterer:

????def?__init__(self,ndarray,cluster_num):

????????self.ndarray?=?ndarray

????????self.cluster_num?=?cluster_num

????????self.points=self.__pick_start_point(ndarray,cluster_num)


????def?cluster(self):

????????result?=?[]

????????for?i?in?range(self.cluster_num):

????????????result.append([])

????????for?item?in?self.ndarray:

????????????distance_min?=?sys.maxsize

????????????index=-1

????????????for?i?in?range(len(self.points)):????????????????

????????????????distance?=?self.__distance(item,self.points[i])

????????????????if?distance?<?distance_min:

????????????????????distance_min?=?distance

????????????????????index?=?i

????????????result[index]?=?result[index]?+?[item.tolist()]

????????new_center=[]

????????for?item?in?result:

????????????new_center.append(self.__center(item).tolist())

????????#?中心點未改變,說明達到穩(wěn)態(tài),結(jié)束遞歸

????????if?(self.points==new_center).all():

????????????return?result


????????self.points=np.array(new_center)

????????return?self.cluster()


????def?__center(self,list):

????????'''計算一組坐標的中心點

????????'''

????????#?計算每一列的平均值

????????return?np.array(list).mean(axis=0)

????def?__distance(self,p1,p2):

????????'''計算兩點間距

????????'''

????????tmp=0

????????for?i?in?range(len(p1)):

????????????tmp?+=?pow(p1[i]-p2[i],2)

????????return?pow(tmp,0.5)

????def?__pick_start_point(self,ndarray,cluster_num):


????????if?cluster_num?<0?or?cluster_num?>?ndarray.shape[0]:

????????????raise?Exception("簇數(shù)設(shè)置有誤")


????????#?隨機點的下標

????????indexes=random.sample(np.arange(0,ndarray.shape[0],step=1).tolist(),cluster_num)

????????points=[]

????????for?index?in?indexes:

????????????points.append(ndarray[index].tolist())

????????return?np.array(points)

如果看不懂的話不要慌,只需知道基本的原理就足夠了。實際應(yīng)用過程中大多由數(shù)據(jù)或者算法部門完成計算。將需求提交給對應(yīng)的部門就OK。

四.窮盡分群?

截止到這,我們已經(jīng)夠?qū)τ脩籼幱谀膫€層級,并且在他所屬層級中處于什么樣的“檔位”有了一個清晰的判定。例如我們現(xiàn)在就能得到類似【一個?付費用戶?且在最近30天都頻繁登錄并且堅持復(fù)購】的層級,似乎到這已經(jīng)結(jié)束了。但往往面對諸如「如何讓這部分人更活躍」或者「如何讓他們更多的付費」這樣的問題上,依然沒有直接了當?shù)慕鉀Q方案,這里提到一個方法是:

無限分群是尋找解法的捷徑

上文已經(jīng)講到,分群指的是區(qū)分用戶的屬性。屬性包括用戶的個人信息屬性,包括性別、城市、年齡這些畫像數(shù)據(jù)。同時也包括用戶的歷史行為屬性,比如是否用過某個功能?是否完成了某些特殊行為?假設(shè)某個用戶在前面的分群-RFM-Kmeas的過程中已經(jīng)被驗證是某個群體中的高價值用戶,那么他是否可能因為用過的某個功能而被激勵直至提升活躍?

依據(jù)這些行為上的差異,每一類用戶都能找到提高用戶價值的線索。

五.總結(jié)?

沒有數(shù)據(jù)的分層是不專業(yè)的,沒有分群的分層是不完善的

上述方法貫穿了用戶分層的整個路徑,在實際操作中大家可以參考借鑒。

但因分層這件事本身對應(yīng)的是不同的業(yè)務(wù)情況,實際操作中一定要保持批判,善于變通。

我說的,都不一定,你試試就知。

本文首發(fā)于公眾號:真的不一定

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容