不會機器學習,你照樣可以預測用戶流失

12 評論 24256 瀏覽 87 收藏 20 分鐘

即使不會高深莫測的機器學習,你照樣可以利用統計學來預測用戶流失。

什么是用戶流失率?我們為什么需要關注用戶流失率?

簡單來說,用戶流失率是指用戶的流失數量與全部使用/消費產品(或服務)用戶的數量的比例,是用戶流失的定量表述,以及判斷用戶流失的主要指標,直接反映了產品的市場接受程度如何,以及運營工作的好壞。

一般來說,這個指標用在“訂閱型產品”的情形居多,如信息訂閱類App“錘子閱讀”、絕大多數的在線SaaS產品,甚至傳統的牛奶訂購。由于留住當前的用戶要比獲取新用戶來的劃算,所以預測流失率的目標在于:

預測用戶將會在哪個時間點離開(在訂閱期結束前),在合適的時間點對這些用戶施加影響,挽留他們,如通過短信、郵件或APP,利用超低價商品吸引回訪或者專屬優惠券等,這些策略對于一些流失用戶是很有效的!

接下來,筆者將利用簡單的統計學知識,介紹一種基于用戶不活躍記錄的用戶流失預測模型。該模型在不使用機器學習算法的情況下,可以給出一個容易理解的用戶流失預測,以便我們對將要離開的用戶有一個相當準確的洞察。

廢話不多說,進入正題吧~

1 用戶活躍的操作性定義

在我們正式開始預測用戶流失率之前,我們需要記錄用戶的歷史活躍情況。做這個的目的在于,了解用戶是否在使用我們的產品或服務。那么,問題就來了,用戶的“活躍”該做怎樣的操作性定義(即根據可觀察、可測量、可操作的特征來界定變量含義的方法)?實際上,“用戶活躍”的定義取決于你的業務背景,跟產品或者服務具體場景密切相關,不同類型的產品對“用戶活躍”有不同的定義。

以xxx的“信息監測”為例,它是一款訂閱型的社會化大數據產品,用戶通過設置各種關鍵詞組合來檢索相關信息,然后選擇郵件或者客戶端訂閱,通過自定義的接收頻次來準時收取訂閱信息。

對于這款大數據產品來說,“用戶活躍”可以這樣定義—如果一個用戶是活躍的,那么,ta在指定時間段內(分析的時間單位取決于分析者對業務的理解,可以是天、周、月、季度或年),應該包含如下付費、使用或者互動行為:

  • 該用戶對“信息監測”的訂閱尚未過期;
  • 該用戶在web端或者移動端登錄產品頁面;
  • 該用戶使用了產品的部分或全部功能,如基于信息源或者地域的定向監測功能;
  • 該用戶在此期間產生了一定消費,如文本數據下載、訂閱續費、定制報告等;
  • 該用戶在此期間對該產品有各種反饋,包括投訴。

對于這款產品來說,以月份為單位來分析用戶行為是很有意義的—因為該產品最短的訂閱期是一個月,最長的訂閱期是一年。

一旦清晰的界定了“用戶活躍”的定義,我們就可以用這些操作性定義來對每個月份的用戶(不)活躍情況進行編碼,利用二進制值(0,1)—假如在X月份,用戶是活躍的,將ta的活躍值設定為1,否則設定為0。

2 建立“用戶不活躍檔案”

現在,對于每位用戶,我們有了一個以月為單位的“活躍標記”,接下來我們以此為基礎,建立起“用戶不活躍檔案”這意味著,對于每個用戶,筆者想對他們連續不活躍的月份數進行計數統計。

在這里,筆者選擇了一年的“分析窗口”(也就是把12個月作為分析的時間范圍),將“活躍檔案”和“不活躍檔案”以表格的形式呈現—藍色表單顯示每位用戶在各個月份上的活躍記錄,綠色表單則顯示用戶的不活躍記錄。根據用戶在此時間段內可能出現的活躍情形,筆者枚舉出3種典型用戶,如下表所示:

用戶A:該用戶在剛進入“分析窗口”時是活躍的,然而在5月變得不活躍(也就是說,5月份是第一個不活躍的月份)。接下來,這個用戶的不活躍狀態持續到了12月,也就一直持續到了“分析窗口”的末尾。因此,從5月到12月,“用戶不活躍檔案”對用戶連續不活躍的月份進行逐月累加的計數統計。

用戶B:跟用戶A一樣,該用戶剛開始也是活躍的。不同的是,該用戶在3~6月期間是不活躍的,在7月僅維持了一個月的活躍狀態, 接著在8月和9月又進入不活躍狀態,最后在“分析窗口”的10月,11月和12月又回到活躍狀態。在這種情況下,每當用戶由不活躍狀態返回活躍狀態時,前面的不活躍月份計數需要重置。也就是說,當我們再次對該用戶的連續不活躍月份進行計數時,需要重新從1開始計數,前面的不活躍月份計數不再累加。

用戶C:與上述提及的兩類用戶不同,該用戶剛進入“分析窗口”時,是不活躍的狀態。這種情形的發生,可能是用戶的訂閱早已過期(最好在正式分析前排除這種情形,因為很難處理),或者該用戶在“分析窗口”開始前就是不活躍的。因為我們看不到“分析窗口”前的用戶活躍情況,所以用戶在此之前的活躍狀態,我們是不了解的。鑒于此狀況,我們對這些月份進行特殊的標記—使用-1標記用戶C頭幾個不活躍的月份。該用戶其他的不活躍情形,可以參照前面兩類用戶方式進行計數。

Note:后面綠色的表單,也就是“用戶不活躍檔案”,才是我們接下來建立用戶流失模型的數據基礎。

3 構建用戶流失模型

有了上述的關于用戶不活躍的操作性定義,我們就可以在“分析窗口”內(1月份到12月份)以月份為單位,對從0到12的連續不活躍月份數上的用戶數量進行計數統計。

這個步驟可以通過數據透視表實現—通過聚合每個月、每個不活躍級別的用戶數量。 如下表所示:

上表中,從列的方向上來看,每個單元格的數值表示每個月的連續不活躍X個月的用戶的數量。舉個例子來說,上表中第一個高亮數值(574),代表1月份已經不活躍1個月的用戶數量,該數值來自于前面12月份的4815個活躍用戶。第二個高亮數值(425)表示在2月份已經連續不活躍2個月的用戶數量—425來自于574(1月份不活躍1個月的用戶數,它是2月份不活躍2個月的用戶數的基數)。值得注意的是,第一行的0個連續不活躍月份數,其實表示的是基數中活躍用戶的數量。

使用這些數據,我們可以計算出在“分析窗口”內,每個月連續不活躍月份數的用戶占比情況。如下面的綠色表格所示:

上表中,高亮的數值(74%)表示2月份已經連續2個月不活躍的用戶占比。該百分比是這樣計算得到的:

筆者想獲得最具代表性的數值,由此可以對“分析窗口”的最末4個月(9月,10月,11月和12月)取平均值。我們可能沒有足夠的數據去計算這些平均值(比如10月份,11月份和12月份)—在這種情況下,我們取所有可用數值的平均值(用于計算平均值的數值區域以紅色線框標記):

4 計算用戶流失概率

哈哈,如果你還在看這篇文章,那么恭喜你!我們將要探討最激動人心的部分…在這部分,我們將用上一點統計學的小知識。

讓我們回顧一下本文的終極目標—計算各個連續不活躍月份數(0-12)下的用戶流失概率。

也就是說,如果某個用戶已經連續X個月不活躍,那么這個用戶接下來將要流失的可能性有多大?從數學上來說,我們可以使出貝葉斯公式這個大殺器來計算用戶流失率。貝葉斯公式盡管是一個數學公式,但它的原理不要數字也能明了。如果,你看到一個人總是做一些好事,則那個人多半會是一個好人。該數學公式包含著樸素的真理:

當你不能準確知悉一個事物的本質時,你可以依靠與事物特定本質相關的事件出現的多少去判斷其本質屬性的概率。

用數學語言表達就是:支持某項屬性的事件發生得愈多,則該屬性成立的可能性就愈大。它的數學形式如下:

在這里,A和B都代表事件(Event),同時P(B)≠0。P(A)和P(B) 分別代表A和B的先驗概率或邊緣概率。之所以稱為”先驗”是因為它不考慮任何A(B)方面的因素。P(A|B)是已知B發生后A的條件概率,也由于得自B的取值而被稱作A的后驗概率。P(B|A)是已知A發生后B的條件概率,也由于得自A的取值而被稱作B的后驗概率。

在本案例中,對應的公式如下所示:

然并卵,上面公式里有一項是沒啥意義的—P(連續X個月不活躍|流失),它的含義是“在已經流失的情況下,連續X個月不活躍的概率“。試想一下,假如你已經流失掉了,你不可能是一個不活躍的狀態,這個概率值是么有啥業務意義的。鑒于此種情形,筆者果斷拋棄這一項(謹記?。?。由此,我們得到了一個終極版的流失率計算公式:

接下來,讓我們看看公式右端的兩項(分子和分母),然后計算它們在每個不活躍月份上的數值,進而得到我們想要的用戶流失概率值(注意,它是一個條件概率值,也就是在連續不活躍X個月的情況下的用戶流失概率)。

先說說分母P(連續X個月不活躍),筆者之前已經計算過它們—也就是“分析窗口”最后4個月占比平均值:

P(1) = 19%

P(2) = 81%

P(3) = 89%

P(4) = 92%

P(5) = 93%

P(6) = 95%

P(7) = 96%

P(8) = 97%

接下來,我們再來通過例子求解分子P(流失)。首先,1個月不活躍的用戶的流失概率P(C1)是多少呢?對于這些將要流失的用戶,他們將要連續性的不活躍的月份數已經在我們所考慮的集合之內了,換言之,這些用戶將要不活躍的月份數為1個月,2個月,3個月,…,。因而,我們這樣定義已經不活躍1個月的用戶的流失概率P(C1):

現在,?以同樣的方式,?持續2個月不活躍的用戶的?P(流失)?,也就是P(C2)是多少呢?對于這些將要流失的用戶,他們將要持續性的不活躍,2個月,3個月,4個月,…,12個月。因而,我們這樣定義已經連續不活躍2個月的用戶的流失概率P(C2):

通過歸納演繹,我們以同樣的方式來計算每個不活躍月份的用戶流失概率:

在這里,n是連續不活躍月份數的極限值,而我們發現,這個概率是穩定的。從上面的表單里可以到,這個發生在第7個連續的月份,這里的概率值維持在95~96%。

簡化起見,我們假設,在連續月份上不活躍是相互獨立的事件。此時, P(A ∩ B )= P(A)* P(B)。因而,我們可以采用如下的公式:

現在,我們已經算出了每個不活躍月份概率對應的分子和分母,那我們就可以啟動最后一步—算出每個各個連續不活躍月份數的用戶流失概率。先前我們已經討論過了,n的值為7。

最終的計算結果如下表所示:

請注意,活躍用戶(也就是第一行連續0個月不活躍的情形)的流失率由P(1) Ⅹ P(2) Ⅹ P(3) Ⅹ P(4) Ⅹ … Ⅹ P(7)計算得出。這里我們并沒有除以任何值,這是因為—當用戶處于活躍狀態時, P(連續0個月不活躍)為1。

最后,我們還可用一條流失率曲線來直觀的反映流失率的變化情況,由此決定對非活躍用戶進行挽留操作的最佳時機,該曲線所下圖所示:

5?結語

在本文中,筆者并沒有提供該模型批量化使用的具體執行細節,假如你理解了這個模型構建的邏輯,那么你可以使用SQL、Python,甚至是Excel來實現它。

此外,在實踐中,這個模型最好是分不同的用戶群進行運行。在本文中,筆者僅僅在某一類用戶上運行,然而,根據不同的標準來劃分用戶群體會對實際業務更有意義。比如,你可以根據用戶價值進行劃分,然后對每個用戶子群體進行用戶流失預測。

當然,筆者只是在月份的尺度上進行用戶流失分析,但是,對于很多業務場景,更細粒度的分析視角可能更有意義,比如按周和按天。

最后,以《神雕俠侶》中的一段話作結,我想,感悟到數學之美、不受分析工具的限制,并能靈活運用到實際業務中的感受大抵如此:

過了良久,青衣人又將巨劍放下,去取第三柄劍,那卻是一柄木劍,落在手中輕若無物,但見劍下的石刻道:

“四十歲后,不滯于物,草木竹石均可為劍。自此精修,漸進于無劍勝有劍之境!”

參考資料:

1.維基百科“Customer ChurnRate”詞條

2.維基百科“貝葉斯定理”詞條

3.PredictingChurn without Machine Learning

#專欄作家#

蘇格蘭折耳喵,微信公眾號:Social Listening與文本挖掘,人人都是產品經理專欄作家。數據PM一只,擅長數據分析和可視化表達,熱衷于用數據發現洞察,指導實踐。

本文原創發布于人人都是產品經理。未經許可,禁止轉載。

題圖來自PEXELS,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. “在這里,n是連續不活躍月份數的極限值,而我們發現,這個概率是穩定的。從上面的表單里可以到,這個發生在第7個連續的月份,這里的概率值維持在95~96%?!笨床欢?為何要取7 概率穩定就取7?如果取的是 最末三個月的呢?還是根據“穩定”來取 n?

    來自廣東 回復
  2. 最末四個月的均值(即P(1)=19%,P(2)=81%,……..),應該已經是條件概率了吧?19%是“上個月活躍的用戶中,第二個月未活躍的占比”,81%是“上個月連續一個月未活躍的用戶中,第二個月連續兩個月未活躍的占比”。并不是文中說的“連續X個月未活躍”的概率。

    來自上海 回復
    1. 道理同

      來自廣東 回復
  3. 在這里,n是連續不活躍月份數的極限值,而我們發現,這個概率是穩定的。從上面的表單里可以到,這個發生在第7個連續的月份,這里的概率值維持在95~96%。

    這句沒看懂…

    來自北京 回復
  4. 感謝分享
    有幾點我覺得可以一起討論
    1、這個算法在工程上的實現,貌似比機器學習還要復雜。在MODELER里用決策樹進行實現,也只需要完成文章所述第一步的數據準備,也就是用戶行為統計這一步,就可以使用決策樹算法進行建模了
    2、使用決策樹的方法,其實跟上述的原理類似,機器學習本身也是基于統計的。不同的點在于,本文只能說明用戶連續N個月不活躍而流失的概率,而決策樹可以把“不活躍”這一特征拆開了揉碎了來告訴我們客戶流失的概率

    來自廣東 回復
    1. 機器學習不是每個人都會的,學習成本很高。我介紹的方式的主要目的在于重拾以前學的數學知識,靈活運用到工作場景中,可操作性強。

      來自上海 回復
  5. “筆者想獲得最具代表性的數值,由此可以對“分析窗口”的最末4個月(9月,10月,11月和12月)取平均值?!边@里不太明白,為什么要這么取呢?

    來自北京 回復
    1. 取用戶占比的均值,最末四個月在縱軸上的覆蓋長度最長,對它們取均值具有代表性

      回復
    2. 請問,“最末四個月在縱軸上的覆蓋長度最長”這個覆蓋長度具體指什么呢?

      來自上海 回復
    3. “連續不活躍月份數”,你試著從縱軸方向上來看

      來自上海 回復
  6. 后面的公示 我是看服了

    來自湖北 回復
  7. 學習了

    來自吉林 回復