关联规则挖掘是一种用于在大型数据集中发掘变量之间隐含关系的技术。它是数据挖掘与机器学习中的常用方法,应用广泛,涵盖购物篮分析 、客户细分与欺诈检测等多个领域。
本文将带您了解如何在 Python 中进行关联规则挖掘,包括典型用例、常见算法以及具体实现。我们将从关联规则挖掘及其应用的简要概述开始,随后深入介绍算法细节及其在 Python 中的实现,最后以要点总结收尾。
What is Association Rule Mining?
关联规则挖掘是一种用于识别大型数据集中模式的技术。它通过寻找数据中变量之间的关系,并基于这些关系进行预测或决策。关联规则挖掘的目标,是找出能够描述数据集中不同项目之间关系的规则。
例如,考虑一家杂货店的交易数据集。关联规则挖掘可用于识别经常被一起购买的商品之间的关系。比如,规则 "If a customer buys bread, they are also likely to buy milk"(如果顾客买了面包,他们也很可能会买牛奶)就是可以从该数据集中挖掘出的关联规则。我们可以利用此类规则来指导门店布局、商品陈列和营销活动的决策。
关联规则挖掘通常通过算法来分析数据并识别关系。这些算法可能基于统计方法或机器学习技术。生成的规则通常以 "if-then" 语句表示,其中 "if" 部分表示前件(被检验的条件),"then" 部分表示后件(当条件成立时发生的结果)。
关联规则挖掘在数据分析中非常重要,因为它能帮助用户发现数据中不易被直观看出的模式或关系。通过识别变量之间的关联,关联规则挖掘可以帮助用户理解不同变量之间的联系,以及这些变量可能如何相互关联。
这对于多种用途都很有价值,例如识别市场趋势、检测欺诈行为或洞察客户行为。关联规则挖掘也可作为其他类型数据分析(如结果预测或识别关键驱动因素)的起点。总体而言,关联规则挖掘是提炼洞见、理解数据底层结构的有力工具。
Use Cases of Association Rule Mining:
关联规则挖掘常用于多种应用场景,较常见的包括:
Market Basket Analysis
最知名的应用之一是购物篮分析。这涉及分析顾客同时购买的商品,以了解其购买习惯与偏好。
例如,零售商可能通过关联规则挖掘发现,购买纸尿裤的顾客也很可能购买婴儿配方奶粉。我们可以利用这些信息来优化商品陈列与促销策略,从而提升销量。
若想进一步了解购物篮分析,请参阅我们的R 语言购物篮分析教程 。
Customer Segmentation
关联规则挖掘也可用于基于购买习惯对客户进行细分。
例如,公司可能通过关联规则挖掘发现,购买某些类别产品的客户更可能偏年轻。同样地,他们也可能发现,购买特定产品组合的客户更可能集中在某些地理区域。
我们可以据此为特定客户细分制定营销活动和个性化推荐。想进一步了解该主题,请查看我们的Python 入门客户细分教程 。
Fraud Detection
您也可以使用关联规则挖掘来检测欺诈行为。例如,信用卡公司可能利用关联规则挖掘识别欺诈交易的模式,如在短时间内来自同一商户的多笔消费。
随后,我们可以利用这些信息标记潜在的欺诈活动,并采取预防措施以保护客户。您可在我们的银行业中的数据科学:欺诈检测 博文中进一步了解其工作原理。
Social network analysis
多家公司利用关联规则挖掘识别社交媒体数据中的模式,以支持社交网络分析。
例如,对 Twitter 数据的分析可能揭示:发布某一特定主题推文的用户,也很可能会发布其他相关主题的推文,这有助于识别网络中的群组或社群。
Recommendation systems
关联规则挖掘可用于根据客户的过往购买或浏览历史,推荐其可能感兴趣的商品。例如,音乐流媒体服务可能利用关联规则挖掘,基于用户的收听历史向其推荐新的艺人或专辑。
通过我们的Python 推荐系统教程 ,您可以深入学习如何构建多种执行此功能的模型。
Association Rule Mining Algorithms
用于关联规则挖掘的算法有多种,常见的包括:
Apriori algorithm
Apriori 算法 是应用最广泛的关联规则挖掘算法之一。其工作流程为:首先识别数据集中的频繁项集(在一定数量的交易中出现的项集),然后基于这些频繁项集生成关联规则,即形如 "if item A is purchased, then item B is also likely to be purchased." 的陈述。Apriori 算法采用自底向上的方法,从单个项目开始,逐步构建更复杂的项集。
FP-Growth algorithm
FP-Growth(频繁模式增长)算法是另一种流行的关联规则挖掘算法。它通过构建一种称为 FP-tree 的树状结构来编码数据集中的频繁项集,然后以与 Apriori 类似的方式使用 FP-tree 生成关联规则。FP-Growth 通常比 Apriori 更快,尤其在处理大型数据集时。
ECLAT algorithm
ECLAT(等价类聚类与自顶向下格遍历)算法是 Apriori 的一种变体,采用自顶向下而非自底向上的方法。它根据支持度(出现于多少笔交易)将项目划分为等价类,然后通过在类格结构中组合这些等价类来生成关联规则。它是 Apriori 更高效且更具可扩展性的版本。
Apriori Algorithm
Apriori 算法已成为频繁项集挖掘与关联规则学习中使用最广的算法之一,广泛应用于购物篮分析、推荐系统与欺诈检测等场景,并启发出许多用于类似任务的其他算法。
Algorithm Details
Apriori 算法首先设置最小支持度阈值。即某个项目要被视为频繁项集,必须在数据库中至少出现的次数。随后,算法会剔除不满足最小支持度阈值的候选项集。
接着,算法会生成所有频繁项集的可能组合,并统计每种组合在数据库中出现的次数。然后,算法基于这些频繁项集组合生成关联规则。
关联规则是形如 "if item A is present in a transaction, then item B is also likely to be present" 的陈述。关联强度通过置信度来衡量,即在 A 出现的前提下,B 出现的概率。
随后,算法会过滤掉未达到最小置信度阈值的关联规则。这些满足阈值的规则称为强关联规则。最后,算法输出强关联规则列表。
Apriori 采用“自底向上”的方法,从单个项目开始,随着对频繁模式的搜索逐步组合成更大的项集。它还使用“删除-重标记”的思路高效剪枝,通过剔除不频繁的项集来收缩搜索空间。
Pros:
Apriori 相对简单,易于理解。
能有效识别大型数据集中的频繁模式与关联规则。
通过剔除不频繁项集来有效剪枝,从而降低算法的计算复杂度。
已在多种应用中被广泛使用与验证,算法成熟可靠。
Cons:
对超大规模数据集不太适用,因其计算复杂度会随数据规模呈指数增长。
在包含大量稀有项目或低频交易的数据集中,识别模式的效果可能不佳。
对最小支持度与最小置信度阈值较为敏感,这会影响结果质量。
可能生成大量关联规则,导致结果难以解读。
若想更深入学习 Apriori 算法,请查看 DataCamp 上这篇精彩的购物篮分析 教程。
Metrics for Evaluating Association Rules
在关联规则挖掘中,通常使用多种指标来评估所发现关联规则的质量与重要性。
这些指标可用于评估关联规则的质量与重要性,并据此为给定应用选择最相关的规则。需要注意的是,合适的指标选择取决于具体应用的目标与需求。
解读关联规则挖掘指标的结果,需要理解每个指标的含义与影响,以及如何利用它们评估所发现规则的质量与重要性。以下给出主要指标的解读指南:
Support
支持度衡量某个项目或项集在数据集中出现的频率。计算方法为:包含该项目(集)的交易数,除以数据集中的交易总数。较高的支持度表示该项目(集)在数据集中较常见,较低支持度则表示其较为罕见。
Confidence
置信度衡量两项之间关联的强度。计算方法为:同时包含这两项的交易数,除以包含第一项的交易数。较高的置信度表明第一项的出现对第二项的出现具有较强的预测性。
Lift
提升度在考虑两项各自出现频率的前提下,衡量它们之间关联的强度。其计算方式为:该关联的置信度,除以第二项的支持度。提升度用于将两项之间的关联强度,与在二者独立情况下的期望强度进行比较。
当提升度大于 1,表示两项之间的关联强于在各自频率下的独立期望,这表明该关联可能具有意义,值得进一步分析。提升度小于 1 则表示关联弱于期望,可能不太可靠或不够显著。
Python and R Libraries for Association Rule Mining
在 R 与 Python 中,有多种可用于关联规则挖掘的库:
R libraries
arules :用于在 R 中挖掘关联规则与频繁项集的包。它提供读取与处理事务数据的函数,以及生成关联规则并评估其质量的功能。
arulesViz :用于在 R 中可视化关联规则与频繁项集的包。它提供绘图与制图函数,帮助理解与解释关联规则挖掘的结果。
arulesSequences :用于在 R 中从序列数据挖掘关联规则的包。它提供读取与处理序列数据的函数,以及生成关联规则并评估其质量的功能。
Python libraries
apyori :在 Python 中实现 Apriori 算法的库。提供读取与处理事务数据、生成关联规则并评估其质量的函数。
mlxtend :在 Python 中实现多种机器学习算法与工具的库,包括关联规则挖掘。提供读取与处理事务数据、生成关联规则并评估其质量的函数。
PyCaret :PyCaret 是一个开源、低代码的 Python 机器学习库,用于自动化机器学习流程。它在 mlxtend 之上提供 Apriori 算法的便捷封装。
Implementing Association Rules in Python
我们将使用 PyCaret 在 Python 中实现关联规则。首先安装 PyCaret,然后导入示例数据集。
Install PyCaret
您可以使用 pip 安装 pycaret。
```
pip install pycaret
```技术支持
Dataset
我们将从 pycaret 的仓库加载示例数据集。该数据集来自法国一家零售门店的交易数据,包含用于标识交易的发票号(Invoice number)与商品描述(Description)。在从该数据集中挖掘规则时,我们只需关注这两项。
```
from pycaret. datasets import get_data
data = get_data( 'france' )
```技术支持
Setup
第一步是导入 `arules` 模块,并通过定义 data、transaction_id 和 item_id 来初始化 `setup` 函数。
```
from pycaret. arules import *
s = setup( data = data, transaction_id = 'InvoiceNo' , item_id = 'Description' )
```技术支持
setup 函数的输出
Create Model
```
The `create_model` function runs the algorithm and return the rules in pandas DataFrame based on the selection parameters defined in the `create_model`. In this example we have used selection metric `confidence` with threshold and support of 0.5 .
arules = create_model( metric= 'confidence' , threshold= 0.5 , min_support= 0.05 )
```技术支持
create_model 函数的输出
基于 `create_model` 函数中设定的阈值,我们共创建了 45 条规则。上述输出显示了按置信度从高到低排序的前 10 条规则。
Plot Rules
使用 PyCaret 的 `plot_model` 函数可视化并分析规则。
```
plot_model( arules, plot = '2d' )
```技术支持
```
plot_model( arules, plot = '3d' )
```技术支持
查看完整 Notebook 以便跟进学习。
Conclusion
关联规则挖掘是数据分析中的一项重要工具,能够有力地发现数据中的模式与关系。在 Python 与 R 中,有多种可用于实现关联规则挖掘的库,既提供多种算法的开箱即用实现,也提供结果可视化的选项。
您可以在多种情境下使用关联规则挖掘来提炼洞见,并理解数据的底层结构。但务必选择合适的算法,并设定恰当的参数(如最小支持度与置信度阈值),以获得有意义且准确的结果。
如果您希望更深入地学习该主题并了解更多关联规则挖掘内容,可以查看以下课程:
关联规则挖掘是一种用于在大型数据集中发掘变量之间隐含关系的技术。它是数据挖掘与机器学习中的常用方法,应用广泛,涵盖购物篮分析、客户细分与欺诈检测等多个领域。
本文将带您了解如何在 Python 中进行关联规则挖掘,包括典型用例、常见算法以及具体实现。我们将从关联规则挖掘及其应用的简要概述开始,随后深入介绍算法细节及其在 Python 中的实现,最后以要点总结收尾。
What is Association Rule Mining?
关联规则挖掘是一种用于识别大型数据集中模式的技术。它通过寻找数据中变量之间的关系,并基于这些关系进行预测或决策。关联规则挖掘的目标,是找出能够描述数据集中不同项目之间关系的规则。
例如,考虑一家杂货店的交易数据集。关联规则挖掘可用于识别经常被一起购买的商品之间的关系。比如,规则 "If a customer buys bread, they are also likely to buy milk"(如果顾客买了面包,他们也很可能会买牛奶)就是可以从该数据集中挖掘出的关联规则。我们可以利用此类规则来指导门店布局、商品陈列和营销活动的决策。
关联规则挖掘通常通过算法来分析数据并识别关系。这些算法可能基于统计方法或机器学习技术。生成的规则通常以 "if-then" 语句表示,其中 "if" 部分表示前件(被检验的条件),"then" 部分表示后件(当条件成立时发生的结果)。
关联规则挖掘在数据分析中非常重要,因为它能帮助用户发现数据中不易被直观看出的模式或关系。通过识别变量之间的关联,关联规则挖掘可以帮助用户理解不同变量之间的联系,以及这些变量可能如何相互关联。
这对于多种用途都很有价值,例如识别市场趋势、检测欺诈行为或洞察客户行为。关联规则挖掘也可作为其他类型数据分析(如结果预测或识别关键驱动因素)的起点。总体而言,关联规则挖掘是提炼洞见、理解数据底层结构的有力工具。
Use Cases of Association Rule Mining:
关联规则挖掘常用于多种应用场景,较常见的包括:
Market Basket Analysis
最知名的应用之一是购物篮分析。这涉及分析顾客同时购买的商品,以了解其购买习惯与偏好。
例如,零售商可能通过关联规则挖掘发现,购买纸尿裤的顾客也很可能购买婴儿配方奶粉。我们可以利用这些信息来优化商品陈列与促销策略,从而提升销量。
若想进一步了解购物篮分析,请参阅我们的R 语言购物篮分析教程。
Customer Segmentation
关联规则挖掘也可用于基于购买习惯对客户进行细分。
例如,公司可能通过关联规则挖掘发现,购买某些类别产品的客户更可能偏年轻。同样地,他们也可能发现,购买特定产品组合的客户更可能集中在某些地理区域。
我们可以据此为特定客户细分制定营销活动和个性化推荐。想进一步了解该主题,请查看我们的Python 入门客户细分教程。
Fraud Detection
您也可以使用关联规则挖掘来检测欺诈行为。例如,信用卡公司可能利用关联规则挖掘识别欺诈交易的模式,如在短时间内来自同一商户的多笔消费。
随后,我们可以利用这些信息标记潜在的欺诈活动,并采取预防措施以保护客户。您可在我们的银行业中的数据科学:欺诈检测博文中进一步了解其工作原理。
Social network analysis
多家公司利用关联规则挖掘识别社交媒体数据中的模式,以支持社交网络分析。
例如,对 Twitter 数据的分析可能揭示:发布某一特定主题推文的用户,也很可能会发布其他相关主题的推文,这有助于识别网络中的群组或社群。
Recommendation systems
关联规则挖掘可用于根据客户的过往购买或浏览历史,推荐其可能感兴趣的商品。例如,音乐流媒体服务可能利用关联规则挖掘,基于用户的收听历史向其推荐新的艺人或专辑。
通过我们的Python 推荐系统教程,您可以深入学习如何构建多种执行此功能的模型。
Association Rule Mining Algorithms
用于关联规则挖掘的算法有多种,常见的包括:
Apriori algorithm
Apriori 算法是应用最广泛的关联规则挖掘算法之一。其工作流程为:首先识别数据集中的频繁项集(在一定数量的交易中出现的项集),然后基于这些频繁项集生成关联规则,即形如 "if item A is purchased, then item B is also likely to be purchased." 的陈述。Apriori 算法采用自底向上的方法,从单个项目开始,逐步构建更复杂的项集。
FP-Growth algorithm
FP-Growth(频繁模式增长)算法是另一种流行的关联规则挖掘算法。它通过构建一种称为 FP-tree 的树状结构来编码数据集中的频繁项集,然后以与 Apriori 类似的方式使用 FP-tree 生成关联规则。FP-Growth 通常比 Apriori 更快,尤其在处理大型数据集时。
ECLAT algorithm
ECLAT(等价类聚类与自顶向下格遍历)算法是 Apriori 的一种变体,采用自顶向下而非自底向上的方法。它根据支持度(出现于多少笔交易)将项目划分为等价类,然后通过在类格结构中组合这些等价类来生成关联规则。它是 Apriori 更高效且更具可扩展性的版本。
Apriori Algorithm
Apriori 算法已成为频繁项集挖掘与关联规则学习中使用最广的算法之一,广泛应用于购物篮分析、推荐系统与欺诈检测等场景,并启发出许多用于类似任务的其他算法。
Algorithm Details
Apriori 算法首先设置最小支持度阈值。即某个项目要被视为频繁项集,必须在数据库中至少出现的次数。随后,算法会剔除不满足最小支持度阈值的候选项集。
接着,算法会生成所有频繁项集的可能组合,并统计每种组合在数据库中出现的次数。然后,算法基于这些频繁项集组合生成关联规则。
关联规则是形如 "if item A is present in a transaction, then item B is also likely to be present" 的陈述。关联强度通过置信度来衡量,即在 A 出现的前提下,B 出现的概率。
随后,算法会过滤掉未达到最小置信度阈值的关联规则。这些满足阈值的规则称为强关联规则。最后,算法输出强关联规则列表。
Apriori 采用“自底向上”的方法,从单个项目开始,随着对频繁模式的搜索逐步组合成更大的项集。它还使用“删除-重标记”的思路高效剪枝,通过剔除不频繁的项集来收缩搜索空间。
Pros:
Cons:
若想更深入学习 Apriori 算法,请查看 DataCamp 上这篇精彩的购物篮分析教程。
Metrics for Evaluating Association Rules
在关联规则挖掘中,通常使用多种指标来评估所发现关联规则的质量与重要性。
这些指标可用于评估关联规则的质量与重要性,并据此为给定应用选择最相关的规则。需要注意的是,合适的指标选择取决于具体应用的目标与需求。
解读关联规则挖掘指标的结果,需要理解每个指标的含义与影响,以及如何利用它们评估所发现规则的质量与重要性。以下给出主要指标的解读指南:
Support
支持度衡量某个项目或项集在数据集中出现的频率。计算方法为:包含该项目(集)的交易数,除以数据集中的交易总数。较高的支持度表示该项目(集)在数据集中较常见,较低支持度则表示其较为罕见。
Confidence
置信度衡量两项之间关联的强度。计算方法为:同时包含这两项的交易数,除以包含第一项的交易数。较高的置信度表明第一项的出现对第二项的出现具有较强的预测性。
Lift
提升度在考虑两项各自出现频率的前提下,衡量它们之间关联的强度。其计算方式为:该关联的置信度,除以第二项的支持度。提升度用于将两项之间的关联强度,与在二者独立情况下的期望强度进行比较。
当提升度大于 1,表示两项之间的关联强于在各自频率下的独立期望,这表明该关联可能具有意义,值得进一步分析。提升度小于 1 则表示关联弱于期望,可能不太可靠或不够显著。
Python and R Libraries for Association Rule Mining
在 R 与 Python 中,有多种可用于关联规则挖掘的库:
R libraries
Python libraries
Implementing Association Rules in Python
我们将使用 PyCaret 在 Python 中实现关联规则。首先安装 PyCaret,然后导入示例数据集。
Install PyCaret
您可以使用 pip 安装 pycaret。
Dataset
我们将从 pycaret 的仓库加载示例数据集。该数据集来自法国一家零售门店的交易数据,包含用于标识交易的发票号(Invoice number)与商品描述(Description)。在从该数据集中挖掘规则时,我们只需关注这两项。
Setup
第一步是导入 `arules` 模块,并通过定义 data、transaction_id 和 item_id 来初始化 `setup` 函数。
setup 函数的输出
Create Model
create_model 函数的输出
基于 `create_model` 函数中设定的阈值,我们共创建了 45 条规则。上述输出显示了按置信度从高到低排序的前 10 条规则。
Plot Rules
使用 PyCaret 的 `plot_model` 函数可视化并分析规则。
查看完整 Notebook以便跟进学习。
Conclusion
关联规则挖掘是数据分析中的一项重要工具,能够有力地发现数据中的模式与关系。在 Python 与 R 中,有多种可用于实现关联规则挖掘的库,既提供多种算法的开箱即用实现,也提供结果可视化的选项。
您可以在多种情境下使用关联规则挖掘来提炼洞见,并理解数据的底层结构。但务必选择合适的算法,并设定恰当的参数(如最小支持度与置信度阈值),以获得有意义且准确的结果。
如果您希望更深入地学习该主题并了解更多关联规则挖掘内容,可以查看以下课程: