在未知周期(时间序列)中检测位置的算法

标签 algorithm machine-learning artificial-intelligence time-series hidden-markov-models

假设您想要预测下一次船只访问的概率。 您开始在船周期的任意位置进行观察。 当您进行观察时,您只能记录船是否可见(假设它是循环中的正确点,船始终可见)。 在这个世界上,船的周期长度也是未知的,但是周期性的,船的访问持续时间是未知的,但总是小于周期长度。还假设周期是一种固定的自然现象,可能不会改变。

案例 1. 第一个小时的观察你没有看到一艘船。因此,预测下一个小时内有船的概率将是任意的。在我们观察到一艘船的第二个小时,我们预测第 3 小时的概率很高。在第 4 小时我们没有观察到船,我们现在可以确定通常可以观察到这艘船 2 小时(第 2 小时和第 3 小时)。我们继续观察,在第 7 个小时,船再次可见。只有在这一点上,我们才能知道周期长度(5 小时)和船只可观察到的持续时间(2 小时)。

案例 2. 观察的第一个小时,您看到了一艘船。下一个小时的预测概率很高。在第 4 小时,您没有看到任何船只。此时船能见度至少为 3 小时。我们在第 5、6、7、8 小时再次观察船只,在第 9 小时没有船只。只有在第 9 小时之后,我们才能安全地说周期为 5 小时,能见度为 4 小时。

案例 3. 第一个小时你看到了一艘船。你睡了 3 个小时。在第 5 个小时,您看不到一艘船。你睡了 3 个小时。在第 9 个小时,您会看到一艘船。在 10、11、12 小时看到一艘船的概率是多少?

我可以使用什么算法来解决这个问题?我认为隐马尔可夫模型可能会起作用,因为存在潜在现象,但无法直接观察到。但在这种情况下,这种现象并不完全为人所知。在我的特定情况下,我可以用平均周期长度初始化算法。创建此算法的真正动机是观察之间的距离很远而且很少。该程序在训练阶段最有值(value),因为如果知道循环长度和我们在循环中的位置,事情就会变得微不足道。

以下是给定 0、1、2 和 3 个连续 观测值(X 表示看到船的观测值,O 表示没有看到船的观测值)的粗略输出,使用的平均历史周期长度为8 小时,乘船时间为 2 小时。仔细查看图表,您会注意到在船可能返回的位置附近存在增加的概率分布。 internal probability distribution

最佳答案

我不是这种建模方面的专家,但我建议您保持竞争理论

案例一:
第一小时:没有船。所以“关闭”阶段的长度至少是一,并且关闭阶段的长度可以是任何东西。我们可以把它写成 [1+, 0+]。循环的长度为(1+) + (0+) = 1+。
第二小时:船。模型现在是 [1+, 1+],它不会预测第 3 小时,但我们经常看到船,所以我们计算出 1/2 的概率。循环长度为2+。
第 3 小时:没有观察。理论 split 。如果没有船,我们会有 [1+, 1](并预测 1/3);如果有一艘船,我们就会有 [1+, 2+](并预测 2/3)。所以我们的模型是 {[1+,1],[1+,2+],我们预测 1/2。
第四小时:没有船。我们修改理论:{[2+,1], [1+,2]} 并预测 3/8。
第 5 小时:无观察。模型再次 fork :
[2+,1] -> [3+,1], [2,1]
[1+,2] -> [2+,2], [1,2]
请注意,其中两个理论声称是完整的(但对第 6 小时做出了相反的预测)。预测是 2/5 或 40%。
第 6 小时:无观察。不完整的理论 fork :
[3+,1] -> [4+,1], [3,1]
[2,1]
[2+,2] -> [3+,2], [2,2]
[1,2]
预测是1/4。
第七小时:船。此破三说,正一说,完一说,分一说:
[4+,1] -> [4,1]
<罢工>[3,1]
[2,1]
[3+,2] -> [3,2]
[2,2]
<罢工>[1,2]
周期为 5,能见度为 1 或 2 小时。第 8 小时的预测为 1/3。

案例 2:
第一小时:船。 [0+,1+]
第 2 小时:无观察。 [1+,1+], [0+,2+]。预测 3/4。
第 3 小时:无观察。 [2+,1+]、[1,1+]、[1+,2+]、[0+,3+]。概率 2/3。
第四小时:没有船。 [3+,1+]、[1,1]、[2+,2+]、[1+,3+]。概率 5/8。
第 5 小时:船。 [3,1+]、[1,1]、[2,2+]、[1,3+]。概率 3/5。
第六小时:船。 [3,2+]、[2,2+]、[1,3+]。概率 2/3。
第七小时:船。 [3,3+]、[2,3+]、[1,3+]。概率 5/7。
第八小时:船。 [3,4+]、[2,4+]、[1,4+]。概率 3/4。
第九小时:没有船。 [3,4]、[2,4]、[1,4]。概率 1/3。能见度为 4 小时,但周期未知。

我不会完成案例 3,但你明白了。

关于在未知周期(时间序列)中检测位置的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11468969/

相关文章:

machine-learning - 添加一项功能后,我的 cnn 准确性下降了

c++ - Rummikub 算法

java - 如何使用 ESHyperNEAT 在 Java 中实现解决方案?

c# - 计算一组串联的 n 组集合

c# - 在堆栈中查找最长的字符序列

algorithm - 微语法分析器的递归方法

machine-learning - 如何训练对话流以提取值可能不会被空格分割

c++ - 对于简单类型C++,使用静态tmp变量重新实现std::swap()

python - Pandas 中带有子范围的 GroupBy

machine-learning - 为什么有些分类器在 WEKA 中不可用?