我的意思是只有像 aprioriall 这样的序列模式算法才能对项目进行排序吗?这可能会减少关联规则的数量吗?
频繁项集挖掘(FIM) 算法(例如 Apriori)将事务数据库作为输入。交易只是一组没有任何顺序的项目。目标是找到交易中经常出现的项目集,而不考虑时间等顺序。
AprioriAll、PrefixSpan、CM-SPADE 和 GSP 等序列模式挖掘(SPM) 算法将序列数据库作为输入。序列是交易的有序列表。目标是发现经常出现在一组序列中的子序列。在这种情况下,将考虑项目之间的顺序排序。
因此,如果您的数据中存在顺序排序或者您关心结果中的顺序,您应该使用顺序模式挖掘而不是频繁项集挖掘。如果您不关心排序,则可以使用 FIM 算法。
此外,我注意到您还谈到了关联规则。让我澄清这些想法。频繁项集可用于生成关联规则。两组项目之间的规则 X --> Y 意味着 X 中的项目与 Y 中的项目以给定的置信度和支持度出现。但是关联规则并没有提供任何关于 X 和 Y 之间是否存在顺序排序的信息。如果要查找具有顺序排序的规则,则应该考虑使用顺序规则。顺序规则可以通过某种算法直接找到,也可以从顺序模式中推导出来。
顺序规则和顺序模式有什么区别?序列模式通常是根据它们的支持(它们出现在序列数据库中的序列数量)来找到的。另一方面,顺序规则通常是根据其支持度和置信度找到的,因此对于推荐等应用程序更有用。规则 X -> Y 的置信度可以看作是对 Y 跟随 X 的概率的估计。
如果您想尝试一些 FIM、SPM 和顺序规则挖掘算法,您可以访问SPMF 数据挖掘库(我是创始人)的网站,该网站还提供了针对这些问题的 200 多种算法实现以及一些示例。