12.3 关联规则挖掘
Scikit-learn高级教程:关联规则挖掘与Apriori算法实战
本教程章节为Scikit-learn学习者详细介绍关联规则挖掘核心概念,包括Apriori算法原理、支持度、置信度、提升度等评估指标,并通过购物篮分析实战应用,助您掌握Python中的关联规则挖掘技术。
关联规则挖掘与Scikit-learn
欢迎来到Scikit-learn高级教程的章节!关联规则挖掘是数据挖掘中的重要领域,常用于发现数据集中项之间的有趣关系。虽然Scikit-learn本身专注于传统的机器学习算法(如分类和回归),但在实际应用中,我们可以结合其他Python库(如mlxtend)来实现关联规则挖掘。本章将带您深入理解Apriori算法和评估指标,并通过购物篮分析案例实战演示。
Apriori算法:关联规则挖掘的核心
Apriori算法是一种经典的关联规则挖掘算法,通过迭代找出频繁项集,从而生成规则。它基于一个简单原理:如果一个项集是频繁的,那么它的所有子集也必须是频繁的。这大大减少了搜索空间。
算法步骤
- 扫描数据集:找出所有单一项集,计算支持度。
- 生成候选项集:从频繁项集中组合生成更大的项集。
- 剪枝:移除支持度低于阈值的项集。
- 重复步骤:直到没有新的频繁项集产生。
- 生成规则:从频繁项集提取规则,并计算置信度等指标。
在Python中,我们可以使用mlxtend库(一个与Scikit-learn兼容的库)轻松实现Apriori算法。安装方法:pip install mlxtend。
评估指标:支持度、置信度、提升度
关联规则的质量通常用以下指标评估:
- 支持度(Support):衡量规则在数据集中出现的频率。计算公式:支持度(A→B) = 同时包含A和B的事务数 / 总事务数。高支持度表示规则常见。
- 置信度(Confidence):衡量规则的可信度。计算公式:置信度(A→B) = 支持度(A→B) / 支持度(A)。高置信度表示当A发生时,B很可能也发生。
- 提升度(Lift):衡量规则的有效性,即B在A发生时的概率是否高于其整体概率。计算公式:提升度(A→B) = 置信度(A→B) / 支持度(B)。提升度>1表示A和B正相关。
这些指标帮助我们筛选出有意义的规则,避免随机关联。
关联规则的实战应用:购物篮分析
购物篮分析是关联规则挖掘的经典应用,用于分析顾客购买行为,优化商品摆放和促销策略。
示例:使用Python和mlxtend进行购物篮分析
假设我们有一个数据集,包含超市交易记录。我们将演示如何从数据准备到规则生成。
-
数据准备:加载数据集,通常是一个事务列表。
import pandas as pd from mlxtend.frequent_patterns import apriori, association_rules # 示例数据集:每行是一个事务,项用逗号分隔 data = [ ['牛奶', '面包', '黄油'], ['牛奶', '面包'], ['牛奶', '黄油'], ['面包', '黄油'], ['牛奶'] ] # 转换为适合mlxtend的格式(独热编码) from mlxtend.preprocessing import TransactionEncoder te = TransactionEncoder() te_ary = te.fit(data).transform(data) df = pd.DataFrame(te_ary, columns=te.columns_) print(df.head()) -
应用Apriori算法:找出频繁项集。
# 设置最小支持度阈值,例如0.5 frequent_itemsets = apriori(df, min_support=0.5, use_colnames=True) print(frequent_itemsets) -
生成关联规则:基于频繁项集,计算评估指标。
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7) print(rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']]) -
分析和解释:根据支持度、置信度和提升度选择有用规则。例如,规则{牛奶} → {面包}可能显示高置信度,表明购买牛奶时经常也买面包。
实战建议
- 调整阈值:根据业务需求调整最小支持度和置信度阈值,以平衡规则的常见性和相关性。
- 可视化:使用图表(如网络图)可视化规则,帮助直观理解关系。
- 结合Scikit-learn:关联规则结果可输入到Scikit-learn模型(如分类器)中,用于进一步预测或优化。
总结
本章介绍了关联规则挖掘的核心概念,包括Apriori算法和评估指标支持度、置信度、提升度。通过购物篮分析实战,您学会了如何在Python中使用mlxtend库实现关联规则挖掘,这可以扩展Scikit-learn的机器学习流程。记住,关联规则挖掘是数据驱动的,正确应用能显著提升业务洞察力。
继续学习其他Scikit-learn高级主题,如聚类或降维,以构建全面的数据科学技能!