如何解决覆盖 Apache Spark 的 FPGrowth
我目前正在使用 Spark + MLLib 2.12 版的 FPGrowth。
它目前的工作原理如下:
// 1. Create dataset where each row is an itemset
Dataset<Row> itemsDF = spark.createDataFrame(data,schema);
// 2. Fit into model
FPGrowthModel model = new FPGrowth()
.setItemsCol("items")
.setMinSupport(0.5)
.setMinConfidence(0.6)
.fit(itemsDF);
// 3. Get frequent itemsets and association rules.
model.freqItemsets().show();
model.associationRules().show();
但是,我想在使用频繁项集生成关联规则之前对其进行过滤。基本上,我试图从所有频繁项中获得最大项集,但看起来没有办法(afaik)这样做。 f我目前正在做的是过滤规则。给定规则 R1 和 R2,如果 R1 的 LHS 是 R2 的 LHS 的超集,并且它们的 RHS 相同,我选择 R1 并丢弃 R2。我不认为这是正确的方法,因为只保留最大项集也有助于我保留最大规则,同时最大限度地减少整体规则冗余。
此处指出了一种方法:Association rules with Frequent Pattern Mining
但我不确定,(1) 这个 Scala 示例适用于 Java,不,我不能迁移到 Scala; (2) AssociationRule API 没有 run()
方法,我可以用它来提供过滤的频繁项集。
注意:LHS 也表示前件,RHS 也表示后件。
参考:
- https://spark.apache.org/docs/2.2.0/ml-frequent-pattern-mining.html
- https://towardsdatascience.com/how-to-find-closed-and-maximal-frequent-itemsets-from-fp-growth-861a1ef13e21
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。