频繁模式挖掘

  • 1. 基本概念
  • 2. 主要算法
    • 2.1 Apriori
    • 2.2 FP-growth
    • 2.3 Eclat
  • 3. 模式评估
    • 3.1 相关规则
    • 3.2 模式评估度量
  • 4. 高级模式挖掘

购物篮分析:通过搜索经常一起(或依次)购买的商品的集合,研究顾客的购买习惯。

啤酒-尿布:沃尔玛行分析了多年来的事务数据,发现在周末晚上啤酒与尿布常常被一起购买,因此改变商品摆放方式,将两商品放在一起。结果啤酒与尿布的销售量大增。

1. 基本概念

频繁模式(frequent pattern)是频繁出现在数据集中的模式(如项集、子序列或子结构)。

  • 频繁项集:频繁同时出现在交易数据集中的商品(牛奶、面包)的集合
  • 频繁序列模式:一个子序列,首先购买PC,然后是数码相机,再后是内存卡,频繁出现在购物历史数据库中
  • 频繁结构模式:一个子结构(如子图、子树或子格)频繁出现

规则的支持度(support)和置信度(confidence)是规则兴趣度的两种度量,分别反应了所发现规则的有用性和确定性。

support(A⇒B)=P(A∪B)support(A \Rightarrow B) = P(A \cup B)support(A⇒B)=P(A∪B)confidence(A⇒B)=P(B∣A)=∣A∪B∣∣A∣confidence(A \Rightarrow B) = P(B \mid A) = \frac {\mid A \cup B \mid}{\mid A \mid}confidence(A⇒B)=P(B∣A)=∣A∣∣A∪B∣​

关联规则(association rule)被认为是有趣的(强规则),如果同时满足最小支持度阈值(min_sup)和最小置信度阈值(min_conf)。阈值可以由用户或领域专家设定。

关联规则的两个步骤:

  • 找出所有的频繁项集:每一个项集出现的次数满足最小支持度阈值min_sup。
  • 由频繁项集产生强关联规则:每个规则必须满足最小置信度阈值。
    还可以进一步进行关联分析,发现项集之间具有统计相关性的相关规则

2. 主要算法

2.1 Apriori

Apriori算法由Agrawal和R.Srikant于1994年提出,使用频繁项集性致的先验知识。

先验性质(Apriori property):频繁项集的所有非空子集也一定是频繁的。该性质属于一类特殊的性质,称为反单调性(antimonotone),指如果一个集合不能通过测试,则它所有超集也都不能通过相同的测试。

在第k(k≥2)k(k \geq 2)k(k≥2)次迭代,根据频繁k−1k-1k−1项集形成kkk项集候选,并扫描数据库一次,形成完整的频繁kkk项集的集合LkL_kLk​。
首先,扫描数据库并累计每个项的计数,并统计满足最小支持度的项,找出频繁1项集的集合,记为L1L_1L1​;然后使用L1L_1L1​找出频繁2项集的集合L2L_2L2​;使用L2L_2L2​找出L3L_3L3​,知道不能再找到频繁kkk项集(找出每个LkL_kLk​需要一次数据库的完整扫描)。

TID ItemID
T1 I1,I2,I5
T2 I2,I4
T3 I2,I3
T4 I1,I2,I4
T5 I1,I3
T6 I2,I3
T7 I1,I3
T8 I1,I2,I3,I5
T9 I1,I2,I3

由频繁项集产生关联规则:

  • 对每个频繁项集合lll,产生lll的所有非空子集
  • 对lll的每个非空子集sss,如果∣l∣∣s∣≤min_conf\frac {\mid l \mid}{\mid s \mid} \leq min\_conf∣s∣∣l∣​≤min_conf,则输出规则s⇒(l−s)s \Rightarrow (l-s)s⇒(l−s)

Apriori算法的候选产生-检查方法显著压缩了候选项集的规模,并产生很好的性能。然后可能受两种非平凡开销的影响:

  • 可能仍然需要产生大量候选项集
  • 可能需要重复扫描整个数据库

使用涉及散列和事务压缩计数的变形以及划分数据(对每个分区玩,然后合并结果)和抽样数据(对数据子集挖掘)可以将数据扫描次数减少到1到2次。

2.2 FP-growth

频繁模式增长(Frequent-Pattern Growth)采用分治策略,将发现长频繁模式的问题转换成在较小的条件数据库中递归地搜索一些较短模式,然后连接后缀。

  • 将代表频繁项集的数据库压缩到一颗频繁模式树(FP-Tree),该树仍保留项集的关联信息。
  • 把压缩后的数据库划分成一组条件数据库(特殊类型的投影数据库),每个数据库关联一个频繁项或“模式段”,并分别挖掘每个条件数据库(递归实现)。

2.3 Eclat

Eclat(Equivalence CLAss Transformation)使用垂直数据格式(vertical data fromat)挖掘频繁项集。将给定的、用TID-项集形式的水平数据格式事务数据集变成项-TID-集合形式的垂直数据格式。根据先验性质和附加的优化技术(如diffset),通过取TID-集的交,对变换后的数据集进行挖掘。

3. 模式评估

3.1 相关规则

相关规则(correlation rule)使用支持度、置信度以及相关性度量:
A⇒B[support,confidence,correlation]A \Rightarrow B [support,confidence,correlation]A⇒B[support,confidence,correlation]
其中,相关性使用提升度(lift)来度量:
lift(A,B)=P(A∪B)P(A)P(B)=count(A∪B)count(D)count(A)count(D)count(B)count(D)=P(B∣A)P(B)=P(A∣B)P(A)lift(A,B)=\frac {P(A \cup B)} {P(A)P(B)} = \frac {\frac {count(A \cup B)}{count(D)}}{\frac {count(A)}{count(D)} \frac{count(B)}{count(D)}} = \frac {P(B \mid A)}{P(B)} = \frac {P(A \mid B)}{P(A)}lift(A,B)=P(A)P(B)P(A∪B)​=count(D)count(A)​count(D)count(B)​count(D)count(A∪B)​​=P(B)P(B∣A)​=P(A)P(A∣B)​

lift(A,B)<1lift(A,B)<1lift(A,B)<1,则A和B负相关;lift(A,B)>1lift(A,B)>1lift(A,B)>1,则A和B正相关;lift(A,B)=1lift(A,B)=1lift(A,B)=1,则A和B相互独立,没有相关性,此时P(A∪B)=P(A)P(B)P(A \cup B)=P(A)P(B)P(A∪B)=P(A)P(B)

Contingency table

购买游戏的概率:P(game)=0.6P({game}) = 0.6P(game)=0.6

购买视频的概率:P(video)=0.75P({video}) = 0.75P(video)=0.75

同时购买两者的概率:P(game,video)=0.4P({game,video}) = 0.4P(game,video)=0.4

support(game⇒video)=0.4support(game \Rightarrow video) = 0.4support(game⇒video)=0.4

confidence(game⇒video)=0.40.6=0.66confidence(game \Rightarrow video) = \frac {0.4}{0.6} =0.66confidence(game⇒video)=0.60.4​=0.66

lift(game,video)=0.40.6×0.75=0.89<1lift(game,video) = \frac {0.4}{0.6 \times 0.75}= 0.89 <1lift(game,video)=0.6×0.750.4​=0.89<1,game与video之间为负相关。

3.2 模式评估度量

(1)全置信度(all_confidence) all_conf(A,B)=sup(A∪B)max{sup(A),sup(B)}=min{P(A∣B),P(B∣A)}all\_conf(A,B) = \frac {sup(A \cup B)}{max\{ sup(A), sup(B)\}} = min\{P(A \mid B),P(B \mid A)\}all_conf(A,B)=max{sup(A),sup(B)}sup(A∪B)​=min{P(A∣B),P(B∣A)}
(2)最大置信度(max_confidence)max_conf(A,B)=max{P(A∣B),P(B∣A)}max\_conf(A,B) = max\{P(A \mid B),P(B \mid A)\}max_conf(A,B)=max{P(A∣B),P(B∣A)}
(3)余弦度量 cosine(A,B)=P(A∪B)P(A)×P(B)=sup(A∪B)sup(A)×sup(B)=P(A∣B)×P(B∣A)cosine(A,B) = \frac {P(A \cup B)} {\sqrt{P(A) \times P(B)}} = \frac {sup(A \cup B)}{\sqrt {sup(A) \times sup(B)}} = \sqrt {P(A \mid B) \times P(B \mid A)}cosine(A,B)=P(A)×P(B)​P(A∪B)​=sup(A)×sup(B)​sup(A∪B)​=P(A∣B)×P(B∣A)​
(4)Kulczynski度量 Kulc(A,B)=12(P(A∣B)+P(B∣A))Kulc(A,B) = \frac {1}{2} (P(A \mid B)+P(B \mid A))Kulc(A,B)=21​(P(A∣B)+P(B∣A))

以上4中度量具有以下性质:

  • 仅受条件概率P(A∣B)P(A|B)P(A∣B)和P(B∣A)P(B|A)P(B∣A)的影响,而不受事务总个数的影响。
  • 每个度量值取值在0-1之间,并且值越大,A和B联系越紧密。
  • 不受零事务(null-transaction,指不好喊任何考察项集的事务)影响。


推荐Kluc与不平衡比使用。不平衡比(IR,Imbalance Ratio)评估规则蕴含式中两个项集A和B的不平衡程度,这个比率独立于零事务的个数,也独立于事务的总数。

IR(A,B)=∣sup(A)−sup(B)∣sup(A)+sup(B)−sup(A∪B)IR(A,B)= \frac {\mid sup(A)-sup(B) \mid }{sup(A)+sup(B)-sup(A \cup B)}IR(A,B)=sup(A)+sup(B)−sup(A∪B)∣sup(A)−sup(B)∣​

如果A和B两个方向的蕴含相同,则IR(A,B)=0IR(A,B)=0IR(A,B)=0;否则,两者之差越大,不平衡比就越大。

4. 高级模式挖掘

(1) 基本模式

  • 频繁模式:满足最小支持度阈值的模式(或项的集合)
  • 闭模式:模式ppp是一个闭模式,如果不存在与ppp具有相同支持度的超模式p′p'p′
  • 极大模式:模式ppp是一个极大模式,如果不存在ppp的频繁超模式
  • 不频繁模式(稀有模式):很少出现但非常重要的模式
  • 负模式:揭示项之间的负相关的模式

(2)基于模式所涉及的抽象层
模式或关联规则可能处于高、低,或者多个抽象层的项。如

buys(X,"computer")⇒buys(X,"printer")buys(X,"computer") \Rightarrow buys(X,"printer")buys(X,"computer")⇒buys(X,"printer")buys(X,"laptop_computer")⇒buys(X,"color_laser_printer")buys(X,"laptop\_computer") \Rightarrow buys(X,"color\_laser\_printer")buys(X,"laptop_computer")⇒buys(X,"color_laser_printer")

"computer""computer""computer"处于比"laptop_computer""laptop\_computer""laptop_computer"更高的抽象层,我们称所挖掘的规则由多层关联规则组成。

反之,规则不涉及不同抽象层的项或属性,则该集合包含单层关联规则

(3)基于规则或模式所涉及的维数
如果关联规则或模式中的项或属性只涉及一个维,则它是单维关联规则/模式

如果关联规则或模式涉及两个或多个维,则它是多维关联规则

age(X,"20...29")∧income(X,"52K...58K")⇒buys(X,"iPad")age(X,"20...29") \wedge income(X,"52K...58K") \Rightarrow buys(X,"iPad")age(X,"20...29")∧income(X,"52K...58K")⇒buys(X,"iPad")

(4)基于规则或模式中所处理的值类
如果规则考虑的关系是项是否出现,则它是布尔关联规则

如果规则描述的是量化的项或属性之间的关联,则它是量化关联规则(quantitative assocaition rule)。在这种规则中,项或属性的量化值被划分为区间。

(5)基于挖掘选择性模式的约束或标准
被发现的模式或规则可以是基于约束的(即满足用户指定的约束)、近似的、压缩的、近似匹配的、top−ktop-ktop−k(即用户指定的kkk值的kkk最频繁项集)、感知冗余的top−ktop-ktop−k(即相似的或排除冗余模式的top−ktop-ktop−k模式)等。

(6)基于所挖掘的数据类型和特征

  • 频繁项集
  • 频繁子序列
  • 频繁子结构

Machine Learning-L13-频繁模式挖掘相关推荐

  1. 频繁模式挖掘Frequent Pattern Mining

    频繁模式挖掘(Frequent Pattern Mining): 频繁项集挖掘是通常是大规模数据分析的第一步,多年以来它都是数据挖掘领域的活跃研究主题.建议用户参考维基百科的association r ...

  2. mahout探索之旅---频繁模式挖掘算法与理解

    频繁模式挖掘 (先声明一下,文章内容可能你在网上也能找到,但是我参考了几篇文章的优势,使得算法更容易理解) Apriori算法 Apriori算法是一个经典的数据挖掘算法,Apriori的单词的意思是 ...

  3. 数据挖掘-关联分析频繁模式挖掘Apriori、FP-Growth及Eclat算法的JAVA及C++实现

    (update 2012.12.28 关于本项目下载及运行的常见问题 FAQ见 newsgroup18828文本分类器.文本聚类器.关联分析频繁模式挖掘算法的Java实现工程下载及运行FAQ ) 一. ...

  4. 频繁模式挖掘——概述

    频繁模式挖掘(Frequent Pattern Mining) 基本概念 a. 频繁模式(frequent pattern)是频繁地出现在数据集中的模式(如项集.子序列或子结构). 例如: i. 频繁 ...

  5. 【数据挖掘】频繁模式挖掘及Python实现

    1.理论背景 在美国,著名的沃尔玛超市发现啤酒与尿布总是共同出现在购物车中,于是沃尔玛超市经过分析发现许多美国年轻的父亲下班之后经常要去购买婴儿的尿布,而在购买尿布的同时,他们往往会顺手购买一些啤酒: ...

  6. 数据挖掘(一)频繁模式挖掘算法的实现和对比

    注:参考多篇CSDN文章所得 一.实验内容 巩固频繁模式挖掘的基本算法原理及特点,设计程序,基于不同特征的数据集比较不同方法的优缺点,并基于算法原理和特点分析造成这种现象的原因. 二.算法原理 1 A ...

  7. apriori java_频繁模式挖掘apriori算法介绍及Java实现

    频繁模式是频繁地出如今数据集中的模式(如项集.子序列或者子结构).比如.频繁地同一时候出如今交易数据集中的商品(如牛奶和面包)的集合是频繁项集. 一些基本概念 支持度:support(A=>B) ...

  8. 频繁模式挖掘 Apriori

    原文地址:http://blog.sina.com.cn/s/blog_6a17628d0100v83b.html 1. 挖掘关联规则 1.1   什么是关联规则 一言蔽之,关联规则是形如X→Y的蕴涵 ...

  9. 机器学习1:关联分析及频繁模式挖掘Association rule mining(基于R language)

      关联分析是一种无监督的机器学习方法,常用于知识发现而非预测.本文从以下几个方面进行叙述: 频繁项 Frequent Patterns 关联挖掘方法 Association Mining Metho ...

  10. 【数据挖掘笔记六】挖掘频繁模式、关联和相关性:基本概念和方法

    6.挖掘频繁模式.关联和相关性:基本概念和方法 频繁模式(frequent pattern)是频繁地出现在数据集中的模式. 6.1 基本概念 频繁模式挖掘搜索给定数据集中反复出现的联系,旨在发现大型事 ...

最新文章

  1. Creative Web Typography Styles | Codrops
  2. 分析了10万起诈骗案例,大数据告诉你:2018年骗子更狡猾了
  3. 【数学和算法】初识卡尔曼滤波器(一)
  4. 备赛脱脂经验分享_IEO国际经济学奥林匹克初选宏观备赛经验分享
  5. Qt工作笔记-在ListWidget中多线程检索数据
  6. 03-07 APP 控件交互
  7. 关于OATUH中的AUTHRAZITON CODE和TOKEN的关系,实际上就是这么回事
  8. Eclipse 中 SVN 的设置。
  9. python输入时间_一文搞懂python日期时间处理
  10. 软件架构入门,看这篇就够了···
  11. atomikos 异常报错(java.lang.NoSuchMethodException)
  12. 清除windows 系统中 任意已安装任意版本的 .NET Framework
  13. Php狼找兔子,狼和兔子的故事 - 仙境传说:守护永恒的爱 - 普隆德拉酒馆 - 心动游戏 官方论坛...
  14. 【传统CV】Anovel adaptive morphological approach for degraded character image segmentation
  15. 为你的网站添加 htpps
  16. CCLE(Cancer Cell Line Encyclopedia)数据库使用
  17. 功能测试与项目实战之测试计划(精辟干货)
  18. 用matlab实现任意点图片的旋转_(实验二) --- 图像旋转变换---matlab实现
  19. python 腾讯视频签到_Python处理腾讯视频
  20. idea 启动多个项目 减少内存占用

热门文章

  1. linux iq测试题,ayawawa测试题
  2. Scratch软件编程等级考试一级——20210911
  3. 实践对比google和bing搜索哪个更优
  4. Scratch中设置物体的中心点
  5. 带宽叠加是什么意思?
  6. 用ros3.3中的nth进行带宽叠加
  7. debian linux 关闭防火墙,Debian怎么关闭系统自带防火墙命令!
  8. 开放平台-web实现QQ第三方登录
  9. 根据银行卡号获取logo,并提取图片主题色(小程序版)
  10. U-GAT-IT 翻译