Apriori算法(矩阵)

本文介绍了对Apriori算法的一种优化方法,通过构建上三角矩阵来减少数据库扫描次数,从而生成频繁1项集、2项集及候选3项集,避免了大量候选项集的产生。算法包括扫描数据库构建2项集矩阵、遍历矩阵获取L1、L2和C3,并利用性质简化频繁3项集的确定,提高了算法执行效率。
摘要由CSDN通过智能技术生成

陈老师Apriori算法整理(缺点:1.通用性不强,只解决3项集的问题未做推广2.算法程序为加上优化,封装、连接等操作3.置信度的计算不全,缺1->2 2->1等情况)

说明:支持度范围大于0小于1,因为分母是一样的,所以用支持度计数代表支持度

传统Apriori算法候选项集多(主要是二项集),且需要频繁扫描数据库。效率较低。现提出一种优化算法。通过一次扫描数据库生成上三角矩阵,通过此上三角矩阵直接生成频繁1项集、频繁2项集及候选3项集,避免了Apriori算法产生过多的候选2项集的问题,同时减少了频繁2项集自连接后进行剪枝的步骤;在第二次扫描数据库时,他只将数据库中对计算支持度产生作用且项数不小于3的项集形成链表,进而提高算法的执行效率。


具体步骤如下:

步骤一:扫描数据库,构造2项集的支持度矩阵M。

步骤二:根据最小支持度技术,遍历矩阵得到L1、L2与C3.

步骤一具体操作方法如下:在矩阵中,以集合I的项作为矩阵相应的行标和列标,矩阵中的某一元素Mij表示二项集{Ii,Ij}在事务数据库中出现的次数。扫描过程为:如果扫描到一条事务中包含有{Ii,Ij}二项集,则在矩阵中对应Mij位置的元素计数值加1,在扫描过程中依次对单项进行计数,将技术结果贴入主对角线对应的位置。

步骤二具体操作方法如下:读取矩阵M的主对角线数据并与支持度进行比较即可得到L1,遍历矩阵M的上三角数据并与支持度进行比较即可得到L2.从上到下逐行读取读取矩阵M的数据,首先找出第i行(i=1,2…,m)中不小于最小支持度计数的元素Mij;其次定位到第j行,如果Mij的值不小于最小支持度计数,那么寻找第j行中不小于最小支持度计数的元素Mij;最后再顺着第k列定位回到第i行,如果Mij的值也不小于最小支持度计数,那么则可以生成候选三项集{Ii,Ij,Ik}。根据上述步骤可知,只需扫描一次数据库就可以形成矩阵M,通过对矩阵遍历即可得到L1,L2和C3,避免了Apriori算法中产生大量候选2项集且不能剪枝的问题,也省略了L2自连接后的剪枝步骤。

然后根据以下两条性质确定最终的频繁3项集:

性质1:如果事务数据库中某事务的长度小于k,则由Lk-1生成Lk时,扫描该事务是对计算Ck中项集的计数不产生作用;

性质2:如果某项Ix属于I,但Ix不出现在Ck中,则在计算Lk时扫描Ix也是对计算候选项集的支持度不起作用。

根据以上两条性质,结合遍历矩阵找到的C3,寻找L3。

3.2举例说明

举例说明:最小支持度为2(>=2)

事务数据库D中的数据如下表所示:

ID

Product

1

L1

2

L2

3

L3

4

L4

5

L5

Trade_ID

Product_list(真正数据库中用商品的ID号也就是纯数字组成)

T001

L1,L2,L5

T002

L2,L4

T003

L2,L3

T004

L1,L2,L4

T005

L1,L3

T006

L2,L3

T007

L1,L3

T008

L1,L2,L3,L5

T009

L1,L2,L3

扫描数据库形成2项集支持度上三角矩阵M:

      

上三角矩阵M

扫描矩阵M并与最小支持度进行比较得L1,L2,C3

频繁1项集L1

项集

支持度计数

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值