【机器学习】关联规则分析(一):Apriori
一、Apriori原理
Apriori是关联分析中较早的一种方法,主要用来挖掘那些频繁项集合,其思想是:
1.如果一个项目集合不是频繁集合,那么任何包含它的项目(超集)也一定不是频繁集。
2.如果一个项目集合是频繁集合,那么它的任何非空子集(子集)也是频繁集合。
二、关联分析
1.发现频繁项集→ 经常出现在一起的样本集合
2.发现关联规则→ 暗示两种样本之间可能存在很强的关系
3.Apriori原理可减少支持度计算量
***************************************************
支持度:数据集里包含该项集的记录所占的比例
可信度:针对一条eg.{A}→{B}的关联规则来确定的,定义为:可信度 = 支持度{A,B} / 支持度{A}
支持度(比例大小)→特定数据集/总数据集→ 反映频繁项集
可信度(关联规则)→支持度{A,B}/支持度{A} →反映关联度
用户自行设定最小支持度minSupport作为参数,当集合/列表(set/list)支持度大于最小支持度,则为频繁项集
***************************************************
三、算法步骤
1.生成候选项集
流程:
********************************
对数据集里每条记录item:
对每个候选项集can:
检查can是否为item的子集:
如果是,则增加can的计数值
对每个候选项集can:
如果其支持度不小于最小值,则保留该项集
返回所有频繁项集列表
***********************************
2.完整Apriori流程
***********************************
当集合中项的个数>0:
构建k个项组成的候选项集列表
检查数据以确定每个项集都是频繁的
保留频繁集并构建k+1项组成的候选项集列表
***********************************
Apriori需要扫描项目多遍,从一个项目开始,舍去掉那些不频繁项目,得到集合成为l,然后对l中每个元素进行自组合,生成比上次扫描多一个项目的集合,该集合成为c,接着又去扫描那些非频繁项目,重复……
看下面这个例子:
元素项目表格:
如果每个步骤不去掉非频繁项目集,则其扫描过程的树形结构如下:
在其中某个过程中,可能出现非频繁的项目集,将其去掉(用阴影表示)为: