「这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战」
关联规则挖掘可以让我们从数据集中发现项与项之间的关系,它在我们的生活中有很多应用场景,关联规则挖掘是个非常有用的技术。下面就让我们通过一个实例来学习此算法
首先我们需要了解两个概念
1.支持度
支持度是个百分比,它指的是某个商品组合出现的次数与总次数之间的比例。支持度越高,代表这个组合出现的频率越大。
2.置信度
置信度是个条件概念,就是说在 A 发生的情况下,B 发生的概率是多少。它指的就是当你购买了商品 A,会有多大的概率购买商品 B。
题目如下
使用如下事务数据库,该数据库具有9个事务,设最小支持度为2,频繁项集的极大长度为3。
(1)使用Apriori算法挖掘下表中的事务数据库中的频繁项集。
(2){面包,牛奶,可乐}是否为最大频繁项目集?求出该最大频繁项目集中可以得到的关联规则,设最小置信度为50%。
TID | Items |
---|---|
1 | 面包,可乐,麦片 |
2 | 牛奶,可乐 |
3 | 牛奶,面包,麦片 |
4 | 牛奶,可乐 |
5 | 面包,鸡蛋,麦片 |
6 | 牛奶,面包,可乐 |
7 | 牛奶,面包,鸡蛋,麦片 |
8 | 牛奶,面包,可乐 |
9 | 面包,可乐 |
一、寻找频繁项目集的过程
(1) 先扫描数据可,统计所有1候选项集L1
项集 | 支持度 |
---|---|
牛奶 | 6 |
面包 | 7 |
可乐 | 6 |
鸡蛋 | 2 |
麦片 | 4 |
(2)剪除支持度小于2的项集C1
项集 | 支持度 |
---|---|
牛奶 | 6 |
面包 | 7 |
可乐 | 6 |
鸡蛋 | 2 |
麦片 | 4 |
(3) 统计C1中的所有项集的2候选项集L2
项集 | 支持度 |
---|---|
牛奶,面包 | 4 |
牛奶,可乐 | 4 |
牛奶,鸡蛋 | 1 |
牛奶,麦片 | 2 |
面包,可乐 | 4 |
面包,鸡蛋 | 2 |
面包,麦片 | 4 |
可乐,鸡蛋 | 0 |
可乐,麦片 | 1 |
鸡蛋,麦片 | 2 |
(4)剪除支持度小于2的项集C2
项集 | 支持度 |
---|---|
牛奶,面包 | 4 |
牛奶,可乐 | 4 |
牛奶,麦片 | 2 |
面包,可乐 | 4 |
面包,鸡蛋 | 2 |
面包,麦片 | 4 |
鸡蛋,麦片 | 2 |
(5)统计C2中的所有项集的3候选项集L3
项集 | 支持度 |
---|---|
面包,牛奶,可乐 | 2 |
面包,牛奶,麦片 | 2 |
面包,鸡蛋,麦片 | 2 |
牛奶,鸡蛋,麦片 | 1 |
(6)剪除支持度小于2的项集C3
项集 | 支持度 |
---|---|
面包,牛奶,可乐 | 2 |
面包,牛奶,麦片 | 2 |
面包,鸡蛋,麦片 | 2 |
二、所有频繁项的置信度为
{牛奶} => {面包,可乐} ,置信度 = 2/6 = 33%
{面包} => {牛奶,可乐} ,置信度 = 2/7 = 29%
{可乐} => {面包,牛奶} ,置信度 = 2/6 = 33%
{面包,牛奶} => {可乐} ,置信度 = 4/6 = 50%
{牛奶,可乐} => {面包} ,置信度 = 4/6 = 50%
若最小置信度为50%,则得到的关联规则如下:
{面包,牛奶} => {可乐} ,置信度 = 4/6 = 50%
{牛奶,可乐} => {面包} ,置信度 = 4/6 = 50%