在用关联规则分析联想词之前,我们首先介绍一下该算法。
商家的电子系统记录着每笔交易中的商品明细,商家可从中发现很多诸如“当一个人购买了商品X时更可能同时购买商品Y”这样的规律;如果商家还拥有消费者的个人信息,还可将商品类别与消费者类别关联起来。商家可以据此优化商品陈列,或制订更好的营销策略。这便是关联规则最典型的应用场景;但事实上关联规则还可用于发掘商品以外的事物之间的关联。
我们使用arules包中的apriori函数来建立模型。这个函数使用的Apriori算法是一种常用的关联规则算法,如需了解算法详细原理,请参阅Agrawal、Imielinski和Swami(1993)。
在关联规则中,一个商品被称为一个项目,包含若干商品的一笔交易被称为一个事务。在一张表格中,行标题为事务名,列标题为项目名,表格中的数字代表购卖商品的数量或是否购买商品,这样的表格被称为事务集。
当利用Apriori算法发掘频繁项目集(即经常共同出现的若干项目)时,有三个指标被用于判断规则的好坏:第 1个指标是支持度(support),指的是同时包含X项目和Y项目的事务数与事务总数的比值。第 2个指标是置信度(confidence)(不是指假设检验中的置信度),这个指标是两个数的比值:分子是支持度,分母是包含X的事务数与事务总数的比值。第 3个指标是提升度(lift),它是两个数的比值,分子是置信度,分母是包含Y值的事务数与事务总数的比值。X与Y的关联被记为X=>Y,X被称为左项(条件项、antecedent、left hand side、lhs),Y被称为右项(结果项、consequent、right hand side、rhs)。
我们使用Hahsler等人(2005)提供的例子进行讲解。所使用的数据为arules包的Epub数据集。注意,事务集通常是一个表格,但apriori函数只接受transactions类的数据;在下一部分分析文本时我们会讲解如何把表格转为transactions对象。本例中的Epub已经是transactions对象了,不用转换。
先介绍一下apriori函数的参数设置方法(未列出的参数用处不大):
apriori(data, parameter=NULL)
● data:只接受transactions对象
● parameter:一个list对象列表,用于设置模型参数,用形如list(support=0.01,confidence=0.2)的形式设定;参数包括:
■ support:设定支持度的最小值,默认为 0.1;小于这个值的规则将不被列出
■ minlen: 设置规则中能够出现的最小项目数。默认为 1,这意味着输出结果中的一些规则不具有X=>Y的形式,而是只有X一个项目。可将该值设为 2,确保每条规则至少包含两个项目
■ maxlen: 设置规则中能够出现的最大项目数,默认为 10。在X=>Y中,X和Y可能各自包含一个以上项目,从而出现诸如{X1, X2}=>{Y1}或{X1}=>{Y1, Y2}的规则,但在一条规则中的项目总数不会大于maxlen
■ confidence:设置置信度的最小值;小于这个值的规则将不会出现
其中,support和confidence可按需要进行设定,无严格标准。如果找到的规则数量太多,可增大这两个值;反之,若规则太少,甚至没提取到任何规则,则可缩小这两个值。
下面开始建模: