文章总览:YuanDaiMa2048博客文章总览
关联规则挖掘:Apriori 与 FP-growth 算法
关联规则挖掘是数据挖掘领域中的一个重要任务,旨在发现数据集中不同项之间的关联关系。Apriori 算法和 FP-growth 算法是两种常用的关联规则挖掘算法,它们在挖掘频繁项集和关联规则方面有着不同的优势和特点。
关联规则挖掘概述
关联规则挖掘是一种无监督学习方法,通过分析数据集来发现其中的潜在关联规则。在关联规则挖掘中,常用的概念包括支持度、置信度和频繁项集:
- 支持度(Support):指某个项集在数据集中出现的频率,用于衡量项集的频繁程度。
- 置信度(Confidence):指在某个条件下规则发生的概率,用于衡量关联规则的可信程度。
- 频繁项集:指支持度大于等于最小支持度阈值的项集。
Apriori 算法
基本原理
Apriori 算法是一种用于挖掘频繁项集的经典算法。其基本原理是通过一种逐层搜索的迭代方法,从频繁项集的性质出发,生成频繁项集。具体步骤如下:
- 扫描事务数据库,找出所有的频繁1项集,记为L1。
- 利用L1生成候选2项集,然后通过最小支持度阈值筛选出频繁2项集,记为L2。
- 使用L2生成候选3项集,通过最小支持度阈值筛选出频繁3项集,记为L3,以此类推,直到不能再找到任何频繁k项集。
- 根据频繁项集生成关联规则,并根据最小置信度阈值筛选出满足条件的关联规则。
Apriori 算法的一个重要性质是任意频繁项集的所有非空子集也必须是频繁的,这一性质保证了算法的有效性和完整性。
应用实例
- 编写
Apriori.py
代码def createC1(dataSet): C1 = [] for transaction in dataSet: for item in transaction: if [item] not in C1: C1.append([item]) C1.sort() return list(map(frozenset, C1)) def scanD(D, Ck, minSupport): ssCnt = { } for tid in D: for can in Ck: if can.issubset(tid): ssCnt[can] = ssCnt.get(can, 0) + 1 numItems = float(len(D)) retList = [] supportData = {