前面我们讨论的关联规则都是用支持度和自信度来评价的,如果一个规则的自信度高,我们就说它是一条强规则,但是自信度和支持度有时候并不能度量规则的实际意义和业务关注的兴趣点。

一个误导我们的强规则

看这样一个例子,我们分析一个购物篮数据中购买游戏光碟和购买影片光碟之间的关联关系。交易数据集共有10,000条记录,其中购买6000条包含游戏光碟,7500条包含影片光碟,4000条既包含游戏光碟又包含影片光碟。数据集如下表所示:

  买游戏 不买游戏 行总计
买影片 4000 3500 7500
不买影片 2000 500 2500
列总计 6000 4000 10000

假设我们设置得最小支持度为30%,最小自信度为60%。从上面的表中,可以得到:support(买游戏光碟—>买影片光碟)=4000/10000=40%,confidence(买游戏光碟—>买影片光碟)=4000/7500*100%=66%(写错了,应该是4000/6000)。这条规则的支持度和自信度都满足要求,因此我们很兴奋,我们找到了一条强规则,于是我们建议超市把影片光碟和游戏光碟放在一起,可以提高销量。

可是我们想想,一个喜欢的玩游戏的人会有时间看影片么,这个规则是不是有问题,事实上这条规则误导了我们。在整个数据集中买影片光碟的概率p(买影片)=7500/10000=75%,而买游戏的人也买影片的概率只有66%,66%<75%恰恰说明了买游戏光碟抑制了影片光碟的购买,也就是说买了游戏光碟的人更倾向于不买影片光碟,这才是符合现实的。

从上面的例子我们看到,支持度和自信度并不能过成功滤掉那些我们不感兴趣的规则,因此我们需要一些新的评价标准,下面介绍六中评价标准:相关性系数,卡方指数,全自信度、最大自信度、Kulc、cosine距离。

相关性系数lift

从上面游戏和影片的例子中,我们可以看到游戏和影片不是正相关的,因此用相关性度量关联规则可以过滤这样的规则,对于规则A—>B或者B—>A,lift(A,B)=P(A交B)/(P(A)*P(B)),如果lift(A,B)>1表示A、B呈正相关,lift(A,B)<1表示A、B呈负相关,lift(A,B)=1表示A、B不相关(独立)。实际运用中,正相关和负相关都是我们需要关注的,而独立往往是我们不需要的,两个商品都没有相互影响也就是不是强规则,lift(A,B)等于1的情形也很少,一般只要接近于1我们就认为是独立了。

注意相关系数只能确定相关性,相关不是因果,所以A—>B或者B—>A两个规则的相关系数是一样的,另外lift(A,B)=P(A交B)/(P(A)*P(B))=P(A)*P(B|A)/(P(A)*P(B))=P(B|A)/P(B)=confidence(A—>B)/support(B)=confidence(B—>A)/support(A)。

卡方系数

卡方分布是数理统计中的一个重要分布,利用卡方系数我们可以确定两个变量是否相关。卡方系数的定义:

公式中的observed表示数据的实际值,expected表示期望值,不理解没关系,我们看一个例子就明白了。

  买游戏 不买游戏 行总计
买影片 4000(4500) 3500(3000) 7500
不买影片 2000(1500) 500(1000) 2500
列总计 6000 4000 10000

上面表格的括号中表示的是期望值,(买影片,买游戏)的期望值E=6000*(7500/10000)=4500,总体记录中有75%的人买影片,而买游戏的有6000人,于是我们期望这6000人中有75%(即4500)的人买影片。其他三个值可以类似计算得到。现在我们计算一下,买游戏与买影片的卡方系数:

卡方系数X=(4000-4500)^2/4500+(3500-3000)^2/3000+(2000-1500)^2/1500+(500-1000)^2/1000=555.6。

卡方系数需要查表才能确定值的意义,基于置信水平和自由度(r-1)*(c-1)=(行数-1)*(列数-1)=1,查表得到自信度为(1-0.001)的值为6.63,555.6大于6.63,因此拒绝A、B独立的假设,即认为A、B是相关的,而expected(买影片,买游戏)=4500>4000,因此认为A、B呈负相关。这里需要一定的概率统计知识。如果觉得不好理解,可以用其他的评价标准。

全自信度

全自信度all_confidence的定义如下:all_confidence(A,B)=P(A交B)/max{P(A),P(B)}

=min{P(B|A),P(A|B)}

=min{confidence(A—>B),confidence(B—>A)}

对于前面的例子,all_confidence(买游戏,买影片)=min{confidence(买游戏—>买影片),confidence(买影片—>买游戏)}=min{66%,53.3%}=53.3%。可以看出全自信度不失为一个好的衡量标准。

最大自信度

最大自信度则与全自信度相反,求的不是最小的支持度而是最大的支持度,max_confidence(A,B)=max{confidence(A—>B),confidence(B—>A)},不过感觉最大自信度不太实用。

Kulc

Kulc系数就是对两个自信度做一个平均处理:kulc(A,B)=(confidence(A—>B)+confidence(B—>A))/2。,kulc系数是一个很好的度量标准,稍后的对比我们会看到。

cosine(A,B)

cosine(A,B)=P(A交B)/sqrt(P(A)*P(B))=sqrt(P(A|B)*P(B|A))=sqrt(confidence(A—>B)*confidence(B—>A))

七个评价准则的比较

这里有这么多的评价标准,究竟哪些好,哪些能够准确反应事实,我们来看一组对比。

  milk milk 行总计
coffee MC MC C
coffee MC MC C
列总计 M M total

上表中,M表示购买了牛奶、C表示购买了咖啡,M表示不购买牛奶,C表示不购买咖啡,下面来看6个不同的数据集,各个度量标准的值

数据
MC MC MC MC total C->M自信度 M->C自信度 卡方 lift all_conf max_conf Kulc cosine
D1 10000 1000 1000 100000 112000 0.91 0.91 90557 9.26 0.91 0.91 0.91 0.91
D2 10000 1000 1000 100 12100 0.91 0.91 0 1.00 0.91 0.91 0.91 0.91
D3 100 1000 1000 100000 102100 0.09 0.09 670 8.44 0.09 0.09 0.09 0.09
D4 1000 1000 1000 100000 103000 0.50 0.50 24740 25.75 0.50 0.50 0.50 0.50
D5 1000 100 10000 100000 111100 0.91 0.09 8173 9.18 0.09 0.91 0.50 0.29
D6 1000 10 100000 100000 201010 0.99 0.01 965 1.97 0.01 0.99 0.50 0.10

  我们先来看前面四个数据集D1-D4,从后面四列可以看出,D1,D2中milk与coffee是正相关的,而D3是负相关,D4中是不相关的,大家可能觉得,D2的lift约等于1应该是不相关的,事实上对比D1你会发现,lift受MC的影响很大,而实际上我们买牛奶和咖啡的相关性不应该取决于不买牛奶和咖啡的交易记录,这正是lift和卡方的劣势,容易受到数据记录大小的影响。而全自信度、最大自信度、Kulc、cosine与MC无关,它们不受数据记录大小影响。卡方和lift还把D3判别为正相关,而实际上他们应该是负相关,M=100+1000=1100,如果这1100中有超过550的购买coffee那么就认为是正相关,而我们看到MC=100<550,可以认为是负相关的。

  上面我们分析了全自信度、最大自信度、Kulc、cosine与空值无关,但这几个中哪一个更好呢?我们看后面四个数据集D4-D6,all_conf与cosine得出相同的结果,即D4中milk与coffee是独立的,D5、D6是负相关的,D5中support(C-->M)=0.91而support(M-->C)=0.09,这样的关系,简单的认为是负相关或者正相关都不妥,Kulc做平均处理倒很好,平滑后认为它们是无关的,我们再引入一个不平衡因子IR(imbalance ratio):

  IR(A,B)=|sup(a)-sup(B)|/(sup(A)-sup(B)-sup(A交B))(注:应为(sup(A)+sup(B)-sup(A交B))

D4总IR(C,M)=0,非常平衡,D5中IR(C,M)=0.89,不平衡,而D6中IR(C,M)=0.99极度不平衡,我们应该看到Kulc值虽然相同但是平衡度不一样,在实际中应该意识到不平衡的可能,根据业务作出判断,因此这里我们认为Kulc结合不平衡因子的是较好的评价方法。

  另外weka中还使用 Conviction和Leverage。Conviction(A,B) = P(A)P(B)/P(AB), Leverage(A,B) = P(A交B)-P(A)P(B),Leverage是不受空值影响,而Conviction是受空值影响的。

总结

  本文介绍了9个关联规则评价的准则,其中全自信度、最大自信度、Kulc、cosine,Leverage是不受空值影响的,这在处理大数据集是优势更加明显,因为大数据中想MC这样的空记录更多,根据分析我们推荐使用kulc准则和不平衡因子结合的方法。

参考文献

  [1]:HanJiaWei. Data Mining: concept and  techniques.

转自:www.cnblogs.com/fengfenggirl

转载于:https://www.cnblogs.com/lysh8032/p/6739210.html

数据挖掘系列3:关联规则评价相关推荐

  1. opencv系列-图像清晰度评价

    opencv系列-图像清晰度评价 1,换了opencv3.4,用来测试 2,opencv好评呀 图像清晰度评价算法有很多种,在空域中,主要思路是考察图像的领域对比度,即相邻像素间的灰度特征的梯度差:在 ...

  2. python数据挖掘系列教程——PySpider框架应用全解

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python数据挖掘系列教程--PySpider框架应用全解. PySpider介绍 pyspider上手更简单,操作更加简便,因为它增加了 ...

  3. 数据挖掘2.4——关联规则挖掘 知识点整理

    数据挖掘2.4--关联规则挖掘 1.基本概念 1.1定义 2.频繁项挖掘算法 2.1降低产生频繁顷集计算复杂度的算法 2.2 Apriori 2.3 FPGrowth 2.4 产生关联规则 3.关联分 ...

  4. 数据挖掘系列(3)--关联规则评价

    前面我们讨论的关联规则都是用支持度和自信度来评价的,如果一个规则的自信度高,我们就说它是一条强规则,但是自信度和支持度有时候并不能度量规则的实际意义和业务关注的兴趣点. 一个误导我们的强规则

  5. 数据挖掘系列(5)使用mahout做海量数据关联规则挖掘

    上一篇介绍了用开源数据挖掘软件weka做关联规则挖掘,weka方便实用,但不能处理大数据集,因为内存放不下,给它再多的时间也是无用,因此需要进行分布式计算,mahout是一个基于hadoop的分布式数 ...

  6. 数据挖掘系列(4)使用weka做关联规则挖掘

    前面几篇介绍了关联规则的一些基本概念和两个基本算法,但实际在商业应用中,写算法反而比较少,理解数据,把握数据,利用工具才是重要的,前面的基础篇是对算法的理解,这篇将介绍开源利用数据挖掘工具weka进行 ...

  7. 数据挖掘系列(1)关联规则挖掘基本概念与Aprior算法

    我计划整理数据挖掘的基本概念和算法,包括关联规则挖掘.分类.聚类的常用算法,敬请期待.今天讲的是关联规则挖掘的最基本的知识. 关联规则挖掘在电商.零售.大气物理.生物医学已经有了广泛的应用,本篇文章将 ...

  8. 数据挖掘系列(2)--关联规则FpGrowth算法

    上一篇介绍了关联规则挖掘的一些基本概念和经典的Apriori算法,Aprori算法利用频繁集的两个特性,过滤了很多无关的集合,效率提高不少,但是我们发现Apriori算法是一个候选消除算法,每一次消除 ...

  9. 数据挖掘实验报告-关联规则算法实验

    [摘要] 计算机技术和通信技术的迅猛发展将人类社会带入到了信息时代.在最近十几年里,数据库中存储的数据急剧增大.例如,NASA轨道卫星上的地球观测系统EOS每小时会向地面发回50GB的图像数据:世界上 ...

最新文章

  1. Scrum Mastery:产品开发中如何优化产品价值?
  2. 32岁前平凡无奇,鼓动同事创业,最终逆袭成硅谷首富
  3. strcmp函数和strcpy函数
  4. TCP 的连接建立:采用三报文握手
  5. VMware虚拟机:桥接、NAT、Host-only(仅主机)上网方式的区别
  6. glassfish_多种监视和管理GlassFish 3的方法
  7. [react] 请说下react组件更新的机制是什么
  8. 1-5 线性表元素的区间删除 (20 分)
  9. python安装多个版本_Mac安装多个python版本
  10. 团队建设及管理上的举措_为什么在副项目上工作是您作为开发人员的最佳举措...
  11. 关于Cococs中的CCActionEase(下)
  12. javascript数据结构与算法--二叉树遍历(中序)
  13. Python 基础——排列组合的实现
  14. 做好开源项目 需要坚持
  15. Centos7 Kubernetes(k8s) 开发服务器(单服务器)部署 mariadb/mysql 数据库
  16. Java学习网站推荐
  17. 约瑟夫问题_公式原理详解
  18. css的外链写法,纯CSS代码为外链增加图标
  19. unity 物理碰撞
  20. python加减乘除运算代码_四则运算python版

热门文章

  1. flv转gif动态图片是否有解决方案
  2. Nexus Repository Manage搭建远程仓库私服
  3. S7-200 PID指令功能
  4. KindEditor上传图片竟然报错了?
  5. 史上最详细单词记忆法!
  6. MFI认证是什么意思,什么是MFI认证,要怎么做MFI认证
  7. python爬取虾米音乐_虾米音乐爬虫
  8. 直播用的计算机配置,在斗鱼直播电脑配置需要什么样的
  9. IT审计中应注意的几个问题(zt)
  10. adb 启动某个apk