【笔记】Hawkes Process:超详细带示例的讲解

最近准备学Hawkes Process, 但是找遍了百度,b站,谷歌和youtube,都没有找到通俗易懂的讲解。今天终于在拆老师(ChatGPT)的帮助下搞懂了!关于使用ChatGPT进行自学的Prompt可以看之前的笔记:【笔记】 如何使用ChatGPT得到更满意的结果:Prompt Engineering (1)_Dorothy30的博客-CSDN博客

这一篇笔记仅是针对于Hawkes Process的基础知识介绍,可能并不全面,但应该可以理解的比较好!(感谢ChatGPT老师!)

Hawkes Process是一种在各个领域都有应用的对事件进行统计建模方法,是一种自我激励的点过程(point process),可以帮助我们了解事件是如何随时间发生的。

目录

Hawkes Process的数学表达式

在社交网络的场景下进一步理解Hawkes Process数学表达式

使用Python对一维的Hawkes process进行模拟


在正式介绍Hawkes Process之前,我们先通过一个例子来了解它表述的过程大概是什么样的。

想象一下你正在参加一个聚会,人们开始鼓掌。 当一个人开始鼓掌时,可能会让其他人也想开始鼓掌,然后带动了更多人鼓掌,依此类推。 这个鼓掌的带动作用就类似于Hawkes Process的工作原理。

Hawkes Process就像一场“popcorn”游戏,一个的历史事件的发生会导致另一个后续事件的发生,这个后续事件的发生又会对下一个事件的发生产生影响,就像连锁反应!但这种一级接一级的影响最终会停止,就像在聚会上每个人都厌倦了鼓掌,或者派对结束了一样,这被称为Hawkes Process的“end time”。

Hawkes Process的数学表达式

正如之前提到的一样,Hawkes Process是一种点过程,是一种对随机发生的事件进行建模的方法。 在Hawkes Process,事件可以触发其他事件,从而产生活动的“级联”或“多米诺骨牌效应”。

Hawkes Process的基本数学表达式是由 λ(t), μ和 α三个参数决定的:

\lambda(t) = \mu + \sum_i \alpha(t - t_i)

  • λ(t) :Hawkes Process在时间 t 的“intensity”或“rate”。 换句话说,它是给定到该点之前发生的所有过去事件的情况下,在时间 t 附近的一个小时间间隔$\triangle t$内发生的事件的期望值。
  • μ:Hawkes Process的“background rate”。 这是在没有任何触发或级联效应的情况下事件发生的rate。意思是说,在不受任何其他事情的影响下,一件事情的发生本身就具有一定的概率,这个基础的概率用μ表示。
  • α :是一个“triggering kernel”(也就是触发事件发生的核函数),它描述了过去的事件如何影响未来的事件。 它是一个取决于每个过去事件发生的时间的函数,衡量每个过去事件对当前给定的任意时间的影响强度(对当前事件发生intensity的影响)。
    • 核函数有很多种表达方式,这取决于具体的应用场景,但也有一些常用的函数表达。

在社交网络的场景下进一步理解Hawkes Process数学表达式

现在让我们考虑一个在社交网络下的场景,在这个社交网络中,用户可以在其中发布消息,每条消息都可以触发其他用户发布消息。 我们可以将这个sending posts的出发现象建模为Hawkes Process,其中每条消息都是一个事件,触发效果( triggering effect)由triggering kernel(核函数)进行表示。

例如,我们可以把这个场景下给定时间的intensity表示为:

\lambda(t) = \mu + \sum_i w(t - t_i)

在这里,

  • μ 表示消息发布的background rate(即,如果没有触发效果,消息发布自身就具有的频率)
  • \sum_i w(t - t_i)代表了过去事件的影响,通过索引 i 遍历时间 t 之前发生的所有过去的消息 t_i
  • w(t - t_i) 是triggering kernel,表示每个过去的消息对时间 t intensity的权重或影响。(请注意,在社交网络示例中,的确可以将triggering kernel写为 \alpha(t - t_i) 而不是 w(t - t_i)。 但在这里使用 w(t - t_i)的原因是因为它是每个过去事件的“权重”或“影响”的另一个通用表达,也就是说可以用不同的字母或者方程来描述triggering kernel)

 在这个场景下,triggering kernel w(t - t_i)可以表示为:

w(t - t_i) = \alpha\ exp(-\beta(t - t_i)) =\alpha e^{-\beta(t-t_i)}

  • α 是triggering effect的强度大小(即,每条过去的消息会增加未来消息的intensity)
  • β 是一个“decay rate”,它决定了过去消息的影响随时间衰减的速度(也就是说过去事件对未来事件的影响不是固定的,而是会随着时间减弱的)。

看到这里,你可能还会疑惑,这个intensity到底是什么意思,过去发生的事件到底如何影响着未来的事件。如果你也有这样和我最开始一样的疑惑的话,就继续看下去吧!

使用Python对一维的Hawkes process进行模拟

使用Python对一维的Hawkes process进行模拟的代码如下:

import numpy as np
import matplotlib.pyplot as plt
from tick.hawkes import SimuHawkesExpKernels# Set up simulation parameters
n_nodes = 1
end_time = 100
mu = 0.1  # background rate
alpha = 0.8  # triggering kernel amplitude
beta = 2  # triggering kernel decay rate# Create simulation object
simu = SimuHawkesExpKernels(adjacency=np.array([[alpha]]),  # adjacency matrix with only one nodedecays=beta,  # decay rate for the kernelbaseline=np.array([mu]),  # background rateend_time=end_time,verbose=False,seed=10
)# Simulate the process
simu.simulate()# Extract the event times and estimate the kernel function
times = simu.timestamps[0]  # an array of event times (timestamps)
t_grid = np.linspace(0, end_time, num=1000)
kernel = alpha * np.exp(-beta * t_grid)# Compute the intensity function and plot it
intensity = np.zeros_like(t_grid)
for i, t in enumerate(t_grid):idx = np.where(times < t)[0]# np.where(times < t) returns a tuple containing the indices of all the elements in# the numpy array times that satisfy the condition times < tif len(idx) > 0:# For example, suppose t_grid is [0.0, 0.1, 0.2, 0.3, ..., 99.8, 99.9, 100.0] and times[idx] is# [5.6, 12.3, 35.2, 98.7]. The np.searchsorted function would return [56, 123, 352, 987], which are the indices# in t_grid that correspond to the event times in times[idx].intensity[i] = mu + np.sum(kernel[i - np.searchsorted(t_grid, times[idx])])else:intensity[i] = muplt.plot(t_grid, intensity)
plt.xlabel('Time')
plt.ylabel('Intensity')
plt.title(f'Hawkes process with mu={mu}, alpha={alpha}, beta={beta}')
plt.show()

这个代码中,我们使用了tick这个package来进行Hawkes process的模拟,其中,我们使用SimuHawkesExpKernels 函数来模拟具有指数kernel的Hawkes process。代码中设定的参数如下:

  • mu:background rate,表示在没有任何触发事件的情况下用户发消息率
  • alpha:过去事件trigger未来事件的幅度,也就是触发效应的强弱
  • beta:decay rate,表示过去帖子的触发效果随时间衰减的速度
  • end_time:模拟的时间范围

例如,假设我们设置 mu = 0.1,alpha = 0.5,beta = 2.0,模拟100分钟的过程。然后SimuHawkesExpKernels 函数将生成用户发帖的随机timestamp(时间戳)。 生成的时间戳数将取决于我们为函数设置的参数mu,和triggering kernel的alpha 和 beta等。例如,这个函数会返回,用户将会在[9, 21, 28, 35]的timestamp上发帖。上述代码计算的intensity曲线如下图所示:

结合我们的社交网络背景来进行图的解释的话,我们可以假设现在有一个社交媒体用户,他过去在[9, 21, 28, 35]的时间戳上发布了 4 次帖子。我们想使用 Hawkes 过程来基于他们过去的发帖行为,预测该用户在40分钟的时候会发多少帖子。

现在,我们要计算该用户在每个timestamp的intensity function。 intensity function告诉我们,根据用户过去的行为,用户在特定时间发帖的可能性有多大。假设我们要计算时间 40 的intensity 。我们计算用户在40分钟之前发布的过去帖子的数量,即 4。然后我们使用triggering kernel计算每个过去的帖子对第40分钟的instensity的贡献,即使用alpha * exp(-beta * (t - t_i)),其中 t 是当前时间,t_i 是过去发布的时间戳。

例如,第一个过去的帖子(时间戳 9)对第40分钟的intensity的贡献是:0.5 * exp(-2.0 * (40 - 9)) = 5.9 e-28。 我们对过去的每个帖子都这样做,并总结贡献以获得第40分钟的总intensity,为2.27 e-05 + 0.1 = 0.1。这意味着根据用户过去的行为,我们预测他们可能会在接下来的第40分钟内会发 0.1次左右的帖子。 但是,这只是基于模型的预测,用户发布的实际帖子数量可能因各种因素而有所不同。(注意,这里计算的结果与图片不吻合的原因是,图片里模拟了100次发帖的事件, 在40分钟前的timestamp数量并不是4次,而是更多)

所以,请务必注意,intensit计算并不能直接被解释为用户将在下一个时间戳发布的帖子数。 它只是根据用户过去的发帖行为,估算用户在任何给定时间可能发帖的瞬时速率,例如在40分钟里发帖的瞬时速度为0.1贴/ 分钟。实际的瞬时速度肯定是在更小的时间区间下来说的,这里只是举例说明。


以上就是关于Hawkess process的基础数学表达式的讲解以及结合实际场景的说明。需要最后额外补充的是,Hawkess process的应用场景还有很多,例如地震、金融、机器学习、可靠性、神经科学、信息传播、保险、专利和论文引用、心理学、疾病预测、物种入侵等等。以地震为例,每一次地震都可能会导致附近发生其他地震。 通过研究地震的Hawkes Process,科学家们可以尝试预测下一次地震可能发生的时间和地点。当然这里指的Hawkes Process是基于基础表达式而设计的更为复杂的Hawkes Process表达。

我之后还会继续深入学习Hawkes Process,下一步应该是学习多维的Hawkes Process模拟和表达,希望不要学的太痛苦。最后,感谢ChatGPT老师的详解和帮助!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/56021.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用月壤实现太阳能发电,人类离「定居月球」又近一步 | 来自贝索斯蓝色起源...

Alex 发自 凹非寺量子位 | 公众号 QbitAI 用月球表面土壤搞太阳能发电&#xff1f;&#xff01; 你没听错&#xff0c;有人用这种材料做出了太阳能电池&#xff0c;人类朝“在月亮上搞基建”又前进一步。 这个“幕后使者”&#xff0c;既非马斯克的SpaceX&#xff0c;也非NASA&…

python调用oepnai API

目录 apiAI官网介绍&#xff08;[Introduction](https://platform.openai.com/docs/api-reference/introduction)&#xff09;安装官方SDK认证&#xff08;Authentication&#xff09;申请API KEY请求组织&#xff08;Requesting organization&#xff09; 发送请求关于chat to…

在线作图|2分钟在线绘制三维PCOA图

三维PCoA PCoA(Principal Co-ordinates Analysis)分析即主坐标分析&#xff0c;可呈现研究数据相似性或差异性的可视化坐标&#xff0c;是一种非约束性的数据降维分析方法&#xff0c;可用来研究样本群落组成的相似性或相异性。它与PCA类似&#xff0c;通过一系列的特征值和特…

python绘制3D图表

pyecharts绘制3D图表 参数配置和说明 Grid3DOpts、Axis3DOpts为3D图标需要配置项 Grid3DOpts&#xff1a;三位坐标系配置项 class pyecharts.options.Grid3DOpts class Grid3DOpts(# 三维笛卡尔坐标系组件在三维场景中的宽度width: Numeric 200,# 三维笛卡尔坐标系组件在三维…

在线作图|2分钟在线绘制三维CCA图

​三维CCA 典型相关分析&#xff08;Canonical Correlation Analysis&#xff09;是研究两组变量之间相关关系的一种多元统计方法&#xff0c;它能够揭示出两组变量之间的内在联系。冗余分析&#xff08;redundancy analysis, RDA&#xff09;或者典范对应分析&#xff08;can…

在线作图|2分钟绘制三维PCA图

三维PCA 主成分分析算法&#xff08;PCA&#xff09;是最常用的线性降维方法。PCA降维为了在尽量保证“信息量不丢失”的情况下&#xff0c;对原始特征进行降维&#xff0c;也就是尽可能将原始特征往具有最大投影信息量的维度上进行投影。将原特征投影到这些维度上&#xff0c…

Tikz 作图教程:pgfplots 宏包三维数据的可视化绘图

前一篇推文讲解了使用pgfplots 宏包导入二维数据和可视化绘图的方法。今天我们来介绍一下科研工作者常常用到的三维数据的导入与绘图的方法。 当一个函数关系式中出现了两个自变量时&#xff0c;我们需要用空间曲面来呈现其图像。 编辑之谈(知名origin 绘图公众号)最近一篇推…

plotly绘制3D图技巧

简介 Plotly 是一个非常强大的开源数据可视化框架&#xff0c;它通过构建基于 HTML 的交互式图表来显示信息&#xff0c;可创建各种形式的精美图表。本文所说的 Plotly 指的是 Plotly.js 的 Python 封装&#xff0c;plotly本身是个生态非常复杂的绘图工具&#xff0c;它对很多…

使用VoceChat 为自己的网站和社群搭建聊天机器人

使用VoceChat搭建一个自己的机器人 最近想要把AnyGPT的社群做起来&#xff0c;但是微信群的效率实在太低了&#xff0c;很多公共的问题会一遍又一遍的回答。还有就是&#xff0c;一直想在群里用GPT搭个机器人&#xff0c;但是在微信里面搭建机器人本身是不合法的&#xff0c;有…

学习Python可以做哪些副业,不看错过了一个亿,普通人可复制的暴利副业攻略

人生苦短&#xff0c;我用Python。 近年来&#xff0c;Python凭借其简洁易入门的特点受到越来越多人群的青睐。 当然这不仅仅是针对程序员来说&#xff0c;对于一些学生、职场人士也是如此。 Python为什么会大受欢迎呢&#xff1f;因为Python还被大家称为“胶水语言”&#…

ai帮你写论文,一款特别牛逼的ai对话网站

open ai 一、 open Ai 介绍二、 chat apt 演示三、 网址 一、 open Ai 介绍 OpenAI&#xff0c;在美国成立的人工智能研究公司。 公司核心宗旨在于“实现安全的通用人工智能(AGI)”&#xff0c;使其有益于人类。 chatapt超级对话模型 这一模型可以与人类进行谈话般的交互&…

ChatGLM实现本地部署类似GPT,训练自己的数据

ChatGPT最近火的不得了&#xff0c;但是注册账号&#xff0c;升级Plus非常麻烦&#xff0c;而且还要担心数据泄露&#xff0c;清华开源ChatGLM&#xff0c;实现本地部署&#xff0c;这就方便多了&#xff0c;不用魔法&#xff0c;就能本地访问&#xff0c;还可以喂一下自己行业…

如何选择一家靠谱的IT培训机构?

如何选择一家靠谱的IT培训机构&#xff1f;现在很多的人都知道工作很难找&#xff0c;如果没有一技之长就很难获取好的发展&#xff0c;如今互联网的发展前景广阔&#xff0c;很多人转型开始学习软件开发之类的技术&#xff0c;市场上的培训机构多入牛毛&#xff0c;那如何选择…

计算机培训班哪家靠谱?怎么选择

课程体系 选择一个适合自己的课程体系是最为重要的&#xff0c;课程体系的选择要考虑到自己的兴趣爱好&#xff0c;还有未来职业规划。就目前来说&#xff0c;很多人选择的目前比较好就业的课程&#xff0c;但是自己却完全没有兴趣。在这种情况下&#xff0c;人们很容易在未来…

我不是培训班的,但建议上IT培训班

目录 一、个人经历 二、有哪些IT培训班 三、学习IT上培训班的益处 四、学习IT上培训班的风险 五、就业前景 六、题外话 在学习IT技术的过程中&#xff0c;你是否也被安利过各种五花八门的技术培训班&#xff1f;这些培训班都是怎样向你宣传的&#xff0c;你又对此抱有着…

网上在线培训平台哪家好?

在21世纪的今天&#xff0c;“终身学习”已经不再是一个新颖的概念了&#xff0c;并且随着科技的进步&#xff0c;学习方式发生了变革&#xff0c;越来越多的人开始通过互联网学习知识。 网上在线学习平台的前景分析 随着科技水平的不断提升&#xff0c;在线学习saas管理系统…

软考培训机构哪家好?

无论是软考也好&#xff0c;PMP也好&#xff0c;或者是其他考试&#xff0c;培训机构都很多&#xff0c;有线上的也有线下的。只要你关注这方面的信息&#xff0c;就会看到各种说辞的广告&#xff0c;觉得哪个都好&#xff0c;无从下手.......... 下面小编就选培训机构来给大家…

pmp主流培训机构推荐,pmp培训机构哪个好?

PMP 机构选择也是我报名的时候最头疼的一个问题&#xff0c;做 PMP 培训的机构太多了&#xff0c;各执一词&#xff0c;各机构互踩的人也很多&#xff0c;看的眼花缭乱叫人头大。 下面这篇文章把几个机构的优劣都写出来了&#xff0c;比较清晰和中肯&#xff0c;个人觉得可以参…

如何选择IT培训机构?

作为学习IT技术的一种方式、平台&#xff0c;培训班存在已久。而作为国内培训机构的老大哥&#xff0c;北大青鸟于1999年成立&#xff0c;是IT职业教育的开创者&#xff0c;专注于软件、网络、营销等各个IT技术领域&#xff0c;为IT行业输送了奖金百万技术人才。24年以来&#…