识别和预测周期性模式

数据挖掘 预言 顺序模式挖掘
2022-02-20 12:35:33

我需要设计一个控制器来尝试从未知来源收集尽可能多的坠落物体(雨滴)。对解决问题有益的可能是识别看似随机生成的雨滴。

y  ^
   | 0 0 1 0 0 0 0
   | 0 0 1 0 0 1 0
   | 1 0 0 0 0 1 0
   | 0 0 0 1 1 0 0  
   ----------------->
                  t       

所以,我有一个离散时间步长的二进制矢量信号(雨滴在 4 个位置上生成是/否)。我只能在距离地面 10 步远的地方看到雨滴。篮子有一个雨滴的容量。可用的控制动作是向左走、向右走或什么都不做。任何模式识别来源都可以帮助我设计更高级的控制器。是否有可以识别此类数据中周期性模式的方法?

2个回答

如果它真的很接近随机(背景噪声、来自随机数生成器或哈希码的位),我不认为你可以做很多事情,除了创建一个大型收集器。(或者你只允许一名收藏家?)

您可能需要进行一些随机检查。这些不会证明任何事情,但可能会让您对这种模式有所了解。

如果您想创建一个成功的模型,您必须对可能影响模型成功的参数提出一些假设,然后创建和测试该模型。

例如,我的一个假设是存在概率更高的行。另一个假设是存在一些滞后效应(正或负),因此概率可能取决于先前事件的实际结果。

对于这个问题,不太可能有任何有用的模式分析。

我无法证明这一点,但我认为雨滴很可能是使用伪随机过程生成的。即使它们不是,您也已经获得了足够多的信息,说明您的控制器在此模拟中可以“感知”到什么,因此无需预测未来的雨滴。

相反,这是一个优化控制和规划的问题。在机器学习中,通常可以使用强化学习来解决这样的问题——Q-Learning可能会在这里工作,但由于状态数量众多,因此很难实现它以便快速学习。您将需要使用像神经网络这样的函数逼近器,虽然这可以在这里很好地工作,但似乎没有必要。

我认为您在这里不需要任何数据科学技术,这更接近于更传统的AI 规划然而,规划和学习模型之间有着密切的联系,所以我要建议的也是你可能会在使用机器学习(强化学习)和规划相结合的游戏系统中看到的东西。

快速分析表明您有大量可见状态(242) 这将需要很长时间才能为使用最简单的强化学习算法生成最优规则——尽管它是可行的。但是,您还对动力学和完全确定的系统有充分的了解,您可以看到。此外,您的行动决策的分支因子并不高,每步只有 3 个(有时是 2 个)——例如,向前看 8 个步骤将涉及检查 10,000 个场景。这似乎在每个时间步上都可以做到,这立即提出了一种简单的基于搜索的规划算法——类似于蒙特卡洛树搜索,除非在您的情况下,您可以将所有组合强制强制到任意范围。只要地平线足够远,你就可以通过这种方式达到最佳效果,因为只需要 3 步就可以完全遍历收集器可以所处的不同位置。

  • 在每个时间步:

    • 观察进入雨滴的当前状态和位置

    • 一个接一个,生成可行的行动链,通过所有可能性,提前一些步骤(我建议8个步骤,但想知道你是否可以少做一些,例如只有5个步骤)。

      • 如果一系列动作会使控制器超出允许的区域,请将其丢弃。

      • 根据每个时间步的雨滴信息,通过计算您预测它将收集多少雨滴来对动作序列进行评分。

      • 记录迄今为止的最佳行动顺序。

    • 使用迄今为止的最佳动作序列,选择该序列中的第一个动作,并在模拟中“真正地”采取该动作,前进一个时间步长。

    • 丢弃序列的其余部分,即使您的控制器确实可能会走这条路,为下一阶段的计划做好准备。在最简单的情况下,您不会使用聪明的树修剪技术来修改计划,您只需在每次更新后强制进行另一次搜索。更高级的算法可能能够保留最可能的序列以前进到下一个时间步,并节省计算(以复杂性和用于存储候选者的内存为代价)。