关联分析—购物篮分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9
Objectives
⏹Conduct an association analysis and interpret the
results.
⏹Distinguish between association analysis and
sequence analysis.
⏹Conduct a sequence analysis and interpret the results.
考虑下面的情形,一个商店想对客户数据库进行分析,了解在购物时哪些商品会一起购
买。
为此,商店选择了对客户数据库样本进行购物篮分析。
使用的数据集合:SAMPSIO.ASSOCS
ASSOCS中的变量列表
数据集合ASSOCS包含了1001个客户所购买的食品,其中20种见下表:Code Product
1001个客户中,每个客户均购买了7个物品,因而总共有7007行。
数据集中每一行也就代表了客户所购产品的一个组合。
在大多数数据集合中,并不是所有客户都购买了相同数量的产品。
创建初始流
按下图样式建立流程图:
a.设置输入数据源(Input Data Source)节点
1 打开输入数据源Input Data Source)节点。
2 从文件夹SAMPSIO中选择数据集合ASSOCS。
3 点击变量(Variables)标签。
4 设置变量CUSTOMER的模型角色为身份(Id)
5 设置变量PRODUCT的模型角色为目标变量(target)。
6 设置变量TIME的模型角色序列(sequence)。
注:变量TIME用于识别购买食品的先后次序。
此例中所有商品均在同时购买,因此在这儿的次序只表明商品在购买时的登记先后次序。
当考虑这种先后次序时,关联分析就是所谓的序列分析。
7 关闭输入数据源(Input Data Source)节点并保存所做改变。
b.设置关联(Association)节点
8打开关联(Association)节点,按缺省变量(Variables)标签处于活跃状态。
查看这一标签。
9选择综合(General)标签,这个标签可让你调整分析模式和设置所生成的关联规则数量。
领会并选择分析模式
仔细察看这个对话框所示分析模式。
分析模式的缺省设置是按上下文By Context。
这种分析模式使用输入数据源(Input Data Source)节点中设定的信息确定合适的分析形式。
如果输入数据集合包含:
⏹一个身份(ID)变量和一个目标(target)变量,节点自动执行关联分析。
⏹一个序列变量其状态为使用(use),节点则执行序列分析。
序列分析要求模型中必须具有一个变量其模型角色是序列(sequence),关联分析忽略这种排序。
因为输入数据源里有一个序列变量,缺省分析模式将是序列分析。
序列分析将在后面部分涉及,现在我们要做一个关联分析。
10把分析模式改为Association.
11关闭关联(Association)节点,在弹出对话框选择Yes保存改变。
General标签中其他可用的选项包括
支持关联的最小交易频数(Minimum Transaction Frequency to Support Associations)- 为物品集合间是否关联(同时出现在数据库中)设置最小判定标准。
缺省设置是5%。
关联中物品集合的最大物品数(Maximum number of items in an association)-设定用于分析的物品集合包含物品的最大数量。
缺省设置为4。
规则产生的最小可信度(Minimum confidence for rule generation)-设置产生规则的最小可信度。
缺省值是10%。
当执行序列分析时,此选项不可用。
在此例中,均使用缺省设置。
关闭关联(Association)节点。
既然没有作任何的改变,也
12从关联(Association)节点处运行流程图并查看输出结果。
首先给出的规则(Rules)标签显示如下:
规则(Rules)标签包含每条规则的信息。
考虑商品A和B所组成的规则A=>B,并查看以下数据:
⏹规则A=>B的支持度(%)是所用客户中同时购买商品A和商品B的百分数。
支持度是
数据库中一条规则发生的频繁程度的测度。
⏹规则A=>B的可信度是所用客户中同时购买商品A和商品B的人数和购买商品A的人
数的比率。
⏹规则A=>B的提升值是关联强度的测量。
如果规则A=>B的提升值为2,那么当一个客
户随即选择商品时,购买商品A的可能性是商品B的两倍。
13右击Support(%)列,并选择
我们知道支持度(%)是拥有规则中所有相关服务的客户的比率。
在1001名客户中同时购买crackers 和beer(规则1)的比率是36.56%,同时购买olives and herring(规则7)的比率是25.57%。
14 右击Confidence(%)并选择
可信度表示那些购买了左边(LHS)商品的客户中购买右边(RHS)商品客户的百分数。
例如,在购买了crackers的客户中,有75%购买了beer(规则2 )。
而购买了beer的客户,仅有61%购买了crackers(规则1)。
15 右击Lift并选择
提升值在关联规则上意味着两个可信度的比率。
分子是一个规则的可信度,分母是在假定左边(LHS)和右边(RHS)相互独立的情况下该规则的可信度。
从而,提升值是规则右边和左边关联性的测度。
大于1 的正值表示LHS和RHS之间正向的关联关系。
当其大小正好为1时,表示两者之间是独立的。
而小于1的值则表明两者之间是一种负向相关关系。
规则1的提升度表明,一个已经购买了peppers和avocados的客户购买sardines 和apples 的几率是一个随机选择的客户购买sardines 和apples的几率的5.67倍。
然而,不幸的是这个规则的支持度非常低,仅为8.99%,表明同时购买这4种商品的事件发生机会是相当少的。
按缺省,只有提升值大于1的关联法则展示在结果里。
你可以改变这一设置,方法是选择:View When Confidence > Expected Confidence.
16 选择Frequencies标签.
这个标签显示的是购买每一种产品的客户数。
这个数字和简单的频数。
例如一个客户一次可能买了几只鸡,但只算一次。
这一信息可用于决定为什么一件物品没有出现在关联法则里。
大家知道,按缺省,支持一个关联法则的最小交易频数是最大频数物品的5%。
在我们的例子,最大频数物品是heineke,其频数为600。
因此,任何物品如果其频数小于30,它就不会被包括在关联法则里。
如果你对相当稀有物品的关联法则感兴趣,运行关联分析节点时你就应该考虑减少最小交易频数。
如果你得到的关联法则太多,以至于没有实用价值,你应该考虑提高最小交易频数。
假如你对买soda和/或apple的客户特别感兴趣,想决定他们还购买了其它什么东西。
1.选择Rules标签.
2.选择View Subset Table….
3.在Predecessor => Successor 标签, 按住control-并点击选择Left Hand Side的soda和
apple.
4.Left Hand Side 的Type 的下拉菜单里,选择Combinations & Single.
5.Right Hand Side 的Type 的下拉菜单里,选择Find Any.
6.选择Process并查看结果表格。
假如你对于涉及apple的关联法则特别感兴趣,你可以创建一个关联法则子集合,以包括包含apple的关联法则。
达到这一目的最简单的方法是把关联法则存到一个数据集合里,然后使用SAS编码(SAS Code)得到一个包含所求关联法则的子集合。
7.选择View⇨Reset Table.
8.选择File⇨Save As Data Set….
9.数据集合将被存放在标有Selected Output from Rulegen的文件里. 选择OK以保存该数
据集合.
10.关闭关联分析(Association)节点结果窗口,并加入一个SAS Code 节点到流程图里。
11.打开SAS Code节点并选择Macros标签.
EM自动创建许多个macro变量。
在这个例子中变量&_MAC_4就是你从关联法则(Association)节点结果窗口储存的数据集合。
12.选择Program标签
13.键入以下程序:
data work.auto;
set &_MAC_4;
if item1='apples' or item2='apples' or item3='apples' or
item4='apples' or item5='apples';
run;
proc print data=work.auto;
run;
选择提交程序.
14.选择Yes运行SAS 程序.
15.选择Yes查看结果.
16.选择Output标签.
该输出中共有48条apples在第一个或第二个物品的关联法则。
17.看完结果后关闭SAS Code 节点结果以及节点。
序列分析
Association or Sequence?
A⇒B
关联分析(Association analysis)旨在确定销售物品之间的关系。
换句话说,在客户的购物篮中哪些物品会出现在一起?
序列分析(Sequence analysis)更进一步,它检查物品被购买的顺序。
它可用于回答这样的问题:如果一个客户本周购买了物品A,下一周他会不会购买物品B?
序列分析要求指定一个变量其模型角色是序列。
关联分析忽略序列变量。
序列分析
除了客户购买的物品外,我们还对物品购买的顺序感兴趣。
数据集合的序列变量可让你作序列分析。
1.加入一关联分析(Association)节点,并连接到输入数据源(Input Data Source)节点。
2.打开这个关联分析(Association)节点。
3.选择General标签. 因为在输入数据集合里有一个序列变量其状态是使用(use),按
缺省,所做的分析是序列分析(sequence analysis).
4.选择Sequences标签.
Sequences 标签的选择项可用于设定报告一个序列所需的最小交易频数,以及最长链中的物品总数。
物品数最大为10.
5.选择时间限制Time Constraints标签.
这儿的选项可让你设定一个序列里系列交易的最大时间长度。
例如,你可以设定间隔3个月以上购买的物品不能组成一个序列。
另一个选择项是合并时间间隔。
换句话说,一天之内购买的两件物品实际上是同一笔交易。
6.关闭Association 节点, 保持缺省设置不变。
7.从Association 节点运行流程图,并选择Yes查看结果。
8.右击Confidence(%) 栏并选择Sort Descending.
交易数(transaction count)是按规则次序购买物品的客户数。
支持度(support)百分数是交易数除以总的客户数,在此总的客户数是最大交易数。
置信度(confidence)百分数是交易数除以序列左边的交易数(可通过查看Frequencies决定)。
例如,假如你想看始于沙丁鱼sardines的序列,sardines==>apples==>avocado你会发现在买了sardines和apples的客户中81.82% 的人后来买了avocado。
1.选择View Subset Table….
2.从现有栏目(Available Columns)单中选择Chain Item 1.
3.从运算符(Operators )列中选择EQ.
4.从现有栏目(Available Columns)单中选择<LOOKUP distinct values>.
5.选择sardines.
6.选择Operators⇨OR.
7.从现有栏目(Available Columns)单中选择Chain Item 2.
8.从运算符(Operators )列中选择EQ.
9.从现有栏目(Available Columns)单中选择<LOOKUP distinct values>.
10.选择apples.
11.选择Operators⇨OR.
12.从现有栏目(Available Columns)单中选择Chain Item 3.
13.从运算符(Operators )列中选择EQ.
14.从现有栏目(Available Columns)单中选择<LOOKUP distinct values>.
15.选择avocado.
16.选择OK.
17.看完输出后关闭序列分析结果。
逆相关分析(Dissociation Analysis)
Objectives
⏹Define dissociation analysis.
⏹Generate a dissociation analysis within Enterprise
Dissociation Analysis
Dissociation analysis is used to determine what
products do not appear together in market
逆关联法则(dissociation rule)涉及到某物品的逆。
例如,关联法则的左边可能表示无turkey (~turkey),右边可能是chicken。
换句话说,就是不买turkey买chicken的客户。
逆关联法则特别关注的是极为流行的物品。
逆关联分析(Dissociation Analysis)
如果我们调整数据把选择物品的逆包括进来,关联法则(Association)节点可用于做逆关联分析。
SAS Code 节点可用来调整数据。
创建逆关联
扩大每一笔交易的数据
1.加入SAS Code 节点到工作区,并把它和输入数据源(Input Data Source)节点连接起来。
2.加入另外一个关联分析(Association)节点到流程图,并把它和SAS Code 节点连起来。
3.打开这个SAS Code 新节点.
4.选择Macros标签. 你可以看到训练数据集合名称为&_TRAIN。
在前面你已经知道,这
些macro名可以用在这个节点的程序里。
5.选择Exports标签.
6.选择Add.
7.按OK键以选择训练数据作为输出。
注意这个数据集合的名称是&_TRA.
8.脱选Pass imported data sets to successors.
9.选择Program标签.
10.选择File Import File,一浏览器打开。
使用该浏览器找出程序Dissoc.sas的位置.
11.涂黑Dissoc.sas.
12.选择OK.
13.关闭这个SAS code 节点并保存改变。
14.把该节点重新命名为SAS Code Dissociations.
节点克隆
在此,这个SAS Code 节点可以被用于对任意数据集合的逆关联分析。
如果你想将来做更多的逆关联分析,把这个节点存放到工具(Tools)标签里会很有用。
通过克隆一个节点,你可以把把它加到工具版的custom节点里。
1.右击SAS Code Dissociations节点并选择Clone….
2.把描述改为SASCode Dissociations.
3.选择Image 框的右箭头.
4.从图标版上选择一个适当的图标。
5.选择OK 接受图标.
6.选择OK关闭Clone Current Node 窗口.
7.从EM应用窗口的左边选择Tools标签。
鼠标滑动到工具的底部,你会发现一个新工具
出现在下面,其图标正是你选择的。
被克隆的工具可以用于流程图里SAS Code 节点的地方。
该工具被存在项目文件夹里。
因此,该项目下的所有流程图都可以使用这个SASCodeDissociation节点。
注意在使用这个克隆节点时,数据集合专有的变量和水平的名称必须要修改。
修改SASCodeDissociation节点
1.打开这个SAS Code Dissociations 节点。
程序(Program)标签处于活跃状态。
2.修正导入的程序的前5行如下:
第一和第二行需要填入id变量和target变量名。
第三行填入target中需要求逆的变量值。
该程序扫描每一个ID (customer) 以查看values指定的物品(product)是否存在。
如果存在,该数据就被扩充来包含逆。
在我们的例子中,只有apples和turkey的逆。
.
第四和第五行给出了训练数据和扩充后的数据。
3.关闭SAS Code Dissociations 节点并保存变化.
4.从SAS Code Dissociations 节点运行流程图,但不查看结果。
5.打开关联分析(Association)节点.
6.修正Data标签.
7.修正Properties…并选择Table View标签. 列出的是SAS Code节点导出的扩充后数
据。
8.Close the关闭关联分析(Association)节点
9.运行关联分析(Association)节点并查看结果。
10.结果界面列出了关联法则和逆关联法则。
例如,买chicken的人不买turkey的置信度是
85.40%(法则17).
查看完结果后关闭关联分析节点。
.。