胡艷芳,熊 文,高 煒
(云南師范大學(xué)信息學(xué)院,云南 昆明 650500)
隨著移動互聯(lián)網(wǎng)和智能終端的普及,國內(nèi)游戲市場已經(jīng)進入存量競爭階段,手機游戲行業(yè)的從業(yè)者面臨著前所未有的競爭。一方面,由于從業(yè)者版權(quán)意識薄弱,導(dǎo)致公司之間相互抄襲,游戲同質(zhì)化競爭嚴重。另一方面,無線互聯(lián)網(wǎng)的發(fā)展已經(jīng)進入穩(wěn)定期,新用戶的獲取成本不斷攀升。因此,部分敏銳的游戲公司開始調(diào)整方向,把對存量用戶的服務(wù)放在首要位置。如何深入地了解用戶需求,推動產(chǎn)品升級迭代,執(zhí)行精細化的市場策略,減緩或阻止用戶流失成為運營者面臨的首要問題。
如何在游戲用戶的日常行為數(shù)據(jù)中挖掘有價值的知識和信息,來支持游戲平臺的運營決策,研究者們已經(jīng)進行了大量行之有效的探索。這些探索可以分為3個方面。
(1)特征的選擇與提取方面:魏玲等[1]通過直方圖檢驗與卡方檢驗確定影響用戶流失的特征變量。舒文麗等[2]引入二次特征提取的方法,從多個維度描述用戶體驗和行為,并針對多個維度分別建模,以提高流失與非流失用戶體驗的區(qū)分度。鄭杰文[3]通過使用激活擴散算法提取用戶相關(guān)性特征來提高預(yù)測性能,并結(jié)合用戶之間的相關(guān)性統(tǒng)計和特征的相對重要性來證實用戶相關(guān)性的作用。Kamya等[4]提出了一個基于特征提取的流失預(yù)測模型,該模型側(cè)重于具有顯著流失能力的最相關(guān)特征的使用。
(2)分類器的設(shè)計與選擇方面:鄭杰文[3]提出了基于Spark平臺的Mini-Batch BP神經(jīng)網(wǎng)絡(luò)分布式算法來改善2種傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)算法的性能,從而減少訓(xùn)練時間。桂昂稀[5]基于gcForest深度森林算法搭建用戶流失預(yù)測模型,并與常見的機器學(xué)習(xí)算法進行對比,得到基于gcForest深度森林算法的用戶流失預(yù)測模型優(yōu)于傳統(tǒng)機器學(xué)習(xí)算法的結(jié)論。陳林輝[6]使用機器學(xué)習(xí)算法構(gòu)建了一個用戶流失預(yù)測模型,對與用戶流失相關(guān)的數(shù)據(jù)進行訓(xùn)練。魏玲等[1]提出了基于改進RFM(Recency Frequency Monetary)與GMDH(Group Method of Data Handing)算法的用戶流失預(yù)測。Shirazi等[7]提出利用大數(shù)據(jù)構(gòu)建用戶流失預(yù)測模型。Olasehinde等[8]調(diào)用大數(shù)據(jù)分析工具Spark中的隨機森林分類器與普通的隨機森林分類器進行對比,發(fā)現(xiàn)Spark結(jié)合隨機森林分類器的計算性能更好。
(3)不平衡分類問題方面:桂昂稀[5]基于EasyEnsemble算法的思想,將SMOTE(Synthetic Minority Over-sampling TEchnique)算法和ENN(Edited Nearest Neighbor)算法融合到gcForest算法框架之中,提出了OSEEN-gcForest算法,得到了更優(yōu)越的性能。吳悅昕等[9]在流失預(yù)測中使用了基于采樣法的不平衡數(shù)據(jù)處理策略,并對現(xiàn)有主要的幾種采樣算法進行了對比實驗和分析。
但是,隨著游戲平臺和用戶規(guī)模的擴大,游戲平臺產(chǎn)生的數(shù)據(jù)成指數(shù)級增長,海量的用戶行為日志也源源不斷地產(chǎn)生,傳統(tǒng)的數(shù)據(jù)分析工具已經(jīng)不能滿足游戲平臺大規(guī)模數(shù)據(jù)的存儲和分析需求。本文借助Spark大數(shù)據(jù)計算引擎,基于一個超大規(guī)模的真實游戲用戶日志數(shù)據(jù)集,對游戲用戶的流失情況進行了預(yù)測。首先,在游戲用戶行為日志中分別抽取靜態(tài)特征和動態(tài)特征;然后,對這些特征進行重要性計算和選擇;最后,用隨機森林RF(Random Forest)[10]等經(jīng)典算法對挑選出的特征進行建模,模型以一組特征作為輸入,流失與否作為輸出。具體來講,本文的貢獻如下:
(1)提出了一種基于集成學(xué)習(xí)的游戲用戶流失預(yù)測方法,從用戶信息和行為日志數(shù)據(jù)中構(gòu)建靜態(tài)特征和動態(tài)特征并根據(jù)相關(guān)性對特征進行選取?;谶x取的特征,使用隨機森林分類器構(gòu)建二分類預(yù)測模型,實現(xiàn)對游戲用戶的流失預(yù)測。
(2)系統(tǒng)地評估了隨機森林、支持向量機SVM(Support Vector Machine)[11]、多層感知機MLP(Multi-Layer Perceptions)[12]、梯度提升決策樹GBDT(Gradient Boost Decision Tree)[13]、邏輯回歸LR(Logistic Regression)[14]和分類回歸樹CART(Classification And Regression Tree)[15]等經(jīng)典算法,發(fā)現(xiàn)隨機森林的預(yù)測精度最高,預(yù)測準確率達到了91%,如果將用戶進一步細分,預(yù)測精度可以達到93%。
某在線平臺開發(fā)并運營了近百款地方游戲,包括斗地主、打麻將和棋類等益智類游戲。用戶通過手機和平板等移動終端參與游戲互動,游戲公司后臺采集并存儲用戶的行為數(shù)據(jù)。截止到2021年12月底,該游戲平臺的全球注冊用戶數(shù)超過了1 600萬,日活躍用戶數(shù)超過了100萬,最高同時在線用戶超過了10萬。面對不斷增長的數(shù)據(jù)量,游戲公司的IT部門通過構(gòu)建大數(shù)據(jù)平臺來滿足數(shù)據(jù)的存儲和分析需求。運營部門借助大數(shù)據(jù)技術(shù)和數(shù)據(jù)挖掘技術(shù)來精細化市場營銷。如何識別流失用戶的特征,構(gòu)建流失預(yù)測模型,通過營銷策略阻止和緩解游戲用戶的流失成為運營部門面臨的首要問題。圖1是該平臺2020年8月份到2021年3月份共8個月的用戶流失數(shù)目。由圖1可以看出,該游戲平臺的用戶流失情況嚴重,尤其在2021年的2月和3月流失用戶數(shù)猛增。

Figure 1 Number of churn users per month
針對該平臺用戶數(shù)量龐大,用戶流失情況嚴重的問題,市場營銷一直試圖解決該問題,導(dǎo)致費用居高不下。本文借助Spark平臺實現(xiàn)了大規(guī)模的數(shù)據(jù)處理、對流失用戶的特征進行分析,并結(jié)合隨機森林算法對游戲用戶進行了流失預(yù)測,從而為游戲運營商提供決策支持。
定義1(包房) 游戲是在包房里進行的,用戶需要創(chuàng)建包房或進入包房。
定義2(注冊包ID) 運營商將游戲安裝包放在不同的平臺供用戶下載注冊,每個平臺的安裝包有其特有的ID。運營商可根據(jù)用戶的注冊包ID判斷該用戶來自哪個平臺。
定義3(特征) 在本文中指用戶的屬性,比如游戲局數(shù)、登錄天數(shù)和游戲時長等。
定義4(標記) 在本文中將用戶標記為流失用戶和未流失用戶。
定義5(分類器) 對樣本進行分類的算法的統(tǒng)稱。
定義6(club) 親友圈的代稱。親友圈的功能是借助其特有的機制幫助圈內(nèi)的親戚和朋友更好地進行游戲互動和交流。
本文方法包括數(shù)據(jù)預(yù)處理、特征構(gòu)造與選擇、游戲用戶流失預(yù)測和應(yīng)用4個部分,如圖2所示。

Figure 2 The proposed method
首先,對數(shù)據(jù)進行預(yù)處理,去掉缺失值和異常值,將多個表連接起來進行數(shù)據(jù)整合。其次,進行特征構(gòu)造和選擇,初步確立特征和標記。本文將用戶一個月不玩游戲定義為流失,流失的標記為“1”,不流失的標記為“0”。初步選取了用戶的靜態(tài)特征和動態(tài)特征。最后,將標記和特征組合起來,得到字段如表1所示的樣本數(shù)據(jù)。

Table 1 Preliminary sample data
在確定好特征和標記后,單獨對每個特征和標記進行相關(guān)性檢驗,并根據(jù)檢驗結(jié)果進行二次特征選擇。接下來,針對含有特征和標記的樣本集構(gòu)建隨機森林模型,對游戲用戶進行流失預(yù)測。
下一步,分4種情況對流失用戶進行特征可視化分析,分別是:流失用戶整體、流失用戶中的新用戶、流失用戶中的中間用戶、流失用戶中的老用戶。其中,將注冊時長小于6個月的用戶定義為新用戶、注冊時長在6~32個月的用戶定義為中間用戶,注冊時長大于或等于32個月的用戶定義為老用戶。將這4個數(shù)據(jù)源的特征可視化結(jié)果進行對比分析,觀察特征分布有何不同。
最后,將預(yù)測結(jié)果和可視化結(jié)果反饋給游戲運營商,為其提供決策支持。
本文選用了Point-biserial[16]相關(guān)性檢驗。Point-biserial相關(guān)性檢驗通常用于檢驗連續(xù)變量和二元分類變量的相關(guān)性,其公式如式(1)所示:
(1)
其中,A1表示二元分類變量中的“1”對應(yīng)的連續(xù)變量的均值;A0表示二元分類變量中的“0”對應(yīng)的連續(xù)變量的均值;Sn表示連續(xù)變量的標準偏差;p表示二元分類變量中“1”在總的變量中的比例;q表示二元變量中“0”在總的變量中的比例。
相對于其它算法,隨機森林在處理大數(shù)據(jù)集時表現(xiàn)更好,并且對于不平衡的數(shù)據(jù)集來說,隨機森林可以平衡誤差且模型泛化能力強、訓(xùn)練速度快。隨機森林工作原理如圖3所示。假設(shè)從含有特征和標記信息的數(shù)據(jù)中選出的訓(xùn)練集為S,該訓(xùn)練集包括N個樣本,M個特征。隨機森林的工作流程如下所示:

Figure 3 Schematic diagram of random forest
步驟1每次有放回地從訓(xùn)練集S中隨機抽取1個樣本,抽取N次,得到樣本集S1。
重復(fù)執(zhí)行步驟1,得到S2,S3,…,SK。
步驟2隨機從T1決策樹的屬性集中抽取一個有m個屬性的子集a,再從a中選擇一個最優(yōu)的劃分屬性。對決策樹T2,T3,…,TK重復(fù)執(zhí)行步驟2。
步驟3以投票法作為結(jié)合策略,得到最后的預(yù)測結(jié)果。
本文研究需要同時考慮查全率P和查準率R,所以選擇了查準率-查全率曲線(P-R曲線)圖[17]、受試者工作特征ROC(Receiver Operating Characteristic)圖[18]、ROC曲線下的面積AUC(Area Under Curve)[19]及Fβ值[20]作為模型的評估標準。在介紹P-R曲線圖、ROC曲線圖、AUC及Fβ之前,先介紹幾個概念:真正例(True Positive)、假正例(False Positive)、真反例(True Negative)和假反例(False Negative)。通常借助表2的混淆矩陣[20]來理解這幾個概念。

Table 2 Confusion matrix of classification results
式(2)~式(5)分別是查準率P、查全率R、真正例率TPR和假正例率FPR的計算公式:
(2)
(3)
(4)
(5)
P-R曲線圖的橫軸和縱軸分別是查全率和查準率。預(yù)測模型的查全率和查準率在P-R曲線圖上能被直觀地展現(xiàn)出來。如果預(yù)測模型A的P-R曲線被預(yù)測模型B的P-R曲線完全“包住”,說明預(yù)測模型B的性能比預(yù)測模型A的性能好。
ROC圖的橫軸是假正例率,縱軸是真正例率。如果預(yù)測模型A的ROC曲線被預(yù)測模型B的ROC曲線完全“包住”,說明預(yù)測模型B的性能比預(yù)測模型A的性能好。
除了用P-R曲線圖、ROC圖和AUC值以外,本文還采用了Fβ進行度量。Fβ的計算公式如式(6)所示:
(6)
其中,β>0表示查全率對查準率的相對重要性;β=1時退化為標準的F1;β>1時查全率有更大的影響;β<1時,查準率有更大的影響。本文方法希望盡可能少地漏掉流失用戶,因此查全率更重要。
(1)實驗環(huán)境硬件配置如表3所示。

Table 3 Hardware configuration of experimental environment
(2)實驗環(huán)境軟件配置如表4所示。
Spark MLlib作為Spark的核心組件之一,是Spark對常用機器學(xué)習(xí)算法的實現(xiàn)庫。本文在Spark平臺實現(xiàn)數(shù)據(jù)預(yù)處理及樣本數(shù)據(jù)的生成,借助Spark MLlib構(gòu)建預(yù)測模型。同時,為了更直觀地將6個算法的對比效果展現(xiàn)出來,本文實驗借助Python進行可視化。

Table 4 Software configuration of experimental environment
本文研究是基于某游戲平臺的真實游戲用戶數(shù)據(jù)來進行的。實驗數(shù)據(jù)包括從2020年7月至2021年4月共10個月的用戶信息,數(shù)據(jù)集大小為420.3 GB,其中,用戶有300萬左右。為了盡可能全面地了解用戶行為特點,初步選取了可能與用戶流失相關(guān)的所有字段,如表5所示。

Table 5 Preliminary selected fields
Point-biserial函數(shù)是用來檢驗連續(xù)變量和二元分類變量之間的相關(guān)性。在本文的數(shù)據(jù)集中,標記是二分類變量;登錄天數(shù)、注冊時長、游戲總局數(shù)、去過的包房數(shù)、游戲總時長、所在club的總局數(shù)、所在club的游戲總時長和用戶年齡是連續(xù)變量,所以選擇Point-biserial函數(shù)進行相關(guān)性檢驗。由于性別是二分類變量,packageID是無序變量,在自變量是二分類的情況下,暫時沒有找到可以檢驗的方法,所以這2個變量不加入相關(guān)性檢驗。
本文調(diào)用了scipy.stats.pointbiserialr(x,y)函數(shù)計算點雙線相關(guān)系數(shù),也就是計算2個變量之間的關(guān)系。點雙線相關(guān)系數(shù)的取值在[-1,1],當(dāng)值是0時,表明沒有相關(guān)性;取值越靠近1或-1,表明相關(guān)性越強。表6是標記與各個特征的相關(guān)性檢驗結(jié)果。

Table 6 Correlation test results
從表6可以看出,這幾個特征都與標記具有一定的相關(guān)性。其中,登錄天數(shù)、去過的包房數(shù)、游戲總局數(shù)和游戲總時長這幾個特征與標記有超過0.2的負相關(guān)關(guān)系。但整體來看,這幾個特征與結(jié)果的相關(guān)性都比較弱,考慮到多個因素共同作用對結(jié)果產(chǎn)生影響的情況,此處繼續(xù)保留所有特征。
對流失用戶的特征進行可視化分析,得到流失用戶的特征分布,能幫助游戲運營商進行運營策略的調(diào)整??梢暬卣靼ǎ耗挲g、性別、注冊包ID流失率、登錄天數(shù)、注冊時長、總的游戲局數(shù)、去過的包房數(shù)、游戲總時長、所在club的游戲總時長和所在club的游戲總局數(shù)。
本文對2020年8月至2021年3月間的流失用戶數(shù)據(jù)進行有放回抽樣,共得到21 430名流失用戶。本文將其分為4種情況進行特征分析,分別是:全部流失用戶、流失用戶中的新用戶、流失用戶中的中間用戶和流失用戶中的老用戶。其中,每種情況下注冊包ID的流失率為ML/NL,其中,ML表示該情況下的注冊包ID對應(yīng)的流失用戶數(shù)目,NL表示該情況下的流失用戶總數(shù)。下面選取了幾個可視化效果比較有特點的特征進行展示。
(1)流失用戶年齡分布。
圖4是流失用戶的年齡分布圖。由圖4可以看出,4種情況下的流失用戶的年齡分布情況基本相同。其中,年齡段在28~33歲的流失人數(shù)最多,基于現(xiàn)實因素的考慮,游戲玩家的年齡主要是集中在23~43歲,28~33歲的人們多數(shù)會偏重于家庭和工作,由此造成了用戶的流失。運營商可以針對這部分人群采取一定的營銷措施,比如在下班后或周末時間針對這部分用戶進行一定的營銷活動,從而達到挽回流失用戶的目的,提高游戲運營的效益。

Figure 4 Age distribution of churn users
(2)注冊包ID的流失率。
圖5是注冊包ID的流失率分布圖。從圖5可以看出,整體情況下,流失率在40%及以上的注冊包ID有10003、10011和10037。其中,新用戶中流失率比較嚴重的注冊包ID是10003和10033;中間用戶中流失率比較嚴重的是10011和10037;老用戶中流失率比較嚴重的是10037。對于流失情況嚴重的注冊包ID,說明通過這幾個ID注冊的用戶質(zhì)量較差,由此運營商可以減少在這幾個注冊包ID所在平臺的廣告投放量,降低游戲的運營投入。

Figure 5 Chrun rate of registration package ID
(3)所在club的游戲總時長。
圖6是流失用戶所在club的游戲總時長分布。圖6中,4種情況下的流失用戶所在club的游戲總時長分布情況基本相同,都分布在[0,4.17]和[66.67,79.17]??梢钥闯?,流失用戶所在的club的游戲時長要么過短要么過長,從側(cè)面說明club的游戲時長過短或過長都會導(dǎo)致club中的用戶流失。所以,運營商應(yīng)該多關(guān)注游戲時長過短或者過長的club,并采取措施對這些club中的用戶進行挽留。

Figure 6 Distribution of total game duration of churn users’ club
通過可視化分析可以得出如下結(jié)論:
(1)流失用戶的年齡、登錄天數(shù)、游戲總局數(shù)、去過的包房數(shù)、游戲總時長、所在club的總時長和所在club的總局數(shù)等特征在4種情況下的分布幾乎一致;注冊包ID和性別的分布稍微有點不同,造成這種情況的原因可能是因為游戲公司設(shè)定了注冊包ID默認的注冊性別。
(2)登錄天數(shù)、去過的包房數(shù)、游戲總時長和游戲總局數(shù)等幾個特征與流失用戶的人數(shù)成一定的反比;年齡、性別、注冊包ID、注冊時長、所在club的游戲總時長和所在club的游戲總局數(shù)等幾個特征的分布特點各不相同。通過與前面的相關(guān)性檢驗比較發(fā)現(xiàn),可視化結(jié)果與相關(guān)性檢驗結(jié)果所得的結(jié)論一致,可視化分析可以更直觀地看到這些特征對用戶流失的影響。
預(yù)測模型的評估部分使用的是相同的訓(xùn)練集和測試集。訓(xùn)練集和測試集是按k折交叉驗證法進行劃分的。圖7是在相同的訓(xùn)練集和測試集下,支持向量機(SVM)、隨機森林(RF)、邏輯回歸(LR)、多層感知機(MLP)、梯度提升決策樹(GBDT)和分類回歸樹(CART)等6種常見算法的ROC曲線及AUC值。從圖7可以看出,梯度提升決策樹、邏輯回歸和隨機森林三者的表現(xiàn)相差不大。其中,隨機森林算法的ROC曲線面積,即AUC值,最大達到了0.875 7,表現(xiàn)最好。

Figure 7 ROC curves and AUC values of six algorithms
圖8是將全部數(shù)據(jù)放入在Spark平臺構(gòu)建的各個分類模型的Fβ值,可以看出,在β取值0.5,1.0和1.5時,梯度提升決策樹、多層感知機、邏輯回歸、隨機森林和支持向量機的表現(xiàn)相差不大。其中,隨機森林的Fβ值都是最高的,即隨機森林算法在本文中表現(xiàn)最好。

Figure 8 Fβvalues of six algorithms
圖9是隨機森林算法在流失用戶整體、流失用戶中的新用戶、流失用戶中的中間用戶、流失用戶中的老用戶這4種情況下的P-R曲線圖。從圖9可以直觀地看出預(yù)測方法在4種情況下的查全率和查準率。通過對圖中P-R曲線進行對比分析,可以看出將用戶分為新用戶、中間用戶和老用戶之后,隨機森林算法的查全率和查準率都得到了很大的提升。

Figure 9 P-R curves of random forest algorithm in four cases
圖10是統(tǒng)一取β=1.5時4種情況下隨機森林算法的Fβ值,可以看出,把用戶分情況用隨機森林算法建模以后,可以提高部分情況下的Fβ值。

Figure 10 Fβ values of random forest algorithm in four cases
同時,從圖10可以看出,在沒有對用戶進行劃分的情況下,F(xiàn)β值已經(jīng)到達91%,但從表6 相關(guān)性檢驗結(jié)果上看,各個特征的相關(guān)性都比較弱,這里可以進一步說明用戶流失受到了多個因素影響。
本文以一個大規(guī)模的真實網(wǎng)絡(luò)游戲用戶日志數(shù)據(jù)集為基礎(chǔ),借助Spark大數(shù)據(jù)處理平臺和機器學(xué)習(xí)算法,對游戲用戶流失情況進行建模和預(yù)測,并對流失用戶的特征進行了系統(tǒng)分析。在數(shù)據(jù)處理過程中,使用Spark SQL對數(shù)據(jù)進行了預(yù)處理,完成了特征的選擇和樣本的生成;使用Spark MLlib算法庫中的經(jīng)典算法進行建模。實驗結(jié)果顯示,隨機森林算法在此次預(yù)測中表現(xiàn)最佳,預(yù)測精確度達到了91%。
本文還可以從以下2個方面開展進一步的研究:
(1)改進用戶的分類方法,以替代目前的靜態(tài)劃分方法。使用用戶特征進行聚類,并為每種類型的用戶進行建模和預(yù)測,以進一步提升預(yù)測模型的精確性。
(2)本文在選擇最優(yōu)預(yù)測模型時,只選擇了ROC、AUC值及Fβ值作為評價指標,下一步可考慮將模型的訓(xùn)練成本納入評價指標,結(jié)合預(yù)測模型的實際部署環(huán)境,全方位評價各種模型。