从原始数据中获取趋势

Posted

技术标签:

【中文标题】从原始数据中获取趋势【英文标题】:Getting trends from raw data 【发布时间】:2012-05-05 17:17:38 【问题描述】:

让我们有很多看起来像这样的数据

chain of digits  time
23 67 34 23 54 | 12:34
23 54          | 12:42
78 96 23       | 12:46
56 93 23 54    | 12:48

我需要找到数字链趋势(增长、下降、稳定)。在我的示例中,它可能是 23 54 或 23。 我也想在趋势之间找到不同的相关性。数据非常大。它可能是数十亿行。你能推荐任何书籍文章或算法吗?请注意,我只需要有关此类数据类型的趋势和相关性的信息。我不需要基本的数据挖掘书籍。

【问题讨论】:

我认为一般可以解决这个问题(即,对序列的大小、行数、可用内存或执行分析所需的时间没有限制) 可能没有用。该问题可能没有有效的通用 解决方案(我不确定)。在这种情况下,提供您想要完成的更广泛的背景可能对您很有用,以便可以解决问题的最相关子集,而牺牲理想的解决方案但无论如何都要做出令人满意的事情。 顺序关联分析 【参考方案1】:

这是算法的要点。它当然没有被淘汰或测试,它可能不完整。我只是把它作为一个可能的起点扔在这里。

似乎最具挑战性的问题是在数十亿行上运行算法所需的时间,其次可能是内存限制。

我也相信解决这个问题的基本任务在于“将一组数字与另一组数字进行比较”以定位共享集。

因此,我是否可以建议以下(粗略)方法,以解决时间、内存:

(1) Consolidate multiple sets into a single, larger set.

即,取 100 个连续的集合(在您的示例中,23, 67, 34, 23, 5423, 5478, 96, 23,以及以下 97 个集合),然后简单地将它们合并为一个 单个 集合(忽略重复)。

(2) Give each *consolidated* set from (1) a label (or index),
and then map this set (by its label) to the original sets that compose it.

通过这种方式,您将能够检索(查找)原始个人集23, 67, 34, 23, 54等。

(3) The data is now denormalized - there are a much smaller number of sets, and each set is much larger.

现在,算法进入了一个新阶段。

(4) Develop an algorithm to look for matching sequences between any two of these larger sets.

会有很多误报;但是,希望您的数据的性质是误报不会“破坏”通过这种方法获得的效率。

我在这里没有提供算法来执行 2 个单独的集合之间的匹配;我假设您可以自己想出一个(对两组进行排序等)。

(5) For every possible matching sequence found in (4), iterate through the individual sets that compose
the two larger sets being compared, weeding out false positives.

我怀疑上述步骤可以显着优化,但这是基本思想。

此时,您将拥有组成被比较的两个较大集合的所有原始集合之间的所有匹配序列。

(6) Execute steps (4) and (5) for every pair of large sets constructed in (2).

现在,您将拥有所有匹配的序列 - 带有重复。

(7) Remove duplicates from the set of matching sequences.

只是一个想法。

【讨论】:

谢谢丹!但我认为我找到了解决问题的关键字。它是顺序模式和时间序列顺序模式。所以这是典型的数据挖掘任务,我可以使用这些领域的算法,例如 AprioriSome、DynamicSome 等 无数据挖掘任务是典型的数据挖掘任务。希望一切顺利! 我看到了“顺序模式”这个词。如果您对序列模式挖掘感兴趣,可以查看我的序列模式挖掘项目:philippe-fournier-viger.com/spmf 它不会帮助您发现趋势。但它可以帮助您发现几个序列共有的子序列。该项目提供 46 种带有用户界面的 Java 算法。祝你的项目好运!

以上是关于从原始数据中获取趋势的主要内容,如果未能解决你的问题,请参考以下文章

如何通过Zabbix获取监控数据

如何通过Zabbix获取监控数据

从 HTML5 视频中获取原始像素数据

使用 Core Audio 从 PCM 原始数据中获取电平值

从 Feedburner RSS 提要中获取原始 XML 数据

Scrapy 是不是可以从原始 HTML 数据中获取纯文本?