根据过去的事件预测下一个事件的发生

Posted

技术标签:

【中文标题】根据过去的事件预测下一个事件的发生【英文标题】:Predict next event occurrence, based on past occurrences 【发布时间】:2010-10-19 23:19:51 【问题描述】:

我正在寻找一种算法或示例材料来研究根据已知模式预测未来事件。也许有一个名字,我只是不知道/不记得它。这个一般的东西可能不存在,但我不是数学或算法大师,所以我在这里问方向。

一个例子,据我所知,它会是这样的:

静态事件发生在 1 月 1 日、2 月 1 日、3 月 3 日、4 月 4 日。一个简单的解决方案是平均每次出现之间的天数/小时/分钟/某事,将该数字添加到最后一次已知的事件中,并进行预测。

我要求什么,或者我应该学习什么?

没有特定的目标,也没有任何具体的变量需要考虑。这只是个人的想法,也是我学习新东西的机会。

【问题讨论】:

【参考方案1】:

我尝试做类似事情的唯一技术是训练神经网络来预测该系列的下一步。这意味着将问题解释为模式分类中的问题,这似乎不太合适;我不得不怀疑没有那么模糊的处理方式。

【讨论】:

【参考方案2】:

没有单一的“最佳”罐头解决方案,这取决于您的需求。例如,您可能希望按您所说的对值进行平均,但使用加权平均值,其中旧值对结果的贡献不如新值。或者你可以尝试一些平滑。或者您可以尝试查看事件的分布是否符合众所周知的分布(如正态分布、泊松分布、均匀分布)。

【讨论】:

【参考方案3】:

我认为一些可能值得研究的主题包括numerical analysis,特别是interpolation, extrapolation, and regression。

【讨论】:

我知道从来没有一个单一的最佳答案,尤其是考虑到这样一个模糊或模棱两可的问题,但在这种特殊情况下,我认为外推法是我正在寻找的。谢谢! 我认为您的意思是插值,而不是解释。【参考方案4】:

你应该谷歌Genetic Programming Algorithms

它们(有点像 Chaos 提到的神经网络)将使您能够以编程方式生成解决方案,然后让程序根据标准自行修改,并创建有望更准确的新解决方案。

神经网络必须由您训练,但通过基因编程,程序将完成所有工作。

虽然首先要让它们运行起来是一项艰巨的工作!

【讨论】:

【参考方案5】:

这可能是矫枉过正,但Markov chains 可以导致一些非常酷的模式识别的东西。它更适合,嗯,事件链:这个想法是,基于事件链中的最后 N 个步骤,接下来会发生什么?

这非常适合文本:处理莎士比亚的大量样本,您可以生成充满莎士比亚式废话的段落!不幸的是,要找出人口稀少的事件需要大量的数据。 (检测周期为一个月或更长时间的模式需要您跟踪至少一整月的数据链。)

在伪 python 中,这是一个马尔可夫链构建器/预测脚本的粗略草图:

n = how_big_a_chain_you_want
def build_map(eventChain):
    map = defaultdict(list)
    for events in get_all_n_plus_1_item_slices_of(eventChain):
        slice = events[:n]
        last = events[-1]
        map[slice].append(last)

def predict_next_event(whatsHappenedSoFar, map):
    slice = whatsHappenedSoFar[-n:]
    return random_choice(map[slice])

【讨论】:

【参考方案6】:

如果您只想在给定事件发生频率的先前数据的情况下找到事件在 n 天后发生的概率,您需要拟合适当的概率分布,这通常需要了解事件的来源(也许它应该是泊松分布的,也许是高斯分布的)。如果您想在给定先前事件发生的情况下找到事件发生的概率,您需要查看贝叶斯统计数据以及如何从中构建马尔可夫链。

【讨论】:

【参考方案7】:

如果您有一个模型(例如事件定期发生),那么将卡尔曼滤波器应用于该模型的参数是一种常用技术。

【讨论】:

【参考方案8】:

该任务与语言建模任务非常相似,在给定一系列历史单词的情况下,模型会尝试预测下一个单词在词汇表上的概率分布。

有诸如SRILM和NLTK之类的开源软件可以简单地将您的序列作为输入句子(每个event_id是一个单词)并完成工作。

【讨论】:

以上是关于根据过去的事件预测下一个事件的发生的主要内容,如果未能解决你的问题,请参考以下文章

时序点过程学习笔记

如何使用机器学习从给定的地理数据集在 python 中进行预测?

FullCalendar - 如何防止过去发生的事件被拖动

概率与期望入门

Even事件

vue 监听函数发生事件