第四章 数据上的关联规则

数据挖掘相对于机器学习范围更广泛

Hadoop是一种频繁读取的方式,是一种需要不断读写的过程。

Apriori算法时间复杂度和空间复杂度都相对较高

电商推荐:协同过滤

根据用户行为相似性推荐商品

learing to rate

1、关联规则简介

  • 数据挖掘是一项从大量的记录数据中提取有价值的、人们感兴趣的知识,这些知识是隐含的、事先未知的有用信息,提取的知识一般可
    表示为概念(Concepts)、规则(Rules)、规律(Regular ides)、模式(Patterns)等形式。

  • 关联规则是当前数据挖掘研究的主要算法之一,它反映一个事物与其他事物之间的相互依存性和关联性。如果两个或者多个事物之间存在一定的关联关系,那么,其中一个事物就能够通过其他事物预测到。

  • 典型的关联规则发现问题是对超市中的货篮数据(Market Basket)进行分析。通过发现顾客放货篮中的不同商品之间的关系来分析顾客的购买习惯。

关联规则:发现数据中的规律

  • 超市中什么产品会一起购买?(组合推荐)
  • 顾客在买了一台PC之后下一步会购买?(搭配推荐)
  • 哪种DNA对这种药物敏感?
  • 我们如何自动对Web文档进行分类?
  • 论文查重?

2、关联规则的基本概念

  • 设I={i1, i2,…, im}为所有项目的集合,D为事务数据库,事务T是一个项目子集(T⊆I)。每一个事务具有唯一的事务标识TID。设A是一个由项目构成的集合,称为项集。事务T包含项集A,当且仅当A⊆T。如果项集A中包含k个项目,则称其为k项集。

  • 项集A在事务数据库D中出现的次数占D中总事务的百分比叫做项集的支持度。如果项集的支持度超过用户给定的最小支持度阈值,就称该项集是频繁项集(或频集)。

  • 关联规则是形如X⇒Y的逻辑蕴含式,其中X⊂I,Y⊂I,且X∩Y=∅

  • 如果事务数据库D中有s%的事务包含X∪Y,则称关联规则X⇒Y的支持度为s%

  • 关联规则的信任度为support (X∪Y)/support (X)

也就是:

support (X⇒Y)=P (X ∪Y)

confidence (X⇒Y)=P (Y | X)

强关联规则

  • ID 购买的商品
  • 2000 A,B,C
  • 1000 A,C
  • 4000 A,D
  • 5000 B,E,F

例:设最小支持度为50%, 最小可信度为 50%, 则可得到

  • 支持度:{X,Y}同时出现的概率
  • 置信度:购买X的人,同时购买Y的概率
  • A ⇒ C (50%, 66.6%)
  • C ⇒ A (50%, 100%)

3、关联规则挖掘算法

  • Agrawal等人提出的AIS,Apriori和AprioriTid
  • Cumulate和Stratify,Houstsma等⼈提出的SETM
  • Park等人提出的DHP
  • Savasere等人的PARTITION
  • Han等人提出的不生成候选集直接生成频繁模式FPGrowth
  • 其中最有效和有影响的算法为Apriori,DHP和PARTITION,FPGrowth。

Apriori算法

  • Apriori算法命名源于算法使用了频繁项集性质的先验(Prior)知识。
  • Apriori算法将发现关联规则的过程分为两个步骤:
    • 通过迭代,检索出事务数据库中的所有频繁项集,即支持度不低于用户设定的阈值的项集
    • 利用频繁项集构造出满组用户最小信任度的规则。
  • 挖掘或识别出所有频繁项集是该算法的核心,占整个计算量的大部分。

Apriori的性质:

  • 2条性质
    • 性质1:频繁项集的所有非空子集必为频繁项集。
    • 性质2:非频繁项集的超集一定是非频繁的。

Apriori的步骤:

  • 连接步:为找Lk ,通过将Lk-1与自身连接产生候选k项集的集合
  • 剪枝步:Ck是Lk 的超集,也就是说,Ck的成员可以是也可以不是频繁的,但所有的频繁k项集都包含在Ck中。任何非频繁的(k-1)项集都不是频繁k项集的子集。

Apriori算法实例

现有A、B、C、D、E五种商品的交易记录表,试找出三种商品关联销售情况(k=3),最小支持度=50%
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Apriori算法的不足

  • Ck中的项集是用来产生频集的候选集.
  • 最后的频集Lk必须是Ck的一个子集。
    • Ck中的每个元素需在交易数据库中进行验证来决定其是否加入Lk
  • 验证过程是性能瓶颈
    • 交易数据库可能非常大
    • 比如频集最多包含10个项,那么就需要扫描交易数据库10遍
    • 需要很大的I/O负载。

4、FP-tree算法(不用生成候选集)

  • 2000年,Han等提出了一个称为FP-tree的算法。FP-tree算法只进行2次数据库扫描。
    • no候选集
    • 直接压缩数据库成一个频繁模式树
    • 通过这棵树生成关联规则。
  • FP-tree两个主要步骤
    • ①利用事务数据库中的数据构造FP-tree;
    • ②从FP-tree中挖掘频繁模式。

步骤1:构造 FP-tree树

具体过程:

  1. 扫描数据库一次,得到频繁1-项集

  2. 把项按支持度递减排序

  3. 再一次扫描数据库,建立FP-tree

FP-tree 结构的好处

  • 完备
    • 不会打破交易中的任何模式
    • 包含了频繁模式挖掘所需的全部信息
  • 紧密
    • 去除不相关信息—不包含⾮频繁项
    • 支持度降序排列: ⽀持度⾼的项在FP-tree中共享的机会也高
    • 决不会比原数据库大(如果不计算树节点的额外开销)

FP-tree算法的一个例子

事物数据库 :
在这里插入图片描述

第一步、构造FP-tree

扫描事务数据库得到频繁1-项目集F
在这里插入图片描述

定义minsup=20%,即最小支持度为2

重新排列F,把项按支持度递减排序:
在这里插入图片描述

重新调整事务数据库

在这里插入图片描述

创建根结点和频繁项目表

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

一直加到第九个事务
在这里插入图片描述

第二步、FP-growth

  • 首先考虑I5,得到条件模式基
  • <(I2,I1:1)>、<I2,I1,I3:1>
  • 构造条件FP-tree
    在这里插入图片描述

得到I5频繁项集:{{I2,I5:2},{I1,I5:2},{I2,I1,I5:2}}

  • 接着考虑I4,得到条件模式基

  • <(I2,I1:1)> <(I2:1)>

  • 构造条件FP-tree
    在这里插入图片描述

  • 得到I4频繁项集:{{I2,I4:2}}

  • 然后考虑I3,得到条件模式基

  • <(I2,I1:2)>、<(I2:2)>、 <(I1:2)>

  • 构造条件FP-tree
    在这里插入图片描述

  • 由于此树不是单一路径,因此需要递归挖掘I3

  • 递归考虑I3,此时得到I1条件模式基

  • <(I2:2)>,即I1I3的条件模式基为<(I2:2)>

  • 构造条件FP-tree
    在这里插入图片描述

  • 得到I3的频繁项目集{{I2,I3:4},{I1,I3:4},{I2,I1,I3:2}}

  • 最后考虑I1,得到条件模式基

  • <(I2:4)>

  • 构造条件FP-tree
    在这里插入图片描述

  • 得到I1的频繁项目集{{I2,I1:4}

FP - tree 算法的优缺点

  • 优点
    • FP-tree 算法只需对事务数据库进行二次扫描
    • 避免产生的大量候选集.
  • 缺点
    • 要递归生成条件数据库和条件FP-tree,所以内存开销⼤
    • 只能用于挖掘单维的布尔关联规则.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
关联规则挖掘是数据挖掘中的一种重要技术,用于发现数据集中的频繁项集和关联规则。其基本思想是通过寻找频繁项集来发现事务数据中的关联规则,即找到在同一事务中经常出现的项集,然后从这些频繁项集中挖掘出关联规则。以下是关联规则挖掘的基本流程: 1. 找出频繁项集:扫描数据集,找出满足最小支持度要求的所有项集,这些项集称为频繁项集。 2. 生成关联规则:对于每个频繁项集,生成其所有非空子集,每个子集都可以作为关联规则的前件,而剩余的项则作为关联规则的后件。 3. 计算关联规则的支持度和置信度:计算每个关联规则的支持度和置信度,支持度表示数据集中包含该规则的事务数占总事务数的比例,置信度表示包含前件和后件的事务数占包含前件的事务数的比例。 4. 根据置信度筛选规则:根据置信度筛选出满足最小置信度要求的关联规则。 以下是关联规则挖掘的两种常用算法: 1. Apriori算法:Apriori算法是一种基于频繁项集的挖掘算法,其核心思想是利用频繁项集的性质,从而避免对所有可能的项集进行计算。Apriori算法的基本流程是:首先找出所有的频繁1项集,然后利用频繁1项集生成频繁2项集,再利用频繁2项集生成频繁3项集,以此类推,直到不能再生成新的频繁项集为止。 2. FP树算法:FP树算法是一种基于树形结构的挖掘算法,其核心思想是将数据集压缩成一棵FP树,然后利用FP树挖掘频繁项集。FP树算法的基本流程是:首先构建FP树,然后利用FP树挖掘频繁项集。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安替-AnTi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值