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

Algorithm 根据过去发生的事件预测下一次事件发生,algorithm,language-agnostic,prediction,Algorithm,Language Agnostic,Prediction,我正在寻找一种算法或示例材料,用于根据已知模式预测未来事件。也许这有个名字,我只是不知道/记不起来了。这种普遍的东西可能不存在,但我不是数学或算法的大师,所以我在这里寻求方向 举个例子,据我所知是这样的: 静态事件发生在1月1日、2月1日、3月3日、4月4日。一个简单的解决方案是平均每次事件之间的天数/小时/分钟/某物,将该数字添加到最后一次已知事件中,并进行预测 我要求什么,或者我应该学习什么 心中没有特定的目标,也没有任何特定的变量。这只是我个人的想法,也是我学习新东西的机会 我用过的唯一一

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

举个例子,据我所知是这样的:

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

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


心中没有特定的目标,也没有任何特定的变量。这只是我个人的想法,也是我学习新东西的机会

我用过的唯一一种技术就是训练一个神经网络来预测这个系列的下一步。这意味着将这个问题解释为模式分类中的一个问题,这似乎不太合适;我不得不怀疑有一些不那么模糊的处理方法。

没有单一的“最佳”罐装溶液,这取决于你需要什么。例如,您可能希望按照您所说的对值进行平均,但如果旧值对结果的贡献不如新值大,则使用加权平均。或者你可以尝试一些平滑。或者你可以试着看看事件的分布是否符合一个很好的kjnown分布(如正态分布、泊松分布、均匀分布)。

我认为一些可能值得研究的主题包括,特别是。

你应该在谷歌上搜索

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

神经网络必须由你来训练,但是有了遗传编程,这个程序将完成所有的工作


虽然一开始要让它们运行起来需要做很多工作

这可能有些过分,但可能会导致一些非常酷的模式识别功能。它更适合于事件链:根据事件链的最后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])

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

如果你有一个模型(例如事件定期发生),然后对该模型的参数应用卡尔曼滤波器是一种常见的技术。

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


有一些开源软件,比如和,可以简单地将你的序列作为输入句子(每个事件id都是一个单词)并完成这项工作。

我知道,从来没有一个最好的答案,特别是考虑到这样一个模糊或模棱两可的问题,但在这种情况下,我认为外推就是我所寻找的。谢谢我想你指的是插值,不是解释。