云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

_企业公司网站建设_评分榜

小七 141 0

使用数据块上的FP增长简化市场篮子分析

在数据库里试试这个笔记本当向购物者提供购买建议时,您通常会寻找经常一起购买的商品(例如花生酱和果冻)。揭示不同商品之间关联的一项关键技术被称为市场篮子分析。在你的推荐引擎工具箱中,市场篮分析生成的关联规则(例如,如果一个人购买了花生酱,那么他们很可能会购买果冻)是一项重要而有用的技术,有必要对越来越大的数据执行市场篮子分析等模型。也就是说,拥有在分布式平台上生成关联规则所需的算法和基础设施是非常重要的。在这篇博文中,我们将讨论如何在数据块上使用apachespark MLlib FP growth算法快速运行市场篮子分析。为了展示这一点,我们将使用2017年Instacart在线购物数据集。在此过程中,我们将探索该数据集,并进行市场篮子分析,以建议购物者再次购买或推荐购买新商品。  本帖及相关笔记本的流程如下:摄取数据:从源系统引入数据;通常涉及ETL过程(但为了简洁起见,我们将在本演示中跳过此步骤)使用sparksql探索数据:既然您已经清理了数据,那么就对它进行探索,以便获得一些业务洞察力使用FP-growth训练ML模型:执行FP-growth来执行频繁模式挖掘算法查看ML模型生成的关联规则,以获得建议摄取数据我们将使用的数据集是300万份Instacart订单,开源数据集:"2017年Instacart在线杂货购物数据集",从https://www.instacart.com/datasets/grounder-shopping-20172018年1月17日。这个匿名数据集包含了一个超过200000名Instacart用户的超过300万份杂货订单的样本。对于每个用户,我们提供4到100个他们的订单,以及每个订单中购买产品的顺序。我们还提供下订单的星期和时间,以及订单之间的相对时间度量。您需要下载该文件,从gzip压缩的TAR归档文件中提取文件,并使用Import Data实用程序将它们上载到Databricks DBFS中订单:340万行,206K用户产品:5万行过道:134排科室:21排订单产品集:30M+行,其中SET定义为:先前:320万份以前的订单培训:培训数据集的131K个订单更多信息,包括模式,请参考Instacart在线杂货购物数据集2017数据描述。创建数据帧现在您已经将数据上传到dbfs,您可以使用spark.read.csv:#导入数据过道=spark.read.csv("/mnt/bhavin/mba/instacart/csv/过道.csv",头=True,inferSchema=True)部门=spark.read.csv("/mnt/bhavin/mba/instacart/csv/部门.csv",头=True,inferSchema=True)订购产品前=spark.read.csv("/mnt/bhavin/mba/instacart/csv/订购产品__上一个.csv",头=True,inferSchema=True)订单产品序列=spark.read.csv("/mnt/bhavin/mba/instacart/csv/订购产品__火车.csv",头=True,inferSchema=True)订单=spark.read.csv("/mnt/bhavin/mba/instacart/csv/订单.csv",头=True,inferSchema=True)产品=spark.read.csv"(/CART/MSV/csv//产品.csv",头=True,inferSchema=True)#创建临时表过道。创建或替换tempView("过道")departments.CreateOrReplaceStempView("部门")订购产品_prior.createOrReplaceTempView("优先订购产品")订购产品_train.createOrReplaceTempView("订购产品系列")orders.CreateOrReplaceStempView("订单")products.createOrReplaceTempView("产品")探索性数据分析现在您已经创建了数据帧,可以使用Spark SQL执行探索性数据分析。按星期几列出的订单通过下面的查询,您可以快速地看到星期天是订单总数最多的一天,而星期四的订单数量最少。%sql语言选择将(订单号)作为总订单数,(案例当订单数='0'时,然后是'Sunday'当订单数='1'然后是'Monday'当订单数='2'时,然后是'星期二'当订单数量='3'时,然后是'星期三'当订单数='4'时,然后是'星期四'当订单数='5'时,然后是'Friday'当订单数='6'时,然后是'星期六'结束)作为周的第几天从订单按顺序分组按总订单描述按小时排序在划分时间时,人们通常在工作时间从Instacart订购食品,最多的订单是上午10:00。%sql语言选择将(订单号)作为总订单数,将一天中的小时定为小时从订单按顺序分组一天中的每一个小时按部门了解货架空间随着我们深入市场分析,我们可以深入了解各部门的产品数量,以了解货架空间的使用情况。%sql语言选择d.department,count(distinct p.product_id)作为产品来自产品p内部连接部门don d.department_id=p.department_id按部门分组按产品说明订购限制10从前面的图片可以看出,典型的独特项目(即产品)的数量涉及个人护理和零食。整理购物篮为了准备数据以备后续处理,我们将按购物篮组织数据。也就是说,DataFrame的每一行代表一个order iu id,每个items列都包含一个items数组。#按购物篮整理数据从pyspark.sql.functions导入集合,列,计数原始数据=火花.sql("从products p inner join order_products_train o where o.product_id=p.product_id"中选择p.product_name,o.order_id)篮子=rawData.groupBy公司('order_id').agg(collect_set('product_name').alias('items'))baskets.createOrReplaceTempView("篮子")就像前面的图一样,我们可以使用Databricks笔记本中的display命令来可视化嵌套项。列车ML模型为了了解商品相互关联的频率(例如花生酱和果冻一起购买了多少次),我们将使用关联规则挖掘进行市场篮子分析。Spark MLlib实现了两种与频率模式挖掘(FPM)相关的算法:FP-growth和PrefixSpan。区别在于FP growth不使用项集中的顺序信息(如果有的话),而PrefixSpan是为顺序模式挖掘而设计的,其中条目集是按顺序排列的。我们将使用FP growth,因为订单信息对于这个用例并不重要。注意,我们将使用scalaapi来配置setMinConfidence%斯卡拉进口org.apache.spark网站.ml.fpm.FPGrowth公司//把物品取出val篮子=火花.sql("从篮子中选择项目").as[Array[String]].toDF("items")//使用FPGrowthval fpgrowth=新的fpgrowth().setItemsCol("items").setMinSupport(0.001).setMinConfidence(0)val模型=fpgrowth.fit(篮子)//计算频繁项集val mostPopularItemInABasket=model.freqItemsets最PopularItemInABasket.createOrReplaceTempView("最流行的货币篮子")对于Databricks笔记本,可以使用%scala在同一Python笔记本的新单元中执行scala代码。创建了mostPopularItemInABasket数据帧后,我们可以使用sparksql查询一个篮子中最流行的项目,其中有两个以上的项目包含以下查询。%sql语言从mostPopularItemInABasket中选择items,freq,其中size(items)>2 order by freq desc limit 20从上表可以看出,两种以上商品中最常购买的是有机鳄梨、有机草莓和有机香蕉,有趣的是,最常一起购买的前五种商品包括有机鳄梨、有机草莓、有机香蕉、有机覆盆子,从推荐的角度来看,freqItemsets可以作为"再买一次"推荐的基础,因为如果购物者以前购买过这些商品,那么建议他们再次购买是有意义的。查看关联规则除了freqItemSets,FP-growth模型还生成associationRules。例如,如果一个购物者购买花生酱,他们也会购买果冻的概率(或信心)有多大。关于更多信息,一个很好的参考是Susan Li关于市场篮子分析的温和介绍-关联规则。%斯卡拉//显示生成的关联规则。值ifThen=模型.关联规则ifThen.createOrReplaceTempView("ifThen")考虑关联规则的一个好方法是,模型确定如果您购买了某个东西(即前驱物),那么您将以以下信心购买另一个东西(即后继物)。%sql语言选择先行项为"先行(if)",后继为"后继(then)",置信度从ifThen按置信度降序递减20如上图所示,如果购物者的购物篮里有有机覆盆子、有机鳄梨和有机草莓,那么推荐有机香蕉也是有意义的。有趣的是,前10条(基于信心下降)关联规则——即购买建议——与有机香蕉或香蕉相关。讨论总之,我们演示了如何探索我们的购物车数据和执行购物篮分析,以识别经常一起购买的商品以及生成关联规则。通过使用Databricks,我们可以在同一个笔记本中可视化我们的数据;执行Python、Scala和SQL;并在自动伸缩的分布式Spark c上运行FP-growth算法