我们在进行数据分析的时候,大部分时间都在使用趋势分析、比较分析、细分分析这三类方法,但其实还有一个方法我们也会经常使用——交叉分析,尤其是在排查数据异常的问题时,交叉分析就能展现其强大的威力。另外要跟大家说声抱歉的是博客的更新频率可能没有那么频繁了,但是尽量每个月至少能发布一篇,希望文章的质量有所保证,还是欢迎大家留言讨论,能够发起一些有趣的话题,一起拓展在网站数据分析方面的思路。
什么是交叉分析?
交叉分析是指对数据在不同维度进行交叉展现,进行多角度结合分析的方法,弥补了独立维度进行分析没法发现的一些问题。
交叉分析以多维模型和数据立方为基础,也可以认为是一种特殊的细分方式,但跟细分的概念有点差异,如果有兴趣可以先阅读下之前的文章——数据立方体与OLAP。细分的方法更多的是基于同一维度的纵深展开,也就是OLAP中的钻取(Drill-down),比如从月汇总的数据细分来看每天的数据,就是在时间维度上的细分,或者从省份的数据细分查看省份中各城市的数据,是基于地域维的下钻。交叉分析不再局限于一个维度,就像数据立方体与OLAP文章中的立方体,是基于不同维度的交叉,时间维、地域维和产品维交叉在一起分析每个小立方的数据表现,可以通过OLAP的切片(Slice)和切块(Dice)操作查看例如上海市在3月份的电子产品的销售情况,这会帮助我们发现很多在单个维度中无法发现的问题。所以,交叉分析是基于不同维度横向地组合交叉,而不是细分在同一维度的纵向展开。
交叉分析的展现形式
交叉分析涉及多维度的组合,虽然图表和表格都可以进行展现,但因为图表所能表达的数据有限,且比较不容易把多个维度的交叉关系展现出来,在交叉分析中不太常用,通常以表格为主。我们平常在看的表格通常被叫做二维表,一般第一列放置一个维度,如日期,表头罗列各类指标(其实所有指标也可以被认为是一种特殊的维度——指标维),这样行列的两个维就组成了最常见的二维表。二维表可以进行扩展,进而展现更加丰富的维度:
如上图就是典型的基于表格的多维度交叉分析的布局,在行列中分层次放置多个维度,如果我们只显示一个指标,那么这里的指标维就没有显示的必要了。其实Excel的数据透视表(Pivot Table)就是交叉分析的利器,我在数据的报表和报告这篇文章中提到过数据透视表,这里还是基于那篇文章截图的原始数据,如果我们将各维度按照上面的布局形式进行展现的话,会是怎么样的效果:
看起来还不错,显示的信息非常丰富,左边包含了以天为单位时间维和产品维,可以使用展开按钮进行汇总和展开,就像是细分的操作;上面的表头部分分两层罗列了地域维和指标维,Excel的透视表提供了丰富的设置,默认展现基于各个维度的汇总数据,让我们可以从“总-分”的角度观察数据,这对数据分析非常有用。假如我们使用上面的透视表进行交叉分析发现数据是否存在异常?
使用从总体到细节的分析方法,首先可以从查看每天销售额和转化率的汇总数据开始,折叠产品维之后观察最右侧的指标汇总列就可以看到每日汇总数据;如果某一天的销售额或转化率出现了大幅的下滑,我们就可以结合各种维度寻找问题的原因,就是基于各种维度的细节数据,展开产品维观察当天的哪类产品销售出现了问题,然后结合地域维的交叉数据,可以定位哪类商品在哪个省份的销售出现了问题,这样就有效地将问题定位到了细节的层面,能够更好地发现问题,进而解决问题。所以交叉分析其实正是体现了分析“分而析之”的本意。
上面的方法一般是比较常用的基于问题的分析方法,但我们很少可以一次就定位到问题,往往我们会根据推测多次查询数据库或查看Dashboard上的各类报表来定位问题。而结合透视表的交叉分析,我们使用一张报表就快速地定位了问题所在,从总体到细节,逻辑非常清晰,问题的定位也非常准确和到位,所以合理地利用交叉分析可以帮助我们更加高效地排查问题。
交叉分析的基础
这里不得不再说一下交叉分析基于的底层基础数据模型,因为如果没有设计好底层的数据模型,上层的交叉分析是很难实现的,或者多维的交叉受到限制而使分析存在局限性。
从技术层面来看,交叉分析基于多维模型,数据的维度越丰富,所能实现的交叉也越丰富和灵活,通过各种交叉分析能够更加有效地发现问题;但相应的,如果要尽可能地丰富各维度的交叉分析,对基层模型的要求也就越高。所以如何设计好数据的底层模型非常关键,还是引用数据立方体与OLAP文中的那个数据立方看个简单的例子:
如果一张网站分析的报表只包含以月度为单位的日期维和相应的指标,那么数据的存储就是每个月一条记录,但显然这种高度聚合的数据不利于分析,我们需要构建如上图的数据立方体来获取更加细节的数据。用数据立方来拓展数据细节有两种方向,一类是纵深拓展,也就是基于一个维度的细分,比如将一个月细分到每一天,那么一条记录将会被拓展成30条;还有一种是横向的拓展,就是多个维度的交叉,就像上面立方中添加了产品维和地域维。这样存储的数据就从原本单一的时间维度扩展成了时间、产品和地域三个维度,也就是三维立方体所能展现的形式,当然维度可以继续扩展,四个五个直到N个,理论上都是可行的,这里只要以三个维度进行举例就可以。对于数据存储而言,横向的拓展与纵深拓展的影响是一样的,记录数都是以倍乘的方式增长,假设这里产品维是产品大类,有20个产品大类,再加上32个省份或直辖市,那么经过纵深和横向拓展之后,原先每月的1条记录就变成了:
1 × 30 × 20 × 32 = 19200
而我们在构建多维模型的时候很多维度中包含的数据量绝对不像上面例举的那么小,想象一下网站的商品或者页面的数量可能是成百上千甚至成千上万的,那么一旦以倍乘的形式扩展之后,数据量就会一下子剧增。虽然丰富的多维立方能够给分析带来便利,但也同时给数据的存储和查询带来的压力。
所以,更加丰富和灵活的分析需求的实现基于更加复杂的多维模型或者数据立方,同时会带来更大的系统开销。Google Analytics很好地权衡了灵活的数据分析与复杂数据模型之间的关系,这也是Google Analytics强大功能的基本保障,GA的高级细分(Advanced Segments)和自定义Dashboard是其他同类免费网站分析工具所无法比拟的,这也正是为什么我们将GA划分到网站数据分析工具,而其他的大部分只能算作网站数据统计工具的原因。而GA正是基于其构建的强大的底层数据模型和高效的数据计算和响应能力,使很多分析功能可以得到扩展,其中很多就涉及交叉分析,这里截图了其中的两个功能,Secondary Dimension和Pivot:
Google Analytics新版本增加了很多令人心动的功能,Secondary dimension的功能从老版本得到了延续,上图在Content模块的Page报表中选择了流量来源作为第二维度,这样我们就可以查看每个页面的流量是从何而来,每个流量来源在该页面的数据表现,同时可能还可以发现一些有趣的现象,比如某些页面的流量基本都是一个来源带来的,比如我的博客的某些文章基本都是通过搜索引擎进来的,而另外一些文章基本通过直接流量带来。
在GA的各类报表中可以在右上角选择展现的形式,最后的一种就是Pivot,Pivot的形式对表格的表头进行了扩展,可以分层次放置另外的维度,如上图还是使用了页面与流量来源的交叉,将Source维度放到了指标的上方。同时GA支持在两个维度的基础上最多选择两个度量Metric,我这里选择了Pageviews和Bounce Rate,来衡量每个页面中各类流量来源所带来的“量”和“质”,同样对于分析非常有价值。
多维的交叉分析我们在日常中潜移默化地经常会用到,交叉分析对于问题的排查和定位额外有效,所以我们需要想办法用更好的形式去展现数据,以便于更有利于进行交叉分析,其实这里介绍的透视表的方式是最常用的,也是比较好用的,但这类方式太少,不知道大家有没有其他更加有效的交叉分析展现方式。