故事背景:
在一家超市,通过大数据分析发现了一个特别有趣的现象:纸尿裤和啤酒这两种不相关的商品的销售数据曲线一开始很相似,所以把纸尿裤和啤酒放在一起。出乎意料的是,此举导致纸尿裤和啤酒的销量大幅增长。这不是玩笑,而是美国沃尔玛连锁超市商家一直津津乐道的真实大数据案例。原来美国的女性平时在家照顾孩子,所以下班回家的路上,她们经常让老公给孩子买尿布,而老公在买尿布的同时,也给自己的孩子买尿布。最喜欢的啤酒。
这一发现为商家带来了不菲的利润,但如何从庞大而杂乱无章的大数据中找到啤酒与纸尿裤销售之间的关联?这给了我们怎样的启示?
这就是联系!
关联,其实很简单,就是几个事情或事件经常同时出现,“啤酒+纸尿裤”就是很典型的两个关联商品。所谓关联,反映了一个事件与其他事件之间的依赖关系或关联关系的知识。当我们查阅英语文献时,我们可以发现有两个英语单词可以描述联想的意思。第一个是相关性,第二个是关联性,两者都可以用来描述事件之间的关联程度。前者主要用在互联网的内容和文档中,比如搜索引擎算法中文档之间的相关性,我们用的词是“相关性”;而后者则经常用在实际的事情上,比如电子商务网站上的商品之间的关系。
如果两个或多个属性之间存在关联,则可以基于另一个属性的值来预测一个属性的值。简而言之,关联规则可以这样表示:A→B,其中 A 称为前提或左部分(LHS),B 称为结果或右部分(RHS)。如果我们要描述尿布和啤酒的关联规则(买尿布的人也买啤酒),那么我们可以这样说:买尿布→买啤酒。
关联算法的两个概念
关联算法中一个非常重要的概念是支持,即数据集包含某些特定项目的概率。
比如1000个商品交易中,啤酒和纸尿裤同时出现的次数是50次,那么这个关联的支持度就是5%。
另一个与关联算法非常相关的概念是 Confidence,即当 A 已经出现在数据集中时 B 会发生的概率。置信度的计算公式为:A和B同时出现的概率/A出现的概率。
数据关联是数据库中存在的一类重要的可发现知识。如果两个或多个变量的值之间存在某种规律性,则称为关联。关联可以分为简单关联、时间关联和因果关联。关联分析的目的是找出数据库中隐藏的关联。有时数据库中数据的关联函数是未知的,或者即使已知也不确定,因此关联分析生成的规则具有可信度。
关联规则挖掘在大量数据中发现项目集之间有趣的关联或相关性。它是数据挖掘中的一门重要学科,近年来被业界广泛研究。
关联规则挖掘的一个典型例子是购物篮分析。关联规则研究有助于发现交易数据库中不同商品(物品)之间的关系,找出客户的购买行为模式,例如购买某种商品对购买其他商品的影响。分析结果可应用于产品货架布局、库存安排以及根据购买模式对用户进行分类。
关联规则的发现过程可以分为以下两个步骤:
第一步,迭代识别所有频繁项集(FrequentItemsets),要求频繁项集的支持度不低于用户设定的最小值;
第二步,从频繁项集中构造置信度不低于用户设置的最小值的规则,生成关联规则。识别或发现所有频繁项集是关联规则发现算法的核心,也是计算量最大的部分。
支持度和置信度这两个阈值是描述关联规则的两个最重要的概念。一个项目组出现的频率称为支持度,它反映了关联规则在数据库中的重要性。置信度衡量关联规则的可信度。如果一条规则同时满足最小支持度(min-support)和最小置信度(min-confidence),则称为强关联规则。
关联规则数据挖掘阶段
第一阶段,必须从原始数据集中找到所有高频项集(LargeItemsets)。高频率是指某个项目组相对于所有记录的频率必须达到一定水平。以包含两个项目 A 和 B 的 2-itemset 为例,如果支持度大于或等于设置的最小支持度(MinimumSupport)阈值,我们可以得到包含 {A,B} 的项目组的支持度,则 {A,B} 称为高频项组。满足最小支持度的k-itemset称为高频k-itemset(Frequentk-itemset),一般表示为Largek或Frequentk。该算法尝试从Largek的item group中生成一个长度大于k的item set Largek+1,直到找不到更长的高频item group。
关联规则挖掘的第二阶段是生成关联规则。从高频项组生成关联规则就是利用上一步中的高频k项组生成规则。在最小置信度的条件阈值下,如果一条规则得到的置信度满足最小可信度,则这条规则称为关联规则。
例如,如果高频k项组{A,B}生成的规则,如果它们的可信度大于或等于最小可信度,则{A,B}称为关联规则。
就“啤酒+纸尿裤”的案例而言,利用关联规则挖掘技术对交易数据库中的记录进行挖掘,首先要设置最小支持度和最小可靠性两个阈值。支持 min-support=5% 和最小置信度 min-confidence=65%。因此,满足要求的关联规则必须同时满足上述两个条件。如果通过挖掘找到的关联规则{diaper, beer}满足以下条件,则接受{diaper, beer}的关联规则。该公式可以描述为:
支持(尿布、啤酒)≥ 5% 和信心(尿布、啤酒)≥ 65%。
其中,本应用示例中Support(尿布、啤酒)≥5%的含义是:在所有交易记录中,至少有5%的交易显示同时购买尿布和啤酒的交易行为。本应用示例中置信度(尿布、啤酒)≥ 65% 表示在所有包含尿布的交易记录中,至少有 65% 的交易将同时购买啤酒。
因此,如果消费者将来购买纸尿裤,我们可以建议该消费者同时购买啤酒。该产品的推荐行为是基于{尿布,啤酒}的关联规则,因为从过去的交易记录来看,它支持“大部分购买尿布的交易会同时购买啤酒”的消费行为。
从上面的介绍也可以看出,关联规则挖掘通常更适合记录中的指标取离散值的情况。
如果原始数据库中的索引值是连续数据,则在关联规则挖掘之前应该进行适当的数据离散化(其实就是某个区间的值对应某个值)。数据的离散化就是数据挖掘。在前面的重要环节中,离散化过程是否合理将直接影响关联规则的挖掘结果。
通过:我世界网络业务
奖励作者,鼓励TA抓紧创作!
欣赏