标签归档:预测

指标的移动平均

——数据的上下文3

Moving-average  接着之前数据上下文(Context)的话题继续探讨网站分析中可以设立的数据意境。数据上下文2中的网站质量控制图为网站的KPI指标给出了有效的监控体系,但质量控制图毕竟比较严谨,其实对于大部分互联网环境的指标而言,可能并不符合这么苛刻的条件,于是我们需要寻找另外的方法来监控和观察这些指标的变化趋势。

  同样是基于时间序列的分析,前面的文章——时间序列的趋势分析中主要介绍了“同比”和“环比”的概念,这里在介绍一种方法——移动平均法。其实移动平均线应用最多的是在股市,5日、10日、30日均线都是用移动平均法计算得到的;而移动平均线也是Excel中的趋势线的一种类型。所以移动平均法最常见的用法就是对于趋势变化的观察分析,但同时也具备了预测和比较监控的功能。下面介绍两个最简单常用的移动平均法:简单移动平均法(Simple Moving Average)和加权移动平均法(Weighted Moving Average)。

移动平均的适用条件

  移动平均(Moving Average)是一种简单平滑预测技术,通过在时间序列上逐项推移取一定项数的均值的方法来表现指标的长期变化和发展趋势。因为取的是一定项数的均值,所以使用移动平均的指标需要满足以下几个条件:

  • 指标没有明显的快速增长或下降的趋向
  • 指标不具备周期性波动的特征

  移动平均的最重要目的是消除指标的随机波动,如果指标不满足以上的两个条件,可能移动均值的平滑能力无法对指标做出准确的预测,那么移动平均也就失去了它的效用。移动均值主要基于对历史数据的平滑来预测实际数据,所以一方面对于历史数据过度依赖,另一方面对于现实的变动不够敏感,尤其是在使用多期均值时,这也是移动均值的两个缺点。

简单移动平均法

  简单移动平均(Simple moving average, SMA),将时间序列上前n个数值做简单的算术平均。假设用X1到Xn来表示指标在时间序列上前n期中每一期的实际值,那么第n+1期的预测值可以用以下公式来计算得到:

Xn+1 = ( X1 + X2 + …… + Xn ) / n

  在Oracle数据库可以使用开窗函数直接计算得到简单移动平均值,比如要从每天的销售表(sales)计算近10天销售额(amount)的移动平均数与每天的销售额进行比较,可以用如下的PL/SQL实现:

SELECT date_id “日期”,SUM(amout) “每天销售额”,AVG(SUM(amount)) OVER(ORDER BY date_id ROWS BETWEEN 10 PROCEDING AND CURRENT ROW) “销售额移动均值” FROM sales GROUP BY date_id ORDER BY date_id;

  Oracle内置了一堆的分析函数可以调用,直接用于各类的聚合和分析指标的计算,非常方便。

加权移动平均法

  加权移动平均(Weighted moving average, WMA),在基于简单移动平均的基础上,对时间序列上前n期的每一期数值赋予相应的权重,即加权平均的结果。基本思想是:提升近期的数据、减弱远期数据对当前预测值的影响,使预测值更贴近最近的变化趋势。我们用Wn来表示每一期的权重,加权移动平均的计算公式如下:

Xn+1 = W1×X1 + W2×X2 + …… + Wn×Xn

  这里需要满足W1+W2+……+Wn=1,对于各权重的确定,可以使用经验法根据需要进行赋权:如果希望预期值受前几期数据的影响逐步加深,则可以赋予递增的权重,如0.1,0.2,0.3……;如果希望加深最近期的几个数值的影响,以反映最近的变化,则可以适当加大近1-2期的权重,根据适应实际情况结合测试来完成赋权。我们来比较下简单移动平均(下图SMA线,取近5期均值)和加权移动平均(下图WMA线,取近5期加权均值,权重依次为0.1, 0.1, 0.2, 0.3, 0.3):

SMA_WMA

  可以看到无论是简单均值线还是加权均值线都要比实际值的波动小了很多,也就是平滑的效果,更多的是展现一个大体的趋势,而加权平均相较于简单平均的差异就在于加权平均更加注重近期的影响,所以这里的WMA绿线比SMA的红线更贴近前两期的数值趋势。

移动平均实例

  还是结合实际的例子来做下说明。在电子商务数据分析里面,我们最关注的就是每天的销售额,我们用Excel里面的移动平均的趋势图可以反映出指标的变化趋势:

3per_Mov_Avg

——3周期移动平均(虚拟数据)

  上面展现的是移动平均法的用途之一——分析趋势,其实我们也可以用移动平均来进行数据监控和预警

  用移动平均法可以计算得到一个本期的预测值,我们可以将这个预测值作为本期预期可以实现的量,并用这个预期量与实际量进行比较,要分析实际量与预期量之间的差距。还是基于销售额,不过销售额可能存在明显的递增或递减趋势,于是我们除以消费用户数,于是就得到了所谓的ARPU值(Average Revenue Per User),这个是电子商务乃至任何消费型网站的关键指标之一,还是使用简单移动平均来比较实际值和预期值的差异:

ARPU_SMA_diff

——ARPU监控表格效果(虚拟数据)

  表格的数据展现已经可以一目了然的看到实际ARPU值与预期的差异、差异的大小等,下面再结合图表来看一下:

ARPU_SMA_diff_chart

——ARPU监控图表效果(虚拟数据)

  两条比较的折线结合绿涨红跌的蜡烛图,能够对指标的变化情况了如指掌。结合上面的表和图的数据和效果,似乎对于数据的监控变得简单很多,即使是直接的观察也能快速地发现数据的异常,这些方法对于网站的一些关键指标,诸如转化率、人均消费、活跃度等指标的日常监控分析非常实用和有效。

  如果你认为这些表和图对于指标监控还不够,那么就建一套自动的Alert系统吧,就像Google Analytics上面的Intelligence一样,如果指标的降幅或者涨幅超过正常范围(可以设定一个合理的阈值)就向你的邮箱发送报警邮件,这个对于敏感数据的监控异常有效。

  我要介绍的就是这些了,切忌所有的方法和数据的处理都要根据实际的环境、具体的业务和运营状况来进行设定和分析,这里只是我的想法和对移动平均法的简单应用,在不同的环境下也许还可以扩展出许多不同的应用。你是不是也在用类似的方法?欢迎与我分享 :)

OLAP的基本特征

features-of-olap  又是一篇关于商务智能(BI)方面的文章,前面有几篇文章介绍了数据仓库、多维模型和OLAP方面的知识。这篇文章主要总结了OLAP具备的一些基本特征,以及其在数据的处理、展示和分析中体现的优势。

  其实我们大部分时间是在模仿,参考书本或者他人的范例,而当我们去实现这些东西的时候,我们又会有自己的体验,我们需要将这些体验记录下来,当我们能够自己去总结整个实现过程的时候,其实可以认为我们已经掌握了这个知识或技能。而正是在总结的过程中,我们也许会发现原先的范例可能并不是最优的,我们会产生自己的思考和优化方案,其实到这一步的时候你已经实现了一个超越,而当你自己的方案被实践所验证时,那么可能你已经站在了一些人的前面了。而我今天要做的就是——“总结”。

OLAP的类型和基本操作

  先来回顾下一些基础知识,之前的文章——数据立方体与OLAP中介绍过OLAP的一些基本知识,包括OLAP的类型ROLAPMOLAPHOLAP

  以及OLAP的基本操作钻取(Drill-down)上卷(Roll-up)切片(Slice)切块(Dice)以及旋转(Pivot)

  因为这些在之前的文章中都有介绍,这里不再重复了,有兴趣了解的同学直接去看我之前的那篇文章即可。

OLAP的优势

  OLAP的优势包括之前提到的丰富的数据展现方式高效的数据查询以及多视角多层次的数据分析。这里再补充两点,是Oracle 11g的官方文档介绍OLAP时提到的在Oracle中使用Cube所具备的优势(当然Oracle里面的Cube指的是MOLAP类型的数据组织方式,有点偏技术了):

  从细粒度数据到汇总数据的预聚合(fine-grained approach to pre-aggregating summary data):Oracle的Cube提供了基于成本的预聚合(Cost based pre-aggregation),也就是既不会完全不进行预先的聚合,也不会将每个维每个层次的数据都预先聚合起来;而是会去考虑对于每条记录聚合的成本,并将那些在动态聚合中相对高成本的记录预先聚合并储存起来,这样相当于权衡了立方数据加载时的压力和数据查询时的效率(过度的预聚合会使数据加载的时间和空间成本提高,而过少的预聚合则会让数据查询的效率降低)。而其最终实现的就是最具性价比的快速查询(fast query)。

  维和立方之间的预关联(pre-joining of dimensions to cube):当然这个也是基于MOLAP所具有的优势,MOLAP是基于数组来构建的,所以维和立方之间是预关联的,也就是相比ROLAP而言,其消除了构建索引以及建立表或物化视图时所需要的额外的时间开销,而在聚合数据的时候也避免了维和立方之间的多次关联。

OLAP的基本特征

  进入主体内容,下面是我自己对OLAP所具备的基本特征的总结,当然包括一些国外的博客和相关网站的介绍(现在打开某些国外的网站还真累),Oracle的一些文档资料以及自己在实际使用时的体会。其实每个特征都从不同层面上体现着OLAP对数据的组织、处理和分析上的优势。

数据建模(Data Modeling)

  我们知道数据仓库的特征之一是面向主题的,而数据模型的构建正是为了将原本基于业务关系的数据整理成更符合人们日常观察事物的一般方式,多维模型让人们对数据的观察更加得心应手,数据建模的优势就是体现在简化了复杂的数据组织逻辑和关系

Mondrian

多维与可视化(Multidimensional and Visual)

  多维和可视化体现在对数据多视角多层次的展现上。其实多维模型的OLAP在可视化层面上主要体现在报表上的钻取、上卷、切片等操作,如果用过Mondrian的开源OLAP引擎就能体验到其实就是一个类似树形结构的展开,就像Windows里面的资源管理器左侧列表,这个符合人们日常观察和使用的习惯。同时大部分的报表工具都支持此类的OLAP展示,MDX(Multi-Dimensional Expression,多维表达式)就是专门为多维OLAP打造的查询语法标准。

聚合(Aggregation)

  聚合的优势体现在满足了从细节数据到高度汇总数据的不同需求。聚合的特征在多维模型中体现为预计算(pre-calculated)以及快速查询(fast query)上面,能够在不同的数据粒度上对数据进行聚合汇总,满足数据的多种需求。

计算度量(Calculated Measures)

  计算度量更加丰富地表现了各类指标的延伸、比率及变化趋势等。最简单的计算度量就是指标间的加减乘除、排名及比例,常见的例子就是销售额减成本计算得到利润,进而根据利润对不同的产品进行排名,或者计算各类产品类型的利润所占的比例等;另外一种就是基于时间序列上计算得到的度量,比如同比增长、环比增长、期初累计、移动平均等。所以计算度量的存在让我们的分析指标有了更多的选择。

预测(Forecast)

  其实熟悉OLAP,用过相关OLAP工具的朋友都知道,大部分的OLAP都会提供预测的功能,一般是基于时间序列的预测,工具直接提供相应的预测方法,比如加权移动平均法、指数平滑法(历史数据加权平均的不断迭代的过程)等。因为在实践中没有用到过,所以这里也不便讨论起具体的意义多大,但这种不需要自己去写算法,而直接使用工具根据相应的聚合数据预测未来的趋势,至少能为我们快捷地展现数据可能的走向,并做出可能调整

  好了,今天的总结就到这里,不知道对你来说是不是也有些许收获。 :)

你找到答案了吗?

unlock  博客自发布第一篇文章以来,到今天刚好有一个月时间了,所以这里对开篇中提出的几个问题做一个解答,如果你还没有阅读过该文章,建议先阅读开篇

  也许很多朋友已经找到了答案,也有可能你们的解答与我下面的描述会有差异,当然只要都能解释问题,符合问题的条件,一切答案都是可以被接受的,问题的答案可能并非唯一的。其实这些问题只是想对网站数据分析做一些简单的解释,阐述作者个人对网站数据分析的一些认识,同时让这个过程更具趣味性。

1、趋势分析与预测

  从表面看,寻找数字规律中的这串数字可能毫无规律,但只要把它们放到图表上,你就会惊奇地发现它们呈一条完美的曲线排列了起来:

digits-trend

  这是在excel里面以1-20的序列为横坐标,以那串20个数字为纵坐标一一对应画出的散点图,可以看到这是一条比较规范的类S型曲线,也是最典型的一类成长曲线,也许你的网站的用户访问量或者销售额正是以类似这种趋势增长的。发现这种规律之后,就可以用数据统计的方法对其进行分析,对于这类有规律线性曲线,最常用的方法就是回归分析:

  首先可以根据S曲线确定其基本表达式为:

            S-function1S-function2

  表达式因为包含三个未知参数,无法直接通过回归分析求得,所以首先需要根据S曲线的特征和已知的数字观察到曲线无限接近于100,可以先暂定α的值为0.01,则该表达式变为:

S-function-converted

  可以将其转化为线性表达式:

linear-function

            其中y*=ln(1/y-0.01); x*=x; α*=lnβ; β*=-θ

  然后就可以用标准一元线性回归的方法进行拟合和分析,计算得到拟合度R2=0.998,显著性系数接近于0,拟合度非常高,结果可以被接受。算出α和β的值约为0.7381和-0.5066,代入原方程得到:

S-function-result

  再根据改方程当x=9是代入,得y约为31.35,预测得到那个缺失的数字约为31。

  当然这可能只是其中一种分析和预测的方法,如果可以找到另外的拟合度足够高的表达式,那么用该表达式预测得到的数字一样有效,答案并非唯一的。这个题目是作者自己编的,自然计算得到的拟合度十分理想,在现实中可能并没有这么完美的曲线存在,但只要用类似的方法去思考和分析,一样也能找到需要的答案。

  这里已经完成了对该题的解释,想顺带说一下成长曲线。大家都知道成长曲线存在着无法达到的极值,获取对于生物界来说该曲线确实是无法突破的,那么对已企业或者网站来说类似的流量增长曲线或者利润增长曲线是否可以被突破呢?答案是肯定的。任何失误的发展都会遇到瓶颈,网站也是这样,关键是如何发现和认识自身的瓶颈,只有真正地了解自身的问题,才能通过不断地优化、创新和市场拓展突破瓶颈,当瓶颈一旦被突破,原先无法逾越的极值点将变成新成长曲线的起始点继续向上攀升,而数据分析正是网站发现瓶颈的最有力武器。

2、识别用户

  关于那道逻辑题,也许很多朋友已经发现这个就是根据爱因斯坦的那题经典的逻辑题改编而来的,答案如下:

次序  A B D E C
穿着 
城市  广州 青岛 北京 上海 杭州
职业  律师 工程师 教授 医生 作家
饮料 牛奶 咖啡 啤酒

  其实对于网站分析来说,识别用户是极其重要的一个过程,网站分析中有一个重要的指标——Unique Visitor(UV),用以标识唯一的访问用户,而如何从网站的底层日志中识别每次访问是否是同一用户一直是网站分析中的一个难点,因为某些时候用户访问是未登录的,或是匿名的,甚至连cookie都是被禁用的。而对于网站分析来说,识别唯一用户又是十分有用的,它直接影响到针对每个用户的网站行为分析、用户细分及定向营销等多个方面,所以之后会有专门的对如何更好地识别网站用户的相关介绍。

3、学会细分

  细分是网站分析中一个十分重要的技巧和方法,无论是用户、产品、页面等都可以通过细分更好地发现其特征。其实图形题中的两个问题正是细分中的两种基本的方法:一种是已知类别,将类别未明的事物归类;另一种是已知存在这么多的事物,将这些食物分成若干类,我对这两个问题的解答如下(当然这个答案并非唯一,只要归类有所依据的答案都是可以被接受的):

  1)先观察2、4、8三个图形所拥有的相同特征:4条边、左右对称、上下对称、重心在同一水平线上、序号都是偶数,根据这些特征去寻找共同特征最多的图形,可以看到6号的圆形是最为接近的:左右对称、上下对称、重心在同一水平线上、序号都是偶数,所以我的答案是选择6号的圆形;

  2)与第一题类似,从所有的图形中选择拥有最多共同特征的归为一类,并使各类别间的特征差异最大,我是从这几个角度进行区分的:边数、轴对称、中心对称、重心分布、序号,分成四类如下:

    A类:2、4、8(4条边、左右对称、上下对称、重心都在水平中间线、序号都为偶数);

    B类:1、3、5(左右对称、重心都在水平中间线以下、序号都是奇数);

    C类:6(中心对称、任意轴对称、重心在水平中间线);

    D类:7(4条边、中心对称、重心在水平中间线);

  其实这两个问题也是数据挖掘中两个方法的简单体现:

分类

  分类就是把一些新的事物映射到给定类别的中的某一个类别,用于描述事物或预测。常见的分类方法有:决策树、KNN法(K-Nearest Neighbor)、SVM法(Support Vector Machine)、VSM法(Vector Space Model)、神经网络等。

聚类

  聚类就是将数据对象分组成多个类或者簇,划分的原则是在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别较大。聚类算法可以分为划分方法、层次方法、基于密度方法、基于网格方法和基于模型方法。

4、互联网发展趋势

Moshe

  对于最后一个问题,其实大家可以各抒己见,这里也只是作者的个人看法,也许阐述和对比的网站不一定恰当,这里只是想说明作为一个网站分析师,必须时刻关注互联网的发展趋势,而Alexa上面排在TOP前几位的网站正是互联网不断发展和进步的指向标。

  正如前几天有人预测2010年facebook的流量将超越google,成为全球最受欢迎的网站,结果我上Alexa一比较,果然facebook在数据上除了用户量不及google外,几乎所有数据都持平或超越了google,其中页面访问量目前两个网站已不相上下,而网站访问时间facebook甚至已经达到了google的3倍(当然这跟网站本身的服务性质有关);但确实不得不佩服facebook的实力,流量一路飙升,过关斩将,到现在能够觊觎互联网老大的宝座,但是要真正坐上去还得在用户量上超越google。其实很多人看好facebook也不无道理,因为毕竟facebook是信息的创造者,而google只是信息的整合者,创造者掌握着信息的信息竞争力。

开篇

set-sail   欢迎来到网站分析的世界,这是一个充满趣味的世界,在这里,你可以找到与网站数据仓库和数据分析相关的知识,有意思的分析方法和分析结果,希望这里的一切能让你的网站变得更加优秀。
  这是博客的第一篇文章,这里有几个有意思的问题,大家可以尝试着去找到答案(试图通过搜索引擎去寻找答案可能会让你失望,下面的问题都是作者的原创或改编):

1、寻找数字规律

  这里有20个数字,其中第9个数字缺失了,试着寻找到它们的排列规律,并预测出第9个数字最有可能是什么?

1,1,2,4,6,9,14,21,____,43,55,67,77,85,91,94,96,98,99,99

2、一道逻辑题

  有ABCDE五个人去参加一个聚会,他们来自不同的城市,拥有不同的职业、穿着不同色调的服饰,按照一定的顺序先后到达并各自点了5种不同的饮料,其中:

  1. D 的职业是教授;
  2. 第3位到达的人点了杯牛奶;
  3. B 和律师相邻到达;
  4. 北京人穿着红色的衣服;
  5. 工程师和 A 相邻到达;
  6. 工程师和点了一杯水的人相邻到达。
  7. 作家点了杯啤酒;
  8. 最早到的是广州人;
  9. C 来自杭州;
  10. 青岛人点了茶;
  11. 穿着黑色衣服的人正好在穿白色衣服的人之前到达;
  12. 上海人的职业是医生;
  13. 广州人与穿蓝衣服的人相邻到达;
  14. 律师穿着黄色的衣服;
  15. 穿黑衣服的人点了杯咖啡;

  你能推理出ABCDE五个人的到达次序,以及他们各自来自哪个城市、从事什么职业、穿着什么颜色的衣服及到达之后点了何种饮料吗?

3、一道图形题

Figure-Completion

  上面是形状各异的8种图形,它们从左到右分别编号1-8号,请问:

1)如果2、4、8号图形归为同一类别,那么请再选择一个图形放入该类型,能使该类别中的所有图形具有最多的共同特征;

2)试着将上述8个图形分成3到4个类别,并使每个类别中的所有图形具有最多的共同特征,同时各类别间特征的差异最大。(也许分法有多种)

4、尝试做个预言家

  3个月前,facebook的用户量以无法阻挡的势头超越yahoo,预示着以WEB2.0为基础的信息集成开放平台已经替代传统的信息内容发布商,成为了互联网信息交互新的主导力量。

yahoo-facebook

  而在此同时,另外一股新兴的力量也在强势崛起,twitter的follow的概念让信息传播的速度以指数的形式迅速扩张,其同样简洁、实时的功能正在对传统的IM工具构成挑战:

msn-twitter

  twitter拥有了更广阔的平台和更透明的信息传递方式,是否也会在某一天,twitter的用户量会超越MSN成为即时信息传递的新宠,大家有兴趣的可以预测一下,在不久的将来会不会有这么一天,大概会在何时?

  也许你已经找到了自己的答案了,作者对以上问题的解释请参见你找到答案了吗?