《Python数据挖掘:概念、方法与实践》——2.1节什么是频繁项集

简介:

本节书摘来自华章社区《Python数据挖掘:概念、方法与实践》一书中的第2章,第2.1节什么是频繁项集,作者[美] 梅甘·斯夸尔(Megan Squire),更多章节内容可以访问云栖社区“华章社区”公众号查看

2.1 什么是频繁项集
寻找频繁项集是一种计数活动。但是和从生成数据集中观测到的项目的简单计数(今天我们卖出了80个胡萝卜和100个马铃薯)相比,寻找频繁项集稍有不同。确切地说,为了找出频繁项集,我们要搜索较大的组中共同出现的项集。有时候可以把这些较大的组视为超市交易或者购物篮,整个活动有时候称为市场篮子分析。我们仍然采用超市的类比,在这些篮子中同时出现的物品有时候被视为在超市中购买的产品组合。例如,已知一组超市交易或者篮子,我们可能对篮子中{胡萝卜,马铃薯}的组合是否比{黄瓜、柠檬}的组合更频繁出现感兴趣。
频繁项集挖掘的目的是发现一组交易中共同出现的有趣项目组合。换言之,如果我们发现某些组合在多个篮子中频繁出现,则这种挖掘可能很有实用价值。如果我们发现的频繁项集有些不同寻常或者有些意外,那就更加有趣了。在频繁项集挖掘中令人满意的有趣规则的典范是一再被传颂的都市传奇—“尿布与啤酒”。
2.1.1 都市传奇“尿布与啤酒”
我记得第一次听到这个故事是在1998年的一个数据挖掘研究生课程上。我的教授试图解释频繁项集和关联规则的实用性,他给我们班上的学生讲了如下故事:
“中西部的一家连锁超市欲挖掘频繁项集,以便发现一同购买的有趣商品组合。他们的计划是通过在商店中将这些产品放在一起,优化销售业绩。令他们高兴的是,商店的数据挖掘团队发现,周四下午5点~7点,男人们频繁地购买尿布和啤酒。该商店将一个小的尿布陈列柜移到啤酒通道中,结果两种产品的销售量同时飙升。”
我对这个故事表示怀疑,立刻提出了许多问题。这家商店是如何知道男人购买了这些东西?毕竟,这个故事发生的时候,商店的电子优惠卡或者奖励卡尚未出现。这家商店怎么可能选择合适的尿布放入啤酒通道中间的小展示柜?毕竟,尿布有5种不同的尺寸,至少有3种品牌,而且(我像一位初为人父的男人一样快速学习)—一时兴起地更换某种尺寸或者品牌不是好主意,那可能会带来灾难性的后果。
其他许多人也表示怀疑,有些人甚至试图追寻这一都市传奇的历史。最好的研究范例包括Dan Powers的新闻稿《DSS Resources》,2001年11月10日的那一期(第3卷第23号)专门描写了寻找这个故事真正来源的经过。这篇引人入胜的文章可以在http://www.dssresources. com/newsletters/66.php上找到。此后,英国的《The Register》于2006年也讲述了一个关于这个都市传奇的故事。这篇文章可以在http://www.theregister. co.uk/ 2006/08/15/beer_diapers上找到。
如果你相信这两篇文章讲述的细节,尿布与啤酒的故事则是说明早期数据挖掘可能性的一个示例:使用我们的数据库产品,你可以查询像尿布和啤酒这样不寻常的模式!这一示例以某种方式扩展成了这个“真实发生”的故事,此后又随着事实的延伸,加入各种不同的细节及讲述者的不同动机而演变成一个都市传奇。在多年的传颂中,这个故事的常见变种包括:
沃尔玛进行了这项数据挖掘工作。
零售商利用发现的知识,在周四这天提高啤酒的价格。
购买啤酒的动机是作为照顾孩子的报酬(购买尿布想必是为了孩子)。
零售商对这些模式特别感兴趣,因为尿布是有利可图的商品。
实际上,这一故事的真相并不神奇,但是作为一个励志案例它一直很受欢迎。如果你对频繁项集或者关联规则挖掘进行了研究,就会明白市场篮子分析在现实世界中应用的这个故事是个很恰当的例子。关于关联规则的几乎每本书、每篇文章和每次演示都用到了它。
2.1.2 频繁项集挖掘基础知识
出于我们的目的,我们将把尿布和啤酒的故事当做一个有用的隐喻。具体地说,我们可以使用这个故事中的术语,帮助定义市场篮子分析(或者频繁项集挖掘)中的3个突出部分:
首先,为了进行市场篮子分析,我们需要一个市场。在这个隐喻中,市场就是真正的超市。
其次,我们需要一个篮子。在这个例子中,篮子是一次购物交易。有时候,我们使用“篮子”一词,有时候,你也可能听到“交易”一词。
我们还需要商品(项目)。在这个隐喻中,为了购买要把零售商品放入篮子(或者交易)中。
只要我们有市场、篮子和商品的概念,只要这些东西的表现和我们所描述的相同,我们就很可能有一个可供挖掘频繁项集的数据集。
但是,市场分析的故事中还埋藏着几个假设,这些假设将影响我们是否能够拥有可挖掘的数据集。所以,现在要明确这些假设:
商品和篮子之间应该是多对多的关系。篮子由许多商品组成,一件商品可以出现在许多篮子中。
不考虑商品的数量。不管购买的是6包尿布还是1包尿布,相关的事实都是篮子中有尿布。
某件商品可能不出现在任何一个篮子中(我确定大家都想到了不受欢迎的某一件商品),但是任何篮子都包含至少一件商品。空的篮子是不会让人感兴趣的!
篮子中商品的顺序无关紧要。从这个隐喻的角度看,啤酒或者尿布哪一个先放进购物篮并不重要,哪一个放到传送带上、哪一个先进入收银机也是如此。相反,我们将把购买的商品组合起来,比喻成一次交易或者一个篮子,而不管它们在篮子中的位置。
在市场篮子分析的这个阶段,我们最感兴趣的是找出频繁项集,也就是在篮子中频繁同时出现的项目组。在超市中,人们同时购买的某些商品组合很容易用常识猜出,但是有些组合则较为少见。蛋糕粉和糖霜是可预测的商品组合,但是啤酒和尿布这种组合则不同寻常。
有时候,某些组合因为天气、假日或者地区偏好而比其他组合更可能出现。和任何数据挖掘活动一样,重要的是理解你所研究的领域。在购物篮的例子中,由于不同的食物偏好,可能有广泛的地区性差异。例如:
我生活在美国南部,我们商店中有许多在其他地区不太常见的有趣组合。例如,人们常常同时购买香草威化饼干和橡胶,以便制作流行的甜食香蕉布丁。
在我所在的州,新年的常见食物包括豇豆(一种荚果)和羽衣甘蓝(一种叶菜),所以在接近年底时包含这些商品的篮子可能增加。
我所住的地方很少下雪。每当天气预报报告本地区将要下雪,人们都很惊慌,抢购商店中的所有牛奶和面包。虽然不管什么天气,牛奶和面包都是人们经常购买的商品,但是在下雪的日子里,你可能发现牛奶和面包是更常见的频繁项集。
我们可以用集合标记符表示这些项集:

有两个项目的项集称为2-项集或配对,有3个项目的项集称为3-项集(或者三元组),以此类推。有时候,配对和三元组分别称为“双个体集”和“三个体集”。

相关文章
|
1月前
|
存储 数据采集 监控
Python定时爬取新闻网站头条:从零到一的自动化实践
在信息爆炸时代,本文教你用Python定时爬取腾讯新闻头条,实现自动化监控。涵盖请求、解析、存储、去重、代理及异常通知,助你构建高效新闻采集系统,适用于金融、电商、媒体等场景。(238字)
310 2
|
1月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
1月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
1141 1
|
1月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
372 0
|
1月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
301 0
|
1月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
2月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
2月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
389 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
2月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
323 1
|
2月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南

推荐镜像

更多