FpGrowth算法通过构造一个树结构来压缩数据记录,使得挖掘频繁项集只需要扫描两次数据记录,而且该算法不需要生成候选集合,所以效率会比较高。 二、利用FpTree挖掘频繁项集 FpTree建好后,就可以进行频繁项集的挖掘,挖掘算法称为FpGrowth(Frequent Pattern Growth)算法,挖掘从表头header的最后一个项开始 : 3频繁项集: 面包 尿布 3尿布 牛奶 3牛奶 4面包 牛奶 3尿布 啤酒 3面包 4 另外我下载了一个购物篮的数据集,数据量较大,测试了一下FpGrowth FpGrowth算法的平均效率远高于Apriori算法,但是它并不能保证高效率,它的效率依赖于数据集,当数据集中的频繁项集的没有公共项时,所有的项集都挂在根结点上,不能实现压缩存储,而且Fptree还需要其他的开销 ,需要存储空间更大,使用FpGrowth算法前,对数据分析一下,看是否适合用FpGrowth算法。
大致思路是:同一个hash值的肯定会进同一个地方,如果一项出现多个,那么他们必定是进同一个hash桶,也就是说这个的hash桶的个数会很多,如果个数少,说明这个hash桶中的数据都不是频繁的 FPGrowth
minepy 是一个用于频繁项集挖掘和关联规则挖掘的 Python 库,它基于著名的 Apriori 和 FPGrowth 算法。 使用示例 以下是一个简单的使用 minepy 进行频繁项集挖掘和关联规则生成的示例: from minepy import FPGrowth # 示例数据集 data = [['milk', 'bread ['milk', 'bread', 'butter', 'beer'], ['milk', 'bread'], ['bread', 'butter']] # 创建 FPGrowth 对象 fp = FPGrowth.fit(data) # 获取频繁项集 freq_sets = fp.freq_sets print("Frequent Itemsets:") for itemset nAssociation Rules:") for rule, metrics in rules.items(): print(f"{rule}: {metrics}") 这个示例展示了如何使用 minepy 的 FPGrowth
; associationRules:生成的可信度大于minConfidence的关联规则,同样是DataFrame格式; transform; from pyspark.ml.fpm import FPGrowth 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
属于太菜了,做个调包侠 from mlxtend.preprocessing import TransactionEncoder from mlxtend.frequent_patterns import fpgrowth pd.DataFrame(te_ary, columns=te.columns_) # 应用 FP-Growth 算法 # min_support 参数指定支持度的阈值 frequent_patterns = fpgrowth
经典案例和代码实现: 以下是一个使用Python的mlxtend库实现FP-Growth算法的示例代码: from mlxtend.frequent_patterns import fpgrowth from TransactionEncoder() te_ary = te.fit(dataset).transform(dataset) df = pd.DataFrame(te_ary, columns=te.columns_) # 使用fpgrowth 函数查找频繁项集 frequent_itemsets = fpgrowth(df, min_support=0.2, use_colnames=True) print(frequent_itemsets ) 这里使用了mlxtend库中的fpgrowth函数来执行FP-Growth算法。 首先,将事务数据集转换为布尔矩阵表示,然后调用fpgrowth函数来寻找指定最小支持度阈值的频繁项集。 另外,如果你想使用自己实现的FP-Growth算法,可以参考相关的开源实现和算法细节。
经典案例和代码实现: 以下是一个使用Python的mlxtend库实现FP-Growth算法的示例代码: from mlxtend.frequent_patterns import fpgrowth from TransactionEncoder() te_ary = te.fit(dataset).transform(dataset) df = pd.DataFrame(te_ary, columns=te.columns_) # 使用fpgrowth 函数查找频繁项集 frequent_itemsets = fpgrowth(df, min_support=0.2, use_colnames=True) print(frequent_itemsets ) 这里使用了mlxtend库中的fpgrowth函数来执行FP-Growth算法。 首先,将事务数据集转换为布尔矩阵表示,然后调用fpgrowth函数来寻找指定最小支持度阈值的频繁项集。 另外,如果你想使用自己实现的FP-Growth算法,可以参考相关的开源实现和算法细节。
fs -mkdir /user/hadoop/mahoutData #创建目录 hadoop fs -put ~/data/retail.dat /user/hadoop/mahoutData 调用FpGrowth 一两分钟后执行完毕,生成的文件被序列化了,直接查看会是乱码,因此需要用mahout还原回来: mahout seqdumper -i /user/hadoop/patterns/fpgrowth/part-r 待续…… 来源:www.cnblogs.com/fengfenggirl 关联好文: 数据挖掘系列(1)关联规则挖掘基本概念与Aprior算法 数据挖掘系列(2)--关联规则FpGrowth算法 数据挖掘系列
FP Tree算法对应的类是pyspark.mllib.fpm.FPGrowth(以下简称FPGrowth类),从Spark1.4开始才有。 Spark MLlib关联算法参数介绍 对于FPGrowth类,使用它的训练函数train主要需要输入三个参数:数据项集data,支持度阈值minSupport和数据并行运行时的数据分块数numPartitions 支持度阈值minSupport的定义和FPGrowth类类似,唯一差别是阈值默认值为0.1。maxPatternLength限制了最长的频繁序列的长度,越小则最后的频繁序列数越少。 在分布式的大数据环境下,则需要考虑FPGrowth算法的数据分块数numPartitions,以及PrefixSpan算法的最大单机投影数据库的项数maxLocalProjDBSize。 3. 代码如下: from pyspark.mllib.fpm import FPGrowth data = [["A", "B", "C", "E", "F","O"], ["A", "C", "G"],
训练模型的均方误差为 = 106.31223022762704 第7章 FPGrowth 关联规则算法 7.1算法思想 FPGrowth 算法通过构造一个 FPTree 树结构来压缩数据记录,使得挖掘频繁项集只需要扫描两次数据记录 FPGrowth挖掘过程如下图所示: ? {SparkConf, SparkContext} import org.apache.spark.mllib.fpm.FPGrowth object FPGrowth extends App { new SparkContext(conf) // 加载数据样本 val path = "D:\\learn\\JetBrains\\workspace_idea\\spark\\doc\\fpgrowth.txt 最小支持度 [0,1] val minSupport = 0.4 // 计算的并行度 val numPartition = 2 // 训练模型 val model = new FPGrowth
规则挖取 我们先用标准数据集normalBasket.arff[1]试一下,weka的apriori算法和FPGrowth算法。 设置好参数后点击start运行可以看到Apriori的运行结果: FPGrowth运行的结果是一样的: 每条规则都带有出现次数、自信度、相关度等数值。 retail.txt转化而来,为了不造成误解,我在id好前加了一个"I",比如2变为I2),这个数据用的稀疏数据表示方法,数据记录有88162条,用Apriori算法在我的2G电脑上跑不出来,直接内存100%,用FPGrowth 来源:www.cnblogs.com/fengfenggirl 系列好文: 数据挖掘系列(1)关联规则挖掘基本概念与Aprior算法 数据挖掘系列(2)--关联规则FpGrowth算法 数据挖掘系列
(6) 关联挖掘(FPGrowth算法) 通过之前的mahout与spark的学习,总体上mahout用起来非常不方便,而spark开发方便,速度更高效
最后利用FP-growth算法 发现校训中的频繁项集: import fpGrowth_py36 as fpG def findFreq(dataset, minSup): initSet =
3.2.3 FPgrowth(基于频繁项挖掘) 利用 FPGrowth 算法挖掘商品之间的频繁项,频繁项挖掘的一个典型例子是购物篮分析。 上述举例对应配置格式如下(仅供参考): { 实时: 商详页:Item-CF 离线: 商详页:FPGrowth 冷启动: 商详页:ShopHot
构建文档关联规则挖掘模型:选择合适的文档关联规则挖掘算法,如Apriori算法、FPGrowth算法等。定义关联规则挖掘的目标,例如发现文档之间的关联、频繁项集等。
WX20180113-131211@2x.png 支持算法(不断更新) NaiveBayes RandomForest GBTRegressor LDA KMeans FPGrowth GBTs LSVM
我们从多个角度来进一步阐述:比如: 最早上线了基本的关联挖掘,只是利用了订单数据,效果明显; 然后在第二阶段我们利用了更多的数据比如购物车,数据量暴增,促使我们利用更有效并且能处理更大数据量的分布式FPgrowth 算法; 到了第三个阶段,面对产品上继续存在的问题,我们继续利用更多数据比如同session浏览,并且为了解决时间序列和属性搭配等问题,进一步把时序挖掘和改造的泛化关联挖掘整合到fpgrowth里,进行算法的进一步创新
10、关联规则之FPGrowth算法 使用场景 – 用于发现频繁项集,比如啤酒和尿布; 基本概念: T*:代表一次购物 项集:项的集合 支持度:项出现的次数或频率
进行数据埋点和分析,以及使用Python的Pandas、Numpy、Matplotlib等进行数据处理和可视化,例如使用SKlearn中的SVD、GBDT等算法实现协同过滤推荐,以及使用MLlib中的FPGrowth
关联规则:Fpgrowth 机器学习算法可视化理解 分类问题 不同的算法在尝试生成不同的决策边界,从而完成分类 回归类问题有不同的拟合方式 附 结合微专业课程的学习 数学基础 讲授具体算法时对涉及数学部分有针对的查漏补缺