1.6关联规则(fpm)

本文详细介绍了关联规则挖掘中的FPGrowth算法和Prefix Span算法。FPGrowth通过构造FP树避免了Apriori的多次数据库扫描,提升了效率。Prefix Span则用于挖掘频繁序列模式,通过前缀投影的模式挖掘技术有效减少了内存消耗。两种算法在不同的场景下有各自的优点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.6 关联规则(fpm)

1.6.1 关联规则(FPGrowth(Frequent Pattern Growth))

关联规则挖掘的一个典型例子是购物篮分析。关联规则的研究有助于发现交易数据库中不同商品(项)之间的关系,找出顾客购买行为模式,如{啤酒,尿布}。

首先弄清楚几个概念:

  1. 项(item):即商品;项集:若干项的集合。
  2. 关联规则:关联规则用于表示数据内隐含的关联性。一般记X为先决条件、Y为相应的关联结果。关联性强度如何由3个概念控制和评价:支持度、置信度和提升度。
  3. 支持度(support):支持度是指在所有项集中{X, Y}出现的可能性,即项集中同时含有X和Y的概率。通过设定最小阈值(minsup),剔除“出镜率”较低的无意义规则,保留出现较为频繁的项集所隐含的规则。(类TF-IDF词频-逆向文件频率)
  4. 置信度(confidence):置信度表示在先决条件X发生的条件下,关联结果Y发生的概率,需要对置信度设定阈值(mincon)来实现进一步筛选。
  5. 提升度:提升度表示在含有X的条件下同时含有Y的可能性与没有X这个条件下项集中含有Y的可能性之比;公式为confidence(artichok=>cracker)/support(cracker)。该指标与置信度同样衡量规则的可靠性,可以看作是置信度的一种互补指标。

FPGrowth算法核心是构造GPTree树,FPTree树实现了:增加事务、合并树、取后缀树、取节点事物集、提取频繁项集(频繁项集,同时出现{尿布,啤酒}的项集)等方法,这些方法都是实现频繁项集挖掘的核心方法。FPGrowth算法分为两个过程:构造FP树和挖掘FP树。

构造FP树:

  1. 扫描事务数据库D一次。收
### 关联规则挖掘算法实现代码示例 #### Python 中 FP-Growth 算法的实现 Python 提供了多种库用于实现关联规则挖掘,其中 `pyspark` 是一种高效的选择。下面是一个使用 PySparkMLlib 库中的 FP-Growth 算法的例子: ```python from pyspark.ml.fpm import FPGrowth from pyspark.sql import SparkSession spark = SparkSession.builder.appName('fpgrowth').getOrCreate() data = [ ["牛奶", "面包"], ["尿布", "啤酒", "鸡蛋"], ["牛奶", "尿布", "啤酒", "橙汁"], ["面包", "奶酪"] ] df = spark.createDataFrame(data, ['items']) fpGrowth = FPGrowth(itemsCol="items", minSupport=0.5, minConfidence=0.6) model = fpGrowth.fit(df) # 显示频繁项集。 model.freqItemsets.show() # 显示生成的关联规则。 model.associationRules.show() # 使用模型进行预测。 model.transform(df).show() ``` 此段代码展示了如何利用 PySpark 来执行基于 FP-growth 的关联规则挖掘[^2]。 #### Java 中 Apriori 算法的简单实现 对于 Java 开发者来说,可以采用 Weka 或其他第三方库来简化工作流程。这里给出一个简单的伪代码框架作为参考: ```java import weka.associations.Apriori; import weka.core.Instances; public class AssociationRuleMining { public static void main(String[] args) throws Exception { Instances data = new Instances(new BufferedReader( new FileReader("path/to/your/dataset.arff"))); Apriori apriori = new Apriori(); apriori.setMinMetric(0.9); // 设置最小置信度阈值 apriori.buildAssociations(data); System.out.println(apriori); } } ``` 这段代码说明了通过调用 Weka API 进行关联规则挖掘的过程[^1]。 #### MATLAB 中 Apriori 算法的基础结构 MATLAB 用户可以通过编写脚本来完成这项任务。以下是创建一个基本 Apriori 模型的方法之一: ```matlab % 加载交易数据矩阵 T (每一行为一次购买记录) load transactions.mat; % 假设文件名为 'transactions.mat' min_support = 0.05; % 定义最低支持度水平 C1 = create_initial_candidate_itemset(T); L = {}; for k = 1:length(C{k}) Lk = prune_infrequent_items(C{k}, T, min_support); if isempty(Lk), break; end L{end+1} = Lk; C{k+1} = generate_next_level_candidates(Lk); end disp('Frequent Item Sets:'); cellfun(@(x) disp(x'), L, 'UniformOutput', false); ``` 上述代码片段描述了一种迭代方式去发现所有的频繁项集,并最终输出它们。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值