以编程方式注意到 Python 中的频繁子序列
Programmatically Noticing Frequent Subsequences in Python
我有一个开放式问题。我有 22 个有序的符号列表,我想探索查看这些符号的顺序或序列中是否存在明显子序列的方法。
背景:
这些符号代表人们在尝试调试系统时采取的不同类型的操作,因此,它们遵循某种可预测的趋势似乎是合乎逻辑的。例如,我希望人们在尝试修复问题之前需要弄清楚问题是什么,在测试之前编辑代码等等。一件重要的事情是,在继续之前,可能会重复几个相同的符号一个不同的符号。例如,用户可能会在尝试 运行 代码之前编辑许多不同的文件。
大约有 20 个独特的符号,每个有序的符号列表大约有 120 个符号长(长度不同!),并且有 22 个这样的列表。
我想以编程方式注意到这些列表中的趋势。我该怎么做呢?
有趣的子序列可能是以下任何一个:
- 符号 x 几乎通常后跟符号 y
- 符号u通常出现在列表的开头,很少出现在结尾
- 符号通常按以下顺序出现:[1,3,7,1,2]
大的:
- 在所有序列中,这是整个子序列 [9, 12, 4, 2, 6]
我可以探索哪些数据挖掘技术来帮助回答这类问题?
问得好!我有几个想法来解决这个问题。让我一一描述一下,希望其中至少有一个能达到你的目的。
最流行的模式挖掘算法毫无疑问是Apriori algorithm。它旨在应用于交易数据库,以发现顾客在商店中进行的交易中的模式。但它也可以应用于其他几个应用程序。交易被定义为一组不同的项目(符号)。 Apriori 将 (1) 用户设置的 minsup 阈值和 (2) 包含一组交易的交易数据库作为输入。 Apriori 输出所有频繁项集,即输入数据库中由不少于 minsup 个事务共享的项组。我相信频繁模式挖掘方法最符合您的需要。
顺序模式挖掘涉及在数据示例之间找到统计相关的模式,其中值作为序列传递。一种示例顺序模式挖掘技术是 GSP(广义顺序模式)算法。
基于聚类的方法
集群是将数据分组为子集或集群,其中每个集群中的项目(数据)具有共同的特征。因此,基于聚类的方法可能是另一个值得关注的有趣集合。基于密度的聚类或层次聚类可以产生非常有趣的模式。
基于图的方法
我相信基于图形的方法也很有效。例如,如果您创建 22 个图表(每个图表代表一个有序的符号列表),那么您可以寻找一个公共子图来为您提供趋势事件。
预测模型
在最先进的趋势分析技术中,人们使用了神经网络、内核机器、决策树(其他基于规则的学习范例)等预测模型,并且在许多情况下他们发现它们很有效!
如果我遇到这个问题,我会从模式挖掘技术开始!
我有一个开放式问题。我有 22 个有序的符号列表,我想探索查看这些符号的顺序或序列中是否存在明显子序列的方法。
背景: 这些符号代表人们在尝试调试系统时采取的不同类型的操作,因此,它们遵循某种可预测的趋势似乎是合乎逻辑的。例如,我希望人们在尝试修复问题之前需要弄清楚问题是什么,在测试之前编辑代码等等。一件重要的事情是,在继续之前,可能会重复几个相同的符号一个不同的符号。例如,用户可能会在尝试 运行 代码之前编辑许多不同的文件。
大约有 20 个独特的符号,每个有序的符号列表大约有 120 个符号长(长度不同!),并且有 22 个这样的列表。
我想以编程方式注意到这些列表中的趋势。我该怎么做呢?
有趣的子序列可能是以下任何一个:
- 符号 x 几乎通常后跟符号 y
- 符号u通常出现在列表的开头,很少出现在结尾
- 符号通常按以下顺序出现:[1,3,7,1,2]
大的:
- 在所有序列中,这是整个子序列 [9, 12, 4, 2, 6]
我可以探索哪些数据挖掘技术来帮助回答这类问题?
问得好!我有几个想法来解决这个问题。让我一一描述一下,希望其中至少有一个能达到你的目的。
最流行的模式挖掘算法毫无疑问是Apriori algorithm。它旨在应用于交易数据库,以发现顾客在商店中进行的交易中的模式。但它也可以应用于其他几个应用程序。交易被定义为一组不同的项目(符号)。 Apriori 将 (1) 用户设置的 minsup 阈值和 (2) 包含一组交易的交易数据库作为输入。 Apriori 输出所有频繁项集,即输入数据库中由不少于 minsup 个事务共享的项组。我相信频繁模式挖掘方法最符合您的需要。
顺序模式挖掘涉及在数据示例之间找到统计相关的模式,其中值作为序列传递。一种示例顺序模式挖掘技术是 GSP(广义顺序模式)算法。
基于聚类的方法
集群是将数据分组为子集或集群,其中每个集群中的项目(数据)具有共同的特征。因此,基于聚类的方法可能是另一个值得关注的有趣集合。基于密度的聚类或层次聚类可以产生非常有趣的模式。
基于图的方法
我相信基于图形的方法也很有效。例如,如果您创建 22 个图表(每个图表代表一个有序的符号列表),那么您可以寻找一个公共子图来为您提供趋势事件。
预测模型
在最先进的趋势分析技术中,人们使用了神经网络、内核机器、决策树(其他基于规则的学习范例)等预测模型,并且在许多情况下他们发现它们很有效!
如果我遇到这个问题,我会从模式挖掘技术开始!