SAS系统被誉为国际上的标准软件系统,本文将详细介绍如何在SAS/EM模块中进行关联规则数据挖掘,使用的软件版本是SAS 9.1.3下的Enterprise Miner 4.3:

从SAS顶端的【解决方案(S)】菜单下调出企业数据挖掘(也可以通过在命令行输入miner):

SAS/EM的初始界面如下:

接下来,将数据挖掘外接程序示例数据集中的Associate表导入SAS逻辑库。先将xlsx文件另存为xls文件,再双击SAS资源管理器中的逻辑库,从【文件(F)】菜单下调出【导入数据】对话框:

点击【Next >】,选择xls文件及相应的工作表:

点击【Next >】,选择相应的SAS逻辑库并命名:

点击【Finish】,完成数据导入操作。回到SAS/EM界面,双击Untitled节点并重命名为Analysis。

鼠标左键按住上方工具栏中的【Input Data Source】节点不放,拖入右边的空白区域之后再放开鼠标,此时SAS/EM界面如下:

双击刚刚拖入的【Input Data Source】节点,选择前面导入的数据集Sasuser.Associate:

切换到【Variables】选项卡,在【Model Role】列【CATEGORY】行处点击右键,选择【Set Model Role】菜单:

分别将【CATEGORY】行设置为target,其他两行设置为rejected:

关闭对话框,询问是否保存变化时,点击【是(Y)】。若关闭SAS后重新打开EM项目时弹出Diagram被锁,则删除emproj文件夹中后缀是.lck的文件即可继续编辑。

鼠标左键按住上方工具栏中的【Association】节点不放,拖入右边的空白区域之后再放开鼠标。将鼠标移向旁边的【SASUSER.ASSOCIATE】节点周围,当变成十字型时,鼠标左键按住不放,拖向【Association】节点,此时SAS/EM界面如下:

双击右边的【Association】节点在SAS中进行数据挖掘之关联规则图标,切换到【General】选项卡的界面如下:

默认的分析模式是【By Context】,它根据输入数据源的结点信息选择合适的分析方法。如果输入数据集包括一个id变量和target变量,该结点自动执行关联分析。下面的选项是设置关联最小支持度、项集最大数目和规则最小置信度。

关闭【Association】对话框,右键【Association】节点图标,在弹出的下拉选项中选择【Run】,得到运行结果如下:

此时在【Rules】选项卡上右键单击,会弹出查看图形菜单:

选择【图形(G)】之后,将窗口拉伸到合适的宽度,有些图例需要拉到更宽才会显示出来,结果界面如下:

前 面结果表中的19条关联规则都体现在这张图里面,此图的信息量比较大。我们以右下方的圆圈为例来解读它的含义:从纵横坐标轴来看,此圆圈对应表中的第11 条关联规则,即{Road Bikes ==> Jerseys};从圆圈标示对应的图例来看,它表示置信度(Confidence)在20.24%到24.13%区间内,从表中可以看出实际值为 20.26%;从圆圈的颜色对应的图例来看,它表示支持度(Support)在3.12%到3.78%区间内,从表中可以看出实际值为3.68%;圆圈的 大小表示提升度(Lift)的大小,从表中可以看出实际值为1.34。

上面提到的置信度(Confidence)、支持度(Support)、提升度(Lift)是关联发现的三个重要评价指标,它们都是怎么计算出来的呢?我们还是以前面提到的第11条关联规则{Road Bikes ==> Jerseys}为例进行说明:

先简单统计一下数据源中相关数据,总共13050个订单,其中有购买Road Bikes订单的2369个,有购买Jerseys的订单1978个,同时购买了Road Bikes和Jerseys的订单480个,计算以下几个概率:

P(Road Bikes) = 2369/13050 = 18.15%

P(Jerseys) = 1978/13050 = 15.16%

P(Road Bikes & Jerseys) = 480/13050 = 3.68%

置 信度Confidence(Road Bikes ==> Jerseys)表示在客户购买Road Bikes的条件下,同时又购买Jerseys的概率,即P(Jerseys|Road Bikes) = P(Road Bikes & Jerseys)/P(Road Bikes) = 3.68%/18.15% = 20.26%。置信度越高,说明相关联的商品被交叉销售的机会越大。

支 持度Support(Road Bikes ==> Jerseys)表示客户同时购买过Road Bikes和Jerseys的概率,即P(Road Bikes & Jerseys) = 3.68%。支持度越高,说明相关联的商品被同时购买的越频繁。

提 升度Lift(Road Bikes ==> Jerseys)表示使用关联规则可以提升的倍数,是置信度与期望置信度的比值,公式为Confidence(Road Bikes ==> Jerseys)/P(Jerseys) = 20.26%/15.16% = 1.34。

在进行关联规则的数据挖掘中,通过指定这三个标准的最小值,三个标准的值都大于临界值的关联规则就被列出。而且以上这三个标准缺一不可,孤立地使用这三个标准中的任意一个,都可能导致错误结果。

当 某种常见现象出现在关联规则右边时,高置信度也会产生误导。比如以下几条规则的置信度都比较高,但几乎是没有作用的规则:“买方便面则买牛奶”、“买牙刷 则买牛奶”、“喜欢野外休闲则会买牛奶”等等。这一类规则的置信度和支持度都会比较高,因为很少有人会不买牛奶。但这一类规则没有任何作用。

在关联规则结果界面是查看表的情况下,还可以在查看菜单下选择【生成表子集(S)...】,通过设定筛选出想要的关联规则出来,例如下图是在【Confidence】选项卡中设定最小置信度为26:

点击【Process】后,结果将筛选出8条关联规则。

在置信度(Confidence)、支持度(Support)、提升度(Lift)这三个重要评价指标之中,提升度是最有可能单独使用而不致产生误导的标准,因为它可以测量关联规则增进预测右边现象的能力。但如果该规则的支持度很低,该规则也可能造成误导。

除 了以上三个对关联规则的数量标准外,一条关联规则真正可取,还需要具备以下两个条件:一是该规则必须是人们常识之外、意料之外的关联,二是该规则必须具有 潜在的作用,而目前任何技术与算法都无法判断哪些知识属于常识,也无法判断哪些属于可能具有潜在作用的规则,因此关联规则的挖掘离不开人的作用。

SAS->关联分析实践的更多相关文章

  1. 关联分析FPGrowth算法在JavaWeb项目中的应用

    关联分析(关联挖掘)是指在交易数据.关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式.关联.相关性或因果结构.关联分析的一个典型例子是购物篮分析.通过发现顾客放入购物篮中不同商品之 ...

  2. 【GWAS文献解读】疟原虫青蒿素抗药性的全基因组关联分析

    英文名:Genetic architecture of artemisinin-resistant Plasmodium falciparum 中文名:疟原虫青蒿素抗药性的全基因组关联分析 期刊:Na ...

  3. Apriori 关联分析算法原理分析与代码实现

    前言 想必大家都听过数据挖掘领域那个经典的故事 - "啤酒与尿布" 的故事. 那么,具体是怎么从海量销售信息中挖掘出啤酒和尿布之间的关系呢? 这就是关联分析所要完成的任务了. 本文 ...

  4. 全基因组关联分析(Genome-Wide Association Study,GWAS)流程

    全基因组关联分析流程: 一.准备plink文件 1.准备PED文件 PED文件有六列,六列内容如下: Family ID Individual ID Paternal ID Maternal ID S ...

  5. 关联分析---Apriori

    关联分析是一种在大规模数据集中寻找有趣关系的任务,这些关系有两种形式:频繁项集和关联规则.频繁项集是经常出现在一起的物品的集合,关联规则暗示两种物品之间可能存在的很强的关系. 如何寻找数据集中的频繁或 ...

  6. 机器学习实战 - 读书笔记(11) - 使用Apriori算法进行关联分析

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第11章 - 使用Apriori算法进行关联分析. 基本概念 关联分析(associat ...

  7. Activity启动模式 及 Intent Flags 与 栈 的关联分析

     http://blog.csdn.net/vipzjyno1/article/details/25463457    Android启动模式Flags栈Task   目录(?)[+] 什么是栈 栈 ...

  8. 使用Apriori算法和FP-growth算法进行关联分析

    系列文章:<机器学习实战>学习笔记 最近看了<机器学习实战>中的第11章(使用Apriori算法进行关联分析)和第12章(使用FP-growth算法来高效发现频繁项集).正如章 ...

  9. 【转】Activity启动模式 及 Intent Flags 与 栈 的关联分析

    http://blog.csdn.net/vipzjyno1/article/details/25463457    在学习Android的过程中,Intent是我们最常用Android用于进程内或进 ...

随机推荐

  1. tp5月统计的bug

    月统计求和时 本月第一天没有统计到

  2. Part 6 - Class-Based Views(21-26)

    https://github.com/sibtc/django-beginners-guide/tree/v0.6-lw urlpatterns = [ views.PostUpdateView.as ...

  3. EF生成的SQL语句执行顺序问题。

    //实体被更改后,再做删除,EF只生成删除语句 //实体删除后再更改,EF报错 //添加语句会再,更改,删除后执行,更AddObject位置无关 //一个实体多个字段被改,只会生成一句update / ...

  4. LA 3708 && POJ 3154 Graveyard (思维)

    题意:在周长为10000的圆上等距分布着n个雕塑,现在又加入m个,现在让m+n个等距分布,那就得移动一些原有的雕塑,问你移动的最少总距离是多少. 析:首先我们可以知道,至少有一个雕塑是可以不用移动的, ...

  5. python创建二维数组

    c=[[0]*3 for i in range(3)] c=[[0 for i in range(3)] for i in range(3)]

  6. VHDL实例化过程

    第二步:建立一个名为MUX_0的乘法器 第三步:在程序中例化,看以下程序. -- 该程序用来实现复数的乘法,端口分别定义的复数的 -- 输入的实部和虚部和输出的实部和虚部 LIBRARY IEEE; ...

  7. [Java]ArrayList集合的contains方法

    用到集合ArrayList时经常会用到里面自带的方法boolean contains(Object o);此方法用于判断集合里面是否包含元素o,现在讨论下在Object类型为类类型的时候的情况: cl ...

  8. SSH中设置字符编码防止乱码

    1.在web.xml中加入一个过滤器和过滤范围的配置 <filter><filter-name>encoding</filter-name><filter-c ...

  9. Create Your Content and Structure

    The original page source Content is the most important aspect of any site. So let's design for the c ...

  10. Python学习-39.Python中的生成器

    先回顾列表解释 lista = range(10) listb = [elem * elem for elem in lista] 那么listb就将会是0至9的二次方. 现在有这么一个需求,需要存储 ...