zoukankan      html  css  js  c++  java
  • 关联规则挖掘-Apriori算法

    1. 搞懂关联规则中的几个重要概念:支持度、置信度、提升度;
    2. Apriori 算法的工作原理;
    3. 在实际工作中,我们该如何进行关联规则挖掘。

    一、搞懂关联规则中的几个概念(支持度、置信度、提升度)

    Apriori 算法的核心就是理解频繁项集和关联规则。在算法运算的过程中,还要重点掌握对
    支持度、置信度和提升度的理解。

    超市购物的例子,下面是几名客户购买的商品列表:

    1.1、什么是支持度呢?

    支持度是个百分比,它指的是某个商品组合出现的次数与总次数之间的比例。支持度越
    高,代表这个组合出现的频率越大。


    在这个例子中,我们能看到“牛奶”出现了 4 次,那么这 5 笔订单中“牛奶”的支持度就
    是 4/5=0.8。
    同样“牛奶 + 面包”出现了 3 次,那么这 5 笔订单中“牛奶 + 面包”的支持度就是
    3/5=0.6。

    1.2什么是置信度呢?

    它指的就是当你购买了商品 A,会有多大的概率购买商品 B,在上面这个例子中:
    置信度(牛奶→啤酒)=2/4=0.5,代表如果你购买了牛奶,有多大的概率会购买啤酒?
    置信度(啤酒→牛奶)=2/3=0.67,代表如果你购买了啤酒,有多大的概率会购买牛奶?

    我们能看到,在 4 次购买了牛奶的情况下,有 2 次购买了啤酒,所以置信度 (牛奶→啤酒)=0.5,

    而在 3 次购买啤酒的情况下,有 2 次购买了牛奶,所以置信度(啤酒→牛奶)=0.67。

    所以说置信度是个条件概念,就是说在 A 发生的情况下,B 发生的概率是多少。

    1.3什么是提升度呢?

    我们在做商品推荐的时候,重点考虑的是提升度,因为提升度代表的是“商品 A 的出现,
    对商品 B 的出现概率提升的”程度。

    提升度 (A→B)= 置信度 (A→B)/ 支持度 (B)


    这个公式是用来衡量 A 出现的情况下,是否会对 B 出现的概率有所提升。
    所以提升度有三种可能:
    1. 提升度 (A→B)>1:代表有提升;
    2. 提升度 (A→B)=1:代表有没有提升,也没有下降;
    3. 提升度 (A→B)<1:代表有下降。

     1.4频繁项集 itemsets

    itemsets, rules = apriori(data, min_support=0.5, min_confidence=1)

    就是支持度大于等于最小支持度 (Min Support) 阈值的项集

     1.5关联规则rules

    例如A与B出现的概率很高

    data数据集是列表形式,里面每一个值可以是集合或者列表

    k=1时,单个商品

    例如啤酒

    {1:{('啤酒',):3,(‘尿布’,):5}

    2:{(‘啤酒’,‘尿布’):3,}

    }

    from efficient_apriori import apriori
    # 设置数据集
    data = [('牛奶','面包','尿布'),
    ('可乐','面包', '尿布', '啤酒'),
    ('牛奶','尿布', '啤酒', '鸡蛋'),
    ('面包', '牛奶', '尿布', '啤酒'),
    ('面包', '牛奶', '尿布', '可乐')]
    # 挖掘频繁项集和频繁规则
    itemsets, rules = apriori(data, min_support=0.5, min_confidence=1)
    print(itemsets)
    print(rules)
    data 是个 List 数组类型,其中每个值都可以是一个集合。实际上你
    也可以把 data 数组中的每个值设置为 List 数组类型,比如:
    
    data = [['牛奶','面包','尿布'],
    ['可乐','面包', '尿布', '啤酒'],
    ['牛奶','尿布', '啤酒', '鸡蛋'],
    ['面包', '牛奶', '尿布', '啤酒'],
    ['面包', '牛奶', '尿布', '可乐']]
    # 挖掘频繁项集和关联规则
    itemsets, rules = apriori(data, min_support=0.5, min_confidence=1)
    print(itemsets)
    print(rules)

    最小支持度和最小置信系数,这样我们可以找到支持度大于 50%,置信系数为 1
    的频繁项集和关联规则。



    你能看出来,宁浩导演喜欢用徐峥和黄渤,并且有徐峥的情况下,一般都会用黄渤。

    Apriori原理为:如果某一项集是频繁的,则它的所有子集也是频繁的,反之,如果某一项集是非频繁的,则其所有超集也是非频繁的。

    生成关联规则需要:频繁项集列表、包含频繁项集支持数据的字典、最小可信度。
    
    用更高效的方法来进行挖掘频繁项集:使用FP-growth算法来高效发现频繁项集
    
    互联网在处理庞大的用户数据时就是使用FP-growth算法,来发现频繁项集,找出经常一起出现的词对。

    二、提出问题

    导演是如何选择演员的

    三、获取数据

    https://movie.douban.com/

    在豆瓣电影中输入导演名字

     周星驰

    采用Python,进行爬虫

    1111

  • 相关阅读:
    在Leangoo里怎么修改昵称,简称,头像?
    在Leangoo里怎么找到用户中心?
    Maven相关: An internal error occurred during: "Updating Maven Project". java.lang.NullPointerException
    拦截器与过滤器
    Jfinal基础学习(一)
    mysql中添加一个和root一样的用户用于远程连接
    安卓模拟器安装apk,上网
    简单了解ddos攻击
    eclipse报An error has occurred,See error log for more details. java.lang.NullPointerException错误
    eclipse color themes 让eclipse编码好看点
  • 原文地址:https://www.cnblogs.com/foremostxl/p/12309809.html
Copyright © 2011-2022 走看看