主题:【原创】关于西西河发帖和得花的一些统计与分析 -- Adol
7 好友识别、圈子划分与马甲辨认
这部分的基本设想很简单:好友也好,有共同兴趣的圈子也好,马甲也好,有一个共同特征,就是他们倾向于回复同样的帖子,无论帖子的作者是不是他们自己。
进而,这种识别就可以归结为一种对“相似度”的估计,对于老铁来说,他可以通过送花、互相回帖、共同参与主题、宝推、ip段、在线时间、参与讨论版块等许多特征来总结两个id之间的相似度。而我手头能够使用的数据,就是共同参与主题的情况,虽然也包括回帖时间,但是本节不打算讨论回帖时间的相似度问题,因为用途比较局限,而且方法和共同参与主题是十分类似的。
从直观上想,从回帖情况判断两个id行为的相似度,有哪些因素比较重要呢。
首先,两个id共同参与的主题越多,两个id越相似;
其次,这两个id的相似度和他们分别参与的主题个数也有关系,举个例子,假如这两个id是沉宝和大胖子(举个想当然的例子,不一定正确),那么他俩共同参与的主题多也说明不了什么,因为他俩参与的帖子很多;
第三,假设两个id分别只回复了一贴,这一贴还恰好重合,那么在一般的计算里他们俩会有很高的相似度,但是假如他们回的是老铁喜得小铁的那帖,那么他们的高相似度就十分可疑了,因为那是大家都会参与的一帖,所以相似度和共同参与了什么帖子也有关——参与者越多,越显不出来特定两个人之间的相似情况;
第四,id并不都是同时注册的,晚注册的id,自然看不见以前的许多帖子,假如两个id一早一晚,计算相似度的时候恐怕还要考虑他们共享的时间,这个因素中,更难以考虑到的是某些注册早却已经很久不来的id;
先说最简单的考虑,忽略第三、四点,仅考虑前两点,那么可以用一个超几何分布的模型来描述这个问题:(以下内容改编自wiki)
超几何分布是统计学上一种离散概率分布。它描述了由有限个物件中抽出n个物件,成功抽出指定种类的物件的次数(无放回)。
例如有N个球,其中m个是黑球,其余为白球。超几何分布描述了在该N个球中拿出n个,其中k个是黑球的的概率:
上式可如此理解:
因为除了黑球就是白球,所以白球有N-m个,拿出的白球则为n-k个,剩下的拿法便有choose(N-m,n-k)种:
(很抱歉,不知道该怎么缩小图片。。。)
换成我们的问题的语境就是:
例设河里有N个主题,其中m个是河友A参与的。超几何分布描述了在随机情况下,参与了N个主题中的n个主题的河友B,和河友A共同参与了k个主题的概率。
从我收集到的信息出发,在河里有944名核心用户参与的113605个主题中,可以计算任意两名用户各自和共同参与的主题个数。然后对任意两名用户进行如下的假设检验:
H0:河友A和B在随机情况下,可能共同参与k个或更多主题
HA:河友A和B在随机情况下,参与的主题个数比k少(从而->现在的情况不太可能是随机情况->河友A和B有类似的兴趣或圈子)
我选取了10名河友作为例子来测试这个模型的效果:萨苏,井底望天,万里风中虎,南方有嘉木,达雅,老引北京,ifuleu,江城孤舟,秋末冬初,郭嘉。我觉得我们基本可以想象到,谁和谁关心的话题应该更接近。
在这10名河友之间分别做上述检验:假设H0成立,那么出现目前个数或更多共同参与主题的概率p(X≥k)如下:
这个模型完全忽略了之前所述的第三、四点,因此我做了一些粗略的修正,事先声明,这种修正可能是错误的。具体策略如下:
(1) 在计算任意一对河友,“有机会共同看到”的主题总数的时候,只计算“最后一次被944名用户之一回复”晚于“较晚下河的河友注册时间”的主题。
(2) 丢掉上述主题中,参与人数大于50人的主题。
(3) 在计算任意一对河友各自参与的主题数的时候,依照上例。
(4) 在计算任意一对河友共同参与的主题数的时候,依照上例。
仍然对那10名河友两两之间检验:
仅就这10名河友而言,我想根据经验,上面的结果已经可以在一定程度上反应河友之间的相似度了,可以说,仅仅是这样一个“共同回复主题”的特征,并且后面还做出了一些很不严谨的假设,效果仍然是较为可观的。根据上面的数据,这几名河友之间的关系可以用下图来表示:
图中节点表示河友,线表示相似度,其中H0成立的概率小于1e-100(10的负100次方,相当于上表中最后一列的数值为100)的用紫色连线,大于1e-100小于1e-15(10的负15次方,相当于上表中最后一列的数值为15,以此类推)的用红线表示,大于1e-15小于0.001的用蓝色虚线,大于0.001的可以认为没有拒绝0假设。
也就是说,根据“小概率事件实际上不会发生”的假设,我们认为“如果H0(他们目前共同回帖的情况是随机产生的)成立,那么这个概率是多少”。如果非常非常小,像虎大和郭嘉,随便抽两个人,他们共同回帖的情况要是像虎大和郭嘉那样,概率只有0.000……000(一百多个0)1,于是我们就拒绝了0假设,认为这种情况不是随机能够产生的,进而推测他们有着共同关心的话题。
这个修正方法也有很明显的局限性:有些id的主题就是会有较多的人来回复,比如老萨、忙总的帖子,超过50个人回复太正常了,把这些帖子都简单去掉,对跟他们相关的相似度计算是不公平的,他们的共同参与主题是否能够继续满足超几何分布,也是十分成问题的。
从图形上观察,50人以下的主题参与人数(仅944名河友的统计),大致上服从一个参数为0.124的几何分布:
上图为主题参与人数的经验累积分布(红色)和通过参数为0.124的几何分布所随机生成的点(黑色)的比较。横轴是主题参与人数,纵轴是小于此参与人数的主题占主题总数的比例。从图中可以看到,对944名用户参与主题的统计中,80%的主题回复人数在10人以下,实际上,仅有1002个主题参与人数大于或等于50。50人以上的主题比较少,大部分主题回复都在10人以下,这是我采用简单方法处理上文第三个因素的主要理由。
但是我没有估计(实际上是不知道该怎么估计)简单地丢掉回复人数在50人以上的主题能多大程度上修正之前没有考虑第三个因素的误差,只是希望以比较严格的显著性水平来筛选相关河友之后,所计算的p值能够相对地反应河友们所关注话题的相似程度。毕竟由于对主题参与人数和共享活跃时间这两个十分重要的因素做了十分粗略地近似,这种衡量方法只能定性地判断相似与否,谁与谁关注的话题更接近,要作出定量的判断,就达不到准确度的要求。
此外,这个方法说到底是衡量相似程度,并不能判断两个id之间是什么关系,比如萨苏和老引,他们是现实的朋友关系;嘉木和江城,有共同的爱好(这个或许可以通过参与版面来识别);而郭嘉和老虎,则是追随者和大牛的关系(这个或许可以通过互相回帖的非对称性来识别);甚至,这种相似度并不能判定两个相似的id是有着相同的意见还是相左的意见,比如井大和达雅,尽管关注的问题十分类似,但他们的政治观点是不同的。
从图中我们可以看到,西西河友之间,在关心的内容上确实有远近的差别,从而形成了若干个“小圈子”(红线和紫线)。但只要稍稍放宽眼界,就会发现圈子之间,也有着很多联系(蓝色虚线)。毫无疑问,西西河不是由一个个孤立的小圈子组成的,西西河的各个部分本来就是十分紧密地联系在一起的,大家都在河里,岂会只在一个版面或者版块发帖?
比如老萨的文章可以是时政里面关于日本的分析,可以是演义书场里面名著的演绎,还可以是英雄本色里面抗联的考据;忙总可以在经济管理里面写职业经理人的笔记,可以在居家美食里面讨论菜肴,也可以在文化百家里面谈易;嘉木可以在经济管理里面写美国经济周报,也可以在文化百家里面写诗,还可以在感性世界里面阐述自己的人生观。
——谁不关心好几个方面的话题呢,只能说更偏重于哪方面。所以,分成圈子或者衡量相似度只是剖析西西河河友与话题的一个步骤,并不是最终目的;正是这些大大小小,互相重叠的圈子又重新组成完整不可分割的西西河,这才是本质。
本帖一共被 3 帖 引用 (帖内工具实现)
- 相关回复 上下关系8
🙂【原创】(六)好友识别、圈子划分与马甲辨认
🙂有例外 1 庄汀 字181 2011-09-18 23:08:06
🙂是的,这种是肯定识别不出来的 1 Adol 字60 2011-09-19 03:06:32
😄哎呀,你该把我换成太史妹, 5 南方有嘉木 字83 2011-09-16 10:00:44
🙂太史妹是谁啊?貌似是男的啊 花大熊 字0 2011-09-17 01:24:03