当前位置:   article > 正文

python数据分析:关联规则学习(Association rule learning)_fpgrowth associationrules

fpgrowth associationrules

何为关联规则学习

关联规则学习是一种基于规则的机器学习方法,用于发现大型数据库中变量之间的有趣关系。它旨在使用一些有趣的度量来识别在数据库中发现的强规则。这种基于规则的方法在分析更多数据时也会生成新规则。假设数据集足够大,最终目标是帮助机器模拟人类大脑的特征提取和新未分类数据的抽象关联能力。

基于强有力规则的概念,Rakesh Agrawal,TomaszImieliński和Arun Swami介绍了关联规则,用于发现超市中销售点(POS)系统记录的大规模交易数据中产品之间的规律性。例如,在超市的销售数据中发现,如果顾客一起购买洋葱和土豆,他们也可能会购买汉堡肉。这些信息可以用作关于营销活动的决策的基础,例如促销定价或产品放置。

除了市场购物篮分析的上述示例之外,目前在许多应用领域中使用关联规则,包括Web使用挖掘,入侵检测,连续生产和生物信息学。与序列挖掘相反,关联规则学习通常不考虑事务内或跨事务的项目顺序。

常用的关联算法包括

Apriori、FP-Growth、PrefixSpan、SPADE、AprioriAll、Apriori-Some等。

关联算法评估规则

频繁规律与有效规则:

  • 频繁规则指的是关联结果中支持度和置信度都比较高的规则
  • 有效规则指关联规则真正能促进规则中的前后项提升

假如,数据集有1000条事务数据用来显示购买苹果和香蕉的订单记录,其中有600个客户的订单记录中包含了苹果,有800个客户的订单记录中包含了香蕉,而有400个客户同时购买了苹果和香蕉。假如我们产生了一条关联规则,用来表示购买了苹果的客户中还有很多人购买香蕉,那么该规则可以表示为:苹果→香蕉。
支持度:support = 400/1000= 40%
置信度:confidence = 400/600=67%
如果只是看支持度和置信度,这个规则似乎非常显著的说明了苹果和香蕉之间的频繁关系,买了苹果的客户中有67%的人也会一起购买香蕉。但是,如果忽略购买苹果的事实,只购买香蕉的客户比例会高达是80%(800/1000)!这显示了购买苹果这种条件不会对购买香蕉产生积极的促进作用,反而会阻碍其销售,苹果和香蕉之间是一种负相关的关系。因此,只看支持度和置信度将无法完整体现规则的有效性,这里我们使用提升度来有效应对该问题。

提升度(Lift)指的是应用关联规则和不应用产生结果的比例。在本示例中,Lift=(400)/(400)=1(有关联规则的前提下只有400个客户会购买香蕉,没有关联规则的前提下会有400个购买香蕉)。当提升度为1时,说明应用关联规则和不应用关联规则产生相同的结果;当提升度大于1时,说明应用关联规则比不应用关联规则能产生更好的结果;当提升度小于1时,关联规则具有负相关的作用,该规则是无效规则。

做关联规则评估时,需要综合考虑支持度、置信度和提升度三个指标,支持度和置信度的值越大越好。

提升度低的负相关关联其实也是一种关联模式,也是可以通过避免的方式利用这种关联:不将互斥商品放在一个组合中,不将互斥广告投放整合投放,不将互斥关键字提供个客户,不将互斥信息流展现给客户。

运营分析中关联分析的使用

  • 网站页面关联分析:帮助我们找到用户在不同页面之间的频繁访问关系,以分析用户特定的页面浏览方式,这样可以帮助了解不同页面之间的分流和引流情况,可用于不同页面间的推荐已达到提高转化率。
  • 广告流量关联分析:针对站外广告投放渠道用户浏览或点击的行为分析,该分析主要用于了解用户的浏览和点击广告的规则。这种站外广告曝光和点击的关联分析可以为广告客户的精准投放提供参考。
  • 用户关键字搜索:通过分析用户在站内的搜索关键字了解用户真实需求的。通过对用户搜索的关键字的关联分析,可以得到类似于搜索了iPhone又搜索了三星,这种关联可以用于搜索推荐、搜索关联等场景,有助于改善搜索体验,提高客户的目标转化率。
  • 不同场景发生,这种模式可以广泛用于分析运营中关注的要素,例如用户浏览商品和购买商品的关联,关注产品价格和购买产品价格的关联,加入购物车与购买的关联。这种关联可以找到用户在一个事件中不同行为之间的关联,可以用来挖掘用户的真实需求,有针对性的对当前用户进行个性化推荐,同时也对定价策略有参考价值。
  • 相同场景发生,用户在同一个页面中点击不同功能、选择不同的应用。这种关联可以用于分析用户使用功能的先后顺序,有利于做产品优化和用户体验提升;对于不同产品功能组合、开发和升级有了更加明确地参考方向,便于针对永辉习惯性操作模式做功能迭代;同时针对用户频繁查看和点击的内容,可以采用打包、组合、轮转等策略,帮助客户查找,同时增加内容曝光度和用户体验。

python代码实现

apriori模块:

# -*- coding: utf-8 -*-

from numpy import *
import re

def createData(fileName):
    mat = []
    req = re.compile(r',')
    fr = open(fileName)
    content = fr.readlines()
    for line in content:
        tem = line.replace('\n','').split(',')
        mat.append(tem)
    return mat

def loadDataSet():
    return [[1, 3, 4], [2, 3, 5], [1, 2, 3, 5], [2, 5]]

# C1 是大小为1的所有候选项集的集合
def createC1(dataSet):
    C1 = []
    for transaction in dataSet:
        for item in transaction:
            if not [item] in C1:
                C1.append([item]) #store all the item unrepeatly

    C1.sort()
    #return map(frozenset, C1)#frozen set, user can't change it.
    return list(map(frozenset, C1))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/807217
推荐阅读
相关标签
  

闽ICP备14008679号