PRML
首发于PRML
人类行为时空特性的统计力学(一)——认识幂律分布

人类行为时空特性的统计力学(一)——认识幂律分布

从第一次看到 人类行为时空特性的统计力学 时接触Power-Law Distribution,距这次工作上真正要利用起来的时候,已快一年。这一次,我决定花一些时间,向大家介绍一下与此相关的一些东西。包括背景、概念,以及可能的价值。

*建议大家抽时间看看周涛老师的论文-以便对问题有更清晰的认识。此文不过是对该文的转述。


在开始之前,我们先看一些数据:

这个数据是某个问题下,前2名回答收到赞同票随时间的变化情况。在这里有一些感觉:首先,对单个回答来说,它的上升是很“突然”的,其中的原因,可能是大家常常说的“被某个大V点赞了”;其次,从图上看,似乎在同一时间段内,第一名和第二名获得的票数是有一些关系的。

*关于第二个特征,可以通过绘图看出,具体可以把两组数据分别对应到两个轴上;观察是否有线性的特点就可以了。不过,需要注意,就这些数据不足以说明更多我们之前讨论过的事情。

那么,我们换一个视角看另一组数据。对某个固定时间段内得到的投票数做一下histogram:

大部分情况下,回答在该时间段里收到赞同的数目是很少的;而一次性拿到很多赞的概率是很低的。同时,图也显示该分布有长尾的特征。长尾的意思是说,它的尾部比指数分布要厚;简单说来,就是:在指数分布的情况下,随着单位时间内事件发生次数的增多,其概率是指数下降的。而我们这次要介绍的幂律分布,其下降速度是一个幂函数,速度要慢得多。

其直观解释,引Wiki的一句话:

我们可以做一个直观的解释:假如一个长尾分布的尾部数量超过某个很高的水平,它超过另一个更高水平的机率会接近于一。也就是说,如果你发现状况很糟,它可能会比你想像的还要糟。



“从泊松到幂律”

泊松常用于描述单位时间内某事件发生的次数的统计规律,并用来作为对人类行为的建模。比如旅客进机场的时间间隔、中文维基百科新条目出现的时间间隔等等。

我们看泊松分布的性质:

  1. 无记忆性。即在不重复的时间周期内,事件发生的次数是互相独立的。就像我们常说的,灯泡的寿命问题。
  2. 对于充分小的时间窗,事件发生的次数与初始点的选取无关,与时间窗的长度成正比。
  3. 对充分小的时间窗,在这个窗口里发生多于1个事件的概率极小。

在上面这些假设下,我们可以用泊松过程去描述事件到达的情况。并且可以知道,相邻两个事件到达的时间间隔,具有指数形式:

这个式子表明,事件的时间间隔是指数型的,大时间间隔的事件几乎不可能发生。并且,考虑其标准差,我们可以知道这些序列是比较均匀的。

再看一下幂律分布,它的事件间隔是一个幂函数形式:

我们来生成一些随机序列,对比一下这二者的特征。第一组数据time_diff是 大二的学生想从事科学研究工作,但是感觉理论知识不够,同龄人都是怎么做到的?中的真实数据,我们生成了对应的poisson序列:

library(ggplot2)

#non-poisson
time = cumsum(time_diff)
position = rep(1, length(time))
type = rep("non-poisson", length(time))
df = data.frame(time, position, type)

#poisson
size = length(time_diff)
lambda = max(time) / size
time = cumsum(rpois(size, lambda))
position = rep(1.5, length(time))
type = rep("poisson", length(time))
df = rbind(df, data.frame(time, position, type))


ggplot(df, aes(time, position)) + geom_point(aes(color=type))
*这数据这样生成好像有点不太对..><

可以见到二者的区别。泊松型的事件序列更均匀,而后者更分散(集中、长尾)

那么,哪种情况是更能真实反映一些现象的呢?文章写到这里,或许读者已经感觉到了一些东西:

  • 阵发与记忆
  • 周期和波动

也就是说,人类行为的特征是怎么样的?从而在外部表现为上图这样的特征呢?用幂函数刻画人类行为,(这里是某回答收到赞同)隐含了一个假设,即我们假设人类行为的时间间隔符合幂律分布。而这个假设并没有完全得到学界的认同[1]。

不过,我们仍可以用一些手段来研究事件间隔。这种手段不需先验地假设其分布。

1.阵发与记忆

我们看到,用泊松观点描述事件间隔时,事件发生得较均匀。而用幂函数描述时,“有 时候很多事件会在较短时间内密集发生,然后又会出现一个很长的空档期,把后面这种情况叫做阵发性”


因此,我们引入:

刻画阵发性。其中sigma和m分别表示样本的标准差和均值。

  1. 当为泊松分布时,均值和标准差相等,B=0
  2. 当为很强的长尾分布时,标准差远远大于均值,此时B接近1
  3. 当标准差接近0,则B接近-1



除此之外,我们还可以描述事件序列中的记忆性。设序列长度为n,则我们可以比较该序列前n-1和后n-1项的Pearson相关性即可:

其中的m1, m2和sigma1,sigma2是两个序列的均值和标准差。


随后,文章给出了一些生成的实例:

  • 泊松过程生成的事件序列,阵发性和记忆性都接近0

  • 一个指数为−1的幂函数律和一个高斯间隔时间分布产生的序列,记忆性均接近于0,阵发性分别为0.44和-0.81
  • 有文献分析了电子邮件发送、图书馆借阅、大学里打印任务提交记录、银行里的电话记录和手机 通讯记录5组数据,认为人类行为在发生时间上具有 “强阵发弱记忆”的特性
最后,我们来看一下知乎的数据:

对约1000个回答进行了统计,我们对每10分钟、20分钟至120分钟的阵发性和记忆性进行了计算。相比于文章中“弱记忆”的情况,一部分事件的“记忆性”要强得多。这里是否显示了对下一个时间周期的赞同数进行估计的可能性呢?另外,有必要研究一下outliers


2. 周期与波动

文章指出,个体行为间的差异性有时候非常大,纯粹观察其平均值不太能说明问题。即某种行为的发生,是有周期性和波动性的;比如出游,工作了的人可能是每年的固定时间,学生可能是说走就走。

作者指出,周期和波动分析中最重要的一个问题是:波动和周期是否为幂律时间间隔分布产生的根源?2006年,文献[3]从数学上证明了把一 群具有不同一阶矩(服从一个均匀分布)的泊松个体聚集在一起,可以在群体层面上产生幂律分布(具有指数截断)


虽然说这篇文章给出了证明,但并未充分说明,波动和周期就是幂律时间间隔的根源。同时,文章[4]提出了一种方法,

用个体相继两个行为之间,同一时区其他个体发出的行为总数来 度量时间间隔长度。如果某用户在其天早上11点20发了一条短信,下午2点51分又发了一条短信,以前 的时间间隔是绝对时间,也就是211 min;该方法是考虑除了这个用户之外的其他所有同一时区用户在 11点20分~14点51分之间发出的所有短信数目,把这个数目作为新的时间间隔的定义。
在这个定义下,群体活跃性很低的时段中的一个小时长度要远远短 于群体活跃性很高的时段中的一个小时。如果幂律仅仅源于周期和波动,可以证明在这种相对时间钟表系统中,幂函数律会消失,取而代之的是指数尾部[4]。事实上,真实系统中,看起来像幂函数形式的时间间隔分布依然存在,因此幂函数律的涌现不 能完全用周期和波动来解释。

最后讨论一些关于活跃性的问题。对于同一行为,活跃度差别很大的两个个体,他们有此行为的动机和相应观察到的行为特征可能是完全不同的。
例如一个很活跃的吸烟者(譬如每天抽两包烟以上),正常情况下很难想象他连续一天不抽烟;反过来,一天抽烟三四支的人,可能很长一段时间都没有抽烟。
文章指出,活跃性在个体间分布地异质性对于群体层面涌现出来的标度律地影响,应该仔细谨慎地加以考虑。如果按照活跃性地大小把群体分成若干组,那么不同组所得到的(观看电影)时间间隔分布的幂指数不同,而且随着活跃性单调变化:


通过对数据的观察,我们发现了这种非泊松性的特性。那么,是什么机制导致了这种非泊松特性的产生呢?

我们下期再讲XD





拓展阅读 & 参考文献

[1] 人类行为时空特性的统计力学

[2] 泊松分布与美国枪击案

[3] HIDALGOR C A. Conditions for the emergence of scaling in the inter-event time of uncorrelated and seasonal systems[J]. Physica A, 2006, 369(2): 877-883.

[4] ZHOU Tao, ZHAO Zhi-dan, YANG Zi-mo, et al. Relative clock verifies endogenous bursts of human dynamics[J]. Europhys Lett, 2012, 97(1): 18006.

编辑于 2014-10-15

文章被以下专栏收录

    一起来读论文吧!主要是我读过的,觉得有意思的机器学习类论文笔记。