用R实现关联分析

关联分析

多年前,新的互联网销售开始在网上卖书,随着时间的推移,积累了一些关于客户购买书籍的信息。使用关联分析,可以识别一些客户有相似兴趣的书,使用用户购买信息,建立相应的推荐系统。

关联分析是发现数据集中对象或者属性间的相关性,这些相关性可以用关联规则来表达。这个方法一直成功的应用于大的事物数据库,比如购物车和线上客户的购买。关联分析是数据挖掘核心算法之一。

对于线上卖书的实例,原始数据作为建模的基础识别数据。比如,一个用户购买了两本特定的的书,也很有可能购买相关的另外一本特定的书。原始数据可能表明所有用户购买前两本书的的概率是0.5%,但是70%的人会购买第三本。作为一个企业,我们将利用观察到的这个信息,对购买前两种书的客户投入第三种书的广告。

关联分析输入数据的一般类型由事物型数据构成,如在超市购物车中的商品信息、单机购买的书和光盘、病人收到的药物治疗和测试数据等。

这一篇简单介绍了关联分析的内容,以及在Rattle和R中的实现。

1.知识概要

关联规则的表达即是表明事物间的相关性,假设每项事物由一系列的项目组成(可以表示为{A,B,C,D,E,F}),目的是确定一起出现在多个购物车中的项目集合(可能项目{A,C,F}一起出现在多个购物车当中)这里我们称之为项集。比如我们确认规则A,F=>C,意思是当A和F在事物中出现的时候(购物车中出现A和F),那么C通常也会出现。

 

关联分析输出的模型可以由一系列的关联规则表示,关联规则的一般格式表示为:  A -->C

A和C都是集合当中的一项,通常我们将项目看作特定的书籍,比如特定的杂货店项目。例子可能是:

牛奶 ---> 面包

啤酒&坚果 --->马铃薯薯片

史莱克1 --->史莱克2&史莱克3

项目的内容可以概括为特定的属性/值的组合。关联分析的内容可以应用于许多不同的数据集。使用weather数据集,关联规则的表达如下:

WindDir3pm=NNW  --->  RainToday = No.

2.启发式搜索

关联分析算法的基础是生成频繁项集。等频出现的项目的集合组成一个频繁项集来生成关联规则。

确定数据中的频繁项集的计算代价是昂贵的,即使是适度的数据集。Apriori算法前提要求对象的频繁项集的所有子集都是等频的,就是说,假如{牛奶,面包,奶酪}是一个频繁项集,那么它的子集{牛奶,面包},{牛奶,奶酪},{面包,奶酪},{牛奶},{面包}和{奶酪}要是频繁的。使用频繁的个体使得算法的搜索空间大大降低,第一步就消除了罕见的项目个体。之后我们合并剩余的单项到频繁项集。

足够频繁项是算法的一个的参数用来控制发现的规则的数目,称之为支持度,来具体规定项目在数据集中必须出现的频次。比如,用户可以选择频繁项在所有事物中出现的概率至少5%。

第二阶段算法考虑每个频繁项集生成关联规则的所有可能的组合,因此,对于包含三个项目的频繁项集{牛奶,面包,奶酪},可能的关联规则如下:

面包 & 牛奶  -->  奶酪

牛奶  --> 面包&奶酪

奶酪&牛奶  --->面包    等等。

我们保留的实际的关联规则满足一项称为置信度的标准,置信度的计算是即包含A又包含C在事物中所占的比例,置信度为关联规则指定一个最小的概率。比如,用户可以选择生成的规则至少90%以上的时间是有效的(也就是说,当A出现在购物车中,C也至少出现在相同的购物车中的时间是90%以上)。

apriori算法是一个广度优先搜索算法,当搜索完所有的k项可能的项目后再考虑搜索包含k+1项。对于每一个k,所有的候选项都需要经过测试来确定它们是否有足够的支持度。

总的来说,我们主要分两阶段来做。第一阶段,我们生成一个大小为k的频繁项集,然后将它们合并生成大小为k+1的候选频繁项集。第二阶段,我们建立候选的关联规则。

3.具体措施

关联分析两个主要的计算是支持度和置信度。最小支持度是项目(items)I在所有事物中所占的比例,也可以理解为项目同时出现在事物中的频率。我们定义支持度如下:

Support(A-->C)= P(AUC)

最小置信度被表示为所有事物在数据集所占的比例,它是个条件概率:

Confidence(A-->C)=P(C|A)=P(AUC)/P(A)

也可以用支持度表示:

Confidence(A-->C)=support(A-->C)/support(A)

在rattle和R中使用的关联规则分析是lift,计算如下:

Lift(A-->C)= confidence(A-->C)/support(C)

4.案例分析

使用rattle建立模型

如果没有安装rattle,通过以下命令安装:

>insatll.packages("rattle")
>library(rattle)
>rattle()

 我们接下来使用rattle自带的一个DVD Moves包:dvdtrans.csv.加载方法是首先Source选项选择Spreadsheet,在Data工具栏点击执行按钮,点开Filename右边的文件夹标识,将会出现一个选择文件的窗口,然后点击选取dvdtrans.csv文件,如下图1所示:

选在打开,然后点击执行按钮。

我们看到这个数据集只有两个属性ID和Item。我们将Item的属性改为Target(XXXX)。

Rattle建立关联规则模型通过Associate工具栏。如果勾选了Baskets选项,rattle将会使用Ident和Target属性来进行分析,执行一个超市购物车分析。如果不勾选,rattle将会使用输入数据进行规则分析。我们这里选用的数据集要勾选Baskets。

点击选择Associate工具栏下,勾选Baskets,点击执行按钮,运行结果如下图所示:

以下依次介绍文本视区内容:

Summary of the Apriori Associate Rules(关联规则总结)

Number of Rules:规则的总数

再下面分别是support,confidence,lift三种方法关于29条规则的测量信息。

再下面是构建apriori模型过程,参数规范(Parameter Specification)列出了一些初始化参数。

控制算法运行的一组参数(Algorithmic control),再下面是算法运行的具体细节。

Freq Plot按钮将会绘制Item对象的频率分布:

show rules按钮将会再文本视区打印所有的规则:

旁边的plot可以生成规则视图:

由图中图形大小代表支持度,图形颜色深浅代表lift。几种电影的关联程度一目了然。

 

 原创文章,转载请注明出处。(阿蛮的杜鹃:http://www.cnblogs.com/lizhilei-123/

 

转载于:https://www.cnblogs.com/lizhilei-123/p/6700074.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值