Spark 頻繁模式挖掘

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;
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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章