1.Apriori算法原理详解
Apriori算法是经典的挖掘频繁项集和关联规则的数据挖掘算法。A priori在拉丁语中指"来自以前"。当定义问题时,通常会使用先验知识或者假设,这被称作"一个先验"(a priori)。Apriori算法的名字正是基于这样的事实:算法使用频繁项集性质的先验性质,即频繁项集的所有非空子集也一定是频繁的。Apriori算法使用一种称为逐层搜索的迭代方法,其中k项集用于探索(k+1)项集。首先,通过扫描数据库,累计每个项的计数,并收集满足最小支持度的项,找出频繁1项集的集合。该集合记为L1。然后,使用L1找出频繁2项集的集合L2,使用L2找出L3,如此下去,直到不能再找到频繁k项集。每找出一个Lk需要一次数据库的完整扫描。Apriori算法使用频繁项集的先验性质来压缩搜索空间。
2.数学示例求解过程
给个整体求解手稿:
下面以商品交易为例介绍数学求解过程,展示Apriori算法的思路。
注:手稿中由于[1,2,3,5]在交易中出现1次,导致最后支持数据集为[],所以为了很好展示Apriori算法思路,下面在商品交易列表中出现了2次[1,2,3,5]交易记录,会让最后求得的支持数据集不为空~
自定义最小支持度为0.2,即minSupport=0.2,即小于最小支持度的频繁项不会添加到支持数据集中~
商品交易记录列表goods:
goods = np.array([[1, 2, 5],
[2, 4],
[2, 3],
[1, 2, 4],
[1, 3],
[2, 3],