仅使用运动历史预测网络下一步运动的统计模型

机器算法验证 预测模型 空间的 隐马尔可夫模型 图论
2022-03-12 07:18:59

是否有可能建立一个统计模型,仅根据过去的移动和图形的结构来预测图形的下一步移动?

我举了一个例子来说明这个问题:

  1. 时间是离散的在每一轮中,您要么留在当前节点/顶点,要么移动到连接的节点之一。由于时间是离散的,并且您最多可以每轮推进一个节点,因此没有速度。
  2. 过去的路线/移动历史:{A, B, C} -- 而当前位置是:C
  3. 有效的下一步动作:C、B、X、Y、Z

    1. 如果您选择C,您将保持不变,
    2. 如果B你向后移动,
    3. 如果X、Y 或 Z意味着向前移动。
  4. 链接或节点上没有权重。

  5. 没有最终目的地节点。观察到的部分运动行为是随机的,其中一部分将具有一定的规律性。

图形

一个非常简单的模型——不考虑移动历史——只会预测C、B、X、Y 和 Z各有 1/5 的概率成为下一步。

但根据结构和运动历史,我猜有可能做出更好的统计模型。例如, X应该具有较低的概率,因为在上一轮中可以直接从节点B移动到那里。同样, B也应该具有较低的概率,因为该人本可以在前一轮中保持不动。


如果用户移回B,则移动历史将如下所示{A, B, C, B}并且有效移动将是A, B, C, D, E, X移动到C的概率应该更低,因为你本可以保持不变。移动到X的概率也应该更低,因为您可以在上一轮中从C移动到那里。较早的历史也可能会影响预测,但应给予比近期历史更少的权重 - 即。2 轮前你可以留在B,或者你可以搬到A、D、E、X —— 3 轮前你可以留在A


环顾四周,我发现类似的问题存在于:

  • 移动电信,运营商试图预测用户接下来将移动到哪个蜂窝塔,以便他们能够顺利移交呼叫/数据传输。
  • 网络导航,浏览器/搜索引擎尝试预测您接下来将转到哪个页面,以便他们可以预加载和缓存页面,从而减少等待时间。类似地,地图应用程序会尝试预测您接下来将请求哪些地图图块,并预加载这些图块。
  • 当然还有运输业。
3个回答

你真的想要一个统计模型,还是只需要一个算法来猜测所有先前节点的下一个节点?如果是后者,则考虑如下进行。

假设你已经走了ABC并且需要决定哪一个X,Y或者Z是最有可能的下一个节点。

  1. 一阶马尔可夫。历史上说nC(X)从移动C曾经去过X,nC(Y)YnC(Z)Z. 定义nC=nC(X)+nC(Y)+nC(Z). 添加展平常数κ对于每个计数,(Dirichlet-Multinomial)预测下一步的概率是pC(X)=κ+nC(X)3κ+nC等等

  2. 二阶马尔可夫。如上所述,但我们正在关注以下动作BC. 计数nBC(X)etc 会更低(我们将采用更小、更具体的历史片段),因此添加的扁平化效果κ历史计数将成比例增加。和之前一样,我们定义pBC(X)=κ+nBC(X)3κ+nBC等等。

  3. 以这种方式继续,形成概率pC(),pBC(),pABC(),直到历史足够长,下一个节点只有一个选择。现在再往前走是没有意义的。phistory(W)是所有的最大值p()概率。您对下一个节点的预测是W.

这只是留下了一个问题:应该有什么价值κ拿? κ=1将是传统的起点。尝试交叉验证(对部分数据进行训练,对其余数据进行测试)以微调该值。

非时变版本的提示:您可以将其视为在给定一些数据的情况下更新(使用贝叶斯定理)概率估计。多项似然和 Dirichlet 先验将是标准方法。https://en.wikipedia.org/wiki/Dirichlet-multinomial_distribution

对于先验,听起来您希望先验概率为每个可能的节点分配相等的转换概率。

添加时间的影响(旧的过渡比新的更重要)更复杂。您可以添加衰减函数,以便获得部分过渡。

通常,仅图表的结构不会告诉您有关转换概率的任何信息。

几个答案和几个问题。

为简单起见,我们首先假设您只看到一长串动作。最简单的模型将涉及每个节点的多项分布(基本上在每个节点上都有一个特定的骰子可以滚动以确定下一步要去哪里)。我们的目标是估计这些骰子的参数正如 Ash 提到的,贝叶斯方法是在每个 die 上放置一个Dirichlet Prior Distribution,并用新数据更新这个先验以获得Dirichlet Posterior Distribution您可以将 Dirichlet 发行版视为一个骰子工厂。后验分布也是 Dirichlet 的事实是因为 Dirichlet 分布是Conjugate Prior到多项分布。虽然这听起来很令人困惑,但实际上非常简单。先验可以解释为伪计数,本质上是假装你已经看到了一些数据(即使你没有看到)。

例如,如果你在 Z,你可以去 C、D、Z(我们的骰子在这里是三面的)。我们可以使用狄利克雷先验,就好像我们已经看到了从 Z 到每个状态的一个转换。所以每个概率将等于 1/3。如果玩家转移到 C,我们将更新我们的分布,因此从 Z 转移到 C 的概率为 2/4,另一个的概率为 1/4。如果我们使用具有更多伪计数的先验,就好像我们已经看到从 Z 到其他每个状态的 10 次转换,更新的概率(11/31、10/31、10/31)将更接近原始的,这是一个更强的先验。先验的强度通常由Cross-Validation确定。

我上面描述的模型被称为无记忆模型,因为从一种状态转换到另一种状态的概率仅取决于您当前的状态。如果您想做一些更详细的事情,您不仅可以合并您当前所在的位置,还可以合并您上一步的位置,尽管此时您必须估计的参数数量将急剧增加,因此估计的方差将为出色地。

问题:

你给出了一些“当我可以从 B->X 走时,我为什么要从 B->C->X 走?”形式的直觉?这些想法似乎特定于您正在处理的问题,所以我可以直接与它交谈。虽然如果这是一个问题,也许您想使用非无记忆(内存满?)模型,或者将此信息合并到您的先前。如果你想解释这张图在现实生活中的意义是什么,以及这种直觉的来源,也许我们会更有帮助。

笔记:

您想查找马尔可夫模型,也许没有那么多隐藏马尔可夫模型。那些具有控制观察到的数据的隐藏状态,并且试图学习使用它们可能会妨碍这个项目。