99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀以數(shù)據(jù)挖掘技術(shù)預(yù)測用戶流失情況的方法
以數(shù)據(jù)挖掘技術(shù)預(yù)測用戶流失情況的方法
2016-09-23
收藏

數(shù)據(jù)挖掘技術(shù)預(yù)測用戶流失情況的方法

所有網(wǎng)絡(luò)服務(wù)及在線游戲的硬傷是什么?也就是游戲開始頭幾分鐘或幾小時(shí)內(nèi)出現(xiàn)的大量用戶流失情況。已經(jīng)有不少人通過多種方式探索這個(gè)問題的解決之道,其中多由界面的易用性和簡潔性,免費(fèi)試玩模式的有效性,難度曲線,以及新手教程質(zhì)量等方面入手。這些都是公認(rèn)的重要考慮因素。

而我們的目標(biāo)是研究新用戶為何早早退出游戲,并嘗試預(yù)測哪些用戶會(huì)提前離開。在此,我們以MMOPRG游戲《永恒之塔》為研究案例,但其研究結(jié)果也適用于多種服務(wù)和游戲類型。雖然這款游戲在調(diào)查期間是一款純訂閱游戲,并采用7天免費(fèi)試玩至20級(jí)的模式,多數(shù)流失用戶還不到付費(fèi)階段就已經(jīng)離開游戲。我們主要研究的是促使用戶離開的游戲內(nèi)部因素。

AION(from aiongamers.com)

行為研究表明,休閑玩家的注意力很有限。他們可能今天離開游戲,明天甚至就想不起來自己曾安裝并玩過這款游戲。如果玩家離開游戲,我們就得立即采取措施讓他們返回游戲。

但究竟該如何區(qū)分那些只是有事暫時(shí)無法登錄游戲的玩家和真正的休閑玩家?最理想的方式恐怕就是在玩家仍在玩游戲時(shí),就提前預(yù)測他們離開游戲的可能性——這種預(yù)測甚至要早于他們產(chǎn)生離開游戲的念頭。

我們的目標(biāo)很現(xiàn)實(shí)——在新玩家登錄游戲當(dāng)天就預(yù)測他們離開的概率。我們將7天處于非活躍狀態(tài)的玩家定義為流失用戶,目的并不是等待7天結(jié)束,確認(rèn)玩家不會(huì)重返游戲,而是在他們最后一天玩游戲時(shí)預(yù)測其流失可能性。

技術(shù)支持

我們已經(jīng)掌握大量數(shù)據(jù)。所幸《永恒之塔》這款韓國網(wǎng)游擁有理想的記錄系統(tǒng),它幾乎可以追蹤玩家每一步操作,支持查詢玩家前10級(jí),或者10小時(shí)內(nèi)的玩游戲數(shù)據(jù),可以鎖定50%以上的早期流失用戶。

我們使用的是兩個(gè)Dual Xeon E5630 blades,它們都運(yùn)行MS SQL 2008R2,其中一者作為數(shù)據(jù)倉庫使用,另一個(gè)作為MS Analysis Services。我們只使用標(biāo)準(zhǔn)的微軟BI軟件棧。

第1階段:誤認(rèn)為自己無所不知

身為富有經(jīng)驗(yàn),并且經(jīng)歷100多次測試的游戲設(shè)計(jì)師,我確信自己的能力足以解答所有關(guān)于用戶流失的問題。玩家若不知如何在游戲世界中進(jìn)行超時(shí)空傳送,他可能就會(huì)退出游戲。首個(gè)敵人帶來的致命一擊,也可能讓他退出。《永恒之塔》擁有絕妙的視覺效果,技術(shù)也很過硬,但卻并不是一款適合新玩家的游戲。

所以我就先扮演“普通玩家”,在游戲試玩期中體驗(yàn)了兩個(gè)種族的不同職業(yè),詳細(xì)記錄了游戲玩法中的問題,并初步假設(shè)以下因素可能導(dǎo)致用戶流失:

*種族和職業(yè)。我認(rèn)為這是最主要的因素,因?yàn)榘l(fā)揮輔助作用的祭司的游戲玩法與強(qiáng)大的法師截然不同,這會(huì)影響玩家的游戲樂趣。

*玩家是否嘗試過俄羅斯運(yùn)營商Innova代理的其他游戲?(Innova游戲使用的是同一個(gè)帳號(hào))

*玩家在不同程度和職業(yè)中嘗試過多少個(gè)角色?

*玩家在試玩期間每個(gè)等級(jí)以及總體游戲過程中的死亡情況。

*與其他玩家的組隊(duì)情況(包括高級(jí)和低級(jí)玩家)。

*玩家接收到的郵件及加入公會(huì)情況(以此檢測是否存在鐵桿玩家所掌握的“小號(hào)”)。

*每個(gè)等級(jí)及整個(gè)過程中完成的任務(wù)。

*在戰(zhàn)斗中使用的技能種類。

這個(gè)列表描述了許多可能導(dǎo)致玩家離開游戲的因素。

我們的第一個(gè)數(shù)據(jù)挖掘模型的理念很簡單,就是將布爾型變量視為一個(gè)離開用戶,它可以指出用戶今天會(huì)離開游戲,還是繼續(xù)在游戲中逗留一段時(shí)間:

Data Mining Lift Chart(from gamasutra)

以上圖表底部直線是一個(gè)簡單的隨機(jī)猜測。上方飆升的線段命名為The Transcendent One,它代表未來情況。這兩者間有一個(gè)波動(dòng)線段,代表我們的數(shù)據(jù)挖掘模型。我們的線段越接近The One,就說明預(yù)測結(jié)果越準(zhǔn)確。這個(gè)圖表主要針對第7級(jí)用戶,但對第2至9級(jí)的玩家來說并無差別。

不幸的是,從中可以看出,我們的首個(gè)模型就像是拋硬幣看正反面來預(yù)測未來情況。所以我們需要抽取其他假設(shè)進(jìn)行分析:

Data Mining Lift Chart (from gamasutra)

現(xiàn)在情況略有好轉(zhuǎn),但預(yù)測的準(zhǔn)確性僅超過50%,誤報(bào)率仍然達(dá)到了驚人的28%。

注:準(zhǔn)確率越高,這個(gè)模型檢測到的真實(shí)流失用戶也就越多。誤報(bào)率是指將某些玩家預(yù)測為流失用戶,而實(shí)際上并非如此。

第1階段結(jié)果:我所有的初步想法都錯(cuò)了。

第2階段:發(fā)現(xiàn)自己完全是新手

第一個(gè)也是最簡單的數(shù)據(jù)挖掘算法就是Naive Bayes(樸素貝葉斯分類器),它極具人性化并且通俗易懂。但它表明原先的假設(shè)參數(shù)無法與真實(shí)的流失用戶對應(yīng)。第二種方法是Decision Trees(決策樹),它指出我的一些想法確實(shí)很管用,但并不足以最大化提升預(yù)測準(zhǔn)確率。

數(shù)據(jù)挖掘算法知識(shí):Naive Bayes在初步數(shù)據(jù)集分析以及指出參數(shù)之間關(guān)聯(lián)性這方面作用很大,Decision Trees則擅長將數(shù)據(jù)集歸納為不同的子集,有利于區(qū)分流失用戶及滿意用戶。這些方法都易于理解,但它們內(nèi)部的數(shù)學(xué)原理及實(shí)用價(jià)值卻極為不同。Neural Network(神經(jīng)網(wǎng)絡(luò))本質(zhì)上是一個(gè)能夠計(jì)算復(fù)雜變量關(guān)系的黑盒,它可以產(chǎn)生更準(zhǔn)確的預(yù)測結(jié)果,但卻不易為開發(fā)者所理解。

我和《永恒之塔》團(tuán)隊(duì)在頭腦風(fēng)暴過程中討論了新手玩家的類型,游戲行為以及其他特征。我們都知道自己的親友初次進(jìn)入游戲的過程,以及他們的感受。

這番討論結(jié)果使我重新修訂了影響新手玩家的一些游戲內(nèi)部因素列表(游戲邦注:例如,玩家是否擴(kuò)展了倉庫大小,跳過了復(fù)活點(diǎn),使用了加速移動(dòng)卷軸?),以及衡量玩家在游戲中一般活動(dòng)的想法。

我們使用了如下參數(shù):

*每個(gè)等級(jí)的殺敵數(shù)

*每個(gè)等級(jí)所完成的任務(wù)

*每個(gè)等級(jí)的游戲時(shí)間(以分鐘為單位)

此時(shí)我們也完全修正了ETL部分(包括數(shù)據(jù)提取、轉(zhuǎn)換以及加載)的內(nèi)容,我們的SQL工程師也制作了一個(gè)高級(jí)的SSIS游戲記錄處理器,提升了可擴(kuò)展性,有利于添加新游戲事件。記錄系統(tǒng)的容量已達(dá)千兆字節(jié),所以我們可以輕松添加新的假設(shè)命題。

我們載入和處理新數(shù)據(jù),審核了數(shù)據(jù)挖掘模型,并分析了結(jié)果。為了讓結(jié)果更為簡潔明了,在此我只發(fā)布修正后的結(jié)果:

precision & recall per level(from gamasutra)

注:第9級(jí)的準(zhǔn)確率異常高,這與調(diào)查時(shí)期的游戲活動(dòng)有關(guān),所以可以忽略這個(gè)數(shù)據(jù)。

在此階段,我們的模型準(zhǔn)確率大為提高——尤其是第2級(jí)至第4級(jí),不過6到8級(jí)的準(zhǔn)確率仍然很不樂觀。這種不準(zhǔn)確的數(shù)據(jù)幾乎沒有用處。

Decision Tree表明一般活動(dòng)參數(shù)正是關(guān)鍵的預(yù)測考慮因素。在這種情況 下,每級(jí)的游戲時(shí)間、每級(jí)殺敵數(shù)和每級(jí)完成任務(wù)等參數(shù)組成了我們預(yù)測模型的核心。其他參數(shù)對整體準(zhǔn)確率的貢獻(xiàn)率不足5%。另外,Decision Tree很簡短,只有兩三個(gè)分枝,這意味著它缺乏相關(guān)參數(shù)。我仍然無法理解為何這三個(gè)算法在不同等級(jí)的準(zhǔn)確/召回率會(huì)如此不同。

第2階段結(jié)果:我們通過一般活動(dòng)參數(shù)取得了相當(dāng)進(jìn)展,雖然準(zhǔn)確率仍然有待改進(jìn),但我們找到了正確的分析方法,即先使用Naive Bayes,之后再使用Decision Tree。

第3階段:步入正軌

看到數(shù)據(jù)挖掘結(jié)果的準(zhǔn)確率明顯提升,我設(shè)置了三個(gè)發(fā)展向量,更多一般活動(dòng)參數(shù),更多游戲特定參數(shù),以及更深入掌握微軟BI工具。

經(jīng)過對一般活動(dòng)的試驗(yàn)之后,我們最終確定了以下關(guān)鍵因素:

*當(dāng)前等級(jí)、之前等級(jí)及整體游戲時(shí)間

*每分鐘殺敵數(shù)(包括當(dāng)前/之前/整體等級(jí)情況)

*每分鐘完任任務(wù)(同上)

*平均每天游戲時(shí)長

*玩游戲天數(shù)

*缺勤率(游戲邦注:這里指玩家在七天免費(fèi)試玩期間缺席的天數(shù))

這些參數(shù)極大提升了召回率(因此降低了誤報(bào)率),Decision Tree最終開始盡情擴(kuò)散出分枝。我們也看到不同數(shù)據(jù)挖掘算法針對所有等級(jí)的一致性,這表明預(yù)測過程已經(jīng)趨于穩(wěn)定,降低了隨機(jī)性。Navie Byes在準(zhǔn)確性上比Tree和Neural算法相差了足足10%。

新加入的個(gè)體參數(shù)實(shí)際上非常難以管理,手動(dòng)分離自動(dòng)攻擊使用情況要涉及一些數(shù)學(xué)知識(shí),SQL查詢的第75百分位計(jì)算也是如此。但我們標(biāo)準(zhǔn)化了數(shù)據(jù),因此可以對比不同的游戲職業(yè),數(shù)據(jù)挖掘模型接受的是分類索引數(shù)據(jù)而非原始數(shù)據(jù)。標(biāo)準(zhǔn)化和索引化新個(gè)體參數(shù)使整體預(yù)測精確度又提升了3-4%。

注:在網(wǎng)絡(luò)游戲中,角色要使用技能及能力進(jìn)行攻擊。自動(dòng)攻擊是最基本和自由的招式。資深玩家使用所有技能時(shí)他們的自動(dòng)攻擊比率就會(huì)較低,不過游戲及職業(yè)機(jī)制也會(huì)深刻影響這一參數(shù)。在《永恒之塔》中,法師這一比率的中間值是5%,而戰(zhàn)士則是70%,即使是在同個(gè)職業(yè)中,標(biāo)準(zhǔn)偏差也會(huì)很高。

下一步就是參考《Data Mining with Microsoft SQL Server 2008》這本書,從中查找使用分析服務(wù)的決竅。這本書很有助于解釋Decision Tree微調(diào)的復(fù)雜原理,它還讓我認(rèn)識(shí)到了正確數(shù)據(jù)離散化的重要性。

在以上例子中,我們通過手動(dòng)操作實(shí)現(xiàn)了自動(dòng)攻擊參數(shù)的離散化。我剛開始處理這些數(shù)據(jù)時(shí),就發(fā)現(xiàn)SQL Server的自動(dòng)離散化是可以并且應(yīng)該進(jìn)行微調(diào)。手動(dòng)調(diào)整數(shù)據(jù)會(huì)極大影響Tree的形狀和精確度(對其他模型也同樣會(huì)有影響,但是對Tree的影響更明顯)。

我花了一整周時(shí)間挨個(gè)調(diào)整9個(gè)挖掘結(jié)構(gòu)的30多個(gè)維度(每個(gè)游戲等級(jí)有一個(gè)結(jié)構(gòu),一共有9個(gè)等級(jí))。從這一試驗(yàn)中可以發(fā)現(xiàn)一些有趣的模式,并且可輕松將7級(jí)和8級(jí)之間的精確度提升2%。例如,殺敵數(shù)是20,整體游戲時(shí)長是12,而每級(jí)游戲時(shí)長是7。

微調(diào)之后的結(jié)果極大減少了誤報(bào)率,將Tree的數(shù)據(jù)提升至與Neural Network相當(dāng)?shù)乃剑?/span>

precision & recall per level (from gamasutra)

第3階段結(jié)果:我們終于得到了一些合適的數(shù)字,也搜集了大量關(guān)于玩家的有趣數(shù)據(jù)。

第4階段:獲得成功

坦白說,我認(rèn)為我們已經(jīng)到達(dá)到準(zhǔn)確預(yù)測的極限。新參數(shù)和假設(shè)并沒有再度提升精確度,這些模型已經(jīng)穩(wěn)定。78%的精確度 VS 16%的誤報(bào)率已經(jīng)足以展開預(yù)測流失用戶的工作。

以免費(fèi)訂閱或高價(jià)值道具刺激他們重返游戲并不一定奏效(因?yàn)樵诙砹_斯這些贈(zèng)品也支帶來一些增值稅),但向他們發(fā)個(gè)郵件總不會(huì)有什么問題吧?

當(dāng)我們的數(shù)據(jù)挖掘項(xiàng)目進(jìn)入第三個(gè)月時(shí),我們發(fā)現(xiàn)數(shù)據(jù)有點(diǎn)過時(shí)了,因?yàn)槟菚r(shí)的游戲已經(jīng)更新了數(shù)次補(bǔ)丁。

重新載入這三個(gè)月所有更新、更大的數(shù)據(jù)集時(shí),我發(fā)現(xiàn)了梯度圖表發(fā)生了一些變化。雖然精確度/召回率仍然保持原狀,但數(shù)據(jù)表現(xiàn)略有差別。

需要再次重新編寫ETL程序,此時(shí)每個(gè)等級(jí)處理時(shí)間不足1分鐘,所以增加一個(gè)數(shù)據(jù)集的等待時(shí)間是我們尚可接受的5分鐘。但不幸的是,所以手動(dòng)微調(diào)工作都要重做,不過從以下圖表可以看出,增加數(shù)據(jù)集后,我們極大提升了模型的有效性!

precision & recall per level(from gamasutra)

但針對第1級(jí)的情況,我們確實(shí)無能為力。正如網(wǎng)絡(luò)分析大師Avinash Kaushik所言,“我來,我吐,我閃”(I came, I puked, I left)。這些玩家創(chuàng)建了自己的角色之后就退出了游戲,我們針對他們的行動(dòng)記錄也非常之少。

以上所有數(shù)字均出自歷史數(shù)據(jù)以及我們挖掘模型的一個(gè)學(xué)習(xí)數(shù)據(jù)集。但我是一個(gè)非常多疑的人,我還想要戰(zhàn)斗測試結(jié)果。所以我們采用了新玩家(今天才注冊的用 戶)數(shù)據(jù),將其引進(jìn)預(yù)測模型,并保存結(jié)果。7天之后,我們對比了一周前的預(yù)測流失用戶以及他們真實(shí)的行為,獲得了如下結(jié)果:


prediciton results(from gamasutra)


結(jié)果

我們終于成功實(shí)現(xiàn)了預(yù)測玩家是否將退出游戲的這一最初目標(biāo)??吹饺绱酥叩木_度/召回率,我們確信自己的積極和專注獲得了回報(bào)。

但我們是否實(shí)現(xiàn)了第二個(gè)目標(biāo),判斷玩家為何離開?沒有。對我來說,這也是最有趣的結(jié)果——我們已經(jīng)知道玩家可能離開的概率,卻仍然不曉得他們?yōu)楹坞x去。我在本文開篇列出了可能導(dǎo)致玩家早早離場的假設(shè)因素:

*種族和職業(yè)

*玩家是否嘗試過其他的Innova游戲(我們用同一個(gè)帳號(hào))

*玩家嘗試過的種族和職業(yè)角色數(shù)量

*在免費(fèi)試玩期間每級(jí)和整體死亡情況

*以及其他多種因素

我們測試了60多種個(gè)體及游戲特定參數(shù)。發(fā)現(xiàn)沒有一者是導(dǎo)致用戶離開的主因!也就是說,我們沒有發(fā)現(xiàn)阻礙用戶享受游戲樂趣的主要因素。

這個(gè)調(diào)查中的關(guān)鍵參數(shù)比較適用于試玩游戲首天的所獲等級(jí)的情況,但低于考查7級(jí)游戲情況的需求,這相當(dāng)于3個(gè)小時(shí)的游戲時(shí)間,意味著此時(shí)的用戶流失率極高。另一批預(yù)測流失率的參數(shù)主要與整體活動(dòng)有關(guān):

*每級(jí)殺敵數(shù)

*每級(jí)完成任務(wù)

*每級(jí)游戲時(shí)長(分鐘)

*每天游戲時(shí)長

總結(jié)

我們歷時(shí)三個(gè)月,研究了兩本書,并投入大量精力和熱情從頭創(chuàng)建了這個(gè)數(shù)據(jù)挖掘項(xiàng)目。團(tuán)隊(duì)中沒有人曾有這方面經(jīng)驗(yàn)。我們?yōu)镮nnova被動(dòng)的分析系統(tǒng)中制造了一個(gè)富有前瞻性的預(yù)測工具。我們可以及時(shí)接收潛在的流失用戶信息,并給予他們一些極富個(gè)性化和關(guān)聯(lián)性的決竅以提升游戲體驗(yàn)。


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }