关联规则算法(Apriori/Fp-growth)在Python上的实现

定义

       关联分析又称关联挖掘,就是在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性或因果结构。可从数据库中关联分析出形如“由于某些事件的发生而引起另外一些事件的发生”之类的规则。如“67%的顾客在购买啤酒的同时也会购买尿布”,因此通过合理的啤酒和尿布的货架摆放或捆绑销售可提高超市的服务质量和效益。又如“‘C语言’课程优秀的同学,在学习‘数据结构’时为优秀的可能性达88%”,那么就可以通过强化“C语言”的学习来提高教学效果。

相关名词

示例1:如下是一个超市几名顾客的交易信息。

 

TID Items
001 Cola, Egg, Ham
002 Cola, Diaper, Beer
003 Cola, Diaper, Beer, Ham
004 Diaper, Beer

TID代表交易流水号,Items代表一次交易的商品。

我们对这个数据集进行关联分析,可以找出关联规则{Diaper}→{Beer}。
  它代表的意义是:购买了Diaper的顾客会购买Beer。这个关系不是必然的,但是可能性很大,这就已经足够用来辅助商家调整Diaper和Beer的摆放位置了,例如摆放在相近的位置,进行捆绑促销来提高销售量。

  1、事务:每一条交易称为一个事务,例如示例1中的数据集就包含四个事务。
  2、项:交易的每一个物品称为一个项,例如Cola、Egg等。
  3、项集:包含零个或多个项的集合叫做项集,例如{Cola, Egg, Ham}。
  4、k−项集:包含k个项的项集叫做k-项集,例如{Cola}叫做1-项集,{Cola, Egg}叫做2-项集。
  5、支持度计数:一个项集出现在几个事务当中,它的支持度计数就是几。例如{Diaper, Beer}出现在事务 002、003和004中,所以它的支持度计数是3。
  6、支持度:支持度计数除于总的事务数。例如上例中总的事务数为4,{Diaper, Beer}的支持度计数为3,所以它的支持度是3÷4=75%,说明有75%的人同时买了Diaper和Beer。
  7、频繁项集:支持度大于或等于某个阈值的项集就叫做频繁项集。例如阈值设为50%时,因为{Diaper, Beer}的支持度是75%,所以它是频繁项集。
  8、前件和后件:对于规则{Diaper}→{Beer},{Diaper}叫做前件,{Beer}叫做后件。
  9、置信度:对于规则{Diaper}→{Beer},{Diaper, Beer}的支持度计数除于{Diaper}的支持度计数,为这个规则的置信度。例如规则{Diaper}→{Beer}的置信度为3÷3=100%。说明买了Diaper的人100%也买了Beer。

       10、提升度:置信度与后件发生概率(后件的支持度计数/事务总数)的比值,大于1表示有效关联规则,等于1表示前件与后件独立互不影响,小于表示无效关联规则。
  11、强关联规则:大于或等于最小支持度阈值和最小置信度阈值的规则叫做强关联规则。关联分析的最终目标就是要找出强关联规则。

案例

以下是某餐厅菜品订单事务集,每一行代表一条事务,挖掘其中菜品之间的联系

关联规则算法(Apriori/Fp-growth)在Python上的实现_第1张图片

python代码

需要Apriori/Fp-growth的matlab或python代码请根据文章最后面的信息联系我。

运行结果

关联规则算法(Apriori/Fp-growth)在Python上的实现_第2张图片

       第一条输出结果解释:客户同时点菜品3和菜品2的概率是30%,点了菜品3再点菜品2的概率是100%,lift大于1,这是一条有效规则。

        最后一条输出结果解释:客户同时点菜品2、菜品4和菜品1的概率是30%,点了菜品2和菜品4再点菜品1的概率是60%,但lift小于1,这是一条无效规则。

       知道了这些可以对客户进行智能推荐,既能增加销量又能满足客户需求。

如果对你有帮助,请点下赞,予人玫瑰手有余香!

时时仰望天空,理想就会离现实越来越近!

 

 

 

 

你可能感兴趣的:(python,机器学习)