10.2-产品优化分析之手Q动漫预加载

 背景

由于手Q动漫加载的机制,目前用户通过手Q动态点击动漫进入动漫主页时会出现数秒级别的卡顿。这种现象会影响用户的动漫阅读,继而影响到动漫用户的付费转化率。

意义

提前对可能进入动漫主页的用户进行预加载,可以优化用户打开动漫页面的速度体验。

从而提高用户点击动漫的命中率及访问付费转化率。

实现

3.1 分析

在判定用户是否会点击手Q动态进入手Q动漫之前,首先需要对手Q动漫用户进行统计分析,从他们的行为中获取某些规律,为后续的模型构建提供数据支撑。

(1)访问手Q动漫的时间段在周末周中是否有区别?

统计分析用户近三个月、近一个月在周末和周中的访问时间分布(用户只要在某个小时访问过1次及以上都算该用户在这个小时内活跃)如下:

近三个月周末和周中的访问时间分布
近一个月在周末和周中的访问时间分布

可以看出,用户在周末与周中都有较为明显的访问峰值区间,并且近三个月和近一个月分布基本一致,用户访问分布跟时间周期长短没有明显区分。

a.在周末,用户点击的高峰期为“09-15时”和“19-23时”,其中有57%的用户在“09-15时”有点击行为,有42%的用户在“19-23时”有点击行为;

b.在周中,用户点击的高峰期为“12-15时”和“18-24时”。其中有36%的用户在“12-15时”有点击行为,有58%的用户在“18-24时”有点击行为。

c.周末两个峰值区间总共覆盖了79%的用户,周中两个峰值区间总共覆盖了75%的用户。

(2)周末周中的访问规律是否受年龄段影响?

将用户的年龄分为0-10、11-20、21-30、31-40、40-等5个年龄段,验证不同年龄段对访问时间规律的影响程度,如下图所示:

不同年龄段对访问时间

通过统计发现每种年龄段的用户在周末、周中的分布基本与大盘一致,用户在周末周中的访问行为受年龄段的影响不大。

3.2 搭建集成模型总框架

从总框架中可得出预加载模型的主要步骤如下所示:

(1)获取用户每小时点击手Q动态及访问动漫数据;

(2)从logserver机器捞取每天用户开通手Q动态状态数据;

(3)去除异常脏数据;

(4)对手Q动漫用户特征选择,如阅读作品数、充值金额等;

(5)构建“用户+特征”的存量数据;

(6)进行模型构建;

(7)集成学习算法每种算法结果加权投票;

(8)输出每个用户每天每小时的点击手Q动态动漫的概率列表;

(9)推送给产品开发侧。

3.3 数据ETL

(1)数据获取

从业务前端后台流水获取用户每小时点击手Q动态及访问手Q动漫的记录数据,同时logserver机器捞取每天用户开通手Q动态状态数据,同时获取用户阅读作品数、话别数、充值金额、是否是动漫VIP、是否是手Q会员、手Q聊天数等等额外数据。

(2)数据清洗

针对每个字段进行概率分布分析(类似3.1),除去空值及异常值。例如某个用户1个小时内访问手Q动漫大于100次,则可以认为是脏数据(当然如果该用户是业务测试人员或者是活动任务要求那很正常,不过此处不考虑这种特殊情况)。

(3) 数据转化

在字段属性值上做相应的转变和归一化。比如用户访问动漫的次数使用占比来代替具体数值,归一化处理可以减少个别异常值对大盘的影响等等。

(4)数据装载

经过上面3步之后,将处理好的数据按照模型数据输入标准的格式进行二次组合,为下一步的特征选择和模型构建做准备。

3.4 特征选择

经过3.1的分析,手Q动漫用户访问动漫的规律不随时间周期的长短有明显的改变,同时受用户年龄的影响不大,并且每个用户每小时访问动的波动很小。对于一个用户来说,他每个小时的访问行为都是独立的。所以挑选了如下的属性做为模型的特征:手Q动态动漫状态、阅读作品数、话别数、充值金额、动漫VIP状态、手Q会员状态、手Q聊天数、访问动漫次数等

3.5模型构建

(1) 改进版贝叶斯

贝叶斯决策理论是统计模型决策中的一个基本方法,1763年被发现并提出,是一个分类模型,其基本思想如下:

a.已知“先验概率” 和 “类条件概率密度”参数表达式;

b.利用贝叶斯公式转换成“后验概率”;

c.根据后验概率大小进行决策分类。

通俗点说,在街上看到一个黑人,你十有八九会猜是非洲人,为什么?因为黑人中非洲人的比率最高。当然黑人也可能是美洲人或者是亚洲人,但是在没有任何其他可用信息下,我们会选择条件概率最大的类别,这个也就是朴素贝叶斯的思想基础。

A 是动态入口(动态页)   B 是动漫区

P(动漫)——在时间戳内手Q活跃用户中有过动漫访问的用户占比;

P(动态入口|动漫):在时间戳内动漫访问用户是从动态入口进入的概率;

P(动态入口):在时间戳内手Q活跃用户中进入动态入口的用户占比;

P(动漫|动态入口):在时间戳内进入动态入口的用户点击动漫的概率;

假设在时间戳里有100个手Q活跃用户,其中有50个有过动漫访问行为,那么p(动漫)=50/100=0.5;而其中有30个动漫用户是从动态入口进来的,那么p(动态入口|动漫)=30/50=0.6;而又有80个手Q活跃用户进入过动态入口,那么p(动态入口)=80/100=0.8;所以用户进入动态入口并且点击动漫的概率P(动漫|动态入口)=0.6*0.5/0.8=0.375。

假设每个特征属性是条件独立的,那么则有以下的转化:

P(访问|阅读作品数*话别数*充值金额*动漫VIP*手Q会员*手Q聊天数) 

= P(阅读作品数*话别数*充值金额*动漫VIP *手Q会员*手Q聊天数|访问) * P(访问) / P(阅读作品数*话别数*充值金额*动漫VIP*手Q会员*手Q聊天数) 

=P(阅读作品数|访问) *P(话别数|访问) *P(充值金额|访问) *P(动漫VIP|访问) *P(手Q会员|访问) *P(手Q聊天数|访问) *P(访问) / P(阅读作品数)

*P(话别数) * P(充值金额) *P(动漫VIP) *P(手Q会员) *P(手Q聊天数)

(2)每小时访问概率分布

手Q动漫用户历史一段时间内每小时的访问概率在一定程度上反应了该用户在某一个小时内点击手Q动态动漫的可能性,计算逻辑如下:

a.用户在历史一段时间内每个小时访问动漫的次数为Ni;

b.用户在历史一段时间内访问动漫的总次数为ALL;

c.那么用户在每个小时内访问动漫的概率为Pi = Ni/ALL;

(3) 用户画像tag标签

手Q动漫用户在不同的特征上的活跃程度在一定程度上反应了该用户点击手Q动态动漫的可能性。假设设定手Q活跃--权重10%、手Q会员--权重10%、动漫活跃--权重20%、动漫付费--权重40%、动漫会员--权重20%,那么有结果类似如下,然后进行归一化处理。

(4)命中率反馈随机游走

命中率反馈随机游走是指使用用户历史一段时间内点击手Q动态动漫的概率做为初始值,然后根据当天的命中率情况进行不断的迭代游走学习,不断地增强下一个时间段内点击动态动漫的概率准确度,如下图所示:


该模型中涉及到马可夫链随机游走,具体的计算逻辑如下:

a.统计每个用户历史命中率,给一个初始值,初始概率;

b.结合当天命中率,修正初始值,绝对概率;

c.寻找一个阈值做为从i时刻转移到j时刻的转移概率;

d.一段时间内在点击与不点击之间不断迭代;

e.优化输出该用户的绝对概率。

(5)加权投票

效果评估

4.1 验证标准

手Q动态动态动漫用户每天每小时内通过手Q动态访问动漫的命中率越高表示该算法模型效果越好。

(1)模型预测结果为访问

假设用户每个小时内有10次点击手Q动态,其中有3次访问了里面的动漫,那么这个用户在该小时内真实的访问动漫的概率是30%;

目前我们算法规则是大于某个阀值的就算是访问,也就是说假设我们判定这个用户在这个小时内的访问概率是100%(不考虑该用户这个小时来了多少次);

所以最终对该用户在某小时内的预测正确率是30%/100%=30%。

(2)模型预测结果为不访问

假设用户每个小时内有10次点击手Q动态,其中有3次访问了里面的动漫,那么这个用户在该小时内真实的访问动漫的概率是30%;

目前我们算法规则是小于某个阀值的就算是不访问,也就是说假设我们判定这个用户在这个小时内的访问概率是0;

 结合上面的1、2点,可以算出该用户最后的在某小时内的预测正确率是1-30%=70%。

4.2 模型初步离线效果

当设定预测准确率阈值大于等于50%时为预测正确时,模型每小时的预测准确率平均在62%左右(随机抽样20160703周期用户的50%),远高于没有模型预测时候的预测点击率,达到了预期的优化效果。

模型预测点击率

模型落地

经过模型的预测,输出每个用户每天每小时的点击手Q动态动漫的概率列表。配置子任务,每天凌晨运算出结果数据,然后推送到目标HDFS上,供产品侧进行二次加工,最后落地到产品交互层面,对概率高的用户提前进行预加载渲染。

6后期优化

挑选更多的用户行为、LBS、用户其他兴趣爱好等属性,对特征进行因子分析,增加业务经验人工调整,挑选出更加显著的属性。优化模型,对属性进行加权处理。

总结方法论

(1) 事情的现状及原因?

a.为什么点击手Q动态动漫会卡顿:原来是受手Q动态动漫前端页面加载的原理的影响,导致用户在点击手Q动态动漫会出现卡顿几秒才能加载完成的现象;

b.这些卡顿会造成什么影响:直接影响到用户的第一体验,很多用户会在开通了手Q动态动漫栏目之后,在进入动漫主页这一环节流失掉。从数据上看也能看出,开通手Q动态动漫之后,用户点击手Q动态动漫的UV虽然不少,但是进入漫画主页进行访问的人很少。如果这个问题不解决,长期下去肯定会影响到用户的阅读和付费转化;

(2) 知道了原因之后有什么直接的方法改进?

  产品性能优化:优化加载原理是最直接的技术优化方法。但是从技术上优化涉及到产品版本的更新,目前开发人力不足,排期时间长;

(3) 直接的方法不行还有什么间接方法?

a.对全部用户提前加载:提前对所有开通手Q动态动漫栏目的用户进行预加载。但是这样涉及到的成本太大,因为有很多用户本身就不会去访问动漫,这样点击命中率很低,会导致资源的浪费;

b.对目标用户提前加载:只针对有较大可能访问动漫的用户进行预加载。这样既能够提升用户的体验,又能提高点击命中率,同时不会造成资源浪费;

(4) 接下来怎么做?

目标围绕着如何找到需要预加载的用户群体。

a.数据准备:目前有哪些数据,这些数据如何获取?如何加工?如何输出?

b.特征选择:目前这些数据有哪些特征,哪些特征对我们的目标是有用的?这些特征需要如何组合?

c.模型选择:基于这些数据特征,使用哪些模型才能取得好的效果,才能更精准地找出目标用户群体?贝叶斯是基于先验概率和条件概率计算出后验概率,从而对用户进行分类,运用范围很广;

d.模型优化:多个模型集成在一起效果会不会好?参数调整效果会不会好?

(5) 做出来之后如何进行效果预估?

a.效果评判标准:找出来的用户如何才算精准?这些用户里面点击手Q动态动漫的命中率越高,越表示精准;

b.模拟数据评估:使用人造的数据进行模拟预估?

c.离线评估:使用历史的线下数据进行训练及预测,通过已知的目标验证预测的结果;

你可能感兴趣的:(10.2-产品优化分析之手Q动漫预加载)