




已阅读5页,还剩74页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关联规则及相关算法,1,主要内容,关联规则概述Apriori算法CARMA算法序列模式,2,关联规则概述,数据关联是数据库中存在的一类重要的可被发现的知识。若两个或多个变量的取值之间存在某种规律性,就称为关联。关联规则挖掘的一个典型例子是购物篮分析。啤酒与尿布的故事,3,啤酒与尿布的故事,在一家超市里,有一个有趣的现象:尿布和啤酒赫然摆在一起出售。但是这个奇怪的举措却使尿布和啤酒的销量双双增加了。这不是一个笑话,而是发生在美国沃尔玛连锁店超市的真实案例,并一直为商家所津津乐道。,4,啤酒与尿布的故事,沃尔玛拥有世界上最大的数据仓库系统,为了能够准确了解顾客在其门店的购买习惯,沃尔玛对其顾客的购物行为进行购物篮分析,想知道顾客经常一起购买的商品有哪些。沃尔玛数据仓库里集中了其各门店的详细原始交易数据。在这些原始交易数据的基础上,沃尔玛利用数据挖掘方法对这些数据进行分析和挖掘。,5,啤酒与尿布的故事,一个意外的发现是:跟尿布一起购买最多的商品竟是啤酒!经过大量实际调查和分析,揭示了一个隐藏在“尿布与啤酒”背后的美国人的一种行为模式:在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,而他们中有30%40%的人同时也为自己买一些啤酒。产生这一现象的原因是:美国的太太们常叮嘱她们的丈夫下班后为小孩买尿布,而丈夫们在买尿布后又随手带回了他们喜欢的啤酒。,6,关联可分为简单关联、时序关联、因果关联。关联分析的目的是找出数据库中隐藏的关联,并以规则的形式表达出来,这就是关联规则。,7,基本概念,一个样本称为一个“事务”每个事务由多个属性来确定,这里的属性我们称为“项”多个项组成的集合称为“项集”,8,k-项集,由k个项构成的集合牛奶、啤酒都是1-项集;牛奶,果冻是2-项集;啤酒,面包,牛奶是3-项集。每个事务其实就是一个项集,9,关联规则的表示,X和Y是项集X称为规则前项(或者前件,antecedent)Y称为规则后项(或者后件,consequent)支持度s是数据库中包含的事务占全部事务的百分比置信度c是包含的事务数与包含X的事务数的比值,10,频繁项集,用户预先定义最小支持度阈值(min_sup)和最小置信度阈值(min_conf)。如果某个项集的支持度大于等于设定的最小支持度阈值min_sup,称这个项集为“频繁项集”(也称为“大项集”,LargeItemsets),所有的“频繁k-项集”组成的集合通常记作Lk。,11,关联规则挖掘过程主要包含两个阶段第一阶段先从数据集中找出所有的频繁项集,它们的支持度均大于等于最小支持度阈值min_sup第二阶段由这些频繁项集产生关联规则,计算它们的置信度,然后保留那些置信度大于等于最小置信度阈值min_conf的关联规则。,12,关联规则挖掘算法,广度优先算法Apriori:频繁项集的非单调性AprioriTid:AprioriHybrid深度优先算法FP-growthEclatH-Mine,13,Apriori算法是挖掘布尔关联规则频繁项集的算法Apriori算法利用频繁项集性质的先验知识(priorknowledge),通过逐层搜索的迭代方法,即将k-项集用于探察(k+1)-项集,来穷尽数据集中的所有频繁项集。先找到频繁1-项集集合L1,然后用L1找到频繁2-项集集合L2,接着用L2找L3,直到找不到频繁k-项集,找每个Lk需要一次数据库扫描。,Apriori算法(1),14,以表5-1为例min_sup=0.22,频繁1-项集为L1=牛奶,果冻,啤酒,面包,花生酱频繁2-项集为L2=牛奶,果冻,牛奶,啤酒,牛奶,花生酱,果冻,啤酒,果冻,面包,果冻,花生酱频繁3-项集为L3=牛奶,果冻,啤酒,牛奶,果冻,花生酱,15,2.由频繁项集产生关联规则由上一步得到的频繁项集集合L2和L3中的每一个频繁项集l都可以产生关联规则。以下用L3中频繁项集l=I1,I2,I5进行说明。L2和L3中的其它频繁项集的关联规则同理可得。lI1,I2,I5的所有的非空子集为:I1,I2,I1,I5,I2,I5,I1,I2和I5,对于l的每个非空子集s,计算sl-s的置信度并输出规则:I1I2I5,confidence=2/4=50%I1I5I2,confidence=2/2=100%I2I5I1,confidence=2/2=100%I1I2I5,confidence=2/6=33%I2I1I5,confidence=2/7=29%I5I1I2,confidence=2/2=100%如果最小置信度阈值为70%,则只有2、3和最后一个规则可以输出,因为只有这些是强的。,在Clementine中应用Apriori算法,应用Apriori节点来对某超市的客户采购数据集进行购物篮分析。该数据集包含有21个属性(这些属性包括:COD、pasta、milk、water、biscuits、coffee、brioches、yoghurt、frozenvegetables、tunny、beer、tomato、souce、coke、rice、juices、crackers、oil、frozenfish、icecream、mozzarella、tinnedmeat。其中“COD”是记录编号,其它20个属性代表20种商品),共46243个记录。每个属性代表某种商品,其取值为“0”或者“1”,“0”表示没有购买该商品,“1”表示购买了该商品。,18,19,20,数据源,21,设置“类型”节点,22,设置“Apriori”节点,23,“Apriori”节点的高级选项,24,浏览模型,25,作业:关联规则的两个例子:/information/index.jhtml,26,四、CARMA算法,CARMA算法原理1.算法组成2.算法中的符号定义3.算法的基本过程实例说明4.用一个简单的例子说明算法原理。CARMA算法描述5.用自然语言描述算法的实现过程。,27,已有的一些关联规则挖掘算法在运行之前要求用户输入最小置信度和最小支持度。而对用户来讲,确定合适的最小置信度和最小支持度比较困难,需要运行算法多次判断最小置信度和最小支持度是否过高或过低。ChristianHidber1999年提出了在线挖掘关联规则的算法CARMA(ContinuousAssociationRuleMiningAlgorithm),此算法在运行过程中给用户以反馈,用户可根据反馈信息随时调整最小支持度,如果用户对输出结果已感到满意,可随时终止算法的运行。,所谓在线算法是相对于批处理式算法而言,有以下特点:算法执行过程中即能不断产生部分计算结果,供用户参考;在算法执行过程中,用户能根据产生的部分计算结果控制算法如何进行下去;算法给出的结果必须是精确的。在线挖掘关联规则的算法允许用户随时调整最小支持度(阈值),以得出合理的结果,如果中间结果已经令人满意,用户也可以随时终止算法的执行。,在线算法相对于离线的批处理式的算法而言,可交互性较好。CARMA算法最多需要遍历交易集合两次,因为第二次遍历不一定需要进行完,如果满足某条件,算法可能在第二次遍历未结束时就终止。在第一次遍历过程中,算法逐步建立起一个潜在的数据项频集的集合L,对L中的每一个数据项集,CARMA计算其支持度的上界和下界。每处理一条交易之后,算法向用户输出根据当前集合L计算出的关联规则以及每条关联规则的支持度和置信度的上界和下界,用户可以根据输出信息调整最小支持度和最小置信度的数值。注意这种调整是随时发生的。如果用户对输出的中间结果满意,可提前结束算法运行。,1.算法组成第一步找出所有频繁项集第一阶段PhaseI产生潜在频繁项集V(支持栅格)。在该阶段中可以随时调整最小支持度。第二阶段Phase对潜在频繁项集V进行删减得到最终的频繁项集。第二步由频繁项集产生关联规则与Apriori算法相应部分相同,在此不重复。,CARMA算法原理,四、CARMA算法,在Clementine中应用CARMA算法,对某超市的交易数据进行关联分析,研究销售商品见的关联关系,目的是为超市货架的摆放提供科学的依据,对促销决策提供参考建议。事务数据集为Clementine自带的Baskets1n数据集,存放在Clementine安装目录下的Demos文件夹中(.clementine12.0DemosBASKETS1n),包含了1000个数据样本,每个样本包含了顾客的卡号、性别、年龄、收入、付款方式等一系列个人信息,以及其购买的各种食品清单,是一个Tabular格式的数据集。,32,这是一个超市数据库,有18个字段,1000条记录,该例子中数据字段包含如下:,实例研究购物篮分析,六、关联规则挖掘实践,读取文本数据可以使用“变量文件节点”读取定界文本数据。可以从选项板中添加变量文件节点,方法是单击源选项卡找到此节点,或者使用收藏夹选项卡。然后,双击新添加的节点以打开相应的对话框。,单击以“”标记的按钮,浏览Clementine安装目录,打开demos目录,选择文件BASKETS1n。选择从文件读取字段名,并注意已载入对话框中的字段和值。,3.添加表在已载入数据文件中,可以浏览一下某些记录的值。其中一个方法就是构建一个包含“表节点”的流。要将表节点添加到流中,可双击选项板中的表节点图标或将其拖放到工作区。,要查看表,单击工具栏上的绿色箭头按钮执行流,或者右键单击表节点,然后选择执行。,表节点可以临时连接流中的不同节点,以便查看这些节点处理后的中间结果。不用时可以删除表节点。,4.字段处理对于关联规则中的输入输出字段要求,可以用一个“类型节点”来处理。要将“类型节点”添加到流中,可双击选项板中的图标或将其拖放到工作区。,双击流中“类型节点”,然后进行设置。,点击“读取值”按钮将各个字段类型实例化。,5.构建模型用前面方法把“Apriori节点”和“Carma节点”加到流中。,设置“Apriori节点”选项(采用默认值)。要产生关联规则,单击工具栏上的绿色箭头执行流,或单击节点“执行”按钮,可产生“Apriori模型”。,设置“Carma节点”选项单击节点“执行”按钮,可产生“Carma模型”,6.浏览模型执行“Apriori节点”时,生成的“Apriori模型”将被添加到窗口右上角的“模型”选项卡中。右键单击此图标,然后从菜单中选择浏览。,“啤酒蔬菜罐头冻肉”87%“啤酒冻肉蔬菜罐头”86%“冻肉蔬菜罐头啤酒”84%,全部显示对于“CARMA模型”可以用同样操作,浏览模型内容。,模型的7项信息的含意规则ID(RuleID)规则编号。通过规则ID,可以标识哪些规则要应用于某个给定的预测。通过规则ID,还可以在以后合并附加的规则信息,如部署能力、产品信息或条件。实例(Instances)数据集中包含规则前项的事务数量的。例如,规则为“冻肉蔬菜罐头啤酒”的实例数为173,表示训练数据中有173个事务包含条件项集冻肉,蔬菜罐头。,支持度(Support)规则条件(前项)支持度即包含规则前项的事务数量在训练数据中的比例。例如,规则“冻肉蔬菜罐头啤酒”的支持度为:(173/1000)100%=17.3%规则支持度(RuleSupport)规则的条件和结果均为真的事务的比例。例如练数据中有146个事务包含项集冻肉,蔬菜罐头,啤酒,则规则“冻肉蔬菜罐头啤酒”的规则支持度为:146/1000=14.6%,置信度(confidence)规则支持度与条件支持度的比。例如,规则“冻肉蔬菜罐头啤酒”的置信度为:14.6%/17.3%=84.393%提升(lift)规则置信度与结果(后项)的支持度的比。例如,训练数据中有293个事务包含项集啤酒,即规则“冻肉蔬菜罐头啤酒”的后项其支持度为29.3%,则规则提升为:84.393%/29.3%=2.88,其含义是:在1000个客户组成的人群中,购买“啤酒”的概率为29.3%,如果把人群限制在购买“冻肉”和“蔬菜罐头”的客户中,那么这个人群购买“啤酒”的概率为84.393%,通过限制人群可以使购买“啤酒”的概率提高2.88倍。如果某个规则提升接近1,这就意味着前项条件限制并没有使规则后项发生的概率造成太大的影响。总之,提升不为1的规则比提升接近1的规则的相关性更强。因此更有价值。,1000个客户,包含“冻肉”和“蔬菜罐头”的事务,包含“啤酒”的事务(占29.3%),提升值越大,共同部分越大,说明前项和后项的关系越密切。,为规则指定过滤器规则算法(如Apriori、CARMA和序列)可能会生成非常大量的规则。为了在浏览时增强明确度,或者为了简化规则评分,应该考虑过滤规则,以便更加显著地显示相关的结果和条件。使用规则浏览器“模型”选项卡上的过滤选项,可以打开一个用于指定过滤条件的对话框。,用前面方法先打开“Carma模型”;要创建过滤器,请单击扩展面板右侧的编辑过滤器按钮(漏斗图标)。这样将打开一个对话框,可指定约束条件。,过滤后的内容如下图所示。,关联规则模型概要关联规则模型的“概要”选项卡显示模型类型(如Apriori或CARMA)、发现的规则数量,以及规则集中规则的最大和最小支持度、提升和置信度。可以行到,共生成了11条规则。另外,在模型对话框的“汇总”标签下,可以看到关于本次建模的信息概要。,其中“有效事务数”为940。(全部事务效为1000)通过对原原始数据的分析,不难发现,在1000个事务中,有60个事务所有的输入变量均为“F”也以是说有60个顾客什么都没有买,所以CARMA算法将它们过滤掉了。注意:Apriori算法没有这个功能。,7.从关联模型生成规则集“生成规则集”命令,可以指定一个项(目标字段)从规则集中将那些规则后项包含了目标字段的规则全部提取出来,生成一个规则集节点。进而将这个规则集节点放入数据流中对每行记录是否含有目标字段进行段预测。首先打开的关联模型,单击“生成”菜单的“规则集”命令。打开“生成规则集”对话框。,可以指定下列选项,将规则转换为规则集:规则集名称指定生成“规则集节点”的名称。创建节点位置控制新生成规则集节点的位置。选择(流)工作区、GM选项板(模型窗口)或两者。目标字段确定哪个输出字段将用于生成的规则集节点。从列表中选择一个输出字段。根据该字段从总关联集中提出相应的对于这个字段进行预测的规则。,最小支持度指定生成的规则集中要保留的的最小规则支持度。支持度小于指定值的规则不会显示在新的规则集中。最小置信度指定生成的规则集中要保留的规则的最小置信度。置信度小于指定值的规则不会显示在新的规则集中。默认值即“规则节点”判断每个样本不是指定的目标字段值(即不满足“规则节点”中规则的条件的样本)就预测为“默认值”。这里设定为“F”,,例如想研究哪些客户有可能会购买cannedveg,“生成规则集”对话框,可以设置如下图。设置完成后,单击“确定”按钮,即可在数据流区域生成“Cama(Cannedveg)节点”。打开浏览窗口;单击“全部”,按钮可以浏览该节点的详细设置。,可以看到,该规则集是前面Carma模型中的3个规则,ID分别为2、5、7。,建立“类型”节点到“Carma(cannedveg)”节点的连接,并在“Carma(cannedveg)”节点后添加“表”节点,,预测的置信度(判别为T的规则置信度的均值),可得到“cannedveg”节点对数据集中每个样本的预测结果。,预测的结果,8.关联规则模型设置(用模型对数据进行预测)此“设置”选项卡用于为关联模型(Apriori和CARMA)指定评分选项。此选项卡仅在生成的模型添加到用于评分的流之后可用。建立“类型”节点到“Carma模型”的连接,并在“Carma模型”后添加“表”节点;双击模型节点,在模型标签下,对模型进行设置。,以上设置完毕,双击“表”节点,并执行之;所得结果如图所示。(参考Carma模型)可以看到,在表的最后六列数据,是预测结果置信度最高的两条规则所预测的结果。,预测值,置信度,ID号,对比Carma模型的11条规则,检测预测结果。,序列模式,序列模式挖掘要发现的是事件在发生过程中的先后顺序上的规律一个顾客在租借影碟时,先租借“星球大战”,然后是“帝国反击战”,最后是“杰达武士归来”(三部影片是以故事发生的时间先后而情节连续的)。顾客在租借了前两部影片之后,他租借第三步影片的概率是比较高的。这就是一个顾客在租借影片时的序列模式。,64,序列与序列模式,序列,就是一个或多个项集有序地排列后组成的列表。例如,顾客6产生了这样一个序列:crackersbread。在一个序列集中,如果某个序列s不包含于任何其它序列中,则称s是“极大序列”,65,在进行数据挖掘时,由用户指定一个最小支持度阈值。把那些支持度大于等于这个阈值的序列称为“频繁序列”。长度为k的频繁序列记作“频繁k-序列”。给定一个事务数据库D,那么序列模式挖掘就是要从数据中找出所有的频繁序列,并从中取出那些极大序列,每一个这样的序列都代表了一个序列模式。,66,目前的序列模式挖掘算法大多都是Apriori类算法的改进,如AprioriALL、AprioriSome和GSP算法等。AprioriAll算法与Apriori类似,首先遍历数据库生产候选序列并利用Apriori的特性进行剪枝来得到频繁序列。每次遍历时通过连接上一次得到的频繁序列来生长度加1的候选序列。然后对每个候选序列进行扫描,按照最小支持度来确定哪些频繁序列。,五、序列模式挖掘算法,序列模式挖掘算法介绍,AprioriAll算法的不足在于容易生成数量庞大的候选序列,同时还需要多次扫描数据库。AprioriSome与AprioriAll只是在序列阶段有所不同,AprioriAll是首先生成所有频繁序列,然后在极大序列阶段删除那些非极大的序列。AprioriSome将序列分成两部分分别计数,前半部分只对一定长度的序列计数,后半部分跳过己经计数的序列。在实际过程中两个部分是混合在一起的,以减少候选序列占用的资源。,GSP算法是AprioriAll的扩展算法,其算法的执行过程和AprioriAll类似,最大的不同就在于GSP引入了时间约束、滑动窗口和分类层次技术,增加了扫描的约束条件,有效地减少了需要扫描的候选序列的数量,同时还克服了基木序列模型的局限性,更切合实际,减少多余的无用模式的产生。另外GSP利用哈希树来存储候选序列,减小了需要扫描的序列数量。,在RakeshAgrawal关于序列模式挖掘的论述中,将序列模式挖掘的一般步骤分为5个阶段,即:排序阶段频繁项集阶段转换阶段序列阶段选极大序列阶段,五、序列模式挖掘算法,AprioriAll算法,在Clementine中应用序列模式挖掘,对某超市的顾客购物事务数据库进行分析以提取序列模式。从事务数据库中随机抽取10个顾客,每个顾客都有多次购物记录,组成训练数据集,共67个训练样本,存放在sequence.xls文件中。样本属
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论