网站数据分析的一些问题2

Business_Intelligence  上一篇——网站数据分析的一些问题1中主要罗列了一些关于网站数据分析行业与数据分析师这个职业相关的一些问题,这篇是第二篇,主要想罗列一些关于BI的问题。

  BI(Business Intelligence,商业智能),先看一下维基百科上面对BI的定义:

Business intelligence (BI) is defined as the ability for an organization to take all its capabilities and convert them into knowledge.

  BI提供大量有价值的信息引导企业寻找新的发展机遇,当企业认识到潜在的机遇并成功地实施相应战略决策的时候,BI就能帮助企业在市场建立竞争优势并维持企业持续地发展。BI时常跟决策支持系统(Decision Support System, DSS)联系在一起,其实BI最主要的目标就是实现对企业的决策支持。

  下面就探讨几个BI方面的问题:

Q1、BI与数据仓库(DW)之间的关系是怎么样的?(知乎

  首先可以明确的是BI的重点在于对数据的应用上,让数据变成有价值的信息,而所有的基础数据基本都是来源于数据仓库。

  BI有两个方向的定义:广义的BI是包含数据仓库的,广义的BI包括数据的获取、处理、储存,到之后的分析、挖掘、展现变成有价值信息的整个过程,组成了一套完整的系统,当然在这个系统中数据仓库担当着从数据获取之后的处理和存储的职责,是基础组成部分;狭义的BI仅仅包括上层的数据应用,包括数据的展现、分析、挖掘等,所以不包括数据仓库。

  因为BI的定义更侧重于数据应用,而随着数据量的不大扩大,数据仓库更多地被作为一项独立的技术被抽离出来,所以当前BI和数据仓库的定义更倾向于分离,整个系统被叫做“DW/BI”的解决方案。

Q2、BI系统主要是为了帮助企业解决什么样的问题?(知乎

  BI最初的目标就是优化企业的决策支持,实现从数据到有价值的信息的转化,辅助企业商业战略和决策的制定。所以BI的最终目标是获取商业的Insight。

  BI首先实现的是企业数据的透明化,原始的数据报表就是为了从数据的角度定量地掌握企业的运营状态,有了数据的支撑,很多决策的制定就会有了参考依据。随着商业和信息技术的不断发展,BI不再仅仅停留在报表的领域,数据除了展现以外被更多地用于商业分析,而商业分析的基础组成就是统计、预测和优化,这些对企业的运营决策起到了更加关键的作用。但随着信息膨胀,数据量的剧增,BI也不断面临挑战,我们需要花更多的成本去处理和存储数据,需要花更多的精力去分析和应用数据。我之前写过BI应用中的三大矛盾这篇文章,因为有段时间了,很多地方的看法可能有了变化,但这3个矛盾相信依然还是存在。

  所以,最终还是要把握BI的输出是有价值的信息,无论中间的处理方式是查询、报表,还是分析、挖掘,最终要得出的是有价值的结论。

Q3、目前BI的应用或组件主要有哪些?(知乎

  这里简单地归纳了一下,可能会有遗漏,希望大家能够在评论中补充。这里仅仅包括狭义BI中基于数据应用层面的一些功能,数据仓库的数据处理方面的应用不在这里罗列。

  首先是报表、图表和Dashboard,目前的报表和图表除了更加丰富以外,跟传统报表还有一个关键的区别就是可交互性。目前的报表基本都提供简单的数据筛选、排序等功能,Dashboard的出现实现了按需整合报表和图表的功能。

  再则是OLAP,OLAP一度被当做BI的核心功能,不得不承认OLAP是分析数据最有效的手段,尤其是基于多个维度多个层面的分析,这些是一两张报表图表所无法做到的。OLAP一般都是基于已经设计成型的多维模型以及存放多维模型的数据集市(Data Mart),数据集市和OLAP跟业务层面有着很多关联,这个使数据集市跟底层的数据仓库有了区分。

  然后是数据的查询和分析,有时基于既定的模型的OLAP无法满足分析的需求,所以就有了数据查询的需求,一般直接查询数据仓库的细节数据;BI中的Ad-hoc Query则是对既定多维模型的灵活查询,可以自由组合维度和度量。

  最后是报表的发布和数据预警,这都是属于BI平台的推送功能,一般可以通过邮件订阅的形式定期把组合的报表推送给相关的人员,而通过预警的设定,可以监控数据的变化趋势,掌握数据可能出现的异常。

  另外BI还有很多新奇的功能,如基于GIS的地图数据、基于Flash实现的动态图表及对数据挖掘功能的集成等。

Q4、BI中的多维数据模型和OLAP的实用价值在哪?(知乎

  之前有关于多维数据模型和OLAP的介绍,可以参考数据仓库的多维数据模型数据立方体与OLAP这两篇文章中的内容。

  其实多维数据模型和OLAP最主要的是解决了如何有效地观察数据的问题,传统关系模型很难直接对数据进行观察分析,而多维模型为数据观察者提供了清晰的视角,就如平常我们从多个角度看待事物一样,多维模型维度的设计就很好地提供了这些角度的选择。而OLAP的几个操作形式正是体现了“分析”这个词本身的含义,从总体到细节,结合多个维度的交叉分析,让我们具备了对整个数据集进行全景观测的能力。

  OLAP最关键的技术除了多维模型设计还有就是预计算(Precomputation),或者叫预聚合,预计算解决了数据快速获取的问题,基于一定的规则或者算法对数据集进行预计算之后,OLAP的操作性能可能得到有效地提升,从而使对大量数据的快速灵活的分析操作成为可能。

Q5、目前市场上主流的BI产品主要有哪些?(知乎

  市场上主要的商业BI产品包括IBM的Cognos,另外IBM有自己的DB2可以建立数据仓库,在2010年收购SPSS之后,让其在数据分析和数据挖掘的领域也更加具有竞争力、SAP的Business Objects(BO),另外SAP有BW(Business Information Warehouse),作为传统的ERP方案提供商在数据集成方面有独特的优势、Oracle的BI(企业级的叫BIEE,Oracle Business Intelligence Enterprise Edition),Oracle借助其强大的关系型数据库建立数据仓库有独特的优势。这3大商业BI都属于整合型的BI,再加上微软借助Sql Server数据库提供的SSIS、SSAS和SSRS也是属于整合型的BI解决方案。另外也有独立的BI公司,如SAS,传统优势在数据挖掘领域、Micro Strategy的BI解决方案、开源强大的BI系统Pentaho(之前几年还有很多开源的BI系统,但因为BI在技术上有一定的门槛和成本,所以目前很多开源BI 都会包括开源版本和商业版本,Pentaho也不例外),国内也有用友的BQ软件也是属于BI产品。

  归纳一下就是目前的BI产品主要以商业产品为主,而且整套的BI产品一般都是重量级的,在购买、部署和使用上都需要一定的成本投入。

  如果对BI方面有自己的见解,欢迎在下面评论,或者到知乎回答相应的问题。 :)

Google Website Optimizer报告解读

google-website-optimizer  前段时间用博客的几个测试页面尝试了下使用Google Website Optimizer做A/B测试,经过这段时间收集了一些测试数据,感谢大家帮忙点击。其实之前一直想介绍Google的这个网站对比实验优化工具,完全免费而且操作简单,并且在不久的将来独立的Google Website Optimizer就会消失,这块功能会被整合到Google Analytics里面,相信很多GA的用户已经在Content模块中发现了新增的Experiments这个功能,这个就是从Google Website Optimizer衍生而来,功能和使用上面应该会有些调整和变化。

  对于Google Website Optimizer的使用其实并没有那么复杂,使用实验的创建向导结合网页的提示和帮助,普通的用户创建自己的实验完全没有问题,只是网站的千差万别可能有很多的细节方面需要注意,或者需要想一些办法让实验过程和监控结果更加有效。所以这里不介绍GWO工具使用本身,我比较感兴趣的其实是实验输出的结果报表,里面涉及对结果的区间预估,测试方案胜出的概率,提升幅度等,这些指标都用统计学的方法计算得到,相比直接比较两组观察值,比较结果更加科学,更具说服力。

  首先看下GWO输出的报告,这里用的是A/B测试,如果使用Multivariate Testing(MVT)报告会有细微的差异,但指标及统计逻辑应该是相同的:

GWO-Report

  我用GWO实现了一个最简单的A/B测试,一个原始版本和一个测试版本,输出的报告主要是比较实验过程中设定的转化率。上方的折线图显示的是原始版本和实验版本的转化率趋势,截至目前的转化情况显示在下方表格的最右侧(Conv./Visitors),从指标名称看,GWO衡量转化率用的是转化的用户数,应该使用Cookie来唯一识别用户(这里仅是在博客新建了几个简单测试页面,所以数据量较小,而转化率相比正常网站都明显偏高)。

  所以,这里重点研究了下图中表格红框内的3个指标,看它们是如何计算得到的。

估算转化率

  从图中红框1中可以看到Est. conv. rate,GWO报表对目前得到的转化率做了正负区间的预估,进而可以得到目前该版本转化率可能的置信区间(详见前一篇文章——参数估计与置信区间),这里用当前的转化率估计该版本的总体转化率p,进而可以计算得到总体标准差σ= sqrt(p(1-p)/n),比如这里原始版本的总体标准差约为0.0540,而测试版本的标准差约为0.0647,根据Zα/2×σ计算得到的上表中正负的7.6%和9.1%,所以我们就可以猜出GWO用的Zα/2大概为1.4,这个数值我在测试期间接连验证过几次,基本非常稳定,根据Z值表,这个置信区间大概的置信度在84%,也不知道为什么GWO要选择这么个置信度。

  红框1的上方我们可以看到GWO根据测试的效果将测试版本分成了三类,分别用绿色表示胜出的测试版本,黄色表示不确定的测试版本,红色表示落败的测试版本。Google仅给出了简单的说明,建议我们可以选择使用显示为绿色的版本,因为它们有很大的可能性(也只是可能)优于原始版本,而显示红色版本建议可以停止测试。具体到指标需要达到怎样的水平才会显示绿色或红色,我没有去验证,有使用经验的或者感兴趣的同学可以去观察下试试。

胜过原始版本的几率

  之前在T检验和卡方检验这篇文章介绍过可以使用卡方检验的方法来比较二项分布数据间的概率是否存在显著差异,但卡方检验只能检验差异的显著性,没法直接说明某组样本的概率有多少的几率超过另外一个样本,所以在GWO的报告里面没有使用卡方检验,而使用了单尾Z检验。当样本数量超过30的时候,我们一般会使用Z检验来替代T检验比较两组独立或配对样本间的均值差异,因为这里只是为了证明一组样本概率明显超过另外一组样本的可能性,所以使用了单尾检验。计算Z统计量的公式如下:

Z-Test

  根据表格的数据,原始方案和测试方案的转化率均值p分别为78.9%和78.0%,根据公式S2=p(1-p)分别计算两组样本的方差为0.1665和0.1716,而两组样本数n分别为57和41,进而计算得到Z=0.1068,查Z值表可得Z=0.10的概率为46.02%,Z=0.11的概率为45.62%,表中显示的Chance to Beat Orig.=45.9%,介于两者之间,使用的应该是类似的统计方法得到的值,偏差是因为中间精度处理引起的。

观察到的改进

  图中红框3的Observed improvement,这个指标需要结合红框1的转化率置信区间来看,结合条形图可以比较清晰地得出结果,看下我用Excel画的展现估算转化率的类似条形图:

GWO-est-conv-rate

  这里我用了两条辅助的虚线,如果第一个是原始版本,那么测试版本所有与原始版本转化率预估区间的差异都会用颜色展现,而观察到的改进就是着色区间的转化率差异。比如图中第二个条形的红色区间展现的相应值为-4.2%,而第三个应该是-1.6%+0.6%=-1.0%,即左侧的负值区间加上右侧的正值区间,第四个为2.9%。这样GWO报表中所有指标的计算都可以明确了 :)

  其实,大部分时候我们使用工具来完成分析或测试的过程,也不一定非要了解所有指标最底层的计算逻辑,我们只要知道这些指标的含义及作用,在分析具体问题时合理地使用这些指标就可以。而有些时候我们只能统计得到一些基础数据,所以如何使用这些基础数据得到一些有价值有说服力的分析结论就需要用到一些合适的统计学方法,这也是这篇文章去解读GWO输出报表的原因。

参数估计与置信区间

confidence-level 

  我们总是希望能够从一些样本数据中去探究数据总体的表现特征,在网站数据分析中也是如此,我们试图从最近几天的数据表现来推测目前网站的整体形势是怎么样的,有没有变好或者变差的信号,但当前几天的数据无法完全代表总体,所以这里只能使用“估计”。同时,网站的数据始终存在波动,将最近时间段的数据作为抽样样本很可能数据正好处于较低或者较高水平,所以我们用样本得到的估计值不可能是无偏差的,我们同时需要去评估这个估计值可能的变化区间。 

  参数估计(Parameter Estimation)是指用样本的统计量去估计总体参数的方法,包括点估计和区间估计。 

点估计

  点估计(Point Estimation)是用抽样得到的样本统计指标作为总体某个未知参数特征值的估计,是一种统计推断方法。 

  一般对总体参数的估计会包括两类:一种是用样本均值去估计总体均值,对应到网站数据中的数值型指标,比如网站每天的UV,我们可以用近一周的日均UV去估计目前网站每天唯一访客数量的大体情况;另外一种是用样本概率去估计总体概率,对应到网站数据中的比率型指标,比如网站的目标转化率,我们可以用近3天的转化率去预估网站当天目标转化的水平;同时我们会计算样本的标准差来说明样本均值或者概率的波动幅度的大小,从而估计总体数据的波动情况。 

  点估计还包括了使用最小二乘法对线性回归做曲线参数的拟合,以及最大似然估计的方法计算样本集分布的概率密度函数的参数。 

区间估计

  区间估计(Interval Estimation)是依据抽取的样本,根据一定的正确度与精确度的要求,估算总体的未知参数可能的取值区间。区间估计一般是在一个既定的置信水平下计算得到总体均值或者总体概率的置信区间(Confidence Interval),一般会根据样本的个数和标准差估算得到总体的标准误差,根据点估计中用样本均值或样本概率估计总体均值或总体概率,进而得出一个取值的上下临界点。 

  我们可以将样本标准差记作S,如果我们抽样获取的有n个样本,那么总体的标准差σ就可以用样本标准差估算得到: 

std_dev-to-std_err 

  从这个公式中我们可以看到大数定理的作用,当样本个数n越大时,总体指标差σ越小,样本估计值越接近总体的真实值。Excel的图表里面也提供了添加“误差线”的功能: 

Excel-error-bars 

  有了总体的标准差σ,我们就可以使用区间估计的方法计算总体参数在一定置信水平下的置信区间,置信区间(Confidence Interval)给出了一个总体参数的真实值在一定的概率下会落在怎么样的取值区间,而总体参数落在这个区间的可信程度的这个概率就是置信水平(Confidence Level)。当抽取的样本数量足够大时(一般n>30),根据“中心极限定理”,我们可以认为样本均值近似地服从正态分布。 

  根据Z统计量的计算公式: 

Z-Score 

  假如在1-α的置信水平下,则总体均值μ的置信区间为: 

Confidence-Interval 

  这里样本均值和标准差都可以根据抽样的结果计算得到,所以在既定置信水平的条件下,我们只要查Z值表(Z-Score)得到相应的Z值就可以计算得到总体均值的置信区间。对于置信水平或者叫置信度的选择,在统计学中一般认为95%的置信度的结果具有统计学意义,但其实在互联网领域数据的分析中不需要这么高的置信度,我们有时也会选择80%或者90%的置信度,相应的Z值见下表: 

置信水平1-α 对应Z值Zα/2
95% 1.96
90% 1.65
80% 1.28

  对于总体概率的估计,在具备足够样本数量的条件下,我们用样本概率p预估总体概率,而总体概率的标准差则是sqrt(p(1-p)/n),同样可以计算得到置信区间。 

  其实这篇文章的内容大部分都可以在统计学书籍或者网上Wiki里面找到,当然写到博客里面不是为了做科普,这里的每篇“数据分析方法”类目下的文章都是跟相应的网站数据分析的应用文章结合,这篇也不例外,如果你对相关内容感兴趣,请关注后续发布的文章,或者订阅我的博客吧。

了解网站页面的点击情况(续)

click  前几天一个朋友让我试用了他们自己开发的记录和统计页面链接点击的工具,实现的功能类似于我上一篇文章——了解网站页面的点击情况介绍的Google Analytics上面的In-Page Analytics的功能,并且弥补了In-Page中的一些缺陷,因为这个功能无论是实现方式还是一些面向应用的设计都非常棒,所以忍不住开一个续篇来介绍一下。

  非常感谢@jasseyyang能够让我体验和试用他们自己开发的工具,跟我交流分享了工具实现过程中对一些功能的设计和考量,很多功能点都是jasseyyang根据自身应用的需要设计添加的,所以整个工具最后的实用性非常好,与他设计阶段细致的考虑是分不开的,工具的设计和实现jasseyyang已经在他的博客中进行了介绍——页面点击分析工具设计与实现

部署和使用

  首先不得不说下这个工具的部署和使用,因为很好地诠释了易用性和方便高效的数据查看体验,对于所有产品而言,易用性和使用体验都尤其重要,数据分析工具也同样如此,所以我们往往会借助图表和一些可视化方法来展现数据,但所有的数据可视化都不宜“喧宾夺主”,这里的“主”当然是数据所要表达的观点(Insight)。合理使用数据可视化可以帮助我们更高效地理解数据。

  跟很多网站分析工具一样,这个工具也使用了嵌入JS页面标记的方法,在需要监控的页面中加入一行短短的JS代码就可以,其实就是加载了一个.js文件,所有功能都包含在这个文件里面了。

  然后就是如何查看数据,只要在页面的URL后面加上#hotlink,比如我的博客首页当使用“http://webdataanalysis.net/#hotlink”时页面就会显示出各链接的点击数据,与In-Page Analytics的展现形式一样,使用了顶部的悬浮导航条和黄色小气泡,看下我的博客的截图效果:

hotlink

  悬浮导航条上面的一些选项可以对数据做一些细分和筛选,下面会介绍,页面的每个链接的旁边都会出现一个黄色小气泡显示在导航条指定条件下的点击数。当然数据的显示有权限控制,只有具有权限的用户在使用#hotlink之后才会显示数据。这个方法确实非常方便,其实很多工具都可以学习借鉴。而且点击数据的统计和显示基本都是实时的,当前产生的点击马上就会被累加显示。

数据的筛选和细分

  GA的In-Page Analytics功能没有提供直接的数据筛选和过滤功能,但我们可以通过高级群组和高级过滤器等进行数据筛选,而这个工具直接在悬浮导航栏中提供了一些基础的数据筛选和细分,包括日期和时间段、来源、新老用户:

hotlink-navigation

  如上图,导航栏最左侧直接可以选择查看今日和昨日的数据,同时也支持时间区间的选择,如这里我选择了5月18日至5月20日的所有页面点击数据。

  来源的细分也做得非常好,不但可以查看来源网站的域名(左侧的下拉框),同时支持来源网站的进一步细分,比如这里选择的是百度,因此来源被当做了搜索引擎,点击来源下拉框旁边的“来路详细”之后就会在右侧显示搜索关键词即每个搜索关键词带来的点击数;如果来源非搜索引擎,而是普通的外部链接网站,那么显示的“来路详细”就是该网站中链过来的具体页面URL,使用来源细分我们可以进一步明确各来源页面带来的点击,各搜索关键词带来的点击,及这些点击发生在页面何处,如何分布,这些在分析网站的推广效果的时候格外有用。

  最后就是位于中间的“新老访客”细分,根据jasseyyang的介绍,新老访客的识别不是根据全站的访问,而是根据每个页面的点击情况进行记录,如果用户在一个页面产生了点击,那么当用户第二天重新进入这个页面时,用户就算是该页面的老用户。这个定义考虑了具体的业务应用,因为如果用户没有访问过一个页面,即使该用户进入过你的网站,该页面对该用户而言也是陌生的,相应的产生的点击也应该是用户首次浏览该页面时感兴趣的链接。

实际的应用

hotlink-external-links  GA的In-Page Analytics功能虽然同样提供了页面的点击数据,但因为其本身统计方式上的缺陷,导致在使用中会遇到一些麻烦,造成了应用的一些局限性,而这个工具很好地解决了这些问题。

  解决的第一个问题是对外部链接的监控,如右图所示,我的博客友情推荐了另外一个朋友的一个数据监控工具,图片链接指向该工具的介绍页,像这类网站外部的链接的点击数据在GA的In-Page Analytics是不显示的,只有通过配置事件监控等方法才可以监控统计;再有就是基本每个博客中都有的友情链接表,比如我的博客会跟一些同行业朋友的博客交换链接,相互推荐,这些链接也都是站外链接;再如网站里面投放广告或者链到其他域名下的推广链接,对这些点击数的统计就可以评估广告投放的效果,其实CTR就是CPC类广告一个非常重要的考核指标。

  工具解决的另外一个问题是GA的In-Page Analytics对同一页面中相同的链接是不区分的,这样我们就无法知道点击到底来源于哪个链接,如我的博客首页展现的每一篇文章的区块其实都有3个地方可以进入该文章的详情页:

hotlink-duplicate-links

  文章的标题、文章的缩略图和阅读更多……都可以点击进入文章页面,所以我们有的时候从用户体验设计的角度会考虑内容的曝光到底是使用文字链还是使用图片抑或是文字链结合图片的效果更佳?使用这个工具就能够有效地完成这个评估。其实这个问题在之前分析手机端的应用产品时遇到过,因为手机的屏幕有限,所以每次可以曝光的内容就会受限,而我们知道尤其是首页第一屏的内容展现又尤为重要,如果我们使用图片结合简单文字说明,那么一屏可能只能曝光2-3个内容,而如果换成纯文字链接,那么可以曝光的内容可能可以增加一倍,但有时精美的图片可以有效提升用户的兴趣,进而吸引用户的点击和浏览,所以这个时候我们就需要权衡,而结合数据分析的方法可以给我们更科学和有说服力的答案。

  当然,这个工具是他们内部使用的,所以肯定还可以做很多定制性的东西,比如定制网站的目标,跟GA的In-Page Analytics一样既可以监控点击同时可以监控目标到达的情况;或者可以对某些特殊的链接做标记,以便对一些链接做特殊的细分等等。我想如果市场上有这样的工具,应该很多网站也会尝试去使用的。

了解网站页面的点击情况

  有时候我们需要了解网站页面中各链接的点击情况,尤其是网站的首页和一些中间页,这对网站的内容编排、用户体验优化都能起到很好的指导作用。Google Analytics的老版本有Site Overlay(网站覆盖图)的功能,可以查看网站首页的点击分布情况,新版本将这个功能重新命名为In-Page Analytics,可以在Content模块中查看,下面是我的博客的一张使用截图:

Google-In-Page-Analytics

  如图所示,GA的In-Page Analytics用气泡的形式显示了页面中每个可点链接的点击转化率(CTR, Click Through Rate),这里页面中各链接的点击转化率是通过页面链接的点击次数除以页面浏览次数计算得到的,用来表现用户在浏览当前页面的时候更倾向去往哪些下一页面,具体的点击次数会在鼠标移动到相应链接后显示。

  其实使用GA的In-Page Analytics不仅可以观察页面中各链接点击情况,还可以观察页面当前显示部分的点击占比,比如上图该页面显示部分的点击占比为1-41%=59%,图中最下方显示还有41%的点击是在当前显示部分的下方。这个功能其实可以告诉我们一些非常有用的信息,用户在浏览页面的时候更倾向于在哪一屏发生点击?因为目前大部分网站的页面都不会在一屏就结束,用户浏览完整的内容往往需要使用鼠标的滚轮或者进行下拉,那么大部分用户到底会关注到页面第几屏的内容,这个功能每一屏的点击占比分布可以告诉我们一些线索。

  先解释一下这里“一屏”到底是一个什么概念,这里一屏主要指用户在打开页面不进行下拉时所能显示的页面长度部分,这跟电脑的显示器和屏幕分辨率有关,比如我的博客首页在我的笔记本上打开大概显示4屏多一点,在分辨率较低的显示器下面可能需要显示的屏数就会增加,需要更多的下拉;而分辨率高的显示器一屏内能够显示的页面更长,可能就不再需要4屏。

  用户浏览页面的内容是有局限性的,并且用户对内容的兴趣和耐心也是有限的,用户往往只会重点关注一下子就映入眼帘的内容,所以页面的前面部分一定会有更多的用户关注,而随着不断下拉,后面部分的内容的关注度逐步减少,我们可以根据In-Page Analytics上面提供的数据来看看这个局部减少的过程:

page-click-distribution  根据我的博客首页的点击分布情况,超过60%的点击发生在第一屏,第二屏基本上占据了30%左右的点击,第三屏在6%-7%,下面所有剩下了几屏仅有2%-3%的页面点击占比,我们可以使用点击热图分析得到类似的页面点击分布情况。可能有人会说你的博客大部分的链接都集中在第一屏和第二屏,之后几屏的链接数量都比较少,所以点击占比前面两屏很高也是说得过去的,有一定的道理,但即使博客的第一屏和第二屏有近似密度的可点击链接,可以看到第二屏的点击量相比第一屏还是出现了大幅的衰减,另外可以通过点击热图等工具看看页面每一屏的无效点击数,基本可以看出分布的情况也大概符合上面的规律,逐屏大幅下降,在3屏之后寥寥无几。

  如果你细心关注过国内外的各个门户网站,可以看到国内外门户网站页面长度的设计存在明显的差异。可以尝试去上下Yahoo!主站、BBC、CNN等国外主流门户,基本上这些网站的首页长度设计在3-4屏;再看看国内的几个门户,网易5屏、腾讯接近6屏、新浪更是恐怖的8屏(都是基于我自己的笔记本上显示)。所以如果大部分用户浏览网站的习惯跟我的博客使用Google In-Page Analytics上面分析得出的结果相符,那么国内门户的首页后面几屏的内容基本都成为了摆设,因为100个人里面只有2-3个人会关注到这些内容。

  在之前的工作中分享“如何有效提升内容曝光点击率”也提到过类似的问题,必须格外重视首页第一屏的内容质量和呈现方式,因为这部分的内容将主导网站内容的曝光点击率。很明显,一个网站的首页浏览量大概占据了全站的20%到30%(因网站设计而异),而首页的第一屏又占据了首页60%以上的关注度,所以可以看到首页第一屏对整个网站而言是何其的重要。

categories-and-tags-click  当然,In-Page Analytics功能另外一个重要的用户就是分析各内容列表或模块的点击情况,如下图的博客侧边栏“分类目录”和“标签”两个模块的点击情况:

  如左图所示,用户显然更喜欢通过“分类目录”查看博客的内容,用户最喜欢点击哪些分类?有点出乎我的意料,“数据分析方法”和“网站分析工具”两个目录更受欢迎,想必大家都喜欢阅读和学习下工具和方法方面的内容,以后尽量多整理一些这方面的内容。 :)

  新版V5版的Google Analytics的In-Page Analytics不仅仅支持网站首页的点击情况统计,在Content模块Site Content的Pages我们可以看到上方的“Navigation Summary”标签旁边有“In-Page”标签,GA已经支持了所有页面的点击分布图,而且都是免费的,你只要在选择相应页面后点击这个“In-Page”标签就可以进行查看。

  每个页面有了点击分布情况的统计,这样对于页面各个模块或列表的效果评估就变得简单很多,正如我之前的文章——优化相关内容推荐介绍的是使用“Navigation Summary”来评估相关内容推荐模块的点击效果,这里就可以尝试使用In-Page Analytics来分析数据表现:

  右图是《T检验和卡方检验》这篇文章下方的“相关文章”推荐模块的点击情况,可以看到推荐的5篇文章都获得了不错的点击转化率,但显然排在第2位的《提升用户满意度》这篇文章的数据还不够给力,或许用户不喜欢点击这类内容看上去会比较空的标题。

related-content-click  图中有个细节不知道各位有没有注意到,“相关文章”的推荐模块只是上部分,下面还有两个链接分别指向上一篇和下一篇发布的文章,而刚好“下一篇:比较测试的设定和分析”是跟相关文章推荐模块有重复的,而这里显示的点击转化率都为5.7%,其实在In-Page Analytics这个功能里面页面中的相同链接GA是不进行分辨的,也就是GA只认URL为标识,不区分这个URL链接在页面中的位置,大概的统计逻辑应该是一个页面中链接的点击次数为referral是该页面的链接URL的浏览次数Pageviews,所以一个页面中重复链接中输出的点击率应该是根据所有相同链接点击总数计算得到了,数值是完全一致的。比如《比较测试的设定和分析》这篇文章的链接在《T检验和卡方检验》文章页面会有3个地方出现,包括图中的那两处还有右侧边栏的引导到下一篇的链接,这3处地方显示的点击转化率是这3处发生点击的总和计算得到的,数值是完全一致的。

  GA的这个处理方式给针对某个模块点击效果的评估造成了一定的困难,因为点击次数无法区分是否来源于那个模块,或者是由于其他相同链接的点击带来。当然,解决方案还是有很多,可以为模块的链接加上参数,如“相关文章”模块的链接都带上?from=related-content,也可以使用GA的事件追踪(Event Track)和虚拟页面(Virtual Page)这两种方式,具体参考用户点击与网站目标中的介绍。

  文章的内容虽然一般是在周末整理编辑的,但因为周一大家都比较忙,所以选择在周二或周三发布出来,希望大家有时间可以仔细看下。 ;)

网站数据分析的一些问题1

questions-1  从事数据仓库和数据分析相关的工作也有段时间了,其实很多问题一直萦绕在脑中,有些甚至已经困扰相当长的一段时间,自己也在不断学习和工作的过程中寻找各种解决方案或者不断优化和替换之前的方案。这些问题从宏观层面到细节层面,很多问题其实没有绝对完美的解决方案,我们只能一步一步地摸索,不断寻找更优的方案以其让问题能够更好高效地得到解决,但每个人掌握的知识有限,所以无论怎么样每个人对问题的看法都会存在局限性;同时因为每个人的知识背景和经历的差异性,对各种问题又会触发各种不同的见解,所以通过集思广益往往能够得到让人眼前一亮的结论。

  先说说博客,无论怎么样我的博客只是想做些记录和总结,只是表述一些个人的观点,我想每个人在学习工作中总会有所积累,有自己在专业领域的一些收获,每个人公平地享有相同的时间,每个人学到的掌握的都是有限的,没有孰强孰弱之分,差别只在于愿不愿意将其分享出来;博客中整理的内容,可能有些人认为不适合公开,毕竟有些东西还有些实用价值,但必须看到的是目前互联网发展速度太快了,我之前发的文章等半年之后回去看就会发现当时自己的想法并不成熟,如果在现阶段可能不会完全按照上面的思路去实现了,知识的更新和积累让我们不断选择更优的方法,不断改进和升级自身的知识体系,更何况很多东西在一个业务体系下适用,到另外的体系下就不适用了,聪明的人不会完全照搬照抄原方法,而是寻找最合适的方法,或者使用更灵活变通的方式去使用方法,所以也不必担心技能被“偷学”,因为只会模仿的人不知道怎么用好这些方法,而足够聪明的人到哪里都能学到适合自己的方法,在这个信息膨胀的环境下无法阻止他们的“偷学”。

  其实博客最大的收获还是通过博客认识了很多朋友,尤其是网站分析领域的,相当一部分也有自己的博客,大家互相交流学到了很多东西,有些东西是互补并相互促进的,这些朋友都是乐意分享自己想法的人,每个人都有各自领域的专业和强项,这样反而使我听到和学到了很多耳目一新的东西,受益匪浅。所以如果你有时间写写博客,那么得到的收获绝对要比你觉得可能会失去的多得多。

  既然我在博客里面已经写了很多,所以这里想换一个角色,我想通过几篇文章把之前遇到的诸多问题罗列出来,希望大家能够不吝提出自己的看法和解决方案。其实我更希望在博客的评论中看到更多不同的看法或者通过文章的思路扩展衍生出在其他方向上有价值的应用。另外,知乎真的是一个非常棒的知识分享和学习的平台,潜藏了很多的大牛,我会把整理的每个问题都贴到知乎上面,这样可以收集到更多牛人的看法,希望大家在知乎上有认识相关领域的大牛的可以积极地进行邀请。

  这篇是第一篇,想重点罗列一些跟网站数据分析行业和数据分析师相关的问题。

Q1、 你因何会选择网站分析或互联网数据分析这个行业,你认为这个行业的价值何在,发展前景如何?(知乎

  我的答案:互联网是一个阳光行业,而数据分析本身又是一个非常有意思的工作,很多时候,它就像是一个侦探从细枝末节的线索中寻找那个唯一的真相,如果你喜欢这种探秘的感觉,那么你同样会喜欢上网站数据分析这个行业。

  其实我之前在《网站分析的应用和价值》这篇文章中介绍过网站数据分析的价值(这里不引用链接了,大家可以搜一下),简单地说就是“系统地帮助网站实现更加高效的运营”。

  互联网数据量的快速膨胀,急需对数据进行系统化的处理和分析,以便快速地发现信息,转化价值,所以就目前来看,无论是国外的发展趋势,还是国内对这个行业的需求都是快速增长的,发展前景是比较乐观的。

Q2、 作为网站的数据分析师,你完成的最有成就感的事情是什么,感到最纠结的事情又是什么?(知乎

  我的答案:最有成就感的事情就是用数据实现价值,无论是通过数据排查问题进而解决问题,还是通过数据分析应用优化网站产品,其实都是创造价值的过程。

  最纠结的事情其实不是整日需要维护和验证数据的一致性、准确性,数据时常会存在诸多细节上的问题,因为这些基本是必然存在的,无论在哪个公司,网站从事何种业务,技术或者数据的环境如何,数据的问题还是无所不在,而保证数据质量本身就是数据分析师最基础的工作,也是开展分析的前提和基础。

  我最纠结的还是在于数据的需求和应用,如果与数据的需求方在数据的理解上达不成一致,那么很多数据需求就会存在反复的调整变动,期间就会做很多重复的工作或者无用功,甚至有些时候数据分析师大费周章地提取的一份数据在需求方那里只是用几秒钟扫视一遍,没有产生任何的价值,这也是令数据分析师最伤感的事情。所以数据分析始终要从获取最终insight的角度出发,如果数据需求中无法说明获取数据是为了试图得出何种insight,那么这个需求基本就没有实现的必要了。

Q3、 作为网站的数据分析师,你日常工作中最常做的是什么,需要与哪些同事交流,一般会用到哪些工具?(知乎

  我的答案:数据分析师的日常工作很简单,就是数据处理和观察报表,而且这两块工作会占用每天的大部分时间。如果每天能够准时提供准确的报表,及时地反馈数据异常,那么你已经是一个合格的数据分析师了。

  数据分析师要接触的部门会比较多,可以是任何有数据需求的部门,运营、产品、市场、销售、客服……甚至是各层级的BOSS。

  同样,数据分析师日常使用的工具其实也非常简单,估计在90%的时间都在使用数据库的SQL、Excel或者PPT,当然视每个公司的情况会有差异。所以如果你听到某位数据分析师说他天天在研究什么什么样的高级分析方法或者高深的数据算法,天天在使用R、SPSS、SAS,那么不排除有装X的嫌疑。

Q4、 在你刚刚步入网站数据分析的工作,或者你曾经新到一个公司或者网站从事数据分析师的工作,你是如何着手开始你的新工作的,你觉得你需要了解哪些东西,会从哪些方面优先开始学习?(知乎

  我的答案:“业务 => 网站或产品 => 数据处理流程 => 指标和报表”,我的基本流程就是这样的,当然这个也不绝对是前后的顺序,可以是同时结合着看的。

  数据分析的重点不在于数据而在于分析,分析针对的是业务,所以业务是首要了解的东西,就像一个人做事情,首先要明确的是要做的是什么事情;然后是网站或产品,它是实现业务的媒介,就像是做事情时使用的工作或方法;数据的处理流程包括了数据的获取、处理和存储模型,它是记录信息,可以看做是日记,记录了一个人做事情的整个流程;指标和报表就是为了将一个人做事情的整个流程复述出来,把握重点同时又不失关键细节,所以必须要了解指标的统计规则和报表的展现方式,以便更好地突显重点,了解省略的细节,让复述贴近事实。

  很明显,当你了解了这个人在做什么事情之后再去阅读这个人在做事情时记录的信息或听取复述要远比你直接通过复述内容或者阅读记录信息来猜测这个人在做什么事情来得高效得多。

  不知道现在知乎注册还需要不需要邀请码,如果需要的话可以问我要,我的Gtalk(joeghwu@gmail.com)。

多维交叉分析

cross-analysis  我们在进行数据分析的时候,大部分时间都在使用趋势分析、比较分析、细分分析这三类方法,但其实还有一个方法我们也会经常使用——交叉分析,尤其是在排查数据异常的问题时,交叉分析就能展现其强大的威力。另外要跟大家说声抱歉的是博客的更新频率可能没有那么频繁了,但是尽量每个月至少能发布一篇,希望文章的质量有所保证,还是欢迎大家留言讨论,能够发起一些有趣的话题,一起拓展在网站数据分析方面的思路。

什么是交叉分析? 

  交叉分析是指对数据在不同维度进行交叉展现,进行多角度结合分析的方法,弥补了独立维度进行分析没法发现的一些问题。

  交叉分析以多维模型和数据立方为基础,也可以认为是一种特殊的细分方式,但跟细分的概念有点差异,如果有兴趣可以先阅读下之前的文章——数据立方体与OLAP。细分的方法更多的是基于同一维度的纵深展开,也就是OLAP中的钻取(Drill-down),比如从月汇总的数据细分来看每天的数据,就是在时间维度上的细分,或者从省份的数据细分查看省份中各城市的数据,是基于地域维的下钻。交叉分析不再局限于一个维度,就像数据立方体与OLAP文章中的立方体,是基于不同维度的交叉,时间维、地域维和产品维交叉在一起分析每个小立方的数据表现,可以通过OLAP的切片(Slice)和切块(Dice)操作查看例如上海市在3月份的电子产品的销售情况,这会帮助我们发现很多在单个维度中无法发现的问题。所以,交叉分析是基于不同维度横向地组合交叉,而不是细分在同一维度的纵向展开。

交叉分析的展现形式

  交叉分析涉及多维度的组合,虽然图表和表格都可以进行展现,但因为图表所能表达的数据有限,且比较不容易把多个维度的交叉关系展现出来,在交叉分析中不太常用,通常以表格为主。我们平常在看的表格通常被叫做二维表,一般第一列放置一个维度,如日期,表头罗列各类指标(其实所有指标也可以被认为是一种特殊的维度——指标维),这样行列的两个维就组成了最常见的二维表。二维表可以进行扩展,进而展现更加丰富的维度:

pivot-table-layout

  如上图就是典型的基于表格的多维度交叉分析的布局,在行列中分层次放置多个维度,如果我们只显示一个指标,那么这里的指标维就没有显示的必要了。其实Excel的数据透视表(Pivot Table)就是交叉分析的利器,我在数据的报表和报告这篇文章中提到过数据透视表,这里还是基于那篇文章截图的原始数据,如果我们将各维度按照上面的布局形式进行展现的话,会是怎么样的效果: 

excel-pivot-table

  看起来还不错,显示的信息非常丰富,左边包含了以天为单位时间维和产品维,可以使用展开按钮进行汇总和展开,就像是细分的操作;上面的表头部分分两层罗列了地域维和指标维,Excel的透视表提供了丰富的设置,默认展现基于各个维度的汇总数据,让我们可以从“总-分”的角度观察数据,这对数据分析非常有用。假如我们使用上面的透视表进行交叉分析发现数据是否存在异常?

  使用从总体到细节的分析方法,首先可以从查看每天销售额和转化率的汇总数据开始,折叠产品维之后观察最右侧的指标汇总列就可以看到每日汇总数据;如果某一天的销售额或转化率出现了大幅的下滑,我们就可以结合各种维度寻找问题的原因,就是基于各种维度的细节数据,展开产品维观察当天的哪类产品销售出现了问题,然后结合地域维的交叉数据,可以定位哪类商品在哪个省份的销售出现了问题,这样就有效地将问题定位到了细节的层面,能够更好地发现问题,进而解决问题。所以交叉分析其实正是体现了分析“分而析之”的本意。

  上面的方法一般是比较常用的基于问题的分析方法,但我们很少可以一次就定位到问题,往往我们会根据推测多次查询数据库或查看Dashboard上的各类报表来定位问题。而结合透视表的交叉分析,我们使用一张报表就快速地定位了问题所在,从总体到细节,逻辑非常清晰,问题的定位也非常准确和到位,所以合理地利用交叉分析可以帮助我们更加高效地排查问题。

交叉分析的基础

  这里不得不再说一下交叉分析基于的底层基础数据模型,因为如果没有设计好底层的数据模型,上层的交叉分析是很难实现的,或者多维的交叉受到限制而使分析存在局限性。

  从技术层面来看,交叉分析基于多维模型,数据的维度越丰富,所能实现的交叉也越丰富和灵活,通过各种交叉分析能够更加有效地发现问题;但相应的,如果要尽可能地丰富各维度的交叉分析,对基层模型的要求也就越高。所以如何设计好数据的底层模型非常关键,还是引用数据立方体与OLAP文中的那个数据立方看个简单的例子:

data-cube

  如果一张网站分析的报表只包含以月度为单位的日期维和相应的指标,那么数据的存储就是每个月一条记录,但显然这种高度聚合的数据不利于分析,我们需要构建如上图的数据立方体来获取更加细节的数据。用数据立方来拓展数据细节有两种方向,一类是纵深拓展,也就是基于一个维度的细分,比如将一个月细分到每一天,那么一条记录将会被拓展成30条;还有一种是横向的拓展,就是多个维度的交叉,就像上面立方中添加了产品维和地域维。这样存储的数据就从原本单一的时间维度扩展成了时间、产品和地域三个维度,也就是三维立方体所能展现的形式,当然维度可以继续扩展,四个五个直到N个,理论上都是可行的,这里只要以三个维度进行举例就可以。对于数据存储而言,横向的拓展与纵深拓展的影响是一样的,记录数都是以倍乘的方式增长,假设这里产品维是产品大类,有20个产品大类,再加上32个省份或直辖市,那么经过纵深和横向拓展之后,原先每月的1条记录就变成了:

1 × 30 × 20 × 32  =  19200

  而我们在构建多维模型的时候很多维度中包含的数据量绝对不像上面例举的那么小,想象一下网站的商品或者页面的数量可能是成百上千甚至成千上万的,那么一旦以倍乘的形式扩展之后,数据量就会一下子剧增。虽然丰富的多维立方能够给分析带来便利,但也同时给数据的存储和查询带来的压力。

  所以,更加丰富和灵活的分析需求的实现基于更加复杂的多维模型或者数据立方,同时会带来更大的系统开销。Google Analytics很好地权衡了灵活的数据分析与复杂数据模型之间的关系,这也是Google Analytics强大功能的基本保障,GA的高级细分(Advanced Segments)和自定义Dashboard是其他同类免费网站分析工具所无法比拟的,这也正是为什么我们将GA划分到网站数据分析工具,而其他的大部分只能算作网站数据统计工具的原因。而GA正是基于其构建的强大的底层数据模型和高效的数据计算和响应能力,使很多分析功能可以得到扩展,其中很多就涉及交叉分析,这里截图了其中的两个功能,Secondary DimensionPivot

GA-secondary-dimension

  Google Analytics新版本增加了很多令人心动的功能,Secondary dimension的功能从老版本得到了延续,上图在Content模块的Page报表中选择了流量来源作为第二维度,这样我们就可以查看每个页面的流量是从何而来,每个流量来源在该页面的数据表现,同时可能还可以发现一些有趣的现象,比如某些页面的流量基本都是一个来源带来的,比如我的博客的某些文章基本都是通过搜索引擎进来的,而另外一些文章基本通过直接流量带来。

GA-pivot

  在GA的各类报表中可以在右上角选择展现的形式,最后的一种就是Pivot,Pivot的形式对表格的表头进行了扩展,可以分层次放置另外的维度,如上图还是使用了页面与流量来源的交叉,将Source维度放到了指标的上方。同时GA支持在两个维度的基础上最多选择两个度量Metric,我这里选择了Pageviews和Bounce Rate,来衡量每个页面中各类流量来源所带来的“量”和“质”,同样对于分析非常有价值。

  多维的交叉分析我们在日常中潜移默化地经常会用到,交叉分析对于问题的排查和定位额外有效,所以我们需要想办法用更好的形式去展现数据,以便于更有利于进行交叉分析,其实这里介绍的透视表的方式是最常用的,也是比较好用的,但这类方式太少,不知道大家有没有其他更加有效的交叉分析展现方式。

不得不考虑的时间因素

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。如果我们不去考虑时间因素的影响,分析的结果就会产生明显的偏差,进而可能误导对用户的正确评估。

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

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

基于用户细分的比较分析

Pizza  从网站的用户层面,我们根据用户访问的行为特征将用户细分成各种类型,因为用户行为各异,行为统计指标各异,分析的角度各异,所以如果要对用户做细分,可以从很多角度根据各种规则实现各种不同的分类,看到过有些数据分析报告做了各种用户的细分,各种用户行为的分析,再结合其他各种维度,看上去内容绝对足够丰富,但很难理解这些分析结果到底是为了说明什么问题,也许作为一个咨询报告反映当前整体的趋势和用户特征确实合适,但如果真的要让数据分析的结果能够引导我们去做些什么,还是要在做用户细分前确定分析的目的,明确业务层面的需求。

  既然要做基于用户细分的比较分析,自然是为了明确某些用户分类群体的行为特征与其他用户群体的差异。这里主要从指导内容层面的调整为导向,通过比较各用户细分群体对内容需求的差异,优化内容运营,将优质的内容或者符合用户偏好的内容推荐给相应的用户。

  既然是基于用户细分,首先明确用户的细分规则,这里举例3类细分:流失用户与留存用户、新用户与老用户、单次购买用户和二次购买用户,基于这3类细分,对每个分类的用户购买商品进行比较分析,明确哪些商品更加符合用户的预期。

流失用户和留存用户比较

  当然,要区分流失用户和留存用户,首先必须对用户流失有一个明确的定义,关于流失用户的定义可以参考博客之前的文章——网站的活跃用户与流失用户。有了定义我们就可以做统计和细分了,还是以电子商务网站为例,电商网站的内容就是商品,我们基于每个商品计算购买这些商品的用户中购买后造成流失的用户比例,如下:

away-remain-comparison

  这里的指标定义应该比较明确,每个商品的流失用户比例应该是购买该商品后流失的用户数在所有购买该商品的用户中的占比,但只知道每个商品的流失用户比例无法评价这个商品是否对用户保留有促进作用,或者在一定程度上造成了用户的流失,只有通过与总体水平的比较才能得出相应的结论。所以这里需要重点解释的是“与总体比较”这个数值是怎么计算的到的,这里的百分比不是直接相减的结果,而是一个差异的幅度体现,这里假设总体用户流失率为56%,那么以A商品为例,与总体比较的结果是:( 58.13% – 56% ) / 56% = 3.80% ,使用同样的计算方法也可以得到其他商品与总体比较的差异幅度。最后就是展示,在Excel里面通过“条件格式”里面的数据条功能可以直接展现出图中的效果,非常方便。

  很明显,上面图中的分析结果对运营调整有直接的指导性,目的是促进用户保留,所以我们要做的就是将有利于用户留存的商品(F商品的用户流失率明显要比总体低得多,说明F产品更有利于用户保留)推荐给用户,而将那些可能导致用户流失的商品(C商品)进行优化或者下架。

新用户和老用户比较

  同样,使用上面的方法可以区分不同用户群的购买偏向。新老用户的细分是最常见的用户细分方法,我们可以使用类似的方法来看看新老用户对商品的不同喜好:

new-return-comparison

  从上图中你看出了什么?购买D商品的用户中新用户的比例明显偏低,也许新用户根本就不喜欢这个商品,而B商品和F商品显然更加符合新用户的口味。如果你的网站可以进行新老用户区分的定向推广,那么上面这个分析结果将让你受益良多。

  当然,这个数据呈现的特征可能跟商品的推广渠道有一定的关系,比如上图的D商品比较多的是使用老用户比较集中的推广渠道(比如EDM),那么自然购买用户中老用户的比例会偏高;或者把某些商品放在新用户比较集中的Landing Page中展示,那么购买该商品的新用户比例也显然会偏高。所以,在做诸如此类的分析时需要注意根据推广渠道的差异,具体问题具体分析,不能一概而论。

单次购买用户和二次购买用户比较

  使用同样的方法也可以促成用户的多次购买。对于电子商务网站而言,用户的首次购物体验非常重要,这将会直接影响用户是不是会产生再次或者之后的多次购买,或者是否能够成为网站的忠诚客户。如果你的网站注重用户关系管理,那么你可以尝试下使用下面的分析方法:

once-repeat-comparison

  需要注意的是这里的基础用户群设定在了每个商品的首次购买用户(不是所有),我们要分析的是所有将该商品作为首次购买商品的情况下,用户是否还会发起之后的再次甚至多次购买行为,从而评价商品对于首次购买体验的影响好坏。从上表可以看出,B商品和F商品在促成二次购买的表现不佳,很有可能商品的使用或质量问题影响了用户的满意度,阻碍了用户再次购买的脚步。根据分析结果,我们尤其需要对那些二次购买率比总体水平低非常多的商品进行重点关注,同时也需要根据商品的特征进行分析,有些商品确实比较容易促成二次购买,因为可能存在交叉销售和向上营销的情况。

  其实本来想把这篇文章拆分成多篇整成一个系列专题,因为从实现层面而言,每一块的用户细分的分析都需要独立完成,而且大部分要从底层的数据计算得到,如果你从Google Analytics上面从寻找类似的数据,其实唯一可以找到的就只有新访问比例,而且在内容模块里面细分到每个页面的指标也未包含% New Visits(在流量来源、地域细分里面有该度量),当然你可以自定义报告来查看网站每个页面的新访问比例,比较的基准还是网站总体的新访问比例,GA的展现方式选择里面直接提供了与总体比较的视图“Comparison”,下图是我做的自定义报表:

GA-page-newvisits

  GA上面的展现的效果跟用Excel 2010上面定制条件格式后的效果很像(2010可以展现正负值在坐标轴左右侧区分的红绿数据条,2007貌似还未实现此功能),这种基于基准的比较展现非常直观使用,其实在其它的分析中同样可以用到。那么你从我的博客的各内容新用户比例比较分析中看出了什么?访问数排在前几名的文章中很明显的趋势就是概念性方法论的文章新用户比例高于均值(当然主要靠搜索引擎的帮忙),而观点性和分析性的文章的新用户比例低于均值(老用户更偏向于实践和应用 ;)  ),所以如果我的博客可以动态向新用户和老用户展现不同的内容,那么这个分析将十分具有价值,也许你的网站可以尝试下。

  最后还是回到一开始的问题,需要总结的是:细分是用于比较的,比较是为了反映差异进而做出调整优化的,所以细分的目的最终还是指导运营决策,这个才是数据分析的价值体现。

基于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就一定要硬套欧氏距离,其实换一种简单的方法可能反而更加适合整个模型,而且模型的最终效果可能会更理想。所以一切的数据挖掘算法的选择和使用都是基于数据模型的有效性和输出结果的效果来决定的,并不是简单的算法效果就一定不好,而高级复杂的算法一定更加有效。对了,如果你已经做了相关内容推荐,那么优化相关内容推荐这篇文章里面介绍的一些方法将是检验推荐效果的一个很好的参考。