由于手Q動漫加載的機(jī)制,目前用戶通過手Q動態(tài)點(diǎn)擊動漫進(jìn)入動漫主頁時(shí)會出現(xiàn)數(shù)秒級別的卡頓。這種現(xiàn)象會影響用戶的動漫閱讀,繼而影響到動漫用戶的付費(fèi)轉(zhuǎn)化率。
提前對可能進(jìn)入動漫主頁的用戶進(jìn)行預(yù)加載,可以優(yōu)化用戶打開動漫頁面的速度體驗(yàn)。
從而提高用戶點(diǎn)擊動漫的命中率及訪問付費(fèi)轉(zhuǎn)化率。
在判定用戶是否會點(diǎn)擊手Q動態(tài)進(jìn)入手Q動漫之前,首先需要對手Q動漫用戶進(jìn)行統(tǒng)計(jì)分析,從他們的行為中獲取某些規(guī)律,為后續(xù)的模型構(gòu)建提供數(shù)據(jù)支撐。
(1)訪問手Q動漫的時(shí)間段在周末周中是否有區(qū)別?
統(tǒng)計(jì)分析用戶近三個(gè)月、近一個(gè)月在周末和周中的訪問時(shí)間分布(用戶只要在某個(gè)小時(shí)訪問過1次及以上都算該用戶在這個(gè)小時(shí)內(nèi)活躍)如下:


可以看出,用戶在周末與周中都有較為明顯的訪問峰值區(qū)間,并且近三個(gè)月和近一個(gè)月分布基本一致,用戶訪問分布跟時(shí)間周期長短沒有明顯區(qū)分。
a.在周末,用戶點(diǎn)擊的高峰期為“09-15時(shí)”和“19-23時(shí)”,其中有57%的用戶在“09-15時(shí)”有點(diǎn)擊行為,有42%的用戶在“19-23時(shí)”有點(diǎn)擊行為;
b.在周中,用戶點(diǎn)擊的高峰期為“12-15時(shí)”和“18-24時(shí)”。其中有36%的用戶在“12-15時(shí)”有點(diǎn)擊行為,有58%的用戶在“18-24時(shí)”有點(diǎn)擊行為。
c.周末兩個(gè)峰值區(qū)間總共覆蓋了79%的用戶,周中兩個(gè)峰值區(qū)間總共覆蓋了75%的用戶。
(2)周末周中的訪問規(guī)律是否受年齡段影響?
將用戶的年齡分為0-10、11-20、21-30、31-40、40-等5個(gè)年齡段,驗(yàn)證不同年齡段對訪問時(shí)間規(guī)律的影響程度,如下圖所示:

通過統(tǒng)計(jì)發(fā)現(xiàn)每種年齡段的用戶在周末、周中的分布基本與大盤一致,用戶在周末周中的訪問行為受年齡段的影響不大。


從總框架中可得出預(yù)加載模型的主要步驟如下所示:
(1)獲取用戶每小時(shí)點(diǎn)擊手Q動態(tài)及訪問動漫數(shù)據(jù);
(2)從logserver機(jī)器撈取每天用戶開通手Q動態(tài)狀態(tài)數(shù)據(jù);
(3)去除異常臟數(shù)據(jù);
(4)對手Q動漫用戶特征選擇,如閱讀作品數(shù)、充值金額等;
(5)構(gòu)建“用戶+特征”的存量數(shù)據(jù);
(6)進(jìn)行模型構(gòu)建;
(7)集成學(xué)習(xí)算法每種算法結(jié)果加權(quán)投票;
(8)輸出每個(gè)用戶每天每小時(shí)的點(diǎn)擊手Q動態(tài)動漫的概率列表;
(9)推送給產(chǎn)品開發(fā)側(cè)。
(1)數(shù)據(jù)獲取
從業(yè)務(wù)前端后臺流水獲取用戶每小時(shí)點(diǎn)擊手Q動態(tài)及訪問手Q動漫的記錄數(shù)據(jù),同時(shí)logserver機(jī)器撈取每天用戶開通手Q動態(tài)狀態(tài)數(shù)據(jù),同時(shí)獲取用戶閱讀作品數(shù)、話別數(shù)、充值金額、是否是動漫VIP、是否是手Q會員、手Q聊天數(shù)等等額外數(shù)據(jù)。
(2)數(shù)據(jù)清洗
針對每個(gè)字段進(jìn)行概率分布分析(類似3.1),除去空值及異常值。例如某個(gè)用戶1個(gè)小時(shí)內(nèi)訪問手Q動漫大于100次,則可以認(rèn)為是臟數(shù)據(jù)(當(dāng)然如果該用戶是業(yè)務(wù)測試人員或者是活動任務(wù)要求那很正常,不過此處不考慮這種特殊情況)。
(3)?數(shù)據(jù)轉(zhuǎn)化
在字段屬性值上做相應(yīng)的轉(zhuǎn)變和歸一化。比如用戶訪問動漫的次數(shù)使用占比來代替具體數(shù)值,歸一化處理可以減少個(gè)別異常值對大盤的影響等等。
(4)數(shù)據(jù)裝載
經(jīng)過上面3步之后,將處理好的數(shù)據(jù)按照模型數(shù)據(jù)輸入標(biāo)準(zhǔn)的格式進(jìn)行二次組合,為下一步的特征選擇和模型構(gòu)建做準(zhǔn)備。
經(jīng)過3.1的分析,手Q動漫用戶訪問動漫的規(guī)律不隨時(shí)間周期的長短有明顯的改變,同時(shí)受用戶年齡的影響不大,并且每個(gè)用戶每小時(shí)訪問動的波動很小。對于一個(gè)用戶來說,他每個(gè)小時(shí)的訪問行為都是獨(dú)立的。所以挑選了如下的屬性做為模型的特征:手Q動態(tài)動漫狀態(tài)、閱讀作品數(shù)、話別數(shù)、充值金額、動漫VIP狀態(tài)、手Q會員狀態(tài)、手Q聊天數(shù)、訪問動漫次數(shù)等。
(1)?改進(jìn)版貝葉斯
貝葉斯決策理論是統(tǒng)計(jì)模型決策中的一個(gè)基本方法,1763年被發(fā)現(xiàn)并提出,是一個(gè)分類模型,其基本思想如下:
a.已知“先驗(yàn)概率” 和 “類條件概率密度”參數(shù)表達(dá)式;
b.利用貝葉斯公式轉(zhuǎn)換成“后驗(yàn)概率”;
c.根據(jù)后驗(yàn)概率大小進(jìn)行決策分類。
通俗點(diǎn)說,在街上看到一個(gè)黑人,你十有八九會猜是非洲人,為什么?因?yàn)楹谌酥蟹侵奕说谋嚷首罡摺.?dāng)然黑人也可能是美洲人或者是亞洲人,但是在沒有任何其他可用信息下,我們會選擇條件概率最大的類別,這個(gè)也就是樸素貝葉斯的思想基礎(chǔ)。

A 是動態(tài)入口(動態(tài)頁)? ?B 是動漫區(qū)
P(動漫)——在時(shí)間戳內(nèi)手Q活躍用戶中有過動漫訪問的用戶占比;
P(動態(tài)入口|動漫):在時(shí)間戳內(nèi)動漫訪問用戶是從動態(tài)入口進(jìn)入的概率;
P(動態(tài)入口):在時(shí)間戳內(nèi)手Q活躍用戶中進(jìn)入動態(tài)入口的用戶占比;
P(動漫|動態(tài)入口):在時(shí)間戳內(nèi)進(jìn)入動態(tài)入口的用戶點(diǎn)擊動漫的概率;
假設(shè)在時(shí)間戳里有100個(gè)手Q活躍用戶,其中有50個(gè)有過動漫訪問行為,那么p(動漫)=50/100=0.5;而其中有30個(gè)動漫用戶是從動態(tài)入口進(jìn)來的,那么p(動態(tài)入口|動漫)=30/50=0.6;而又有80個(gè)手Q活躍用戶進(jìn)入過動態(tài)入口,那么p(動態(tài)入口)=80/100=0.8;所以用戶進(jìn)入動態(tài)入口并且點(diǎn)擊動漫的概率P(動漫|動態(tài)入口)=0.6*0.5/0.8=0.375。

假設(shè)每個(gè)特征屬性是條件獨(dú)立的,那么則有以下的轉(zhuǎn)化:
P(訪問|閱讀作品數(shù)*話別數(shù)*充值金額*動漫VIP*手Q會員*手Q聊天數(shù))?
= P(閱讀作品數(shù)*話別數(shù)*充值金額*動漫VIP *手Q會員*手Q聊天數(shù)|訪問) * P(訪問) / P(閱讀作品數(shù)*話別數(shù)*充值金額*動漫VIP*手Q會員*手Q聊天數(shù))?
=P(閱讀作品數(shù)|訪問) *P(話別數(shù)|訪問) *P(充值金額|訪問) *P(動漫VIP|訪問) *P(手Q會員|訪問) *P(手Q聊天數(shù)|訪問) *P(訪問) / P(閱讀作品數(shù))
*P(話別數(shù)) * P(充值金額) *P(動漫VIP) *P(手Q會員) *P(手Q聊天數(shù))
(2)每小時(shí)訪問概率分布
手Q動漫用戶歷史一段時(shí)間內(nèi)每小時(shí)的訪問概率在一定程度上反應(yīng)了該用戶在某一個(gè)小時(shí)內(nèi)點(diǎn)擊手Q動態(tài)動漫的可能性,計(jì)算邏輯如下:
a.用戶在歷史一段時(shí)間內(nèi)每個(gè)小時(shí)訪問動漫的次數(shù)為Ni;
b.用戶在歷史一段時(shí)間內(nèi)訪問動漫的總次數(shù)為ALL;
c.那么用戶在每個(gè)小時(shí)內(nèi)訪問動漫的概率為Pi = Ni/ALL;
(3)?用戶畫像tag標(biāo)簽
手Q動漫用戶在不同的特征上的活躍程度在一定程度上反應(yīng)了該用戶點(diǎn)擊手Q動態(tài)動漫的可能性。假設(shè)設(shè)定手Q活躍--權(quán)重10%、手Q會員--權(quán)重10%、動漫活躍--權(quán)重20%、動漫付費(fèi)--權(quán)重40%、動漫會員--權(quán)重20%,那么有結(jié)果類似如下,然后進(jìn)行歸一化處理。
(4)命中率反饋隨機(jī)游走
命中率反饋隨機(jī)游走是指使用用戶歷史一段時(shí)間內(nèi)點(diǎn)擊手Q動態(tài)動漫的概率做為初始值,然后根據(jù)當(dāng)天的命中率情況進(jìn)行不斷的迭代游走學(xué)習(xí),不斷地增強(qiáng)下一個(gè)時(shí)間段內(nèi)點(diǎn)擊動態(tài)動漫的概率準(zhǔn)確度,如下圖所示:

該模型中涉及到馬可夫鏈隨機(jī)游走,具體的計(jì)算邏輯如下:
a.統(tǒng)計(jì)每個(gè)用戶歷史命中率,給一個(gè)初始值,初始概率;
b.結(jié)合當(dāng)天命中率,修正初始值,絕對概率;
c.尋找一個(gè)閾值做為從i時(shí)刻轉(zhuǎn)移到j(luò)時(shí)刻的轉(zhuǎn)移概率;
d.一段時(shí)間內(nèi)在點(diǎn)擊與不點(diǎn)擊之間不斷迭代;
e.優(yōu)化輸出該用戶的絕對概率。
(5)加權(quán)投票

手Q動態(tài)動態(tài)動漫用戶每天每小時(shí)內(nèi)通過手Q動態(tài)訪問動漫的命中率越高表示該算法模型效果越好。
(1)模型預(yù)測結(jié)果為訪問
假設(shè)用戶每個(gè)小時(shí)內(nèi)有10次點(diǎn)擊手Q動態(tài),其中有3次訪問了里面的動漫,那么這個(gè)用戶在該小時(shí)內(nèi)真實(shí)的訪問動漫的概率是30%;
目前我們算法規(guī)則是大于某個(gè)閥值的就算是訪問,也就是說假設(shè)我們判定這個(gè)用戶在這個(gè)小時(shí)內(nèi)的訪問概率是100%(不考慮該用戶這個(gè)小時(shí)來了多少次);
所以最終對該用戶在某小時(shí)內(nèi)的預(yù)測正確率是30%/100%=30%。
(2)模型預(yù)測結(jié)果為不訪問
假設(shè)用戶每個(gè)小時(shí)內(nèi)有10次點(diǎn)擊手Q動態(tài),其中有3次訪問了里面的動漫,那么這個(gè)用戶在該小時(shí)內(nèi)真實(shí)的訪問動漫的概率是30%;
目前我們算法規(guī)則是小于某個(gè)閥值的就算是不訪問,也就是說假設(shè)我們判定這個(gè)用戶在這個(gè)小時(shí)內(nèi)的訪問概率是0;
?結(jié)合上面的1、2點(diǎn),可以算出該用戶最后的在某小時(shí)內(nèi)的預(yù)測正確率是1-30%=70%。
當(dāng)設(shè)定預(yù)測準(zhǔn)確率閾值大于等于50%時(shí)為預(yù)測正確時(shí),模型每小時(shí)的預(yù)測準(zhǔn)確率平均在62%左右(隨機(jī)抽樣20160703周期用戶的50%),遠(yuǎn)高于沒有模型預(yù)測時(shí)候的預(yù)測點(diǎn)擊率,達(dá)到了預(yù)期的優(yōu)化效果。

經(jīng)過模型的預(yù)測,輸出每個(gè)用戶每天每小時(shí)的點(diǎn)擊手Q動態(tài)動漫的概率列表。配置子任務(wù),每天凌晨運(yùn)算出結(jié)果數(shù)據(jù),然后推送到目標(biāo)HDFS上,供產(chǎn)品側(cè)進(jìn)行二次加工,最后落地到產(chǎn)品交互層面,對概率高的用戶提前進(jìn)行預(yù)加載渲染。
挑選更多的用戶行為、LBS、用戶其他興趣愛好等屬性,對特征進(jìn)行因子分析,增加業(yè)務(wù)經(jīng)驗(yàn)人工調(diào)整,挑選出更加顯著的屬性。優(yōu)化模型,對屬性進(jìn)行加權(quán)處理。
總結(jié)方法論
(1) 事情的現(xiàn)狀及原因?
a.為什么點(diǎn)擊手Q動態(tài)動漫會卡頓:原來是受手Q動態(tài)動漫前端頁面加載的原理的影響,導(dǎo)致用戶在點(diǎn)擊手Q動態(tài)動漫會出現(xiàn)卡頓幾秒才能加載完成的現(xiàn)象;
b.這些卡頓會造成什么影響:直接影響到用戶的第一體驗(yàn),很多用戶會在開通了手Q動態(tài)動漫欄目之后,在進(jìn)入動漫主頁這一環(huán)節(jié)流失掉。從數(shù)據(jù)上看也能看出,開通手Q動態(tài)動漫之后,用戶點(diǎn)擊手Q動態(tài)動漫的UV雖然不少,但是進(jìn)入漫畫主頁進(jìn)行訪問的人很少。如果這個(gè)問題不解決,長期下去肯定會影響到用戶的閱讀和付費(fèi)轉(zhuǎn)化;
(2) 知道了原因之后有什么直接的方法改進(jìn)?
??產(chǎn)品性能優(yōu)化:優(yōu)化加載原理是最直接的技術(shù)優(yōu)化方法。但是從技術(shù)上優(yōu)化涉及到產(chǎn)品版本的更新,目前開發(fā)人力不足,排期時(shí)間長;
(3)?直接的方法不行還有什么間接方法?
a.對全部用戶提前加載:提前對所有開通手Q動態(tài)動漫欄目的用戶進(jìn)行預(yù)加載。但是這樣涉及到的成本太大,因?yàn)橛泻芏嘤脩舯旧砭筒粫ピL問動漫,這樣點(diǎn)擊命中率很低,會導(dǎo)致資源的浪費(fèi);
b.對目標(biāo)用戶提前加載:只針對有較大可能訪問動漫的用戶進(jìn)行預(yù)加載。這樣既能夠提升用戶的體驗(yàn),又能提高點(diǎn)擊命中率,同時(shí)不會造成資源浪費(fèi);
(4)?接下來怎么做?
目標(biāo)圍繞著如何找到需要預(yù)加載的用戶群體。
a.數(shù)據(jù)準(zhǔn)備:目前有哪些數(shù)據(jù),這些數(shù)據(jù)如何獲???如何加工?如何輸出?
b.特征選擇:目前這些數(shù)據(jù)有哪些特征,哪些特征對我們的目標(biāo)是有用的?這些特征需要如何組合?
c.模型選擇:基于這些數(shù)據(jù)特征,使用哪些模型才能取得好的效果,才能更精準(zhǔn)地找出目標(biāo)用戶群體?貝葉斯是基于先驗(yàn)概率和條件概率計(jì)算出后驗(yàn)概率,從而對用戶進(jìn)行分類,運(yùn)用范圍很廣;
d.模型優(yōu)化:多個(gè)模型集成在一起效果會不會好?參數(shù)調(diào)整效果會不會好?
(5) 做出來之后如何進(jìn)行效果預(yù)估?
a.效果評判標(biāo)準(zhǔn):找出來的用戶如何才算精準(zhǔn)?這些用戶里面點(diǎn)擊手Q動態(tài)動漫的命中率越高,越表示精準(zhǔn);
b.模擬數(shù)據(jù)評估:使用人造的數(shù)據(jù)進(jìn)行模擬預(yù)估?
c.離線評估:使用歷史的線下數(shù)據(jù)進(jìn)行訓(xùn)練及預(yù)測,通過已知的目標(biāo)驗(yàn)證預(yù)測的結(jié)果;