数据挖掘之Apriori频繁项集挖掘

本文的代码文件原件可以在我们的 "数据臭皮匠" 中输入"第六章1" 拿到

1.基本概念介绍

频繁项集和关联规则的挖掘首先需要了解一些概念, 如支持度, 置信度, 事务,事务集,项,项集, 频繁项集等, 首先介绍下基本的概念定义(以下为笔者的简单化理解, 更严谨的定义请参考书中内容):

首先假设我们有一个由多行多列组成的表格

事务: 可以将事务简单理解为表格的其中一行

事务集:一个表格会有多行, 这个包括多个事务的集合就叫事务集

项:表格中每一行会包括多个值, 每一个值就是一个项

项集:多个项组成一个集合, 这个由多个项组成的集合就叫项集

k项集: 包含k个项的项集为k项集 , 如{I1,I2} 为一个2项集

支持度:假设有A项集, 表格共有N行, 其中包括A项集的有m行, 则绝对支持度为m, 相对支持度为m/N

置信度:表格中, 包括项集A的行有n1行, 同时包括项集A和B的有n2行, 置信度c = n2/n1

频度: 表格中有n1行包括项集A, n1即为A的频度

频繁项集: 如果项集的A的相对支持度满足预设的最小支持度阈值, 则项集A为频繁项集

规则: 假设有A,B两个项集,  由A出现可以推出B也出现(即A=>B) 这就是一条规则

强规则: 同时满足最小支持度阈值和最小置信度阈值的规则为强规则

2.闭频繁项集和极大频繁项集定义

从大型数据集中挖掘频繁项集的主要挑战是: 这种挖掘常常产生大量满足最小支持度阈值的项集, 这是因为如果一个项集是频繁的, 则它的每个子集也是频繁的(回忆下支持度的定义,N行的表格中有m行包括项集A, 则A的相对支持度为m/N)。如果一个包括100个项的项集为频繁项集{a1,a2,...a100} , 则它有100个频繁1项集, C_{100}^2 =4950个频繁2项集{a1,a2}, {a1,a3}, ...{a99,a100} , 因此, 该100项的频繁项集共可以产生 1.27*10^30  个频繁项集, 对于任何计算机, 这个项集都太大了, 大到无法计算和存储。

真超项集:假设X,Y为项集, 如果X是Y的真子项集, 则Y是X的真超项集。(X中每个项都包含在Y中, Y中至少有一个项不包含在X中)

闭的项集: 对于X项集, 如果表格中不存在与其拥有相同支持度的它的真超项集,则项集X为闭的。

闭频繁项集:如果项集X是闭的且频繁的, 则项集X为闭频繁项集。

极大频繁项集:对于频繁项集X,如果表格中不存在它的频繁的超项集, 则X为极大频繁项集

3.Apriori(先验)算法

Apriori算法使用一种称为逐层搜索的迭代方法, 首先通过扫描数据库,累计每个项的计数,并收集频繁1项集的集合。该集合记为L1,然后使用L1找出频繁2项集的集合L2, 使用L2找出L3, 如此下去,直到不能再找到频繁k项集。

为了提高频繁项集逐层产生的效率, 一种称为先验性质的重要性质用于压缩搜索空间。

先验性质:频繁项集的所有非空子集也一定是频繁的,从 L_{k-1} L_{k} 需要两步:连接步剪枝步

3.1 连接步

为找出L_{k} ,通过将L_{k-1} 与自身连接产生候选k项集的集合, 该候选k项集的集合记为C_{k} ,假设l_{1} l_{2} L_{k-1} 中的项集,l_{i} \vert j \vert 表示项集l_{i} 的第j 项。首先将L_{k} 中的所有项集l_{i} 排序,使得l_{i} \vert 1 \vert <l_{i} \vert 2 \vert <...<l_{i} \vert k-1 \vert , 然后执行连接L_{k-1} \times L_{k-1} L_{k-1} 中的项集互相连接, 如果l_{i} l_{j} 的前k-2项都是相同的, 则两者是可以连接的,连接的结果为\left\{ l_{i} \vert 1 \vert,l_{i} \vert 2 \vert,...,l_{i} \vert k-1 \vert,l_{j} \vert k-1 \vert \right\}


该连接过程需要将L_{k-1} 中的元素两两连接, 执行完一遍

3.2 剪枝步

由连接步得到 C_{k} 后, 可以扫描数据库, 计算其中每个候选k项集的计数, 从而确定L_{k} ,但 C_{k} 可能很大, 在遍历它之前可以使用先验性质减少其中候选k项集的数量,即剪枝。剪枝原理为:如果k项集的任意一个k-1项集子集不在L_{k-1} 中,则该k项集一定不是频繁项集,从而可以从C_{k} 中删除。


在书中的P162-P163 有一个比较详细的例子, 读者可以认真看下, 应该可以很好的理解该过程

4.Apriori算法的代码实现

本代码使用书中数据集, 根据Apriori算法逐步实现, 可以和上文中文字介绍做一一比较, 可以看到代码结果和书中一致







结果为


参考文档:

数据挖掘概念与技术(原书第三版)

机器学习实战(人民邮电出版社) 第11章

关注公众号:数据臭皮匠;获得更多精彩内容

作者:范小匠

审核:灰灰匠

编辑:森匠

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • 一、问题描述 频繁模式挖掘搜索给定数据集中反复出现的联系,使用Apriori算法挖掘1M电影数据集中用户喜爱的电影...
    solar_4869阅读 1,807评论 0 0
  • 原文链接:https://blog.csdn.net/u014630431/article/details/789...
    曲钟人散阅读 1,155评论 0 1
  • 1. 关联规则概述 反映一个事物与其他事物之间的相互依存性和关联性。如果两个或者多个事物之间存在一定的关联关系,那...
    七八音阅读 7,247评论 0 5
  • 第一章 绪论 数据:网络空间的任何事物。 结构化数据、半结构化数据与无结构数据:后两者是研究的主要内容。 大数据定...
    扎布多伊阅读 805评论 0 5
  • 设为所有项目的集合,为事务数据库,事物是一个项目子集()。每一个事务具有唯一的事务标识。设是一个由项目构成的集合,...
    阿发贝塔伽马阅读 1,678评论 0 0