分类目录归档:个人观点分享

一些个人的观点和想法

怎样合理地定义用户流失

user_churn  很久没有更新博客了,这篇再写一些关于“用户流失”的内容。之前发布的网站的活跃用户与流失用户这篇文章对网站的活跃用户流失用户新用户流失做了定义,这里修正下对流失用户的英文叫法,一般对流失用户常用的英文为“churn user”,之前用的wastage、away、lost等都不是太规范。后来陆续有做相关分析的朋友问到流失用户的流失时间长度到底选择多长是合理的,尤其是《网站分析实战》这本书出版之后,我在里面有提到如何更准确地定义流失的时间长度,可能解释的比较简单,还是有朋友留言反馈这方面的问题,所以这里再用一篇文章解释一下。

流失用户与回访用户

  流失用户的定义请参考“网站的活跃用户与流失用户”这篇文章,要解释怎么样合理地去定义用户流失时间段长度的问题,需要先介绍一个新的指标概念:回访用户。这里的回访用户不是指Google Analytics上面的Returning Visitor(与新用户相对,指之前访问过网站的用户再次访问网站),这里的回访用户指流失之后再次访问网站的用户,即用户曾经流失过,满足流失时间期限内完全没有访问/登录网站的条件,但之后重新访问/登录网站。然后,根据回访用户数可以计算得到用户回访率,即:

  用户回访率 = 回访用户数 ÷ 流失用户数 × 100%

  回访用户率的数值大小间接地可以验证对用户流失定义的合理性。正常情况下,用户的回访率应该是比较低的,从业务的角度考虑,如果对流失的定义是合理的,那么很难让那些对你的网站已经失去兴趣的用户重新来访问你的网站。一般情况下,网站的用户回访率应该在10%以下,在5%左右的数值是比较合理的,对于成熟的网站而言用户回访率会稍高,而新兴的网站的用户回访率通常更低,尤其像手机APP这类用户易流失的产品。

流失期限与用户回访率

  用户流失的流失期限的长度与用户的回访率成反比,我们在定义用户流失时使用的连续不访问/登录网站的期限越长,这批流失用户之后回访网站的概率就会越低,并且随着定义的流失期限的增大,用户回访率一定是递减的,并逐渐趋近于0。那么如果选择合适的流失期间长度?我们可以设定不同的流失期限长度,进一步统计每个流失期限的用户回访率,并观察用户回访率随定义的流失期限增大时的收敛速度。如果以“周”为单位设定流失期限:

user_returning_rate

  根据设定的不同流失周期的用户回访率的变化曲线,我们可以使用拐点理论(Elbow Method)选择最合适的流失周期。

  拐点理论:X轴上数值的增加会带来Y轴数值大幅增益(减益),直到超过某个点之后,当X增加时Y的数据增益(减益)大幅下降,即经济学里面的边际收益的大幅减少,那个点就是图表中的“拐点”。比如上图中流失周期增加到5周的时候,用户回访率的缩减速度明显下降,所以这里的5周就是拐点,我们可以用5周作为定义用户流失的期限,即一个之前访问/登录过的用户,如果之后连续5周都没有访问/登录,则定义该用户流失。

  所以,有个这个办法之后,就能更加合理地定义流失用户的统计逻辑,而之前要做的就是选择不同的流失期限分别计算用户的回访率,然后用统计的到的数值生成如上的一张带平滑线的散点图,问题就迎刃而解。 :)

大数定律与抽样陷阱

law-of-large-numbers  前面一篇文章——难以解释的数据异常——发出来之后,朋友推荐我去读《黑天鹅》,刚刚翻完这本书,发现书中的很多观点和细节的表述都能给人启发,尤其是“叙述谬论”和“过度解释”这个两点能对难以解释的数据异常这篇文章中描述的内容给出另一个侧面的解释。从作者塔勒布的后记和书中表述的观点来看,读过这本书的人可能很容易走入两种认识的极端:

  1、既然一些未知的黑天鹅事件可能对我们造成极大的影响,那我们就应该去努力预测这些未知事件,以便做好充分的准备来应对这些事件。但作者在书中明确说了黑天鹅事件的不可预测性;
  2、既然我们无法预测未知,并且未知事件可能对我们的生活造成翻天覆地的影响,我们只能不去做任何的预测和准备,等待命运的审判。但书的副标题是“如何应对不可预知的未来”,所以作者塔勒布并不认为我们什么都做不了,至少能够认识到黑天鹅的存在,打破传统思维的局限性,谨慎地预防,黑天鹅是未知的未知,我们需要为已知的世界和已知的未知做好准备。

  《黑天鹅》中多次提到大数定律可能会愚弄我们,作为数理统计和概率论中两个经典的理论(中心极限定理和大数定律)之一,为什么遇到黑天鹅事件时就会失效?或者说大数定律在遇到任何的小概率事件时都有可能“失效”,需要谨慎地认识,以防掉入应用中的陷阱。

大数定律

  大数定律(Law of Large Numbers),指在随机试验中,每次出现的结果不同,但是大量重复试验出现的结果的平均值却几乎总是接近于某个确定的值。典型的例子就是抛硬币的伯努利试验,当抛硬币的次数足够多的时候,正反面出现的概率都接近于1/2。

  常用的大数定律有伯努利大数定律和辛钦大数定律。其中伯努利大数定律指在n次独立试验中,事件A发生的频率为p,当n足够大时,p无限接近事件A真实的发生概率,即频率的稳定性;辛钦大数定律指若n个独立同分布的随机变量存在数学期望,则当n越大时,其算法平均数越接近于这些随机变量的真实数学期望值,即均值的稳定性。

  大数定律为统计推断提供了充分的理论依据,我们可以通过抽样的方法用样本统计量的特征去估计总体的特征,而不需要去研究整个总体。当样本的数量越大时,其对总体的估计就越接近总体的真实特征。但在面对小概率事件时,大数定律对总体的估计会显得无能为力,很多时候结论是失效的。

小概率事件

  假设我们进行重复10000次的伯努利试验,事件A、B、C发生的次数均满足二项分布X~B(n, p),n代表试验次数,p代表事件发生的概率。其中事件A发生的概率为10%、事件B发生的概率为1%、事件C发生的概率为0.1%。我们知道,满足二项分布的随机变量的均值是np,方差为np(1-p),于是就可以用变异系数CV(具体内容参见衡量数据的离散程度这篇文章)来衡量这3个事件发生次数的变异性或者波动情况,可以得到如下的结果:

事件 试验次数 发生概率 均值 方差 变异系数
A 10000 10% 1000 900 3.00%
B 10000 1% 100 99 9.95%
C 10000 0.1% 10 9.99 31.60%

  从上表中可以看出,当试验的次数保持恒定时,事件发生的概率越低,则事件发生的次数会存在越大的波动性或者波动幅度,如果我们继续降低事件发生概率,比如事件D发生概率为0.01%,也就是10000次试验中发生的期望次数是1次,那么事件D的CV就高达99.99%,完全无法预判其是否发生。所以在相同的条件下,小概率事件一定比普遍发生的事件存在更大的变数,概率越小波动的幅度就越大。

抽样误差

data-sampling  随着网站数据量的不断增大,数据的处理和统计需要更高的成本,于是有些分析就会借助抽样的方法来处理数据,Google Analytics的免费版当数据量达到上限时就会采用抽样的方式显示结果报表。其实很多时候我们都在使用抽样的方法分析数据,我们可能会用最近7天的数据来评估近段时间的流量变化、转化情况等,但7天并不能完全代表近段时间,其实做的也是一种抽样。下面来看看现实的网站数据分析的例子:

  转化率(Conversion Rate)是网站分析中非常重要的一个指标,很多公司会把转化率当做运营产品部门的KPI,但对于很多网站而言,转化率并不大,一般不会超过10%(根据网站业务特征的差异和对目标转化的定义不同,转化率在不同网站间没有一个恒定的标准,也不具备可比性),如果网站的内容质量不高或者用户体验不好,转化率也很可能低于1%。这个时候如果用抽样的方法来预估网站整体的转化情况,就很容易掉入抽样误差的陷阱。

  网站的转化情况其实是一个二项分布,即转化或未转化,满足X~(n, p)。根据中心极限定理,二项分布的极限是正态分布,一般认为当np和n(1-p)同时大于10时,二项分布近似地满足X~N(np, np(1-p))的正态分布,即均值为np,方差为np(1-p)。将二项分布除以n之后可以得到均值,即概率p的分布,当n大于30时,近似服从N(p, p(1-p)/n)的正态分布,即均值为p,方差为p(1-p)/n,当n无限大时,样本概率p与总体概率就不存在误差,也就是满足大数定律。假如我们从网站每天几百万次的访问中抽样1万次访问来预估整体的转化率,当样本的转化率(即概率p)分别为10%、1%、0.1%时,预估的总体转化率的变异系数同上表,分别为3.00%、9.95%、31.60%(可以用均值为p,标准差为sqrt(p(1-p)/n)进行验证),所以样本转化率越低,使用样本转化率去预估总体转化率就会越不准确。

  既然过小的转化率在抽样中可能导致预估的结果存在巨大的误差,那么如何合理地选择样本数量来控制这个误差?上面已经提到,当二项分布的np和n(1-p)同时大于10时,可以认为近似满足正态分布,在正态分布下面,就可以计算在一定置信水平下的置信区间(详细计算方法见参数估计与置信区间中的区间估计),而要让抽样的误差控制在可接受的范围内,可以增加抽样的样本数来提升样本对总体估计的可信度。

  假设我们将置信水平设定在90%(一般认为95%的置信水平是满足统计学意义的,但互联网的数据影响因素较多,普遍波动较大,不需要科研实验那么高的精确度,所以90%的置信水平足够了),即Zα/2取到1.65,我们对转化率的控制一般要求较高,假设在90%的置信水平下,样本的置信区间必须控制在样本转化率的±10%,可以看下在这种条件下各种转化率水平所需的抽样样本数必须满足怎么样的条件:

转化率 10%的转化率 σ需要满足 n需要满足
10% 0.01 <0.00606 >2451
5% 0.005 <0.00303 >5174
1% 0.001 <0.000606 >26958
0.1% 0.0001 <0.0000606 >272032

  上表的样本数条件可以作为我们抽样时的参考,具体的应用可以根据概率的大小和对置信水平、置信区间的需要进行计算得到。

  最后再回到黑天鹅,通过上面对小概率事件和抽样误差的解释,其实已经很明显了。黑天鹅是极小概率事件,可能几十年几百年才遇到一次,而大数定律是一个理想化的状态,也就是n值趋近于无穷,我们很难在人生短短数十年经历很多小概率事件,或者我们的知识阅历的储备无法包含这么多的异常,很多事情在几十年的“抽样样本”中是不存在的;同时因为时代在快速地变化,当前可能发生的事件可能仅限于当前这个环境,我们无法通过历史去预见未来。于是我们完全没法知道黑天鹅事件发生的可能性,甚至不知道它的存在,即黑天鹅事件是未知的,也是无法预测的。

  春节前的最后一篇文章了,提前祝大家春节快乐,一起期待下一年的精彩! :D

难以解释的数据异常

anomaly  在分析数据的时候,总有那些一些数据异常无法找到适当的理由进行合理解释,也许可以换个角度来看待这些异常。为什么明明数据发生较大的起伏波动,我们绞尽脑汁还是无法找到合理的原因,这些到底是怎么样的异常,是不是存在一些共性,或者这些异常是不是我们平常所说的异常,抑或是应该归到其他类别,不妨先叫它们“难以解释的异常”。

  近段时间在读《思考,快与慢》这本书,作者卡尼曼的观点似乎可以给我们一些答案。卡尼曼是心理学和决策学方面的大师,他告诉我们如何避开大脑思考的误区,从而更加理性地进行认知和决策。这里引述书中提及的与上面“难以解释的异常”这个问题相关的两个观点:

  • 回归均值效应:事物会经历好坏的随机波动,但最终会回归到平均水平。
  • 用因果关系解释随机事件:人们总是试图为一些变化寻找可以解释的原因。

迪马特奥和贝尼特斯

  对于回归均值效应(Mean reversion),卡尼曼举了一些与体育相关的例子,确实这个现象在体育竞技中较为常见:高尔夫球手为什么第二天无法打出前一天的好成绩,球员为什么第二个赛季无法复制前一个赛季的辉煌……这让我联想到了近期切尔西的换帅事件。

  其实迪马特奥和贝尼特斯之间存在一些有趣的共同点:1) 都是欧冠的冠军教头,2) 能力都没有被完全认可。如果说迪马特奥是没有足够的时间来证明自己的执教能力情有可原的话,那么贝尼特斯显然是自己的选择造成了外界对其能力的质疑。

Di-Matteo-and-Benitez  迪马特奥在上赛季中后段从助理教练接手切尔西,并以看守主教练的身份一路过关斩将,最终夺取欧冠冠军,成功带回球队历史上第一座大耳朵杯足够让其能在赛季末被扶正,但因为缺乏执教经验始终无法让挑剔的老板对其有足够的信任,于是当球迷和俱乐部还沉浸在上赛季欧冠的荣耀光环下,而球队的表现却无法延续“应有”的辉煌时,迪马特奥下课的命运是注定的。在竞争如此激烈的英超联赛,切尔西无法摆脱回归效应,如果说上个赛季切尔西在诸多有利因素的共同作用,再加上一些运气成分的基础上成功加冕欧冠的话,那么这个赛季这些有利因素不再集中地作用于他们,而他们的运气也似乎“用完了”,成绩回归之前的平均水平实属正常现象,而在昔日光环下的球迷和俱乐部显然认为这是“异常事件”,于是迪马特奥成为了回归效应的受害者。

  其实这类事件在足球界屡见不鲜,世界杯的98法国,02五星巴西,06意大利都难逃回归效应,夺冠之后成绩下滑,而很多教练也在夺冠之后纷纷辞职,因为他们也明白再续辉煌(摆脱回归效应)是如此之难,斯科拉里、里皮等都做出了明智的选择,而这些冠军球队的替任教练又往往是命运最为坎坷的,毕竟能像博斯克这样让西班牙不断延续辉煌的教练真的不多,而贝尼特斯恰恰当了回悲催的替任者。

  2010年贝尼特斯接替穆里尼奥成为三冠王国际米兰的主教练,三冠王的光环太过耀眼,而阵容老化加引援不利,注定让国米走上回归效应的道路,于是赛季不到半程,贝帅即被解雇。其实贝尼特斯之前执教生涯的战绩并不是太差,成名于疯狂的“伊斯坦布尔之夜”,但也正是因为这传奇一战成了一座无法逾越的丰碑,即使之后帮助利物浦夺得诸多赛事的冠亚军,也无法让俱乐部和球迷真正的满意,而贝帅的决策失误在于其没有在任何一个辉煌或几近辉煌(07年虽然被米兰复仇雅典,但至少也是个欧冠亚军)的时刻选择退出,直到最后利物浦战绩实在看不下去了才以失败者的身份离开。贝帅真的应该向老辣的银狐里皮或者狡猾的穆里尼奥学习下什么叫做功成身退。

  而这次,贝帅又一次选择了欧冠冠军光环下的切尔西,尽管这个光环已渐渐褪去,我们也只能祝他好运了。

倒塌的桥梁与突然安静的教室

resonant-bridge  共振(Resonance)催生了宇宙大爆炸,形成了星辰日月和世间万物,共振现象是自然界最普遍的现象之一。一群士兵骑马通过法国昂热市的某座桥时,共振现象导致了桥梁的倒塌,这个例子被引入初中物理教科书,从而成为了我们认识共振原理的启蒙记忆。但是什么原因引发了共振,进而发生桥梁倒塌这类异常事件,正常情况下同样一群士兵同样行军通过同样的桥,可能几万次中才会出现一次桥梁倒塌,士兵是普通的士兵,桥是正常的桥,产生共振完全是一个随机事件,但正是因为这类事件概率太小,所以人们总是试图从士兵或者桥的身上找原因(但是有时候确实是因为桥存在问题 ;- ) )。

  然后是一个在知乎上看到的问题:为什么原来大家都在讨论,声音嘈杂的教室会突然安静下来?这个也许大家都遇到过,也是一个类似的小概率事件,教室里每个人都在断断续续地说话,正常情况下声音的大小总是保持在一个水平波动,但可能突然有一个时刻同时说话的人数减少了,声音也随机地波动到了一个最低点,这个时候大家就会认为是不是发生了什么事情,老师来了?于是纷纷不说话,教室突然鸦雀无声,一片寂静。大家都感觉到了教室声音的“异常”,而试图为这个异常寻找可能的原因。

什么造成了这些“异常”

  首先来看回归均值效应,一般表现为事物在某段时间表现得非常好,之后回归到正常水平的一个过程。这个按理来说是一个正常的过程,因为事物在诸多因素的共同影响下总有一些随机的波动,关键在于人们总是希望好的状态能够延续,而当事物从一个极好的状态出现下滑时,因为落差较大,所以很容易把回归均值之后的状态当做一种“异常”。如下图:

mean-reversion

  A段的曲线即使有上下波动,但一般不会被认为有异常,但C段曲线很容易被误认为是异常,因为我们很容易将C段与B段进行比较,而不是A段的均值水平(绿线所示,C段与A段均值差异并不大)。因为这里给出了完整的曲线变化趋势,所以犯这种错误的可能性会降低,但当我们比较短时间内的数据变化,或者简单看数据同环比的时候,就很容易误把回归均值当做一种异常。所以分析数据要结合长期趋势,当事物状态未发生质变而数据明显上升一个台阶的情况下,不要认为好的数据表现总能够持续,因为好的数据表现也只是一个正常的随机波动引起的。

  解释了回归均值效应,还需要搞清楚的是虽然事物大部分时间都有小幅的随机波动,但偶然也会出现较大的波动,即极好或者极差的状态,正如上图的B段状态,我们如何认定这个状态也是随机的,而不是异常呢,不能因为难以解释而不把过大的数据波动当做一种异常来看?

  这个问题还是可以从物理学的角度开始解释,先看下波的叠加原理(Superposition Principle)

Interference-of-two_waves

  左图的下面2个波在叠加之后合成了更大的振幅,而右图的下面2个波相互干涉,合成后振幅消减为零。引申到数据变化的情境下,一般一个指标会受到多个因素的影响,比如网站的访问量会受多个渠道数据波动的影响,搜索引擎、外部链接、社交媒介、付费广告等这些外部渠道带来的流量总是在变化的,如下图:

factors-superposition

  当某个渠道的流量异常的时候,如A线所示,或者由于外界因素的影响,如春节或节假日所有渠道的流量都可能普遍下降,如B线所示,这些都可能导致总体访问量的异常,这些异常是可以解释的。C线中每个渠道的数据都未出现明显异常,但由于多个渠道的流量因为随机波动碰巧同时都到了一个较低的点,这个时候总体访问量也会出现明显低于正常水平的情况,于是就出现了“难以解释的异常”。

  所以,这些“难以解释的异常”之谜可以揭晓了,当很多因素同时作用于某个指标的时候,即使所有的影响因素都没有出现显著的异常,指标数据仍然可能表现异常,虽然这个概率非常低,但确实会发生,这是因为多个因素共同作用下的叠加效应导致的,如果通过细分指标的影响因素没有发现明显的异常,那么不要试图为这个“难以解释的异常”寻找看上去可以解释的原因。

不得不考虑的时间因素

Mechanical-Clock  在网站数据分析中,时间是最常见也是最不可或缺的维度之一,大部分情况下用于限定指标统计的范围和粒度,同时时间因素也会对指标的一些统计规则和细节造成影响,而在某些数据分析中我们很容易忽略时间因素的影响,这些影响可能误导最终的结论。

  发现这个问题是在一个数据提取的需求中,网站每天会发布很多新的内容,这些新的内容需要进行推荐,不然就会被埋没,所以很多网站都会有“最新推荐”之类的模块,而这个数据需求就是分析应该推荐哪些新内容?网站新发的内容质量参差不齐,而且数据积累较少,而推荐模块需要放置那些有潜力的新内容,以便潜力充分发掘后成长为热门内容,所以数据分析要做的就是去寻找那些有潜力的新发内容。如果是TOP10的推荐榜单,最简单的做法就是根据新内容的访问量或者转化率进行排序选前十,但其中有很多值得注意的地方,关于转化率需要注意的地方可以参考关键指标背后的秘密这篇文章,这里主要讨论如果以内容的访问量进行排序,如果选择近一周的汇总数据,我们需要注意什么?也许你已经想到了,之所以这里举例新内容,是因为新内容有一个发布时间(Publish Time),就像一个人的出生日期,而从发布时间到当前的时间间隔就是内容的持续时间,也可以认为是内容的生命期(Lifetime),就像一个人的年龄。内容的持续时间越长就获得越多的数据积累,相应获得高访问量的机会就越大,如果我们比较一周中在不同时间发布的内容在该周的总访问量,那些就会掉入错位比较的陷阱,或者叫“Mismatch”。

Unfair-Fight  一个形象的比喻就是刚刚入伍的新兵跟久经沙场的老将的决斗,虽然新兵不是完全没有胜出的机会,也许那个新兵天生勇猛,或者有着一股初生牛犊不怕虎的冲劲,可以一举击败经验丰富的老将,但在大多数情况下这种可能性较小,这是一场不公平的决斗,而在数据分析中我们需要尽量去避免这类不公平的决斗(比较)。

内容和商品分析

  其实日常中发生这类错误的情况可能很普遍,当我在博客新发文章几天后上Google Analytics去看数据,发现新文章页在相对较后面的位置,不是因为真的没人看,而是GA上默认展现近一个月的汇总数据,报表根据Pageviews排序的结果新内容无法在短时间内迅速冲到前几位。对于那些新发内容或者新上架产品频率不高的网站,运营人员可能比较清楚哪些是新内容,所以通过一些人为的辨认调节在分析的时候不易掉入陷阱,但对于每周有上百个新发内容的网站,这类错误的发生很可能埋没一些优质的新品。

  我们需要找到一些办法去规避这个时间因素对分析结果的影响,通常我们在选择比较对象的时候需要控制所有的比较对象具备相同的持续时长,比如我们比较新内容的热门度,统一选择近一周的数据,对于较早发布的内容摒弃之前的数据,而近一周内刚发布的内容则舍弃不参与这次比较,等到有了完整的一周数据之后再加入比较。这样虽然可以确保比较在同一基准线上,但无疑延后了评估的结论,对于某些一上来就表现抢眼的内容无法及时发现,于是这里采用统计单位时间指标表现的方法,即根据内容的发布时间统计得到每个内容的持续时间(一般精确到天即可),然后将内容的总体访问量除以这个持续时间,就得到了单位时间的内容访问量,进而进行比较:

Contents-visits-sort-table

  上表取的是5个新发布内容近10天的访问量数据,同时加入了内容自发布以来的持续天数,我们用总的访问量除以持续天数计算得到平均每天访问量,然后以总访问量和平均每天访问量分别进行降序排列,得到完全不一样的排名。如果按排序1,我们完全可能忽略D内容的强劲表现,而权衡时间因素之后的排序让我们能够更加准确的把握有潜力的新内容。

  以上的方法同样适用于电子商务网站的商品分析,很多电商网站希望在新商品中挑选有足够潜力的商品进行重点营销,用于打造所谓的“爆款”,从而进一步促进订单量的增长提升销售额和利润。对有潜力新品的挑选一方面需要足够敏锐的嗅觉和眼光,另一方面就要借助数据分析,而这个时候不得不考虑上面提到的时间因素的影响,记住一个月内销售20件的商品不一定比销售50件的差,关键在于这些商品你是何时上架的,使用有效的方法进行评估才能找到真正有潜力有价值增长点的商品。

  要知道任何的网站内容或产品都不是经久不衰的,都有它们自己的生命周期,所以明智的网站运营永远在不断寻找新的生长点,如果数据分析中欠缺考虑时间因素,那些有潜力的产品和内容很可能就会被“久经磨练”的产品内容长期压制,导致网站新陈代谢过于缓慢,进而落后于其他网站。

用户分析

  在进行用户分析的时候,同样需要注意时间因素,如用户RFM分析用户忠诚度价值评分用户生命周期价值等,这些基于用户在一段时间内持续性行为分析的模型都易掉入时间的陷阱。我们没法奢求一个只注册了一周的新用户在近一个月的访问频率高于老用户,因为你只给了他7天的时间,而与他对决的是拥有充裕的30天时间的用户;同样你不应该去比较一个仅使用一个月的新用户与一个一直在持续使用的老用户在三个月或半年中的消费次数、消费金额等,因为他们不在同一起跑线上。但新用户拥有潜力,指不定他们就会成长为更加高价值的忠诚用户,所以在针对用户的营销中我们需要消除这个因素的影响,同样使用除以用户使用网站持续时间(从用户首次访问或者注册时间开始计算)的方法计算单位时间的指标表现,使用RFM模型看下考虑时间因素前后对用户评估的差异:

RFM-with-duration-table

  如上表所示,假如RFM模型选择了近100天的数据来对用户进行分析,这里同样加入“持续时间”这个统计量,即用户从注册到当前的天数,如果用户的注册时间在100天之前,那么用户在该统计周期中的持续时间就是100天(最大期限)。RFM的三个指标中的最近购买间隔(R)不受用户持续时间的影响,因此在考虑时间因素时不用做变换,而购买频率(F)和消费金额(M)都会受到持续时间的影响,需要除以持续时间,计算得到单位时间(这里是天)的数值,即表格中每位用户在“是否考虑时间因素”前后的指标变换。从变换前后的比较来看,用户1因为是持续使用的老用户,未考虑时间因素前在购买频率和消费金额上具有明显优势,但数据变换之后,用户2所表现的粘性和价值更高,即用户2虽然使用网站时间不长,但在单位时间的购买消费上优于用户1,我们通过雷达图进一步看下考虑时间因素前后的效果:

RFM-with-duration-radar

  图中对数据进行标准化评分后,蓝线代表用户1,红线代表用户2,虚线表示未考虑时间因素,实现代表考虑了时间因素,可以看到用户2在考虑时间因素之后价值被明显放大,从图中可以得到用户2的预期价值优于用户1。如果我们不去考虑时间因素的影响,分析的结果就会产生明显的偏差,进而可能误导对用户的正确评估。

  其实这里提及的时间因素还是一个遵循对比原则的问题,比较的对象之间必须具备可比性,不然比较的结果就没有任何的意义

  很久没有更新博客了,因为这段时间的变动没有时间去思考和整理一些新的内容。这篇文章中提及的分析中需要考虑到的时间因素其实在很多情况下都遇到过,尤其是对一个时间周期内汇总的统计指标做细分分析的时候需要格外注意各细分项存在的时间周期是否一致,希望对大家有所启发和帮助。

基于KNN的相关内容推荐

  如果做网站的内容运营,相关内容推荐可以帮助用户更快地寻找和发现感兴趣的信息,从而提升网站内容浏览的流畅性,进而提升网站的价值转化。相关内容推荐最常见的两块就是“关联推荐”和“相关内容推荐”,关联推荐就是我们常说的购物篮分析,即使用购买了某商品的用户同时购买了什么这个规则来发现商品间的潜在联系,之前有相关的文章介绍——向上营销、交叉营销与关联推荐;关联推荐是基于用户行为分析的推荐,而相关内容推荐是基于内容固有特征的推荐,只与内容本身有关,与用户的行为完全无关,所以相关内容推荐的模型是一种“冷启动”的算法,不需要任何历史浏览访问数据的支持。

内容固有属性

  相关内容推荐因为完全不借助用户浏览行为的数据,所以底层数据不依赖于网站的点击流日志,唯一的基础数据就是内容的固有属性及完整信息。我们以豆瓣网的几大块内容为例来看看对于这些内容一般包含哪些固有属性:

书籍 书名、作者、出版时间、出版社、分类、标签
音乐 专辑名、歌手、发行时间、发行方、风格流派、标签
电影 电影名称、导演、演员、上映时间、制片方、类型、标签

  豆瓣很多地方都使用了“标签”这个词,用贴标签的形式来完成内容的分类和标识,但其实标签又分为很多种,有些标签是在内容生成时就被贴上的,有些可能是后续用户贴上去的,而且豆瓣一般为内容和标签定义了原始分类,如书籍分为文学、流行、文化……既然分类和标签内容源生就带有,那同样可以作为内容的固有属性。

  还需要说明的是,这里不涉及文本挖掘和字符切分模糊匹配等问题,因此内容的标题、简介和全文不参与文本相似度的分析,虽然这些可能在构建完整的相关内容模型中不可缺少,但这里只考虑一些固有属性是否相同实现简单应用。基于上述豆瓣几类内容的属性特征,选择和整理适合分析的内容属性如下:

attributes-of-content

  “作者”就是指内容的创造者,“来源”指内容的发布方或获取渠道,“分类”为内容归属的类别,“标签”可以包含对内容的各类描述信息和关键词等。这里为了能够尽可能清晰地描述整个分析模型和思路只选取了大部分内容都包含的一些属性,如果要构建更加高效的相关内容分析模型,需要更完整的内容属性,可以根据自身内容的特征进行属性的定义和选取。

KNN算法及应用

  KNN(K-Nearest Neighbor algorithm),K最近邻算法,通过计算样本个体间的距离或者相似度寻找与每个样本个体最相近的K个个体,算法的时间复杂度跟样本的个数直接相关,需要完成一次两两比较的过程。KNN一般被用于分类算法,在给定分类规则的训练集的基础上对总体的样本进行分类,是一种监督学习(Supervised learning)方法。

KNN

  这里我们不用KNN来实现分类,我们使用KNN最原始的算法思路,即为每个内容寻找K个与其最相似的内容,并推荐给用户。相当于每个内容之间都会完成一次两两比较的过程,如果你的网站有n个内容,那么算法的时间复杂度为Cn2,即n(n-1)/2。但是用内容固有属性有一个好处就是因为固有属性一旦创建后基本保持不变,因此算法输出的数据一旦计算好之后不需要重复计算去刷新,也就是对于网站内容而言,原有内容的数据在首次初始化之后可以不断重复使用,只要更新新增内容的数据就可以,数据的统计计算可以使用增量更新的形式,这样可以有效地减少服务器的计算压力。

相关内容模型

  有了基础数据和算法的支持,我们就可以创建数据模型了。先看下基础数据的类型,作者、分类、来源和标签都是字符型,其中作者、分类、来源基本可以当做是单个值的属性,标签一般包含多个值。首先由于都是字符可以确定属性之间相似性的判定只能通过“是否相同”,无法体现数值上的差异,所以对于作者、分类、来源这几个单值属性而言,比较的结果就是一个布尔型的度量,相同或者不相同;对于标签这个多值属性可以考虑使用Jaccard相关系数,但因为每个内容标签的个数存在较大差异,使用验证后的结果并不理想,所以不考虑使用(当然,如果内容的标签个数比较固定,Jaccard相关系数是有效的)。因此,直接创建加权相似度模型如下,首先是标签的相似度分值设定:

相同标签数 图书比例 相似度分值
0 70% 0
1 20% 1
2 6% 2
3 3% 4
>=4 1% 5

  再结合作者、分类和来源,通过加权设定总体的相似度分值:

属性 相同时分值 不同时分值 权重 加权分值分布
作者 1 0 25 [0,25]
分类 1 0 10 [0,10]
来源 1 0 15 [0,15]
标签 [1,5] 0 10 [0,50]

  将所有属性加权相似度分值的结果相加应该分布在[0,100],分值越高说明内容间的相似度越高。对于这种简单的加权相似度评分模型,估计又有很多人要问权重是怎么确定的,确实,这里的权重并没有通过任何定量分析模型的方法去计算,只是简单的经验估计,但估计的过程经过反复地调整和优化,也就是不断地尝试调整各属性的权重系数并输出结果,抽样检验结果是否符合预期、是否有提升优化的空间。

  基于上述内容间相似度的计算结果,套用KNN的原理实现相关内容推荐就异常简单了,只要根据每个内容与之比较的所有内容的相似度分值降序排列取前K个内容作为该内容的最相关内容推荐给用户就可以了。当然中间可能会涉及相同相似度分值的内容如何排序的问题(因为模型的关系分值分布可能不会很离散),建议如果相似度分值相同使用随机排序,以保证推荐结果有一定的变化,均匀内容的曝光。

  好了,所有的分析流程介绍完了,好像跟前一篇的距离和相似度度量完全没有关系,其实距离和相似度度量是KNN的基础算法,因为KNN的个体相似度或邻近的距离都会选择距离度量和相似度度量中的某种方法进行计算,但这里考虑到了现实的数据情况和应用环境,并不是KNN就一定要硬套欧氏距离,其实换一种简单的方法可能反而更加适合整个模型,而且模型的最终效果可能会更理想。所以一切的数据挖掘算法的选择和使用都是基于数据模型的有效性和输出结果的效果来决定的,并不是简单的算法效果就一定不好,而高级复杂的算法一定更加有效。对了,如果你已经做了相关内容推荐,那么优化相关内容推荐这篇文章里面介绍的一些方法将是检验推荐效果的一个很好的参考。

网站的迷失度度量

measure-of-lostness  在博客之前的文章——优化网站信息架构我曾经提到过关于迷失用户(Lost Visits)的定义,以及如何使用Google Analytics的高级群组(Advanced Segment)去区分出这批用户。最近在看《用户体验度量(Measuring the User Experience)》,发现自己实在太嫩了,人家Smith早在1996年就对迷失度Lostness)有了定义,同时给出了迷失度L的计算公式,这里借花献佛,分享给大家。

Lostness-expression

即,L = sqrt[ (N/S-1)2 + (R/N-1)2 ]

L:迷失度

N:访问的不同页面数(Unique Pageviews)

S:访问的总页面数(Pageviews)

R:完成任务必需的最小页面数

  Smith同时给出了迷失度的评定标准:最佳迷失度为0,迷失度小于0.4时,用户不会显示任何可观察到的迷失特征;迷失度大于0.5时,用户显现迷失特征。

  结合公式,我们可以看到这里对迷失度的定义主要考虑到的是:1、重复访问相同的页面,2、没有能够用最简单的方式完成任务,过多地在网站中徘徊。其实第一眼看去这个公式有一定的道理,但细想一下其实也存在着不合理的地方。通常我们需要去获取知识,阅读和总结他人的经验,但如果只是一味地套用书本或者别人的东西,那么你就输了,尤其是在发展如此迅速的互联网领域。那么我们来看看这个公式有何不妥:

  我们先思考这样一个问题:迷失的用户会表现怎样的特征?显然,当用户在网站中找不到自己需要的东西的时候会来回地点击各种页面,频繁地返回首页或者索引页面,那么从这个角度看,显然这个公式是成立的,迷失用户的表现特征就是频繁地重复浏览同一页面,并且浏览的页面数会比正常访问多得多。但再换一个角度思考,逆向思考下前面的问题:一个正常的用户会不会出现重复浏览同一页面或者浏览页面数较多的情况?显然也是可能的,简单的例子,如果你对我的博客非常感兴趣,看了一篇文章后还想看另外的文章……于是你来回于博客的文章页面和文章专题推荐或者网站地图页面之间,于是这些列出了文章索引的页面被一次又一次地重复访问着;再如,如果一个用户上电子商务网站的目的不是购物,而是闲逛,看看有没有便宜货,或者只是针对某类商品比对下商品的好坏及价格的差异,以伺机下手,那么这个时候这些用户的访问页面数就会异常的多,但他们其实都没有迷失。所以,上面的公式无法为你从所有的用户中挑出那些迷失的用户,最多只能对已知的迷失用户计算他们的迷失度,哪些是低度迷失,哪些是高度迷失。

Web 1.0  但其实Smith没有错,错的是这个高速发展的时代,这也是我为什么说尤其在互联网领域不要直接照搬一些东西来直接应用于自身的原因。1996年,很明显还处于WEB1.0时代,完全没有现在网站的那些复杂交互和多样的功能,当时的网站大部分做的只是信息的单向发布,而用户访问网站的任务也是单一的,可能就是查找到自己想要的那个信息页面。所以我反而觉得这个迷失度公式在当时绝对是适用的,而且Smith在当时就能总结得出这个的度量公式足见其对如今大热的“用户体验”的先知先觉以及对用户体验度量的智慧。同时这个公式对于当前网站的迷失度衡量也不是完全无效,如果是用户体验的小组在做可用性实验,为实验设定的情景是需要用户在网站中完成一个特定的任务,那么这个公式完全是有效的,所以总结起来就是这个公式对复杂的多任务的网站迷失度衡量无效,而对基于单任务的简单网站或者实验环境是有效的。

  既然这个公式对于当前的网站大部分时间不适用,我们就需要对其进行改良,使其适用于普遍的网站。再观察下这个公式,我们会发现其实它跟数据挖掘里面的欧几里得距离度量的计算方式十分相似,可以理解为所有的比例为1时是最理想的状态,公式计算的结果就是每个样本点与这个1的理想点的距离,距离越近迷失度越低,距离越远迷失度越高。所以这个思路完全可以借鉴,但显然只考虑浏览页面的这些度量还不够,我们需要加入其他的网站分析度量。

  对于现在的大部分网站而言,功能是多样化的,用户使用网站的任务不再是单一的,所以无法为不同任务的用户确定一个统一的完成任务的最小访问页面数,而公式的前半部分依然有效,我们尝试用其他度量来替换后半部分。于是自然而然的想到了停留时间,当用户没有迷失时他们会在自己感兴趣的页面停留一段时间,那么页面平均停留时长(Avg. Time on Page)不会很小,所以改进后的公式如下:

Lostness-expression_imp

即,L = sqrt[ (N/S-1)2 + (T/R-1)2 ]

L:迷失度

N:访问的不同页面数(Unique Pageviews)

S:访问的总页面数(Pageviews)

T:访问页面的平均停留时间(Avg. Time on Page)

R:网站正常的页面平均停留时长(既定值)

  这个公式同样有几点需要注意,首先N/S和T/R要保证小于等于1,这样迷失度L计算的结果才会落在[0,sqrt(2)]之间,才有评定是否迷失的可行性。N/S可以保证小于等于1,但T/R无法保证,所以再套用公式之前需要做一步数据筛选的工作,也就是过滤那些可以被简单认定不是迷失的访问(建议过滤访问页面数小于3或者页面平均停留时间大于R的所有访问),筛选后的所有访问即是需要去认定是否具有迷失倾向的访问,同时有保证了T/R小于等于1这个规则。至于R的值如何确定,可以先看一下你自己网站的几个数据:

determine_R

  从近一个月的数据观察,我的博客的页面平均停留时间(Avg. Time on Page)为2分钟半左右,所以我暂定公式中的R(网站正常的页面平均停留时长)为2分钟,用高级过滤器查看所有Time on Page小于2分钟的访问大概占到了网站所有访问的45%。同时,上图给出的3个指标恰恰就是公式中需要用到的上需要用到的3个指标,结合刚刚给定的R值,公式中所有需要的变量我们都已经可以拿到了,下面来看看几个示例:

序号 N S T R L
1 4 5 60 120 0.5385
2 5 8 25 120 0.8760
3 4 5 20 120 0.8570

  上表中计算得到了3个访问样本的迷失度度量L的值,很显然我们当前没法判定到底哪个迷失了哪个没有,所以还缺少一个判定基准(Benchmark),正如上面Smith给出的0.4和0.5,因为公式的变更我们可能需要重新定义这个基准。当然,如果你要用非常严谨科学的态度去定义这个基准线的话,这个过程完全可以作为一个研究课题,进行可用性的实验,观察实验用户的迷失情况,结合每个实验用户的指标数据最终给出一个迷失度的判断基准。当然如果你有兴趣,这个完全可以作为你的毕业设计或者学校科研课题去展开研究,我这边没有时间和资源去完成这个庞大的项目,只能按照经验值进行预估,针对我的博客,我认为当用户的重复访问页面比例超过1/3,并且页面平均停留时间不到30秒时,用户可能已经表现出一定的迷失倾向,将这个数值代入公式得到的迷失度L的值约为0.82,那么这个就可以作为衡量用户迷失的一个基准线,当L大于0.82时用户表现迷失的倾向,小于0.82则为正常访问。

  当然我这里提出的迷失度度量公式同样存在优化空间,如果你有更好的想法,可以一起交流,欢迎在评论里面提出你的想法。

  可能这篇文章的中间写了一大堆“废话”,主要是自己当时看到这个公式时思考如何将它有效地应用到实际的一个过程,实在没有耐心的朋友可以直接跳过,不影响文章的整体实现思路,不要抱怨:“怎么不早说,现在才提,我看都已经看下来了”,如果你看完了,就证明你有一颗足够淡定的心。其实我自己觉得在获取信息的时候(无论是看书还是看网上的文章)思考过程才是最重要的,这是对信息的一个有效过滤的过程,只有思考之后你获取的信息才是优质的,才是被你真正吸收的。但也有一个弊端,就是发现自己看书实在太慢太拖沓,现在手上正在阅读的有4本书,都是现在进行时,每本书的进度在1/3到1/2不等,涉及数据分析、用户体验、数据挖掘和报表展现,精力不够集中,一段时间不能同时兼顾太多呀,反而拖慢进度。

值得关注的用户指标

focus-metrics  最近最常被问到的就是一些用户的统计指标,无论是决策层还是产品部门,所以这篇文章重点说下用户指标的一些内容。

  假设你想用尽量简洁有效的数据了解一个网站或产品的用户情况,你会问哪几个用户数据?其实一个聪明的提问者永远不会问网站的累计用户数有多少,甚至不会问网站的UV是多少,因为这些指标都不能从真正意义上去反映网站的价值和发展状况。

  举个简单的例子——网秦,累计用户数应该不下千万,但这个数字真的能够体现网秦所具备的价值吗?按照网秦的这种运营推广模式,真正的活跃用户有多少,所占比例如何?3·15之后,流失用户又有多少,这个流失率是不是足以让网秦先前辛辛苦苦培养起来的用户基础毁于一旦?所以网秦的发展前景又如何?其实我们可以使用一些更有说服力的用户指标来反映这些情况。

用户的细分方式

  我不建议把用户细分成许许多多的类型,目前为止见过的用户细分的类别也不在少数,罗列出来应该有一大串:当前用户、新老用户、活跃用户、流失用户、留存用户、回访用户、误闯用户、休眠用户、常驻用户、忠诚用户……其实很多的定义或含义是相近的,在分析层面也扮演着类似的指标角色。所以不建议将用户这样混乱无章地分成N个类别,用户的细分关键在于以合理的体系将用户细分成几个类别,并且每个类别都能发挥其在用户分析上的功效,不存在累赘和混淆

  所以这里想介绍下我认为比较合理的用户细分方式。我将用户分成以下几类:当前使用用户新用户活跃用户流失用户回访用户,下面来简单的解释下。

  当前使用用户:即我们平常所说的UV,也就是网站的登录或者使用用户数。用于体现网站的当前运营状况。

  新用户:首次访问或者刚刚注册的用户;那么那些不是首次来访的用户就是老用户,于是同时也获得了老用户的统计。用于分析网站的推广效果或者成长空间。

  活跃用户数:活跃用户的定义千差万别,一般定义有关键动作或者行为达到某个要求时的用户为活跃用户;每个网站应该根据自身的产品特定定义活跃用户。活跃用户用于分析网站真正掌握了多少有价值用户。

  流失用户网站的活跃用户与流失用户中已经做了定义和介绍,用于分析网站保留用户的能力。我们将那些未流失的用户叫做留存用户,可以通过总使用用户数减去流失用户数计算得到。

  回访用户:是指那些之前已经流失,但之后又重新访问你的网站的用户。用于分析网站对挽回流失用户的能力(常常会受到那些很久没有登录的网站给你发的邮件吧,让你回去看看,这些措施就是他们在挽留那些流失用户)。除非近期内执行了一些挽留流失用户的手段,正常情况下回访用户的比例应该是比较低的,否则就是你对流失用户的定义不够准确,应该适当延长定义流失的时间间隔。

  所以其实在我们获得某些用户统计指标之后,通过计算同时也获得了诸如老用户、留存用户这些指标。

值得关注的用户指标

  文章的开头已经提到过,如果你想了解一个网站或者一个产品的用户情况,请尽量抓住那些最为关键的用户指标。如果是我来问,我只会问3个指标:活跃用户数新用户比例用户流失率

  显而易见,活跃用户数直接反映了网站或者产品真正掌握着多少用户,这些用户并不是因为某些广告或者链接误点进来的,而是真正对这个网站或者产品感兴趣,有意向去使用或者持续关注的。活跃用户数越高,网站或者产品当前拥有的价值越高。但这里有一点需要格外注意,那就是活跃用户的定义,活跃用户跟新用户不一样,活跃用户可能催生各种形形色色的定义,之前的文章——用Engagement衡量用户活跃度对于如何定义用户活跃做过介绍,活跃用户的定义也类似,可以有各种方法。宽松的定义可以让活跃用户“变多”,比如只要访问页面数超过2页或者停留时间超过30秒;而严谨的定义可能会导致活跃用户“减少”,比如微博网站定义平均每天发送微博数量超过2条的才是活跃用户。所以,不同的定义影响着活跃用户的数量,当你问到活跃用户时,一定要了解对方是如何定义活跃用户的。我更偏向于严谨的定义,虽然这会让活跃用户“减少”,但严谨的定义让数据显得更加真实,可以说根据这个定义统计到的用户是那些真正在为网站创造价值的用户。

  新用户比例反映着网站或产品的推广能力,渠道的铺设和带来的效果。新用户比例不仅是评估市场部门绩效的一个关键指标,同时也是反映网站和产品发展状况的重要指标。

  但只看新用户比例是不够的,需要结合着用户流失率一起看。我见过流失率98%的网站,也见过流失率20%左右的产品,流失率会根据产品对用户黏性的不同而显得参差不齐。用户流失率反映了网站或者产品保留用户的能力,即新用户比例反映的是用户“进来”的情况,用户流失率反映的是用户“离开”的情况,结合这两个指标会有下面3类情况,代表了3种不同的产品发展阶段:

新用户比例大于用户流失率:产品处于发展成长阶段;

新用户比例与用户流失率持平:产品处于成熟稳定阶段;

新用户比例低于用户流失率:产品处于下滑衰退阶段。

  下面附上一张反映活跃用户数、新用户比例和用户流失率的图表,你能从这张图中看出些什么,假如你是这个网站的CEO,你接下来需要从哪个角度重点着手来改善网站的运营状况?

key-user-metrics

  这篇文章可能没有涉及任何的数据和分析,这里只想理清楚用户的细分和指标,当这套用户的细分和指标体系规范化了以后,能够让用户分析变得游刃有余。

排行榜与随机数

top10-list  下面要介绍的内容也是前几天在工作中实际遇到并尝试去解决的一个问题。公司有一个优秀的团队,每个人都在思考如何解决目前存在的一些不合理的问题,无论是产品设计、内容运营还是后台架构。下面解决的问题就是源于一个数据的需求,根据需求进行设计和总结思考,同时也需要不断尝试着进行调整和优化。

  其实无论是电子商务网站的商品交易量、内容网站的页面浏览量还是资源网站的资源下载量,大部分都会存在排行榜这个东西。排行榜提供了一个热门信息的入口,也是口碑营销和用户从众心理的典型体现。但对于一个优秀的网站而言,80%以上都不会用自然排名,多少会动一些“小手脚”,那不是在欺骗用户吗?是的,我们有时候确实在做这样的事情。而相比那些金钱驱动的对用户不负责任的更改排名的方式(大家应该都懂的),下面介绍的更改排名的小技巧对用户而言绝对是“美丽的谎言”。

自然排名的弊端

  先来看看如果网站完全按照自然规则来定制排行榜会出现怎么样的情况:

Ranking-changing

  当然可能没有这么夸张,但排行上的内容保持1个月甚至3个月都没有变化还是有可能的。网民的从众心理是不容忽视的,对于一个在网站没有明确目的四处闲逛的用户来说,各类排行榜变成了他们最好的入口;或者我们可以从数据的层面来解释下这个问题,一般排行榜会挂在网站的什么位置?首页,分类索引页,侧边栏?反正是那些用户容易看到,能够轻易点击的地方,这些页面或位置的共同特点就是高曝光,以首页为例,来看看我的博客的曝光排名前5的页面:

GA-pageviews-top5

  从数据中可以看到首页的浏览量差不多是其他页面的10倍,所以对于一个资源而言,是否放入排行榜将会导致至少有5倍左右的曝光量的差异,即如果要完成同样的转化目标,未放入排行榜的商品需要比放入排行榜的商品高出4倍的转化率,对于同样的商品,如果放在排行榜只要4%的转化就可以完成100个交易,那么如果把它撤出排行榜同样要完成100个交易就需要高达20%的转化,简直就是天壤之别,这就是排行榜的魔力。

  这就是所谓的马太效应,是一个非常有趣的现象,但无论对于网站还是用户而言,马太效应的存在都是不利的,网站无法将那些排行之外的有潜力的商品推销出去,而用户同样会看不到那些排行榜之外更有价值的产品。所以我们需要设法去规避马太效应。

如何规避马太效应

  马太效应(Matthew Effect),简单地说就是“强者愈强,弱者愈弱”。不得不承认马太效应是一个极其强大的自然法则,全世界都在试图规避这个法则,但又有多少能够真正的解决问题的。这个在经济、社会学界让人十分头疼的问题似乎在互联网这个虚拟的领域还是存在许多解决方案的,其中一个在其他领域绝对无法适用的方法就是——随机数。

  其实在排行榜中规避马太效应的方法有很多,如果网站的数据和运算平台足够强大,完全可以借助一些算法去有效地解决这个问题,之前我也介绍过一个有效的内容推荐方法,或者如果能根据用户行为分析的结果提供根据用户兴趣定制的个性化排行榜,那下面的内容你可能就不必再看下去了。但对于一个小型网站或者刚刚起步数据还不是很全的新产品而言,随机数将会是规避马太效应的一个最简单有效的方法。

  产生随机数的方法有很多,随机数也有很多不同类型,比如常见的取值范围在(0,1]的两位小数,或者是随机生成1到100的自然数。更改排行榜的方法也有很多,下面就用1-100的自然随机数来例举几个我想到的调整TOP10排行榜的方法:

随机排行方法1

  调整策略:在前30名内容中随机取10个放入排行榜。

  实现方式:为前30名的每个内容分配一个随机数,然后根据随机数排序取前10。

  适用情况:同样适用前50或者前100打乱次序后随机取10,但是无论是前30还是50的内容排名上不能存在太显著的差异,比如热门书籍,可能前30本书的热门度差异并没有那么明显,那么就可以使用这种随机排序法。

随机排行方法2

  调整策略:将排行榜的8、9、10名替换成11-20、21-30、31-40中各取一个随机内容。

  实现方式:其实就是生成11-20、21-30、31-40范围的3个随机数,放到排行榜的8、9、10三个位置,先对1-100的随机数做一个简单处理,将其除以10 取余数,于是就相当于是0-9的随机数,在分别加上11、21、31就生成了11-20、21-30、31-40范围的3个随机数,取相应的内容放到排行榜即可。

  适用情况:存在明显的明星产品,比如软件下载网站的下载前几名会一直被某些软件占据,这些软件确实是用户最常用的软件,跟其他软件的下载量存在显著差距,这个时候就不要去动排名前几的产品,而只要随机变动排名后几位的产品就行。

随机排行方法3

  调整策略:随机取排行榜中的1个位置来放置推荐的内容。

  实现方式:有了上面的例子,这个实现起来就比较简单了,其实就是生成一个1-10的随机数,先将1-100的随机数除以10 取余数,再加1即可,再将排行榜上这个随机数的内容替换成推荐内容即可。

  适用情况:已经有现成的优质内容希望推荐给用户,并能够预期到这些内容很有可能在将来会上排行榜的。

  好了,上面就是我所列举的几个使用随机数改变排行榜来有效规避马太效应的实际应用,你是不是有更好的想法和方案,在评论中与我分享吧。

关键转化路径优化

  其实网站分析中很重要的一块就是网站的关键转化路径分析,可能很多的网站分析师在这一方面都倾注了大量的时间和精力,尽最大的努力寻找最优的转化路径,因为优化关键转化路径相当于提高转化率,进而提高网站收益。所以,尤其对于电子商务网站或者付费服务网站而言,关键转化路径分析尤为重要。之前的文章——网站转化率与漏斗模型对关键路径的定义和分析做过简单介绍,同时推荐了一个非常形象的数据展现方式——漏斗模型,能够让每一步的转化看起来一目了然。

  既然对关键路径和转化率的定义和计算已经做过介绍,这篇文章不再累赘,这里只是想分享一下近段时间在统计关键路径的数据时对数据表现出的特征的一些感受,不知道跟大家日常看到的想到的是否一样。

  其实对网站转化路径的优化无非就是一句话:简化、多样化关键转化路径

简化转化路径

  简化转化路径是近些年在关键转化路径分析优化方面讨论的较多的,同时大部分网站也都是朝这个方向在做,也带来了不错的效果。简单看一下电子商务网站转化路径的简化流程:

original_path

  首先是把放入购物车作为了可选步骤,而不是必需步骤,购物车可以为购买多种商品的顾客带来方便,因为可以统一下单,也就是只需要完成一次订单填写和确认的工作;而对于只购买了一样商品的用户而言,显然放入购物车步骤是一个累赘,直接拿着商品结账就完了。

  再者就是前段时间网上讨论很多的对注册和登录步骤的简化,用户选择购物和选择成为网站的会员完全是两码事,为什么买东西就一定要先注册成为网站用户?就像你去超市买东西为什么一定要办一张会员卡。当然注册成为网站会员可以为你下次的购买带来不少的方便,对于网站而言,只有用户注册才能构建器网站完整的CRM系统,实现用户的跟踪分析和用户的保留,所以一度注册登录是网上购物的必需步骤。但随着去年团购网站的纷纷涌现,用户对去每个网站消费都要注册一遍感到了厌烦,于是就有了简化注册的讨论,毕竟给网站带来直接利益的还是用户的购买行为,没有必要因为注册步骤的存在而引起潜在消费用户的流失。

多样化转化路径

  其实上面说的“放入购物车”从必需的步骤到可选的步骤就是一个转化路径多样化的实现,这种灵活的选择同时满足了购买单独商品和购买多种商品的用户需求;但这里要说的是另一种多样化的形式。

  先简单再看下上面的转化步骤,有哪几个是必需的步骤?商品、订单和支付,这3个分别代表了信息流、物流和资金流,是必需的(对于某些不需要物流的虚拟商品而言,订单步骤也是可以省略的,这里不考虑这类商品)。所以最简单的转化路径应该是:

simplest_path

  跟上面简化后的步骤比较下:

simplify_path

  少了一个浏览商品详情页面的步骤,我们先不去讨论这个步骤到底是否是必需的,先看下数据能告诉我们什么?

  刚好公司的产品同时提供了以上的两种转化路径,可以通过数据来分析一下这两种路径哪个更加有效。不妨将上面那条最简化路径叫做路径1,下面的叫路径2,先看下用户的选择,有多少用户选择路径1完成购买,数据的结果大概是50%,也就是选择路径1和路径2的用户几乎相等;再看看下从“确认订单”到“完成支付”的转化情况,这是两条路径都有的转化,数据显示路径1的转化率要比路径2高了30%,可以看到选择路径1的用户具有更加明确的目的性,就是为了完成购买;那是不是如果只提供路径2一种选择,那些有明确购买目的的用户即使走路径2也会产生跟路径1一样的转化质量呢?这个显然是不可能的,一旦转化步骤多了一步,肯定会多多少少伴随着部分用户的流失,数据显示如果只提供路径2,整体转化率要比提供两条路径低了20%左右,所以对于这个案例,提供两条转化路径对于整体转化率的提升上显然是有效的。

  当然每个数据分析的结果都是以运营环境及产品业务的特征为基础的,在不同的商业模式下完全相同的分析指标可能得到的是完全不同的结果。所以需要对以上数据的环境做个说明:移动互联网的网络环境使用户多请求一个页面的成本相对较高;产品的规格比较统一,差异性小,质量比较稳定;运营的商品价格较低,对于用户而言购买的风险相对较低。

  现在再来回答上面的问题——商品详情页面是不是必需的?用户总是在寻求最简单有效的实现途径来降低成本,但同时也会担心风险的存在,而不同的用户对待风险的态度又会有所不同,诸如上述的运营环境,当风险相对较小时,会有相当一部分用户选择最简化的转化途径来满足自身的需求,同时那些较为严谨的用户也有更多的选择来屏蔽风险。所以转化路径的多样化指的是根据自身产品和业务的特征,定制多种的转化路径来满足不同用户的需求。假设卓越首页也上加上这样的“立即购买”按钮,不知道会有多少用户会选择去点击这些按钮:

amazon_buy_alternate

  最后总结起来无非就是一句话:给用户更多的选择。还是以用户中心的理论,不要因为网站自身的需要而给用户造成额外的麻烦和负担,给用户更多的选择和自由,只要用户参与进来了,就是在为网站创造价值,而网站存在的本质无非就是体现其应有的价值。

数据的报表和报告

  最近一直很忙,所以博客的更新频率会相对慢一点。今天想聊聊关于数据展现方面的几个看法,数据在后台经过各种的计算和处理最终得到了一些合理和直观的指标,我们需要将这些指标展现给数据的需求方,其中就会涉及数据的展示方式和数据的可视化的问题。可能这些问题日常并不被数据处理人员所重视,数据处理人员更关心数据的完整性、一致性、准确性和及时性,而对于数据的展现,更多的是只要数据能够到达需求方的手里即可,很少会有人花心思去关注数据的展现是否合理,需求方是否能够理解数据的含义,理解是否一致,数据是否通俗易懂这些问题。但这里需要说的是,其实数据的展示非常重要,它直接影响看数据的人能否用最短的时间去读懂数据、理解数据,去合理地应用数据,让数据产生价值,最终会影响到用户对数据的兴趣,而一旦用户对每天繁琐累赘的数据失去耐心的时候,数据的价值也会随之泯灭。

  这里主要介绍日常最常提到的两类数据展现方式——报表和报告,从字面上看好像大同小异,但其实两者发挥着截然不同的功效。

报表

  说起报表大家都不会陌生,数据分析师每天都需要看各类形形色色的报表。报表主要展现的是数据的值、趋势、比例等,所以报表只能体现数据上的表现,数据的异常和变化情况。

  报表的展现方式主要包括两类,一类是目前最常见的WEB报表,基于B/S架构的报表系统可以提供支持多人同时登陆和查看相关的数据;另一类就是基于客户端的数据展现,最常见的就是我们会用Excel来制作报表。

  WEB端的报表可以直接通过浏览器登录进行查看,最常见的就是Google Analytics、百度统计等第三方网站分析工具的数据展现,将数据托管到了它们的服务器上提供SaaS的服务;

GA-Dashboard

  WEB报表另一类就是BI报表工具,与第三方工具的不同之处在于系统搭建在自己的服务器上,数据自然也保存在本方,能够保证数据的隐私和安全。定制性也会比第三方工具高一些,除了提供自定义Dashboard、简单的数据筛选等功能外,还可以自己制作报表、定制图表,提供各类Query和Hint组件,而且随着BI功能的不断发展,大部分的BI报表都提供了多维模型的制作和OLAP的展现。国外知名的BI工具包括IBM的Cognos,Oracle的BIEE及SAP的BO(Business Object),国内比较熟悉的水晶报表是BO面向中心企业的一套解决方案;开源的BI工具在国内用的最普遍,文档资源最丰富的要数Pentaho;国内的BI工具目前不多,前段时间发现用友有个BQ的商务智能平台,但没有细致了解,所以不好评述。

BI-Dashboard

  客户端的报表将数据读取到本地进行查看,所以优势在于数据的响应速度很快,可以随意的更改和处理数据,不用顾忌对原数据的损坏,所以最大的好处就在于对数据操作的灵活性;而相应的不足就在于数据并不是最新的,每次需要去刷新数据,当遇到数据量比较大时,刷新的效率就会很低,并且对于能够承受的加载数据量也没有WEB端多。所以这也是目前WEB报表比较流行的原因。

报告

  报告所体现的作用其实与报表截然不同,报表所能解释的问题仅限于数据层面,而报告则丰富得多,报告应该能够从各方面,包括产品状况、运营状况、市场推广状况、销售状况甚至总体的战略经营状况,对数据的表现提供业务和决策层面解释,从而分析和总结业务和决策上的问题,为有效的优化提供支持。

  所以报告是对报表的一种提炼,不再局限于数据本身,而是要通过数据去寻找业务层面的原因,所以往往报告上的解释和总结对于公司的整体运营更有价值,报告是数据分析提炼的一个必要环节。

Excel报表实例

  相信正在看这篇文章的人有99.9%用过Excel来查看、处理和分析数据,所以对于Excel里面一般的表格和图表都在熟悉不过了,我不是使用Excel的佼佼者,所以这里不去班门弄斧了。但从数据分析的角度,其实Excel里面的一类功能非常实用,而且能够非常方便地实现数据的汇总和细分,就是数据透视表

  数据透视表是作为报表来展现数据的一种很好的方式,有以下几个优势:

  • 可以连接外部数据源将数据导入Excel,Excel几乎支持所有数据库作为外部数据源,通过数据—获取外部数据来进行数据源的连接数据,并导入数据。
  • 可以实现数据刷新,Excel支持后台、定时和打开刷新这几种数据的更新方式,所以解除了需要手工输入维护数据的烦恼;
  • 支持多种数据聚合方式,求和、计数、平均值、最大最小值等;
  • 支持基本的OLAP操作,包括下钻(展开)、上卷(汇总)、切片(单项筛选)、切块(多项筛选)和旋转(行列交换)。

  下面是我从Oracle导入制作的一个数据透视表示例,下面提供了Excel文件的下载,大家有兴趣的可以下载过去自己玩玩:

Excel-Pivot-Sample

点击下载:Excel透视表示例

  好了,趁着春节前一小段闲暇跟大家分享了我对报表和报告的理解,以及用Excel制作的一个最简单的交叉透视表,这也是近段时间我所进行的工作的其中一块,希望大家能够受用。无论你现在是不是足够重视数据的可视化,无论你现在有没有精心地去制作各类报表和报告,我想说的是请尊重数据的用户,我们要让用户更愉悦地去看数据,这样才能让用户更好地理解数据和应用数据,而这个正是数据的用户体验所在。

  最后,提前祝大家春节愉快,跟家人好好聚聚,过一个温暖惬意的春节。