以编程方式注意Python

时间:2016-11-25 19:38:42

标签: comparison data-mining

我有一个开放式问题。我有22个有序的符号列表,我想探索一些方法,看看这些符号的顺序或顺序是否有明显的子序列。

背景: 符号表示人们在尝试调试系统时所采取的不同类型的操作,因此,它们遵循一些可预测的趋势似乎是合乎逻辑的。例如,我希望人们在尝试修复之前需要弄清楚问题是什么,在测试之前编辑代码等等。一个重要的事情是可能有几个相同的符号被重复,然后继续一个不同的符号。例如,用户可以在尝试运行代码之前编辑许多不同的文件。

大约有20个唯一符号,每个有序符号列表长约120个符号(长度各不相同!),并且有22个这样的列表。

我想以编程方式注意这些列表中的趋势。我该怎么做呢?

有趣的子序列可以是以下任何一种:

  • 符号x几乎通常后跟符号y
  • 符号u通常出现在列表的开头,很少出现在最后
  • 符号通常按以下顺序发生:[1,3,7,1,2]

最重要的一个:

  • 在所有序列中,这是整个子序列[9,12,4,2,6]

我可以探索哪些数据挖掘技术来帮助回答这些问题?

1 个答案:

答案 0 :(得分:1)

非常好的问题!我有几个想法来解决这个问题。让我简要介绍一下,并希望其中至少有一个能满足你的目的。

<强> Frequent Pattern Mining

最流行的模式挖掘算法毫无疑问是Apriori algorithm。它旨在应用于事务数据库,以发现客户在商店中进行的事务中的模式。但它也可以应用于其他几个应用程序中。事务定义了一组不同的项(符号)。 Apriori将(1)用户设置的 minsup 阈值和(2)包含一组事务的事务数据库作为输入。 Apriori输出所有频繁项目集,即在输入数据库中由不少于 minsup 事务共享的项目组。我相信频繁的模式挖掘方法最符合您的需求。

<强> Sequential Pattern Mining

顺序模式挖掘涉及在数据示例之间找到统计相关的模式,其中值作为序列传递。一个示例顺序模式挖掘技术是GSP(广义顺序模式)算法。

基于群集的方法

群集是将数据分组为子集或群集,其中每个群集中的项(数据)共享共同特征。因此,基于聚类的方法可能是另一个值得关注的有趣方法。基于密度的聚类或层次聚类可以产生非常有趣的模式。

基于图表的方法

我相信基于图形的方法也是有效的。例如,如果您创建22个图形(每个图形代表一个有序的符号列表),那么您可以查找将为您提供趋势事件的公共子图。

预测模型

在最先进的趋势分析技术中,人们使用预测模型,如神经网络,内核机器,决策树(其他基于规则的学习范例),并且在许多事件中他们发现它们是有效的!

如果我遇到这个问题,我会从模式挖掘技术开始!