Spark 频繁模式挖掘

2020-10-10 17:23:47 浏览数 (1)

Spark - Frequent Pattern Mining

官方文档:https://spark.apache.org/docs/2.2.0/ml-frequent-pattern-mining.html

挖掘频繁项、项集、子序列或者其他子结构通常是大规模数据分析的第一步,这也是近些年数据挖掘领域的活跃研究话题;

目录:

  • FP-Growth

FP-Growth

FP-Growth算法基于这篇论文,“FP”的意思就是频繁模式,提供一个处理后的数据集,FP-Growth第一步是计算项的频率,同时标识频繁项,因为一些目的与类似Apriori算法在设计上有不同之处,FP-Growth第二步是使用一个后缀树(FP树)结构在没有生成显示候选集的情况下进行编码转换,生成候选集通常是代价高昂的,第二步之后,可以通过FP树来提取项集的频率,在spark.mllib中,实现了一个并行版本的FP-Growth算法,叫做PFP,PFP基于后缀转换来分配FP树的生长工作,因此相对比单机版本更有扩展性;

spark.ml的FP-Growth实现了以下超参数:

  • minSupport:一个项集被定义为频繁的最小支持度,如果一个项在5次事务中出现3次,那么它的支持度就是3/5=0.6;
  • minConfidence:生成关联规则的最小可信度,可信度用于指示一个关联规则多久被发现为真,例如,如果项集X出现了4次,X和Y同时发生了2次,那么关联规则X=>Y的可信度就是2/4=0.5,这个参数不会影响频繁项集的挖掘,但是会影响从频繁项集中生成关联规则;
  • numPartitions:使用多少分区来分配任务,默认不设置该参数,使用输入数据集的分区数;

FPGrowthModel提供如下属性:

  • freqItemsets:DataFrame格式的频繁项集数据;
  • associationRules:生成的可信度大于minConfidence的关联规则,同样是DataFrame格式;
  • transform;
代码语言:javascript复制
from pyspark.ml.fpm import FPGrowth

df = spark.createDataFrame([
    (0, [1, 2, 5]),
    (1, [1, 2, 3, 5]),
    (2, [1, 2])
], ["id", "items"])

fpGrowth = FPGrowth(itemsCol="items", minSupport=0.5, minConfidence=0.6)
model = fpGrowth.fit(df)

# Display frequent itemsets.
model.freqItemsets.show()

# Display generated association rules.
model.associationRules.show()

# transform examines the input items against all the association rules and summarize the
# consequents as prediction
model.transform(df).show()

0 人点赞