Welcome

首页 / 软件开发 / 数据结构与算法 / 数据挖掘系列(1)关联规则挖掘基本概念与Aprior算法

数据挖掘系列(1)关联规则挖掘基本概念与Aprior算法2014-04-22 cnblogs MyDetail我计划整理数据挖掘的基本概念和算法,包括关联规则挖掘、分类、聚类的常用算法,敬请期待。 今天讲的是关联规则挖掘的最基本的知识。

关联规则挖掘在电商、零售、大气物理、生物医学已经有了广泛的应用,本篇文章将介绍一些基本 知识和Aprori算法。

啤酒与尿布的故事已经成为了关联规则挖掘的经典案例,还有人专门出了一本书《啤酒与尿布》, 虽然说这个故事是哈弗商学院杜撰出来的,但确实能很好的解释关联规则挖掘的原理。我们这里以一 个超市购物篮迷你数据集来解释关联规则挖掘的基本概念:

表中的每一行代表一次购买清单(注意你购买十盒牛奶也只计一次,即只记录某个商品的出现与否 )。数据记录的所有项的集合称为总项集,上表中的总项集S={牛奶,面包,尿布,啤酒,鸡蛋,可乐}。

一、关联规则、自信度、自持度的定义

关联规则就是有关联的规则,形式是这样定义的:两个不相交的非空集合X、Y,如果有X-->Y, 就说X-->Y是一条关联规则。举个例子,在上面的表中,我们发现购买啤酒就一定会购买尿布,{啤 酒}-->{尿布}就是一条关联规则。关联规则的强度用支持度(support)和自信度(confidence)来描 述,

支持度的定义:support(X-->Y) = |X并Y|/N=集合X与集合Y中的项在一条记录中同时出现的次 数/数据记录的个数。例如:support({啤酒}-->{尿布}) = 啤酒和尿布同时出现的次数/数据记录 数 = 3/5=60%。

自信度的定义:confidence(X-->Y) = |X并Y|/|X| = 集合X与集合Y中的项在一条记录中同时出 现的次数/集合X出现的个数 。例如:confidence({啤酒}-->{尿布}) = 啤酒和尿布同时出现的次 数/啤酒出现的次数=3/3=100%;confidence({尿布}-->{啤酒}) = 啤酒和尿布同时出现的次数/尿布 出现的次数 = 3/4 = 75%。

这里定义的支持度和自信度都是相对的支持度和自信度,不是绝对支持度,绝对支持度 abs_support = 数据记录数N*support。

支持度和自信度越高,说明规则越强,关联规则挖掘就是挖掘出满足一定强度的规则。

二、关联规则挖掘的定义与步骤

关联规则挖掘的定义:给定一个交易数据集T,找出其中所有支持度support >= min_support、 自信度confidence >= min_confidence的关联规则。

有一个简单而粗鲁的方法可以找出所需要的规则,那就是穷举项集的所有组合,并测试每个组合是 否满足条件,一个元素个数为n的项集的组合个数为2^n-1(除去空集),所需要的时间复杂度明显为O (2^N),对于普通的超市,其商品的项集数也在1万以上,用指数时间复杂度的算法不能在可接受的时 间内解决问题。怎样快速挖出满足条件的关联规则是关联挖掘的需要解决的主要问题。

仔细想一下,我们会发现对于{啤酒-->尿布},{尿布-->啤酒}这两个规则的支持度实际上只 需要计算{尿布,啤酒}的支持度,即它们交集的支持度。于是我们把关联规则挖掘分两步进行:

1)生成频繁项集

这一阶段找出所有满足最小支持度的项集,找出的这些项集称为频繁项集。

2)生成规则

在上一步产生的频繁项集的基础上生成满足最小自信度的规则,产生的规则称为强规则。

关联规则挖掘所花费的时间主要是在生成频繁项集上,因为找出的频繁项集往往不会很多,利用频 繁项集生成规则也就不会花太多的时间,而生成频繁项集需要测试很多的备选项集,如果不加优化, 所需的时间是O(2^N)。