分享

如何用discoverR算法库实现关联推荐

 昵称16619343 2017-10-18

关联推荐是数据挖掘中的典型问题之一,又被称为购物篮分析,这是因为传统的关联规则案例大多发生在消费时,例如买电脑的时候通常会和软件一起购买,又或者如经典的“尿布啤酒”案例。关联规则算法常常应用于零售、快消、搜索中,用于分析用户的历史购买或者搜索行为中,两件物品是否存在联系,从而智能的为用户提供较为精准的商品或搜索推荐。

考虑到关联规则挖掘的常用性,为了方便数据分析师使用,Transwarp Discover将关联规则挖掘算法实现并提供于discoverR函数库内,本文将介绍如何在实际应用中使用discoverR实现推荐算法。

关联规则挖掘

“购物篮分析”中的“购物篮”一词揭示了关联规则挖掘的一个重要特点:以交易记录为研究对象,每一个购物篮(transaction)就是一条记录。关联规则挖掘所希望挖掘规则是:哪些商品会经常在同一个购物篮中出现,其中是否有相关性。关联规则通过形如A->B的蕴含式表达,A称为先导,B称为后继,表示A与B之间存在A引发B的关联。例如尿布->啤酒就表示了很大一部分买尿布的客户也会买啤酒。

关联规则中定义了几个指标,用于描述物品之间的相关性。这些指标也会用来筛选关联规则,从而得到潜藏的规律。在规则挖掘时,这三个指标将起到重要作用。

主要的指标包括:支持度support,置信度confidence,提升度lift。对于一个二项规则“A→B”,支持度是指A与B同时出现的概率,即P(A,B);置信度是B关于A的条件概率,即P(B | A),表示A发生的前提下B发生的概率;提升度是B的概率的提升,即P(B | A) / P(B),表示A的发生对B发生概率的提升作用。

置信度和支持度之间存在这样的关系:

提升度和支持度之间存在这样的关系:

所以计算关联规则的可信度和提升度时,都需要用到频繁项集的支持度。

了解了基本概念后,来看一下如何用discoverR来实现。

进入Discover IDE

在进行案例处理之前,请通过Tranwarp Manager页面的Discoover服务进入Discover IDE,准备开始用R语言进行关联规则挖掘。

数据加载

进入Discover IDE后,在控制台执行下述语句加载discoverR包。

接着,执行下述语句加载discoverR中内置的示例数据集groceries。本案例将会对该数据集进行关联规则分析。

Groceries数据集提供了某个杂货店一个月真实的交易记录,有9835条消费记录,共涉及169个商品。Groceries数据集共包含以下两列基本信息:

  • id:交易号。

  • items:交易中包含的商品。

以下是groceries中的部分内容。

下面初始化一个local模式或yarn模式的多任务进程SparkSession:

然后用discover提供方便的接口将R原生的data.frame转化为分布式数据集sparkDataFrame,便于后面分布式的处理:

模型训练

完成上述步骤后就可以开始对数据集进行模拟训练。关联分析的目标包括两项:发现频繁项集合发现关联规则。首先需要找到频繁项集,然后才能获得关联规则。频繁项集是指通常在一起出现的item构成的集合,该项集的频率大于等于最小支持度。

txApri0ri

Apriori算法首先会生成所有元素个数为1的一组项集C1,然后过滤掉其中不满足最小支持度的项集。接着,对剩余项集进行组合连接,以生成包含两个元素的项集C2,重新扫描交易记录,根据最小支持度对C2进行过滤。不断重复上述数步骤,直到不存在满足最小支持度的项集即可停止。返回最后一组符合最小支持度的项集。

下面是利用txApriori挖掘数据集频繁项集和关联规则的代码。

txFPgrowth

FPgrowth算法使用了一种称为频繁模式树(FP-tree)的紧凑数据结构,用于存储数据与规则探索。

该算法主要分为两个步骤:FP-tree构建、递归挖掘FP-tree。

  • FP-tree构建:构建FP-tree时,需要将各元素按支持度降序排列,过滤掉低于支持度阈值的item。然后采用前缀树模式,将支持度越高的频繁项放在离根节点越近的位置,从而使频繁项的节点链可以共享前缀,达到压缩数据的目的。

  • 递归挖掘FP-tree:从FP-tree的底部开始扫描,挖掘其中的频繁模式。找出每个item的前缀节点链即条件模式基,以item的条件模式基作为新的数据库,按照FP-tree的构建步骤实现对应item的条件FP-tree,按照最小支持度的限定不断递归不断过滤所有条件FP-tree,直到获得所有的频繁项集。

下面是利用txFPgrowth挖掘数据集频繁项集和关联规则的代码。

下面我们用discoverR的plot函数来用图形展示txFPgrowth挖掘出的关联规则。

首先执行:

该命令的结果描绘了每条规则的支持度与置信度的散点关系。

接下来执行:

该图是由item组成的规则图,各个item的名称提供于图中,圆圈的大小表示支持度的相对大小,而颜色的深浅表示提升度的相对大小。

使用图形化的显示形式可以更直观可视的从不同角度反映并分析各个规则的支持度、置信度、提升度之间的关系,从而清晰的展示出每组规则内的关联程度

至此,便完成了对groceries数据集简单的关联推荐挖掘。

总结

关联规则挖掘作为常用的机器学习算法被广泛应用于推荐系统的相关应用中:零售分析中时,系统可以推荐与当前浏览商品同属一个关联规则的其他商品,从而推动产品销售;用于搜索引擎时可以通过相关内容推荐,提升搜索网页呈现内容的丰富度,增强吸引力。

Discover直接内置优化后的关联规则挖掘算法,用户不再需要亲自实现Apriori和FPGrowth,就可以快速方便的实现关联规则发掘方案,既提供了很高的便利性也保障了性能。

当然,discoverR算法函数库中还实现了包含统计算法、分类算法、聚类分析、回归分析、频度关联分析和神经网络在内的许多其他常用算法。后面我们会继续分享更多关于这些算法的介绍,以及用它们实现数据分析的案例。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多