如何根据以前的事件预测下一个事件发生的时间?

ank*_*shg 14 statistics prediction

基本上,我有一个相当大的列表(一年的数据),单个离散事件发生的次数(对于我当前的项目,有人打印的东西的列表).基于此列表,我想构建某种统计模型,该模型将预测下一个事件(下一个打印作业)的最可能时间,给出所有之前的事件时间.

我已经读过这篇文章,但是对于我的项目而言,回复并没有完全帮助我.我做了一些额外的研究,发现隐马尔可夫模型可能允许我准确地这样做,但我找不到如何仅使用一个列表生成隐马尔可夫模型的链接.我还发现在列表中使用卡尔曼滤波器可能很有用,但基本上,我想从实际使用它们的人那里获得更多关于它的信息,并在尝试某些事情并希望它起作用之前了解它们的局限性和要求.

谢谢你!

编辑:所以通过Amit在评论中的建议,我也将其发布到Statistics StackExchange,CrossValidated.如果您确实知道我应该做什么,请在这里或那里张贴

Kag*_*nar 7

我承认,我不是一个统计类型的人.但我以前遇到过这类问题.我们在这里真正谈到的是你有一些观察到的离散事件,你想知道你在任何给定的时间点看到它们的可能性.您遇到的问题是您希望获取离散数据并从中获取连续数据.

想到的术语是密度估计.特别是核密度估计.您可以通过简单的分级来获得核密度估计的一些影响(例如,计算时间间隔中的数字事件,例如每四分之一小时或小时.)核密度估计比简单分级具有更好的统计特性.(生成的数据通常更"平滑".)

但是,这只会解决您的一个问题.下一个问题仍然是更有趣的问题 - 如何获取数据的时间线(在这种情况下,只有打印机数据)并从中产生预测?第一件事是第一件事 - 你设置问题的方式可能不是你想要的.虽然拥有有限的数据源并预测该源的下一步的奇迹想法听起来很有吸引力,但集成更多数据源以创建实际预测更为实际.(例如,在有很多电话活动之后,打印机可能会受到严重打击 - 某些公司很难预测这些打印机)Netflix Challenge是这一点的一个相当有力的例子.

当然,更多数据源的问题在于,需要额外的工作来设置收集数据的系统.

老实说,我认为这是一个特定领域的问题,并采取两种方法:找到与时间无关的模式,并找到时间依赖的模式.

一个示例性的时间依赖模式是每周4:30在Suzy打印出她的一天结束报告.这发生在一周中每天的特定时间.这种东西很容易以固定的间隔检测到.(每天,每周,每个周末,每个星期二,每个月的第1个等等.)这是非常简单的以预定间隔检测 - 只需创建一周估计概率密度函数的曲线长并回到过去并平均曲线(可能通过窗函数加权平均值以获得更好的预测).

如果你想变得更复杂,找到一种自动检测这种间隔的方法.(可能数据不会如此强大,以至于你可以蛮力这个.)

一个与时间无关的模式示例是,每次会计中的迈克打印出发票清单时,他都会转到Johnathan,他在几小时后打印出一大批完整的发票报告.这种事情很难被发现,因为它是更自由的形式.我建议查看不同的时间间隔(例如30秒,40秒,50秒,1分钟,1.2分钟,1.5分钟,1.7分钟,2分钟,3分钟,...... 1小时,2小时,3小时, ....)并以一种很好的方式(例如Lanczos重新采样)对它们进行二次采样以创建一个向量.然后使用矢量量化样式算法对"有趣"模式进行分类.但是,您需要仔细考虑如何处理类别的确定性 - 如果您生成的类别中的数据非常少,则可能不可靠.(有些矢量量化算法比其他算法更好.)

然后,要创建关于将来打印某些内容的可能性的预测,请通过矢量量化查找最近的活动间隔(30秒,40秒,50秒,1分钟和所有其他间隔)并对结果进行加权基于他们确定性来创建预测的加权平均值.

您需要找到一种好方法来衡量与时间相关且与时间无关的输出的确定性,以创建最终估算.

这种事情是预测数据压缩方案的典型特征.我建议你看看PAQ,因为它有很多我在这里过去的概念,可以提供一些非常有趣的见解.源代码甚至可以与所用算法的优秀文档一起提供.

您可能希望采用完全不同的矢量量化方法并将数据离散化并使用更像PPM方案的方法.它可以非常简单地实现并且仍然有效.

我不知道这个项目的时间范围或范围是什么,但这种事情总是可以达到N度.如果它有一个截止日期,我想强调你担心首先工作,然后让它运作良好.不理想的东西总比没有好.

这种项目很酷.如果你把它包起来,这种项目可以帮你找到一份工作.我建议你花点时间,做对,然后把它作为功能,开源,有用的软件发布.我强烈推荐开源,因为您需要建立一个社区,可以在您可以访问,支持或支持的更多环境中贡献数据源提供者.

祝你好运!