[完]机器学习实战 第十一章 使用Apriori算法进行关联分析

本章介绍了关联分析及其重要性,详细讲解了Apriori算法的原理和如何发现频繁项集。Apriori通过减少计算量来解决大规模数据集的搜索问题,通过最小支持度和可信度来量化项集和规则。示例展示了如何用Apriori发现毒蘑菇的关联特性。
摘要由CSDN通过智能技术生成

本章内容:

  • Apriori算法
  • 频繁项集生成
  • 关联规则生成
  • 投票中的关联规则发现

从大规模数据集中寻找物品间的隐含关系被称作关联分析(association analysis)或者关联规则学习(association rule learning)。寻找物品的不同组合十分耗时,计算代价高,蛮力搜索方法不能解决这个问题。使用Apriori算法可解决这个问题。

一、关联分析

关联分析是一种在大规模数据集中寻找有趣关系的任务。这些关系有两种形式:频繁项集、关联规则。频繁项集(frequent item sets)是经常出现在一块的物品的集合;关联规则(association rules)暗示两种物品之间可能存在很强的关系。

一个项集的支持度(support)被定义为数据集中包含该项集的记录所占的比例。可定义一个最小支持度,只保留满足最小支持度的项集。

可信度或置信度(confidence)是针对一条关联规则来定义的。例如:{尿布, 葡萄酒}的支持度为3/5,尿布的支持度为4/5,所以“尿布->葡萄酒”的可信度为3/4=0.75。

支持度和可信度是用来量化关联分析是否成功的方法。

二、Apriori原理

一个商店的目标是找到经常在一起购买的物品集合,可使用集合的支持度来度量其出现频率。一个集合的支持度是指有多少比例的交易记录包含该集合。这需要遍历数据记录,而随着物品数目的增加,遍历次数会急剧增长。对于包含N中物品的数据集共有 2N1 中项集组合,对于只出售100中商品的商店也会有 1.26×1030 中可能的项集组合。对于现代计算机,需要很长的时间才能完成运算。

Apriori可以减少感兴趣的项集。Apriori原理:如果某个项集是频繁的,那么它的所有子集也是频繁的。反过来,如果一个项集是非频繁集,那么它的所有超集也是非频繁的。

三、使用Apriori算法发现频繁集

关联分析的目标包括:发现频繁集和发现关联规则。首先要找到频繁项集,然后才能获得关联规则。

Apriori是发现频繁集的一种方法,它的两个输入参数分别是最小支持度和数据集。首先,该算法会生成所有单个物品的项集列表。接着,扫描交易记录来查看哪些项集满足最小支持度要求,去掉不满足最小支持度的集合。然后,对剩下来的集合进行组合以生成包含两个元素的项集。接下来,再重新扫描交易记录,去掉不满足最小支持度的项集。该过程重复进行直到所有项集都被去掉。

3-1 生成候选项集

创建一个用于构建初始集合的函数,也会创建一个通过扫描数据集以寻找交易记录子集的函数。数据集扫描的伪代码大致如下:

对数据集中的每条交易记录tran
对每个候选项集can :
    检查一下can是否是tran的子集 :
    如果是,则增加can的计数值
对每个候选项集 :
如果其支持度不低于最小值,则保留该项集
返回所有频繁项集列表  
# coding=utf-8

# 创建一个简单的测试数据集
def loadDataSet() :
    return [[1,3,4], [2,3,5], [1,2,3,5], [2,5]]

# 构建集合C1,C1是大小为1的所有候选项集的集合。
def createC1(dataSet) :
    # C1是空列表,用来存储所有不重复的项值。如果某个物品项没有在C1中出现
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值