不會(huì)機(jī)器學(xué)習(xí),你照樣可以預(yù)測(cè)用戶流失
即使不會(huì)高深莫測(cè)的機(jī)器學(xué)習(xí),你照樣可以利用統(tǒng)計(jì)學(xué)來(lái)預(yù)測(cè)用戶流失。
什么是用戶流失率?我們?yōu)槭裁葱枰P(guān)注用戶流失率?
簡(jiǎn)單來(lái)說(shuō),用戶流失率是指用戶的流失數(shù)量與全部使用/消費(fèi)產(chǎn)品(或服務(wù))用戶的數(shù)量的比例,是用戶流失的定量表述,以及判斷用戶流失的主要指標(biāo),直接反映了產(chǎn)品的市場(chǎng)接受程度如何,以及運(yùn)營(yíng)工作的好壞。
一般來(lái)說(shuō),這個(gè)指標(biāo)用在“訂閱型產(chǎn)品”的情形居多,如信息訂閱類App“錘子閱讀”、絕大多數(shù)的在線SaaS產(chǎn)品,甚至傳統(tǒng)的牛奶訂購(gòu)。由于留住當(dāng)前的用戶要比獲取新用戶來(lái)的劃算,所以預(yù)測(cè)流失率的目標(biāo)在于:
預(yù)測(cè)用戶將會(huì)在哪個(gè)時(shí)間點(diǎn)離開(在訂閱期結(jié)束前),在合適的時(shí)間點(diǎn)對(duì)這些用戶施加影響,挽留他們,如通過(guò)短信、郵件或APP,利用超低價(jià)商品吸引回訪或者專屬優(yōu)惠券等,這些策略對(duì)于一些流失用戶是很有效的!
接下來(lái),筆者將利用簡(jiǎn)單的統(tǒng)計(jì)學(xué)知識(shí),介紹一種基于用戶不活躍記錄的用戶流失預(yù)測(cè)模型。該模型在不使用機(jī)器學(xué)習(xí)算法的情況下,可以給出一個(gè)容易理解的用戶流失預(yù)測(cè),以便我們對(duì)將要離開的用戶有一個(gè)相當(dāng)準(zhǔn)確的洞察。
廢話不多說(shuō),進(jìn)入正題吧~
1 用戶活躍的操作性定義
在我們正式開始預(yù)測(cè)用戶流失率之前,我們需要記錄用戶的歷史活躍情況。做這個(gè)的目的在于,了解用戶是否在使用我們的產(chǎn)品或服務(wù)。那么,問(wèn)題就來(lái)了,用戶的“活躍”該做怎樣的操作性定義(即根據(jù)可觀察、可測(cè)量、可操作的特征來(lái)界定變量含義的方法)?實(shí)際上,“用戶活躍”的定義取決于你的業(yè)務(wù)背景,跟產(chǎn)品或者服務(wù)具體場(chǎng)景密切相關(guān),不同類型的產(chǎn)品對(duì)“用戶活躍”有不同的定義。
以xxx的“信息監(jiān)測(cè)”為例,它是一款訂閱型的社會(huì)化大數(shù)據(jù)產(chǎn)品,用戶通過(guò)設(shè)置各種關(guān)鍵詞組合來(lái)檢索相關(guān)信息,然后選擇郵件或者客戶端訂閱,通過(guò)自定義的接收頻次來(lái)準(zhǔn)時(shí)收取訂閱信息。
對(duì)于這款大數(shù)據(jù)產(chǎn)品來(lái)說(shuō),“用戶活躍”可以這樣定義—如果一個(gè)用戶是活躍的,那么,ta在指定時(shí)間段內(nèi)(分析的時(shí)間單位取決于分析者對(duì)業(yè)務(wù)的理解,可以是天、周、月、季度或年),應(yīng)該包含如下付費(fèi)、使用或者互動(dòng)行為:
- 該用戶對(duì)“信息監(jiān)測(cè)”的訂閱尚未過(guò)期;
- 該用戶在web端或者移動(dòng)端登錄產(chǎn)品頁(yè)面;
- 該用戶使用了產(chǎn)品的部分或全部功能,如基于信息源或者地域的定向監(jiān)測(cè)功能;
- 該用戶在此期間產(chǎn)生了一定消費(fèi),如文本數(shù)據(jù)下載、訂閱續(xù)費(fèi)、定制報(bào)告等;
- 該用戶在此期間對(duì)該產(chǎn)品有各種反饋,包括投訴。
…
對(duì)于這款產(chǎn)品來(lái)說(shuō),以月份為單位來(lái)分析用戶行為是很有意義的—因?yàn)樵摦a(chǎn)品最短的訂閱期是一個(gè)月,最長(zhǎng)的訂閱期是一年。
一旦清晰的界定了“用戶活躍”的定義,我們就可以用這些操作性定義來(lái)對(duì)每個(gè)月份的用戶(不)活躍情況進(jìn)行編碼,利用二進(jìn)制值(0,1)—假如在X月份,用戶是活躍的,將ta的活躍值設(shè)定為1,否則設(shè)定為0。
2 建立“用戶不活躍檔案”
現(xiàn)在,對(duì)于每位用戶,我們有了一個(gè)以月為單位的“活躍標(biāo)記”,接下來(lái)我們以此為基礎(chǔ),建立起“用戶不活躍檔案”。這意味著,對(duì)于每個(gè)用戶,筆者想對(duì)他們連續(xù)不活躍的月份數(shù)進(jìn)行計(jì)數(shù)統(tǒng)計(jì)。
在這里,筆者選擇了一年的“分析窗口”(也就是把12個(gè)月作為分析的時(shí)間范圍),將“活躍檔案”和“不活躍檔案”以表格的形式呈現(xiàn)—藍(lán)色表單顯示每位用戶在各個(gè)月份上的活躍記錄,綠色表單則顯示用戶的不活躍記錄。根據(jù)用戶在此時(shí)間段內(nèi)可能出現(xiàn)的活躍情形,筆者枚舉出3種典型用戶,如下表所示:
用戶A:該用戶在剛進(jìn)入“分析窗口”時(shí)是活躍的,然而在5月變得不活躍(也就是說(shuō),5月份是第一個(gè)不活躍的月份)。接下來(lái),這個(gè)用戶的不活躍狀態(tài)持續(xù)到了12月,也就一直持續(xù)到了“分析窗口”的末尾。因此,從5月到12月,“用戶不活躍檔案”對(duì)用戶連續(xù)不活躍的月份進(jìn)行逐月累加的計(jì)數(shù)統(tǒng)計(jì)。
用戶B:跟用戶A一樣,該用戶剛開始也是活躍的。不同的是,該用戶在3~6月期間是不活躍的,在7月僅維持了一個(gè)月的活躍狀態(tài), 接著在8月和9月又進(jìn)入不活躍狀態(tài),最后在“分析窗口”的10月,11月和12月又回到活躍狀態(tài)。在這種情況下,每當(dāng)用戶由不活躍狀態(tài)返回活躍狀態(tài)時(shí),前面的不活躍月份計(jì)數(shù)需要重置。也就是說(shuō),當(dāng)我們?cè)俅螌?duì)該用戶的連續(xù)不活躍月份進(jìn)行計(jì)數(shù)時(shí),需要重新從1開始計(jì)數(shù),前面的不活躍月份計(jì)數(shù)不再累加。
用戶C:與上述提及的兩類用戶不同,該用戶剛進(jìn)入“分析窗口”時(shí),是不活躍的狀態(tài)。這種情形的發(fā)生,可能是用戶的訂閱早已過(guò)期(最好在正式分析前排除這種情形,因?yàn)楹茈y處理),或者該用戶在“分析窗口”開始前就是不活躍的。因?yàn)槲覀兛床坏健胺治龃翱凇鼻暗挠脩艋钴S情況,所以用戶在此之前的活躍狀態(tài),我們是不了解的。鑒于此狀況,我們對(duì)這些月份進(jìn)行特殊的標(biāo)記—使用-1標(biāo)記用戶C頭幾個(gè)不活躍的月份。該用戶其他的不活躍情形,可以參照前面兩類用戶方式進(jìn)行計(jì)數(shù)。
Note:后面綠色的表單,也就是“用戶不活躍檔案”,才是我們接下來(lái)建立用戶流失模型的數(shù)據(jù)基礎(chǔ)。
3 構(gòu)建用戶流失模型
有了上述的關(guān)于用戶不活躍的操作性定義,我們就可以在“分析窗口”內(nèi)(1月份到12月份)以月份為單位,對(duì)從0到12的連續(xù)不活躍月份數(shù)上的用戶數(shù)量進(jìn)行計(jì)數(shù)統(tǒng)計(jì)。
這個(gè)步驟可以通過(guò)數(shù)據(jù)透視表實(shí)現(xiàn)—通過(guò)聚合每個(gè)月、每個(gè)不活躍級(jí)別的用戶數(shù)量。 如下表所示:
上表中,從列的方向上來(lái)看,每個(gè)單元格的數(shù)值表示每個(gè)月的連續(xù)不活躍X個(gè)月的用戶的數(shù)量。舉個(gè)例子來(lái)說(shuō),上表中第一個(gè)高亮數(shù)值(574),代表1月份已經(jīng)不活躍1個(gè)月的用戶數(shù)量,該數(shù)值來(lái)自于前面12月份的4815個(gè)活躍用戶。第二個(gè)高亮數(shù)值(425)表示在2月份已經(jīng)連續(xù)不活躍2個(gè)月的用戶數(shù)量—425來(lái)自于574(1月份不活躍1個(gè)月的用戶數(shù),它是2月份不活躍2個(gè)月的用戶數(shù)的基數(shù))。值得注意的是,第一行的0個(gè)連續(xù)不活躍月份數(shù),其實(shí)表示的是基數(shù)中活躍用戶的數(shù)量。
使用這些數(shù)據(jù),我們可以計(jì)算出在“分析窗口”內(nèi),每個(gè)月連續(xù)不活躍月份數(shù)的用戶占比情況。如下面的綠色表格所示:
上表中,高亮的數(shù)值(74%)表示2月份已經(jīng)連續(xù)2個(gè)月不活躍的用戶占比。該百分比是這樣計(jì)算得到的:
筆者想獲得最具代表性的數(shù)值,由此可以對(duì)“分析窗口”的最末4個(gè)月(9月,10月,11月和12月)取平均值。我們可能沒有足夠的數(shù)據(jù)去計(jì)算這些平均值(比如10月份,11月份和12月份)—在這種情況下,我們?nèi)∷锌捎脭?shù)值的平均值(用于計(jì)算平均值的數(shù)值區(qū)域以紅色線框標(biāo)記):
4 計(jì)算用戶流失概率
哈哈,如果你還在看這篇文章,那么恭喜你!我們將要探討最激動(dòng)人心的部分…在這部分,我們將用上一點(diǎn)統(tǒng)計(jì)學(xué)的小知識(shí)。
讓我們回顧一下本文的終極目標(biāo)—計(jì)算各個(gè)連續(xù)不活躍月份數(shù)(0-12)下的用戶流失概率。
也就是說(shuō),如果某個(gè)用戶已經(jīng)連續(xù)X個(gè)月不活躍,那么這個(gè)用戶接下來(lái)將要流失的可能性有多大?從數(shù)學(xué)上來(lái)說(shuō),我們可以使出貝葉斯公式這個(gè)大殺器來(lái)計(jì)算用戶流失率。貝葉斯公式盡管是一個(gè)數(shù)學(xué)公式,但它的原理不要數(shù)字也能明了。如果,你看到一個(gè)人總是做一些好事,則那個(gè)人多半會(huì)是一個(gè)好人。該數(shù)學(xué)公式包含著樸素的真理:
當(dāng)你不能準(zhǔn)確知悉一個(gè)事物的本質(zhì)時(shí),你可以依靠與事物特定本質(zhì)相關(guān)的事件出現(xiàn)的多少去判斷其本質(zhì)屬性的概率。
用數(shù)學(xué)語(yǔ)言表達(dá)就是:支持某項(xiàng)屬性的事件發(fā)生得愈多,則該屬性成立的可能性就愈大。它的數(shù)學(xué)形式如下:
在這里,A和B都代表事件(Event),同時(shí)P(B)≠0。P(A)和P(B) 分別代表A和B的先驗(yàn)概率或邊緣概率。之所以稱為”先驗(yàn)”是因?yàn)樗豢紤]任何A(B)方面的因素。P(A|B)是已知B發(fā)生后A的條件概率,也由于得自B的取值而被稱作A的后驗(yàn)概率。P(B|A)是已知A發(fā)生后B的條件概率,也由于得自A的取值而被稱作B的后驗(yàn)概率。
在本案例中,對(duì)應(yīng)的公式如下所示:
然并卵,上面公式里有一項(xiàng)是沒啥意義的—P(連續(xù)X個(gè)月不活躍|流失),它的含義是“在已經(jīng)流失的情況下,連續(xù)X個(gè)月不活躍的概率“。試想一下,假如你已經(jīng)流失掉了,你不可能是一個(gè)不活躍的狀態(tài),這個(gè)概率值是么有啥業(yè)務(wù)意義的。鑒于此種情形,筆者果斷拋棄這一項(xiàng)(謹(jǐn)記?。?。由此,我們得到了一個(gè)終極版的流失率計(jì)算公式:
接下來(lái),讓我們看看公式右端的兩項(xiàng)(分子和分母),然后計(jì)算它們?cè)诿總€(gè)不活躍月份上的數(shù)值,進(jìn)而得到我們想要的用戶流失概率值(注意,它是一個(gè)條件概率值,也就是在連續(xù)不活躍X個(gè)月的情況下的用戶流失概率)。
先說(shuō)說(shuō)分母P(連續(xù)X個(gè)月不活躍),筆者之前已經(jīng)計(jì)算過(guò)它們—也就是“分析窗口”最后4個(gè)月占比平均值:
P(1) = 19%
P(2) = 81%
P(3) = 89%
P(4) = 92%
P(5) = 93%
P(6) = 95%
P(7) = 96%
P(8) = 97%
…
接下來(lái),我們?cè)賮?lái)通過(guò)例子求解分子P(流失)。首先,1個(gè)月不活躍的用戶的流失概率P(C1)是多少呢?對(duì)于這些將要流失的用戶,他們將要連續(xù)性的不活躍的月份數(shù)已經(jīng)在我們所考慮的集合之內(nèi)了,換言之,這些用戶將要不活躍的月份數(shù)為1個(gè)月,2個(gè)月,3個(gè)月,…,。因而,我們這樣定義已經(jīng)不活躍1個(gè)月的用戶的流失概率P(C1):
現(xiàn)在,?以同樣的方式,?持續(xù)2個(gè)月不活躍的用戶的?P(流失)?,也就是P(C2)是多少呢?對(duì)于這些將要流失的用戶,他們將要持續(xù)性的不活躍,2個(gè)月,3個(gè)月,4個(gè)月,…,12個(gè)月。因而,我們這樣定義已經(jīng)連續(xù)不活躍2個(gè)月的用戶的流失概率P(C2):
通過(guò)歸納和演繹,我們以同樣的方式來(lái)計(jì)算每個(gè)不活躍月份的用戶流失概率:
在這里,n是連續(xù)不活躍月份數(shù)的極限值,而我們發(fā)現(xiàn),這個(gè)概率是穩(wěn)定的。從上面的表單里可以到,這個(gè)發(fā)生在第7個(gè)連續(xù)的月份,這里的概率值維持在95~96%。
簡(jiǎn)化起見,我們假設(shè),在連續(xù)月份上不活躍是相互獨(dú)立的事件。此時(shí), P(A ∩ B )= P(A)* P(B)。因而,我們可以采用如下的公式:
現(xiàn)在,我們已經(jīng)算出了每個(gè)不活躍月份概率對(duì)應(yīng)的分子和分母,那我們就可以啟動(dòng)最后一步—算出每個(gè)各個(gè)連續(xù)不活躍月份數(shù)的用戶流失概率。先前我們已經(jīng)討論過(guò)了,n的值為7。
…
最終的計(jì)算結(jié)果如下表所示:
請(qǐng)注意,活躍用戶(也就是第一行連續(xù)0個(gè)月不活躍的情形)的流失率由P(1) Ⅹ P(2) Ⅹ P(3) Ⅹ P(4) Ⅹ … Ⅹ P(7)計(jì)算得出。這里我們并沒有除以任何值,這是因?yàn)?#8212;當(dāng)用戶處于活躍狀態(tài)時(shí), P(連續(xù)0個(gè)月不活躍)為1。
最后,我們還可用一條流失率曲線來(lái)直觀的反映流失率的變化情況,由此決定對(duì)非活躍用戶進(jìn)行挽留操作的最佳時(shí)機(jī),該曲線所下圖所示:
5?結(jié)語(yǔ)
在本文中,筆者并沒有提供該模型批量化使用的具體執(zhí)行細(xì)節(jié),假如你理解了這個(gè)模型構(gòu)建的邏輯,那么你可以使用SQL、Python,甚至是Excel來(lái)實(shí)現(xiàn)它。
此外,在實(shí)踐中,這個(gè)模型最好是分不同的用戶群進(jìn)行運(yùn)行。在本文中,筆者僅僅在某一類用戶上運(yùn)行,然而,根據(jù)不同的標(biāo)準(zhǔn)來(lái)劃分用戶群體會(huì)對(duì)實(shí)際業(yè)務(wù)更有意義。比如,你可以根據(jù)用戶價(jià)值進(jìn)行劃分,然后對(duì)每個(gè)用戶子群體進(jìn)行用戶流失預(yù)測(cè)。
當(dāng)然,筆者只是在月份的尺度上進(jìn)行用戶流失分析,但是,對(duì)于很多業(yè)務(wù)場(chǎng)景,更細(xì)粒度的分析視角可能更有意義,比如按周和按天。
最后,以《神雕俠侶》中的一段話作結(jié),我想,感悟到數(shù)學(xué)之美、不受分析工具的限制,并能靈活運(yùn)用到實(shí)際業(yè)務(wù)中的感受大抵如此:
過(guò)了良久,青衣人又將巨劍放下,去取第三柄劍,那卻是一柄木劍,落在手中輕若無(wú)物,但見劍下的石刻道:
“四十歲后,不滯于物,草木竹石均可為劍。自此精修,漸進(jìn)于無(wú)劍勝有劍之境!”
參考資料:
3.PredictingChurn without Machine Learning
#專欄作家#
蘇格蘭折耳喵,微信公眾號(hào):Social Listening與文本挖掘,人人都是產(chǎn)品經(jīng)理專欄作家。數(shù)據(jù)PM一只,擅長(zhǎng)數(shù)據(jù)分析和可視化表達(dá),熱衷于用數(shù)據(jù)發(fā)現(xiàn)洞察,指導(dǎo)實(shí)踐。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自PEXELS,基于CC0協(xié)議
“在這里,n是連續(xù)不活躍月份數(shù)的極限值,而我們發(fā)現(xiàn),這個(gè)概率是穩(wěn)定的。從上面的表單里可以到,這個(gè)發(fā)生在第7個(gè)連續(xù)的月份,這里的概率值維持在95~96%?!笨床欢?為何要取7 概率穩(wěn)定就取7?如果取的是 最末三個(gè)月的呢?還是根據(jù)“穩(wěn)定”來(lái)取 n?
最末四個(gè)月的均值(即P(1)=19%,P(2)=81%,……..),應(yīng)該已經(jīng)是條件概率了吧?19%是“上個(gè)月活躍的用戶中,第二個(gè)月未活躍的占比”,81%是“上個(gè)月連續(xù)一個(gè)月未活躍的用戶中,第二個(gè)月連續(xù)兩個(gè)月未活躍的占比”。并不是文中說(shuō)的“連續(xù)X個(gè)月未活躍”的概率。
道理同
在這里,n是連續(xù)不活躍月份數(shù)的極限值,而我們發(fā)現(xiàn),這個(gè)概率是穩(wěn)定的。從上面的表單里可以到,這個(gè)發(fā)生在第7個(gè)連續(xù)的月份,這里的概率值維持在95~96%。
這句沒看懂…
感謝分享
有幾點(diǎn)我覺得可以一起討論
1、這個(gè)算法在工程上的實(shí)現(xiàn),貌似比機(jī)器學(xué)習(xí)還要復(fù)雜。在MODELER里用決策樹進(jìn)行實(shí)現(xiàn),也只需要完成文章所述第一步的數(shù)據(jù)準(zhǔn)備,也就是用戶行為統(tǒng)計(jì)這一步,就可以使用決策樹算法進(jìn)行建模了
2、使用決策樹的方法,其實(shí)跟上述的原理類似,機(jī)器學(xué)習(xí)本身也是基于統(tǒng)計(jì)的。不同的點(diǎn)在于,本文只能說(shuō)明用戶連續(xù)N個(gè)月不活躍而流失的概率,而決策樹可以把“不活躍”這一特征拆開了揉碎了來(lái)告訴我們客戶流失的概率
機(jī)器學(xué)習(xí)不是每個(gè)人都會(huì)的,學(xué)習(xí)成本很高。我介紹的方式的主要目的在于重拾以前學(xué)的數(shù)學(xué)知識(shí),靈活運(yùn)用到工作場(chǎng)景中,可操作性強(qiáng)。
“筆者想獲得最具代表性的數(shù)值,由此可以對(duì)“分析窗口”的最末4個(gè)月(9月,10月,11月和12月)取平均值?!边@里不太明白,為什么要這么取呢?
取用戶占比的均值,最末四個(gè)月在縱軸上的覆蓋長(zhǎng)度最長(zhǎng),對(duì)它們?nèi)【稻哂写硇?/p>
請(qǐng)問(wèn),“最末四個(gè)月在縱軸上的覆蓋長(zhǎng)度最長(zhǎng)”這個(gè)覆蓋長(zhǎng)度具體指什么呢?
“連續(xù)不活躍月份數(shù)”,你試著從縱軸方向上來(lái)看
后面的公示 我是看服了
學(xué)習(xí)了