FP-Growth 模式发掘原理与spark实践_第1页
FP-Growth 模式发掘原理与spark实践_第2页
FP-Growth 模式发掘原理与spark实践_第3页
FP-Growth 模式发掘原理与spark实践_第4页
FP-Growth 模式发掘原理与spark实践_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FP-Growth模式发掘原理与spark实践提纲FPGrowth算法原理FPGrowth推荐实例模式挖掘也叫关联规则,其实就是从大量的数据中挖掘出比较有用的数据,挖掘频繁项。比如说超市有大量的购物数据,从而可以根据用户的购物数据找到哪些商品关联性比较大。也可以进行用户推荐。关联规则算法发展到现在一共有三个算法:FP-Tree算法、Apriori算法、Eclat算法,其中FP-Tree是一种不产生候选模式而采用频繁模式增长的方法挖掘频繁模式的算法;此算法只扫描两次,第一次扫描数据是得到频繁项集,第二次扫描是利用支持度过滤掉非频繁项,同时生成FP树。然后后面的模式挖掘就是在这棵树上进行。此算法与Apriori算法最大不同的有两点:不产生候选集,只遍历两次数据,大大提升了效率。FPGrowth

简介FPGrowth处理流程数据整理清洗,清除异常数据,整理为购物篮形式关联规则:用于表示数据内隐含的关联性,一般用X表示先决条件,Y表示关联结果。支持度(Support):所有项集中{X,Y}出现的可能性。例如,1000个顾客中,200个买了面包,则面包的支持度=

200

/

1000

=

20%,如果同时买面包与豆浆的人有150,则规则{面包,豆浆}的支持度=

150

/

1000

=

15%置信度(Confidence):先决条件X发生的条件下,关联结果Y发生的概率。上面例子,

当一个买了面包的人,{面包,豆浆}

的置信度=

15%

/

20%

=

75%扫描数据,获取FP-Tree利用FP-Tree计算各个规则的支持度,置信度,并用于推荐商品提纲FPGrowth算法原理FPGrowth推荐实例FPGrowth推荐实例系统准备:centos6.8、Spark2.3.1、Pyrhon3.X,导入pyspark,pandas数据准备:使用Groceries购物篮数据,该数据集是某个杂货店一个月真实的交易记录,共有9835条消费记录,169个商品。建模目的:通过FPGrowth发掘关联规则,在给定支持度与置信度水平下,为客户推荐商铺。importpandasaspd

frompysparkimportSparkContext,SQLContext实例:启动spark,读取数据#构建spark连接,注意这里自定义spark序列化conf=SparkConf().setAppName("laboratory_spark_ml_NaiveBayes").setMaster('yran').set("spark.serializer","org.apache.spark.serializer.JavaSerializer")sc=SparkContext().getOrCreate()sqlContext=SQLContext(sc)#读取数据df_Groceries=sc.textFile(u”文件路径/Groceries.txt").map(

lambdax:str(x).split("&")).map(lambdax:[x[0],x[1].split(",")])

#本地数据转换为RDDdf_Groceries_rdd=sqlContext.createDataFrame(df_Groceries).toDF("index",

"items")实例:源数据展示#展示数据

df_Groceries_rdd.show(20,False)实例:模型训练#FPGrowth模型属于mllib模块,数据格式为RDD#模型训练frompyspark.mllib.fpmimportFPGrowth

#训练频繁集,参数minSupport(生成规则大于指定支持度的频繁集)#本例指定支持度>=0.04rdd=df_Groceries.map(lambdax:x[1])model=FPGrowth.train(rdd,

minSupport=0.04)

#获取结果,显示部分频繁集sorted(model.freqItemsets().collect())[0:2]实例:推荐前数据处理#产品推荐#获取商品组合支持度,并转换成字典freqItems=model.freqItemsets().map(lambdax:[set(x.items),x.freq]).collect()freqItems_df=pd.DataFrame(freqItems)freqItems_df.index=freqItems_df[0].map(lambdax:",".join(list(x)))freqItems_dict=freqItems_df[1].to_dict()

#计算所有频繁集置信度list_items=model.freqItemsets().collect()

实例:推荐函数以及推荐应用def

Confidence(x=[],min_conf=0.1):

re=set()

forzinfreqItems:

conf=0

Set_and=set(z[0])&set(x)

if((len(Set_and)>0)&(len(Set_and)<set(z[0]))):

if(len(freqItems_df[freqItems_df[0]==Set_and])>0):

Dfreq=freqItems_df[1][",".join(list(Set_and))]

conf=z[1]*1.0/Dfreq

if(conf>min_conf):

Set_to=z[0]-set(x)

if(len(Set_to)>0):

re=re|Set_to

return

",".join(list(re))#推荐,要求置信度>

0.1freqItems_conf=sqlContext.createDataFram

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论