【问题标题】:Detect an a priori unknown pattern in dataset检测数据集中的先验未知模式
【发布时间】:2014-04-03 07:19:33
【问题描述】:

是否有任何算法/工具来检测离散符号输入序列中的先验未知模式?

例如,对于字符串“01001000100001”,它类似于 ("0"^i"1"), 对于“01001100011100001111”,它就像 ("0"^i"1"^i)

我找到了一些方法,但它们适用于在序列中检测的一组模式是先验已知的。我还发现sequitur algorithm 用于数据中的层次结构检测,但是当序列像我的示例中的“算术级数”时它不起作用。

因此,我将非常感谢有关方法/算法/工具/科学论文的任何信息。

【问题讨论】:

  • 尝试查看用于分支预测的算法,它们可能会有所帮助。
  • 是否需要检测像"0"^(i^2)"1"这样的“非线性”模式,比如顺序01000010000000001...
  • 是的,必须识别“非线性”
  • 很确定“任何模式”的一般情况无法解决,这听起来太像Kolmogorov Complexity。您正在寻找的模式是否只是一个正则表达式?它可能会简化事情。 (不知道有没有)
  • “任何模式”的情况是最好的,但由于其复杂性,我希望找到一种从特定集合(尽可能广泛)中检测模式的特定方法。所以任何一套都能满足我,但越多越好

标签: algorithm machine-learning artificial-intelligence


【解决方案1】:

我相信正如有人指出的那样,一般情况是无法解决的。 Douglas Hofstadter 花了很多时间研究这个问题,并描述了一些方法(一些是自动的,一些是手动的),请参阅第一章:

http://www.amazon.com/Fluid-Concepts-And-Creative-Analogies/dp/0465024750

我相信他的一般方法是使用 AI 搜索算法(深度或广度优先搜索结合一些好的启发式算法)。使用该算法将使用不同的运算符生成可能的序列(例如重复前一个数字 i 次或 i/2 次),并遵循搜索树中的分支,其中沿该分支的节点指定的操作已正确预测下一个数字( s),直到它可以成功地预测足够远的序列,以至于你对它有正确的答案感到满意。然后它将输出构成模式的操作序列(尽管这些操作需要用户设计为模式生成的构建块)。

另外,基因编程或许能够解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多