由于手Q動(dòng)漫加載的機(jī)制非春,目前用戶通過手Q動(dòng)態(tài)點(diǎn)擊動(dòng)漫進(jìn)入動(dòng)漫主頁時(shí)會(huì)出現(xiàn)數(shù)秒級(jí)別的卡頓。這種現(xiàn)象會(huì)影響用戶的動(dòng)漫閱讀合呐,繼而影響到動(dòng)漫用戶的付費(fèi)轉(zhuǎn)化率砸脊。
提前對(duì)可能進(jìn)入動(dòng)漫主頁的用戶進(jìn)行預(yù)加載,可以優(yōu)化用戶打開動(dòng)漫頁面的速度體驗(yàn)拳氢。
從而提高用戶點(diǎn)擊動(dòng)漫的命中率及訪問付費(fèi)轉(zhuǎn)化率募逞。
在判定用戶是否會(huì)點(diǎn)擊手Q動(dòng)態(tài)進(jìn)入手Q動(dòng)漫之前,首先需要對(duì)手Q動(dòng)漫用戶進(jìn)行統(tǒng)計(jì)分析馋评,從他們的行為中獲取某些規(guī)律放接,為后續(xù)的模型構(gòu)建提供數(shù)據(jù)支撐。
(1)訪問手Q動(dòng)漫的時(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)證不同年齡段對(duì)訪問時(shí)間規(guī)律的影響程度楞陷,如下圖所示:
通過統(tǒng)計(jì)發(fā)現(xiàn)每種年齡段的用戶在周末怔鳖、周中的分布基本與大盤一致,用戶在周末周中的訪問行為受年齡段的影響不大固蛾。
從總框架中可得出預(yù)加載模型的主要步驟如下所示:
(1)獲取用戶每小時(shí)點(diǎn)擊手Q動(dòng)態(tài)及訪問動(dòng)漫數(shù)據(jù)结执;
(2)從logserver機(jī)器撈取每天用戶開通手Q動(dòng)態(tài)狀態(tài)數(shù)據(jù);
(3)去除異常臟數(shù)據(jù)艾凯;
(4)對(duì)手Q動(dòng)漫用戶特征選擇献幔,如閱讀作品數(shù)、充值金額等趾诗;
(5)構(gòu)建“用戶+特征”的存量數(shù)據(jù)蜡感;
(6)進(jìn)行模型構(gòu)建;
(7)集成學(xué)習(xí)算法每種算法結(jié)果加權(quán)投票恃泪;
(8)輸出每個(gè)用戶每天每小時(shí)的點(diǎn)擊手Q動(dòng)態(tài)動(dòng)漫的概率列表郑兴;
(9)推送給產(chǎn)品開發(fā)側(cè)。
(1)數(shù)據(jù)獲取
從業(yè)務(wù)前端后臺(tái)流水獲取用戶每小時(shí)點(diǎn)擊手Q動(dòng)態(tài)及訪問手Q動(dòng)漫的記錄數(shù)據(jù)贝乎,同時(shí)logserver機(jī)器撈取每天用戶開通手Q動(dòng)態(tài)狀態(tài)數(shù)據(jù)情连,同時(shí)獲取用戶閱讀作品數(shù)、話別數(shù)览效、充值金額却舀、是否是動(dòng)漫VIP球榆、是否是手Q會(huì)員、手Q聊天數(shù)等等額外數(shù)據(jù)禁筏。
(2)數(shù)據(jù)清洗
針對(duì)每個(gè)字段進(jìn)行概率分布分析(類似3.1),除去空值及異常值衡招。例如某個(gè)用戶1個(gè)小時(shí)內(nèi)訪問手Q動(dòng)漫大于100次篱昔,則可以認(rèn)為是臟數(shù)據(jù)(當(dāng)然如果該用戶是業(yè)務(wù)測試人員或者是活動(dòng)任務(wù)要求那很正常,不過此處不考慮這種特殊情況)始腾。
(3)?數(shù)據(jù)轉(zhuǎn)化
在字段屬性值上做相應(yīng)的轉(zhuǎn)變和歸一化州刽。比如用戶訪問動(dòng)漫的次數(shù)使用占比來代替具體數(shù)值,歸一化處理可以減少個(gè)別異常值對(duì)大盤的影響等等浪箭。
(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動(dòng)漫用戶訪問動(dòng)漫的規(guī)律不隨時(shí)間周期的長短有明顯的改變,同時(shí)受用戶年齡的影響不大宣鄙,并且每個(gè)用戶每小時(shí)訪問動(dòng)的波動(dòng)很小袍镀。對(duì)于一個(gè)用戶來說,他每個(gè)小時(shí)的訪問行為都是獨(dú)立的冻晤。所以挑選了如下的屬性做為模型的特征:手Q動(dòng)態(tài)動(dòng)漫狀態(tài)苇羡、閱讀作品數(shù)、話別數(shù)鼻弧、充值金額设江、動(dòng)漫VIP狀態(tài)、手Q會(huì)員狀態(tài)攘轩、手Q聊天數(shù)叉存、訪問動(dòng)漫次數(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è)黑人寂诱,你十有八九會(huì)猜是非洲人,為什么安聘?因?yàn)楹谌酥蟹侵奕说谋嚷首罡咛等鳌.?dāng)然黑人也可能是美洲人或者是亞洲人瓢棒,但是在沒有任何其他可用信息下,我們會(huì)選擇條件概率最大的類別丘喻,這個(gè)也就是樸素貝葉斯的思想基礎(chǔ)脯宿。
A 是動(dòng)態(tài)入口(動(dòng)態(tài)頁)? ?B 是動(dòng)漫區(qū)
P(動(dòng)漫)——在時(shí)間戳內(nèi)手Q活躍用戶中有過動(dòng)漫訪問的用戶占比;
P(動(dòng)態(tài)入口|動(dòng)漫):在時(shí)間戳內(nèi)動(dòng)漫訪問用戶是從動(dòng)態(tài)入口進(jìn)入的概率泉粉;
P(動(dòng)態(tài)入口):在時(shí)間戳內(nèi)手Q活躍用戶中進(jìn)入動(dòng)態(tài)入口的用戶占比连霉;
P(動(dòng)漫|動(dòng)態(tài)入口):在時(shí)間戳內(nèi)進(jìn)入動(dòng)態(tài)入口的用戶點(diǎn)擊動(dòng)漫的概率;
假設(shè)在時(shí)間戳里有100個(gè)手Q活躍用戶嗡靡,其中有50個(gè)有過動(dòng)漫訪問行為跺撼,那么p(動(dòng)漫)=50/100=0.5;而其中有30個(gè)動(dòng)漫用戶是從動(dòng)態(tài)入口進(jìn)來的讨彼,那么p(動(dòng)態(tài)入口|動(dòng)漫)=30/50=0.6歉井;而又有80個(gè)手Q活躍用戶進(jìn)入過動(dòng)態(tài)入口,那么p(動(dòng)態(tài)入口)=80/100=0.8哈误;所以用戶進(jìn)入動(dòng)態(tài)入口并且點(diǎn)擊動(dòng)漫的概率P(動(dòng)漫|動(dòng)態(tài)入口)=0.6*0.5/0.8=0.375哩至。
假設(shè)每個(gè)特征屬性是條件獨(dú)立的,那么則有以下的轉(zhuǎn)化:
P(訪問|閱讀作品數(shù)*話別數(shù)*充值金額*動(dòng)漫VIP*手Q會(huì)員*手Q聊天數(shù))?
= P(閱讀作品數(shù)*話別數(shù)*充值金額*動(dòng)漫VIP *手Q會(huì)員*手Q聊天數(shù)|訪問) * P(訪問) / P(閱讀作品數(shù)*話別數(shù)*充值金額*動(dòng)漫VIP*手Q會(huì)員*手Q聊天數(shù))?
=P(閱讀作品數(shù)|訪問) *P(話別數(shù)|訪問) *P(充值金額|訪問) *P(動(dòng)漫VIP|訪問) *P(手Q會(huì)員|訪問) *P(手Q聊天數(shù)|訪問) *P(訪問) / P(閱讀作品數(shù))
*P(話別數(shù)) * P(充值金額) *P(動(dòng)漫VIP) *P(手Q會(huì)員) *P(手Q聊天數(shù))
(2)每小時(shí)訪問概率分布
手Q動(dòng)漫用戶歷史一段時(shí)間內(nèi)每小時(shí)的訪問概率在一定程度上反應(yīng)了該用戶在某一個(gè)小時(shí)內(nèi)點(diǎn)擊手Q動(dòng)態(tài)動(dòng)漫的可能性蜜自,計(jì)算邏輯如下:
a.用戶在歷史一段時(shí)間內(nèi)每個(gè)小時(shí)訪問動(dòng)漫的次數(shù)為Ni;
b.用戶在歷史一段時(shí)間內(nèi)訪問動(dòng)漫的總次數(shù)為ALL憨募;
c.那么用戶在每個(gè)小時(shí)內(nèi)訪問動(dòng)漫的概率為Pi = Ni/ALL;
(3)?用戶畫像tag標(biāo)簽
手Q動(dòng)漫用戶在不同的特征上的活躍程度在一定程度上反應(yīng)了該用戶點(diǎn)擊手Q動(dòng)態(tài)動(dòng)漫的可能性袁辈。假設(shè)設(shè)定手Q活躍--權(quán)重10%菜谣、手Q會(huì)員--權(quán)重10%、動(dòng)漫活躍--權(quán)重20%晚缩、動(dòng)漫付費(fèi)--權(quán)重40%尾膊、動(dòng)漫會(huì)員--權(quán)重20%,那么有結(jié)果類似如下荞彼,然后進(jìn)行歸一化處理冈敛。
(4)命中率反饋隨機(jī)游走
命中率反饋隨機(jī)游走是指使用用戶歷史一段時(shí)間內(nèi)點(diǎn)擊手Q動(dòng)態(tài)動(dòng)漫的概率做為初始值,然后根據(jù)當(dāng)天的命中率情況進(jìn)行不斷的迭代游走學(xué)習(xí)鸣皂,不斷地增強(qiáng)下一個(gè)時(shí)間段內(nèi)點(diǎn)擊動(dòng)態(tài)動(dòng)漫的概率準(zhǔn)確度抓谴,如下圖所示:
該模型中涉及到馬可夫鏈隨機(jī)游走,具體的計(jì)算邏輯如下:
a.統(tǒng)計(jì)每個(gè)用戶歷史命中率寞缝,給一個(gè)初始值癌压,初始概率;
b.結(jié)合當(dāng)天命中率荆陆,修正初始值滩届,絕對(duì)概率;
c.尋找一個(gè)閾值做為從i時(shí)刻轉(zhuǎn)移到j(luò)時(shí)刻的轉(zhuǎn)移概率被啼;
d.一段時(shí)間內(nèi)在點(diǎn)擊與不點(diǎn)擊之間不斷迭代帜消;
e.優(yōu)化輸出該用戶的絕對(duì)概率棠枉。
(5)加權(quán)投票
手Q動(dòng)態(tài)動(dòng)態(tài)動(dòng)漫用戶每天每小時(shí)內(nèi)通過手Q動(dòng)態(tài)訪問動(dòng)漫的命中率越高表示該算法模型效果越好。
(1)模型預(yù)測結(jié)果為訪問
假設(shè)用戶每個(gè)小時(shí)內(nèi)有10次點(diǎn)擊手Q動(dòng)態(tài)泡挺,其中有3次訪問了里面的動(dòng)漫辈讶,那么這個(gè)用戶在該小時(shí)內(nèi)真實(shí)的訪問動(dòng)漫的概率是30%;
目前我們算法規(guī)則是大于某個(gè)閥值的就算是訪問娄猫,也就是說假設(shè)我們判定這個(gè)用戶在這個(gè)小時(shí)內(nèi)的訪問概率是100%(不考慮該用戶這個(gè)小時(shí)來了多少次)贱除;
所以最終對(duì)該用戶在某小時(shí)內(nèi)的預(yù)測正確率是30%/100%=30%。
(2)模型預(yù)測結(jié)果為不訪問
假設(shè)用戶每個(gè)小時(shí)內(nèi)有10次點(diǎn)擊手Q動(dòng)態(tài)稚新,其中有3次訪問了里面的動(dòng)漫,那么這個(gè)用戶在該小時(shí)內(nèi)真實(shí)的訪問動(dòng)漫的概率是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動(dòng)態(tài)動(dòng)漫的概率列表。配置子任務(wù)彼宠,每天凌晨運(yùn)算出結(jié)果數(shù)據(jù)鳄虱,然后推送到目標(biāo)HDFS上,供產(chǎn)品側(cè)進(jìn)行二次加工凭峡,最后落地到產(chǎn)品交互層面拙已,對(duì)概率高的用戶提前進(jìn)行預(yù)加載渲染。
挑選更多的用戶行為摧冀、LBS倍踪、用戶其他興趣愛好等屬性,對(duì)特征進(jìn)行因子分析索昂,增加業(yè)務(wù)經(jīng)驗(yàn)人工調(diào)整建车,挑選出更加顯著的屬性。優(yōu)化模型椒惨,對(duì)屬性進(jìn)行加權(quán)處理癞志。
總結(jié)方法論
(1) 事情的現(xiàn)狀及原因?
a.為什么點(diǎn)擊手Q動(dòng)態(tài)動(dòng)漫會(huì)卡頓:原來是受手Q動(dòng)態(tài)動(dòng)漫前端頁面加載的原理的影響框产,導(dǎo)致用戶在點(diǎn)擊手Q動(dòng)態(tài)動(dòng)漫會(huì)出現(xiàn)卡頓幾秒才能加載完成的現(xiàn)象凄杯;
b.這些卡頓會(huì)造成什么影響:直接影響到用戶的第一體驗(yàn)错洁,很多用戶會(huì)在開通了手Q動(dòng)態(tài)動(dòng)漫欄目之后,在進(jìn)入動(dòng)漫主頁這一環(huán)節(jié)流失掉戒突。從數(shù)據(jù)上看也能看出屯碴,開通手Q動(dòng)態(tài)動(dòng)漫之后,用戶點(diǎn)擊手Q動(dòng)態(tài)動(dòng)漫的UV雖然不少膊存,但是進(jìn)入漫畫主頁進(jìn)行訪問的人很少导而。如果這個(gè)問題不解決,長期下去肯定會(huì)影響到用戶的閱讀和付費(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.對(duì)全部用戶提前加載:提前對(duì)所有開通手Q動(dòng)態(tài)動(dòng)漫欄目的用戶進(jìn)行預(yù)加載实牡。但是這樣涉及到的成本太大,因?yàn)橛泻芏嘤脩舯旧砭筒粫?huì)去訪問動(dòng)漫轴合,這樣點(diǎn)擊命中率很低创坞,會(huì)導(dǎo)致資源的浪費(fèi);
b.對(duì)目標(biāo)用戶提前加載:只針對(duì)有較大可能訪問動(dòng)漫的用戶進(jìn)行預(yù)加載受葛。這樣既能夠提升用戶的體驗(yàn)题涨,又能提高點(diǎn)擊命中率,同時(shí)不會(huì)造成資源浪費(fèi)总滩;
(4)?接下來怎么做携栋?
目標(biāo)圍繞著如何找到需要預(yù)加載的用戶群體。
a.數(shù)據(jù)準(zhǔn)備:目前有哪些數(shù)據(jù)咳秉,這些數(shù)據(jù)如何獲韧裰А?如何加工澜建?如何輸出向挖?
b.特征選擇:目前這些數(shù)據(jù)有哪些特征,哪些特征對(duì)我們的目標(biāo)是有用的炕舵?這些特征需要如何組合何之?
c.模型選擇:基于這些數(shù)據(jù)特征,使用哪些模型才能取得好的效果咽筋,才能更精準(zhǔn)地找出目標(biāo)用戶群體溶推?貝葉斯是基于先驗(yàn)概率和條件概率計(jì)算出后驗(yàn)概率,從而對(duì)用戶進(jìn)行分類,運(yùn)用范圍很廣蒜危;
d.模型優(yōu)化:多個(gè)模型集成在一起效果會(huì)不會(huì)好虱痕?參數(shù)調(diào)整效果會(huì)不會(huì)好?
(5) 做出來之后如何進(jìn)行效果預(yù)估辐赞?
a.效果評(píng)判標(biāo)準(zhǔn):找出來的用戶如何才算精準(zhǔn)部翘?這些用戶里面點(diǎn)擊手Q動(dòng)態(tài)動(dòng)漫的命中率越高,越表示精準(zhǔn)响委;
b.模擬數(shù)據(jù)評(píng)估:使用人造的數(shù)據(jù)進(jìn)行模擬預(yù)估新思?
c.離線評(píng)估:使用歷史的線下數(shù)據(jù)進(jìn)行訓(xùn)練及預(yù)測,通過已知的目標(biāo)驗(yàn)證預(yù)測的結(jié)果赘风;