SAS EM(一)关联分析
关联规则挖掘技术可以发现不同商品在消费者购买过程中的相关性。给定一组事务集合,其中每个事务是一个项目集;一个关联规则是形如 X ->Y 的蕴涵式, X 和 Y 表示项目集,且 X∩ Y = Φ, X 和 Y 分别称为关联规则 X-> Y 的前提和结论。规则 X->Y 的支持度(Support) 是事务集中包含 X 和 Y 的事务数与所有事务数之比,记为 support(X->Y) ;规则 X->Y 的置信度(Confidence) 是指包含 X 和 Y 的事务数与包含 X 的事务数之比, 记为 confidence ( X->Y) 。
支持度用于衡量所发现规则的统计重要性,而置信度用于衡量关联规则的可信程度。
一般来说,只有支持度和置信度均高的关联规则才可能是消费者感兴趣的、有用的规则。
以下例子参考https://blog.csdn.net/qq_36523839/article/details/82191677
(为了讲解关联分析中的支持度和置信度)
支持度:一个项集的支持度被定义为数据集中包含该项集的记录所占的比例,上图中,豆奶的支持度为4/5,(豆奶、尿布)为3/5。支持度是针对项集来说的,因此可以定义一个最小支持度,只保留大于最小支持度的项集。
可信度(置信度):针对如{尿布}->{葡萄酒}这样的关联规则来定义的。计算为 支持度{尿布,葡萄酒}/支持度{尿布},其中{尿布,葡萄酒}的支持度为3/5,{尿布}的支持度为4/5,所以“尿布->葡萄酒”的可行度为3/4=0.75,这意味着尿布的记录中,我们的规则有75%都适用。
Apriori 算法
对于上图,要计算 0,3 的支持度,直接的想法是遍历每条记录,统计包含有 0 和 3 的记录的数量,使用该数量除以总记录数,就可以得到支持度。而这只是针对单个集合 0,3. 要获得每种可能集合的支持度就需要多次重复上述过程。对于上图,虽然仅有4中物品,也需要遍历数据15次。随着物品数目的增加,遍历次数会急剧增加,对于包含 N 种物品的数据集共有 2^N−1 种项集组合。为了降低计算时间,研究人员发现了 Apriori 原理,可以帮我们减少感兴趣的频繁项集的数目。
Apriori 的原理:如果某个项集是频繁项集,那么它所有的子集也是频繁的。即如果 {0,1} 是频繁的,那么 {0}, {1} 也一定是频繁的。
这个原理直观上没有什么用,但是反过来看就有用了,也就是说如果一个项集是非频繁的,那么它的所有超集也是非频繁的。
SAS EM实践
创建数据源(找到sas自带数据集sampsio--assocs)
修改变量角色
创建流程图
SAS内置有相关数据 ,把图标拖下来
点解输入节点修改数据源
数据角色修改为事务
拖这个下来
主要调节这三个(最小支持度,项目的最大数目和最小置信度),运行
查看结果
想要查看全部结果可以
想要两条以上的话
定制型关联分析实战
在 SAS EM 中计算一个项与其他项之间的关联规则。
1 创建一个新的数据集或者修改原数据集使它至少包含以下三个变量:
一个唯一的 ID 标识,一个目标变量,一个人工变量(如果值为 coke,则设置为 1 否则设置为 2)。
设置为1的话为X,即得出X-》Y的结论,想退出X的只需把下面的1和2顺序互换
libname mylib "D:\score_data";
data mylib.test;
set sampsio.assocs;
if product = 'coke' then visit = 1 ;
else visit = 2;
run;
同理在sas em中导入数据,穿建流程图
操作同理(我们就会得出全为roke的)
判断关联关系
参考自 https://blog.csdn.net/kl28978113/article/details/76304102
提升度
举例子:
10000 个超市订单(10000 个事务),其中购买三元牛奶(A事务)的 6000 个,购买伊利牛奶(B事务)的 7500 个,4000 个同时包含两者。
三元牛奶(A事务)和伊利牛奶(B事务)的支持度为:P(A & B)= 4000 / 10000 = 0.4.
三元牛奶(A事务)对伊利牛奶(B事务)的置信度为:包含 A 的事务中同时包含 B 的占包含 A 的事务比例。4000 / 6000 = 0.67,说明在购买三元牛奶后,有 0.67 的用户去购买伊利牛奶。
伊利牛奶(B事务)对三元牛奶(A事务)的置信度为:包含 B 的事务中同时包含 A 的占包含 B 的事务比例。4000 / 7500 = 0.53,说明在购买三元牛奶后,有 0.53 的用户去购买伊利牛奶。
因为在没有任何条件下,B事务的出现的比例是 0.75,而出现 A事务,且同时出现 B事务的比例是 0.67,也就是说设置了 A事务出现这个条件,B事务出现的比例反而降低了。这说明 A事务和 B事务是排斥的。
下面就有了提升度的概念。
我们把 0.67 / 0.75 的比值作为提升度,即 P(B | A) / P(B),称之为 A 条件对 B事务的提升度,即有 A 作为前提,对 B 出现的概率有什么样的影响,如果提升度 = 1 说明 A 和 B 没有任何关联,如果 < 1,说明 A事务和 B事务是排斥的,> 1,我们认为 A 和 B 是有关联的,但是在具体的应用之中,我们认为提升度 > 3 才算作值得认可的关联。
KULC 度量 + 不平衡比(IR)
提升度是一种很简单的判断关联关系的手段,但是在实际应用过程中受零事务的影响比较大,零事务在上面例子中可以理解为既没有购买三元牛奶也没有购买伊利牛奶的订单。数值为 10000 - 4000 - 2000 - 3500 = 500,可见在本例中,零事务非常小,但是在现实情况中,零事务是很大的。在本例中如果保持其他数据不变,把 10000 个事务改成 1000000 个事务,那么计算出的提升度就会明显增大,此时的零事务很大(1000000 - 4000 - 2000 - 3500),可见提升度是与零事务有关的。
KULC = 0.5 * P(B | A)+ 0.5 * P(A | B)
该公式表示 将两种事件作为条件的置信度的均值,避开了支持度的计算,因此不会受零和事务的影响。在上例中,KULC 值 = ( 4000 / 6000 + 4000 / 7500 ) / 2 = 0.6
IR = P(B | A)/ P(A | B) ,IR 用来指示一种情况
假如在上例中 6000 个事务包含三元牛奶, 75000 个包含伊利牛奶,同时购买依旧为 4000
则:
KULC = 0.5 *(4000 / 75000 + 4000 / 6000)= 0.36
IR = 4000 / 6000 /(4000 / 75000)= 12.5
这说明这两个事务的关联关系非常不平衡,购买三元牛奶的顾客很可能同时会买伊利牛奶,而购买了伊利牛奶的用户不太会再去买三元牛奶。很好理解,A 对 B 的支持度远远高于 B 对 A 的支持度。