一个数据分析需求的分析

发布: 2008-03-12 10:30

 


我这里有一个web日志,里面包括用户名,用户访问的站点id,以及用户访问相应站点的次数,计算出来用户访问的站点组合中哪些组合的比例高,我给这个值定义了一个名词叫用户访问网站重合度,即:一个用户访问的站点两两组合与另一用户访问的站点两两组合中都存在的站点组合最大的组合。重合度又分:1用户重合度,2用户重合度,3用户重合度,。。。,n用户重合度,其中n<=用户总数。不过当n趋向于用户总数的时候意义不大了,最大在10以内比较有意义。


这个要求的数据表示为:


给定下列数据:


A  s1    ca1


A  s2    ca2


A  s3    ca3


...


...


A  sn    can


B  s1    cb1


B  s2    cb2


B  s3    cb3


...


...


B   sn   cbn


...


...


...


...


那么,A用户,B用户所访问的站点组合sx,sy累计排序结果是什么样的。


这一需求的应用,举个简单的例子,当在我的页面上放另两个友情链接的时候,我如何选择这两个链接才能使得用户在访问第一个链接后同时再访问第二个链接的概率比较大。


对于这个重合度的定义,还可以扩展一步:不但计算出哪些组合的组合度高,而且还要计算出站点组合中两个站点的访问顺序。比如,有组合sx,sy,那么,由这个扩展就应该能得出结果:是从sx到sy的可能性大呢还是从sy到sx这个顺序出来的可能性大?因此根据它我们甚至能得到这两个站点的排放顺序。


计算方法讨论:


一般的方法是自己写程序,对这些组合进行计数,然后排序。


还有另一方法,使用关系数据库,让数据库来做组合、计数、排序工作,我们只需要编写几条逻辑正确的SQL语句即可。


我选择的第二种方法,因为我需要快速得到想要的结果。但这里我不准备讲解计算方法的细节。


这只是从原始(日志)数据得到某些信息的一个实例,希望对以后做类似的数据分析有帮助。



原文: http://qtchina.tk/?q=node/126

Powered by zexport