概貌分析之实践

  作者:Qing
2007/4/28 10:53:19
本文关键字: ttnn 2006年08期

上月底的时候,曾经写过一篇关于"概貌分析"的文,大致是将如何对一群客户进行全面地分析,其中提到用OLAP来做这样的分析,挺好。
面面俱到不可能,OLAP也只能分析一些粗层面的信息,毕竟OLAP还是一种对业务经验依赖比较大的技术。原来的设想,是准备好基础数据,差不多就算是事实表了¬,只是其中的维度不再关联维表,直接在事实表里面就用描述信息代替。这样,在excel中作旋转透视表就很容易。

这不,上周五的时候,基础数据已经准备好,要作一次这样的"概貌分析"。现在看起来,其实管它作"分析"还是有些勉强,其实产出的还是一个中间结果,并非分析报¬告。客户在这个中间结果上,还需要进行进一步的分析。(其实提交一份分析报告,显得更专业一些,但客户有时候也会倾向于自己去判断的嘛)

拿到数据大致一看,遇到问题了——数据量不小。要知道,excel是存在6万多条记录的限制的。虽然早先想到这个限制,想着可以将数据选取出来,生成文本文件,¬然后在excel中连接外部数据源,用odbc连接这个文本数据源,不就OK。但发现最终的数据量还是太大,性能是个问题。关键的是,交付给客户以后,他们需要¬重新配置odbc。
因此,寻思着还是不要去突破这6w的限制,还是从维度的组合上来想招。

是的,最后想到的就是形成几个维度集合,例如消费方面的维度、行为方面的维度等等,每个集合大致也就三四个维度,用它们汇总出来的记录数,大多不会超过6w。看¬吧,这跟建一个cube遇到同样的问题了。不能让cube太大,要选取合适数目的维度,并且让分析有意义。如此,也就可以理解,之前的数据准备工作相当于数据集¬市的工作。
 
这个"数据集市"还有个特点,涉及到前段时间关于"维度vs.度量"的话题。有些字段,给出的是连续值,比如收入、时长、次数等等。然后,其实,他们不是用来作¬度量的,只是作为分析维度。然而要作维度,必须得将他们离散化,分段。将收入转为消费层次,将次数转为频度,包括"高频、中频、低频"等等。

如果从业务经验上来离散化,例如将5次以下定义成低频,20次以下定义成中频,20以上定义成高频。这只需要人为定义一下即可。然而,面对这组数据,我不能确定¬一个连续值的取值范围是多少,于是采用一种偷懒的方法,用quantile来离散化。有的数据库可能叫做tile吧,反正都是差不多的意思。根据一个连续型字段¬的取值范围,你可以规定分成几个档次,然后系统自动根据记录条数,将这个连续字段切成几截。例如0-14对应到1,15-38对应到2,...。不过后来发现,¬这种方法有问题,它完全根据数据来,是根据记录条数来划分层次的,每个层次记录数差不多。举个例子,如果这个字段,有超过一大半的0值,当你分成3档的时候,很¬有可能,大于0的全部归到一个档里面。这当然不符合业务上的习惯。业务上,这是要看这些大于0的值是如何分布的。

有位同事告知另一种分档方法,叫BIN的分箱方法,这在数据挖掘的变量分析中经常是用到的。大意是针对连续字段的取值范围,等份成几个档次。例如连续字段最大值¬是100,最小值0,分成10档,也就是0-10一档、11-20一档......数据库本身似乎没有这样的函数,挖掘工具里面是支持这个离散化方法的,其实它¬也是生成一条sql语句而已。只是看起来非常复杂,让我望而却步。最终还是选择用quantile的方法。

也是时间的关系,没有多尝试其他方法。因为,只有上周五一天的时间来作这些工作。但现在想想,其实采用业务经验来分档恐怕是效果最好的一种了,只需要先观察以下¬这些连续变量的最小、最大取值,认为划定分档界限,就OK,看起来还很整齐。

最后,分成了五组维度,每组两张sheet,一张是详细汇总数据,一张是交叉分析表。这也就相当于是5个cube。

责编:Qing
vsharing微信扫一扫实时了解行业动态
portalart微信扫一扫分享本文给好友

著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。
畅享
首页
返回
顶部
×
    信息化规划
    IT总包
    供应商选型
    IT监理
    开发维护外包
    评估维权
客服电话
400-698-9918