1. 程式人生 > >不會機器學習,你照樣可以預測使用者流失

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

0?wx_lazy=1

———— / BEGIN / ————

什麼是使用者流失率?

我們為什麼需要關注使用者流失率?

簡單來說:

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

?wxfrom=5&wx_lazy=1

一般來說,這個指標用在“訂閱型產品”的情形居多,如資訊訂閱類App“錘子閱讀”、絕大多數的線上SaaS產品,甚至傳統的牛奶訂購。

由於留住當前的使用者要比獲取新使用者來的划算,所以預測流失率的目標在於:

預測使用者將會在哪個時間點離開(在訂閱期結束前),在合適的時間點對這些使用者施加影響,挽留他們。

如通過簡訊、郵件或APP,利用超低價商品吸引回訪或者專屬優惠券等,這些策略對於一些流失使用者是很有效的!

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

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

一、使用者活躍的操作性定義

在我們正式開始預測使用者流失率之前,我們需要記錄使用者的歷史活躍情況。

做這個的目的在於:瞭解使用者是否在使用我們的產品或服務。

那麼,問題就來了:使用者的“活躍”該做怎樣的操作性定義(即根據可觀察、可測量、可操作的特徵來界定變數含義的方法)?

實際上,“使用者活躍”的定義取決於你的業務背景,跟產品或者服務具體場景密切相關,不同型別的產品對“使用者活躍”有不同的定義。

以新浪微輿情的“資訊監測”為例,它是一款訂閱型的社會化大資料產品,使用者通過設定各種關鍵詞組合來檢索相關資訊,然後選擇郵件或者客戶端訂閱,通過自定義的接收頻次來準時收取訂閱資訊。

?

?

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

  • 該使用者對“資訊監測”的訂閱尚未過期;

  • 該使用者在web端或者移動端登入產品頁面;

  • 該使用者使用了產品的部分或全部功能,如基於資訊源或者地域的定向監測功能;

  • 該使用者在此期間產生了一定消費,如文字資料下載、訂閱續費、定製報告等;

  • 該使用者在此期間對該產品有各種反饋,包括投訴。

    ……

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

一旦清晰的界定了“使用者活躍”的定義,我們就可以用這些操作性定義來對每個月份的使用者(不)活躍情況進行編碼,利用二進位制值(0,1)。

假如在X月份,使用者是活躍的,將ta的活躍值設定為1,否則設定為0。

二、建立“使用者不活躍檔案”

現在,對於每位使用者,我們有了一個以月為單位的“活躍標記”,接下來我們以此為基礎,建立起“使用者不活躍檔案”。

這意味著:對於每個使用者,筆者想對他們連續不活躍的月份數進行計數統計。

在這裡,筆者選擇了一年的“分析視窗”(也就是把12個月作為分析的時間範圍),將“活躍檔案”和“不活躍檔案”以表格的形式呈現:

  • 藍色表單顯示每位使用者在各個月份上的活躍記錄

  • 綠色表單則顯示使用者的不活躍記錄。

根據使用者在此時間段內可能出現的活躍情形,筆者枚舉出3種典型使用者,如下表所示:

?

?

使用者A

該使用者在剛進入“分析視窗”時是活躍的,然而在5月變得不活躍(也就是說,5月份是第一個不活躍的月份)。接下來,這個使用者的不活躍狀態持續到了12月,也就一直持續到了“分析視窗”的末尾。

因此,從5月到12月,“使用者不活躍檔案”對使用者連續不活躍的月份進行逐月累加的計數統計。

使用者B

跟使用者A一樣,該使用者剛開始也是活躍的。

不同的是:該使用者在3~6月期間是不活躍的,在7月僅維持了一個月的活躍狀態, 接著在8月和9月又進入不活躍狀態,最後在“分析視窗”的10月,11月和12月又回到活躍狀態。

在這種情況下,每當使用者由不活躍狀態返回活躍狀態時,前面的不活躍月份計數需要重置。

也就是說:當我們再次對該使用者的連續不活躍月份進行計數時,需要重新從1開始計數,前面的不活躍月份計數不再累加。

使用者C

與上述提及的兩類使用者不同,該使用者剛進入“分析視窗”時,是不活躍的狀態。

這種情形的發生:可能是使用者的訂閱早已過期(最好在正式分析前排除這種情形,因為很難處理),或者該使用者在“分析視窗”開始前就是不活躍的——因為我們看不到“分析視窗”前的使用者活躍情況,所以使用者在此之前的活躍狀態,我們是不瞭解的。

鑑於此狀況,我們對這些月份進行特殊的標記——使用-1標記使用者C頭幾個不活躍的月份。

該使用者其他的不活躍情形,可以參照前面兩類使用者方式進行計數。

Note:

後面綠色的表單,也就是“使用者不活躍檔案”,才是我們接下來建立使用者流失模型的資料基礎。

三、構建使用者流失模型

有了上述的關於使用者不活躍的操作性定義,我們就可以在“分析視窗”內(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月份)——在這種情況下,我們取所有可用數值的平均值(用於計算平均值的數值區域以紅色線框標記):

?

四、計算使用者流失概率

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

讓我們回顧一下本文的終極目標:計算各個連續不活躍月份數(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

?

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

?

請注意:

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

最後,我們還可用一條流失率曲線來直觀的反映流失率的變化情況,由此決定對非活躍使用者進行挽留操作的最佳時機。

該曲線所下圖所示:

?

五、結語

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

此外,在實踐中,這個模型最好是分不同的使用者群進行執行。

在本文中,筆者僅僅在某一類使用者上執行;然而,根據不同的標準來劃分使用者群體會對實際業務更有意義。

比如,你可以根據使用者價值進行劃分,然後對每個使用者子群體進行使用者流失預測。

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

最後,以《神鵰俠侶》中的一段話作結。

我想,感悟到數學之美、不受分析工具的限制,並能靈活運用到實際業務中的感受大抵如此:

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

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

參考資料:

  • 維基百科“Customer ChurnRate”詞條

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

  • PredictingChurn without Machine Learning

  • 新浪微輿情“資訊監測”

———— / END / ————

?

專注解決大學生和職場新人產品就業問題
從0到1構建產品知識體系,一線名企內推,100%保障就業!

點選“閱讀原文”詳細瞭解