大话数据科学:大数据与机器学习实战(基于R语言)
上QQ阅读APP看书,第一时间看更新

3.1 关联分析介绍

关联规则分析(association rules)是数据挖掘的购物篮分析(market basket analysis),即:从顾客的交易中发现买A产品的顾客可能会买B产品。例如,尿布与啤酒的故事,每星期四晚上,买尿布的顾客的交易(事务)多数会买啤酒。营销应用在推荐商品、交叉促销、商店布置等。关联规则还应用在许多领域,包括:网站页面分析、广告使用分析、用户关键词搜寻、入侵检测、连续生产及生物信息学等。

图3-1是关联规则名词概念图。

图3-1 关联规则名词概念

3.1.1 事务与项目的定义

关联分析的数据表示如图3-2。

图3-2 关联分析的数据表示

定义关联分析的名词:

(1)项目(item):商品或物品名称,例如A、B、尿布、啤酒。

(2)项目集或称项集(itemset):一个及一个以上项目集合,例如{A}、{B}、{A,B}、{尿布,啤酒}。项目或项集是数据框的列。

项目是变量,用 A,B,C表示,也会当作项集。

项集是集合,用 X,Y表示,例如X = {A}简记 A,X = {A,B}简记AB。

X=AB,Y=EFG,X∪Y=ABEFG。

(3)k-项集k- itemset):包含k个项目的集合。ABEFG是5-项集。

(4)空项集(empty itemset):没有项目的集合,例如{ }。

(5)事务标识(TID):顾客的标记。数据框的行。

(6)事务(transaction):顾客的交易,例如{A=1,B=0,C=1}、{尿布=1,啤酒=0}。

(7)零事务(null transaction):没有交易的事务,例如图3-2的 TID = 5。

(8)支持度(support):项集X={A}(简记 A)的支持度,#表示数目。

Support(A)= S(A)= #{事务i| A=1} / n,n = #(D)= 所有事务的数目。

S(A)= {A=1的事务的数目} / {所有事务的数目}。

Support({A,B})= S(AB)= #{事务i| A=1,B=1} / n = #(A×B)/ n 。

S(AB)= # {A=1且B=1的事务的数目} / {所有事务的数目}。

S(X)= {X所有事务 = 1的数目} / {所有事务的数目}。

S(A)≧S(AB),项集的项目越多,支持度就越小。

S(X)≧S(X∪Y),S(Y)≧S(X∪Y),对所有项集 X,Y。

(9)子项集(subitemset)与超项集(superitemset):若项集 X,Y,X⊆Y,则X称为Y的子项集;Y称为X的超项集。例如X = AB,Y = ABC,X是子项集,Y是超项集。

Support(子项集)≥Support(超项集),S(子项集)≥S(超项集)

(10)支持度阈最小支持度(minimum support threshold):阈值,支持度门槛值。记作 Minsupport。

(11)频繁项集(frequent itemset):项集X的支持度大于最小支持度阈值,称为频繁项集S(X) > Minsupport。

(12)所有频繁项集的子项集,都是频繁项集。

青(子项集频繁)出于蓝(是因为超项集频繁),而胜于蓝(子项集比超项集更频繁)。

(13)所有非频繁项集的超项集,都是非频繁项集。非频繁的子项集,其超项集一定是非频繁。子不教(子项集非频繁),父之过(因为超项集非频繁)。

3.1.2 项集的关联规则

关联规则可以用条件概率检查,买什么东西的顾客,会再买什么东西。例如,买尿片的,会买啤酒,P (B买啤酒 | A买尿片)> P (B买啤酒)。

若两个项集X,Y,其交集为空集合 X∩Y ={},即X,Y没有共同的项集,则项集X,Y的关联规则X→Y,X称为规则的前项或先导(antecedent或left-hand-side,lhs),Y称为规则的后项或后继(consequent或right-hand-side,rhs)。

AB→ACD不能成为规则。

关联规则的测量有如下几项。

(1)支持度(support):X→Y的支持度:规则的有用性。

Support(X→Y)= S(X→Y)= S(Y→X)= S(X∪Y)

(2)置信度(confidence):X→Y的置信度:规则前项(因)后项(果)的可信度或确定性。

置信度是条件概率:P(顾客买Y|顾客买X)。请参考《大话统计学》5.5节。

Confidence(X→Y)= C(X→Y)= S(X→Y)/ S(X)

(3)提升度(lift):X→Y的提升度:顾客买X带给购买Y信息的提升度。

Lift(X→Y)= L(X→Y)= C(X→Y)/ S(Y)= S(X→Y)/ [S(X)×S(Y)]

在数据挖掘称为提升度,在购物篮分析称为改善度(improvement)。项集X搭配项集Y销售,是单独销售项集Y结果的L(X→Y)倍。L(X→Y)可能 <1,=1,或 >1。

事物频数如表3-1所示。

表3-1 事务频数表

支持度 S(A)=(a+b)/ n;

支持度 S(B)=(a+c)/n;

支持度 S(A→B)= a / n = S(B→A);

置信度 C(A→B)= a /(a+b);

置信度 C(B→A)= a /(a+c);

提升度 L(A→B)= a(a+b+c+d)/(a+b)(a+c)= L(B→A);

若提升度 Lift = 1,则A和B是独立的。因为a × n =(a+b)×(a+c)。

若提升度Lift > 1,则A和B是(互相)正面提升的。

若提升度Lift < 1,则A和B是(互相)负面提升的。

但是,提升度会受到零事务和样本数的影响。

以上有关统计学的独立和条件概率,《大话统计学》中第5章有详细说明。

(4)支持度阈(minimum support threshold),阈又叫阈值,支持度门槛值。记作Min_support。

(5)置信度阈(minimum confident threshold),置信度门槛值。记作Min_ confident。

通常支持度要大于 0.1,置信度要大于0.1或 0.2,提升度要大于1,正面信息。但是当项目(变量)越多时,支持度会越小。

(6)强关联规则。

Support(X→Y)= S(X→Y)> Min_support

Confidence(X→Y)= C(X→Y)> Min_confident

(7)支持度和提升度符合交换律,置信度不符合交换律。

Support(X→Y)= Support(Y→X),S(A→B)= S(B→A)

Confidence(X→Y)≠ Confidence(Y→X),C(X→Y)≠ C(Y→X)

Lift(X→Y)= Lift(Y→X),L(X→Y)= L(Y→X)

(8)Support({}→X)= Support(X)

Confidence({}→X)= Support(X),Confidence(X→{})= 1

Lift({}→X)= 1

注意:一个项集只有最小支持度阈记作Minsupport,没有最小置信度阈;两个项集的关联规则有最小支持度阈Min_support和最小置信度阈Min_confident。没有最小提升度阈。设定阈值通常为Minsupport = Min_support。

在R语言参数用supp = Min_support,conf = Min_confiden。