Closet算法有很大一部分涉及到了FP-Growth算法,但是FP-Growth什么的大牛们都写了很多就不多赘述了吧。
话不多说直接上方法。
首先,对事务数据库进行扫描,得到一个根据项的支持度从大到小排序的项集合F_list,将不频繁的项删除。
然后根据F_list对数据集进行划分对每一个划分出来的数据集递归的进行闭项集的挖掘,直到划分出的子集中F_list为空。
举个例子具体说明CLOSET算法的具体流程:
事物的数据集如图所示,假设支持度的阈值为2。
第一遍扫描数据库,得到了一个F_list: <c:4,e:4,f:4,a:3,d:2> 。将所有事务中的项目集按照F_list中的顺序进行排序
然后,将数据集进行划分:
包含有d的模式集
包含a不包含d的模式集
包含f不包含a和d的模式集…
得到的是一些投影数据库,比如d的投影数据库如图所示,d的投影数据库,就是筛选出所有包含d的事务中,只保留所有在F_list中排在d之前的项得到的事务集,形成了一个新的事务集,就是d的投影数据库。
其它的投影数据库以此类推,保证得到的划分是包含d的模式集,包含a