关联规则:购物篮分析,最早的出现是为了发现超市销售数据库中不同商品之间的关联关系。
“啤酒与尿布”的故事产生于20世纪90年代的美国沃尔玛超市。沃尔玛的超市管理人员分析销售数据时发现了一个令人难于理解的现象:在某些特定的情况下,“啤酒”与“尿布”两件看上去毫无关系的商品会经常出现在同一个购物篮中,这种独特的销售现象引起了管理人员的注意,经过后续调查发现。
原来,美国的妇女通常在家照顾孩子,所以她们经常会嘱咐丈夫在下班回家的路上为孩子买尿布,而丈夫在买尿布的同时又会顺手购买自己爱喝的啤酒。这样就会出现啤酒与尿布这两件看上去不相干的商品经常会出现在同一个购物篮的现象。
这个发现为商家带来了大量的利润,但是如何从浩如烟海却又杂乱无章的数据中,发现啤酒和尿布销售之间的联系呢?
商店的收银台每天都收集了大量的顾客购物篮数据,如下表,一般也称作购物篮事务,表中每一行对应一个事务,包含一个唯一标识的TID和给定顾客购买的商品的集合。零售商对分析这些数据很感兴趣,以便了解他们的顾客的购买行为,可以使用这些价值的信息来支持各种商业应用,如市场促销,顾客管理等。
关联分析,用于发现隐藏在大型数据集中有意义的联系。我们将所发现的联系用关联规则或频繁项集的形式表示,从上表中可以提取出如下规则:
{尿布}---------------------->{啤酒}
该规则表明尿布和啤酒销售之间存在很强的联系,因为许多购买了尿布的顾客也购买了啤酒。商家们可以利用这类规则,帮助他们发现新的销售组合或者商机。
在数据问题中,我们需要处理两个关键问题:
我们可以用二元形式表示购物篮数据,其中每行对应一个事务,每列对应一个项。项可以用二元变量表示,项在事务中出现它的值为1,否则为0。
项在事务中的出现比不出现更重要,因此项也是非对称的二元变量。这也是实际购物篮数据的极其简单的展现,这种表示忽略了数据的一些比较重要特征,比如价格和数量等。
在关联分析中,包含0个或多个项的集合被称为项集(itemset),如果一个项集包含k个项,则称它为k-项集。如{啤酒,尿布,牛奶}是一个3项集。空集是不包含任何项的项集。
项集的一个最重要的性质是它的支持度计数,也就是包含特定项集的事务个数。我们从数学上定义项集X的支持度计数表示为
从表中可以得出=={啤酒,尿布,牛奶}==的支持度计数为2,因为只有两个事务中包含了这三个项。
关联规则是形如X->Y的蕴含表达式,其中X和Y是不相交项集。
关联规则的强度使用它的支持度(support)和置信度(confidence)度量:
支持度确定可以用于给定数据集的频繁程度,数学表达式如下。
分子指X和Y同时出现的次数,N是事务的总数,即行数
置信度确定Y在包含X的事务中出现的频繁程度,数学表达式如下。
购买X的情况下同时购买X和Y的概率,分子指X和Y同时出现的次数,分母是前置项出现的总和
例子:
考虑规则{牛奶,尿布}–>{啤酒}
(1){牛奶,尿布,啤酒}的支持度计数为2
(2)事务总数N=5
(3){牛奶,尿布}前置出现项的次数为3
(4)支持度S=2/5=0.4,置信度C=2/3=0.67
关联规则发现:给定事务的集合T,关联规则发现是指==找出支持度大于等于minsup(最小支持度)并且置信度大于等于minconf(最小置信度)==的所有规则。
但是根据上述规则挖掘关联规则的时候,计算的代价太高。我们在实际业务中通常采用的一种策略:将关联规则挖掘任务分解为两个子任务:
根据高中数学集合的基本知识,一个含有K个元素的集合,它的非空子集个数为
(不包括空集)。频繁项集也是在集合中寻找非空子集的过程,需要计算规模可能是指数级别的,复杂度高。
为了降低频繁项集产生的计算复杂度,采用两种方法:
我们通过上述原理,立马可以对很多非频繁项集进行剪枝,这种剪枝方法也称作基于支持度的剪枝。依赖的原理为:一个项集的支持度绝不会超过他的子集的支持度。
图3:基于支持度的剪枝:如果{a,b}是非频繁的,则所有超集均为非频繁的
(1)算法介绍
1993年美国学者Agrawal提出通过分析购物篮中的商品集合,从而找出商品之间关联关系的关联算法,并根据商品之间的关系,找出客户的购买行为。Agrawal从数学及计算机算法角度提出了商品关联关系的计算方法——Apriori算法。
沃尔玛从上个世纪90年代尝试将Aprior算法引入到POS机数据分析中,并获得了成功,于是产生了“啤酒与尿布”的故事。
如何寻找?
在历史购物记录中,一些商品总是在一起购买。但人看上去不是那么的直观的,而是隐蔽的。让计算机做这事,设计算法让计算机自动去找,找到这样的模式(规律)。
目标:寻找那些总是一起出现商品。
如:购买mahout实战—>机器学习实战
引出支持度和置信度
《mahout实战》与《机器学习实战》一起该买的记录数占所有商品记录总数的比例——支持度(整体)
买了《mahout实战》与《机器学习实战》一起该买的记录数占所有购买《mahout实战》记录数的比例——置信度==(局部)==
需要达到一定的阈值
(2)举例
Apriori算法是第一个且最重要的关联规则算法,使用基于支持度的剪枝技术,从而控制候选项集的指数级别的增长。
我们把前面的商品的例子,假设最小支持度阈值是60%,相当于最小支持度计数为3。(根据支持度=x/5=0.6=>x=3)
分析:
算法描述:
总结:Apriori算法的频繁项集产生的部分有两个重要特点: