耿飙,梁成全
(1.苏州卫生职业技术学院基础部,江苏 苏州 215009;2.华东疗养院信息科)
从大型数据库中提取知识是数据挖掘中的重要内容。在过去的几十年中,已经开发了一些算法[1-3]。本文对关联规则算法如基于FP-Growth[4]的算法及其变体,以及CFP-Growth[5]和ICFP-Growth[6],对这三种算法进行比较研究。ICFP-Growth 是CPF-Growth 算法的改进版本,该算法包括三个步骤:多项目支持树(MIS-Tree)[7]的构建、紧凑型MIS 树的提取和紧凑型MIS 挖掘树。本文开发环境:操作系统Windows 10专业版;软件平台为Python 3.7.6。数据集是女性的糖尿病数据集(https://www.kaggle.com/mathchi/diabetesdata-set)。它分为两个“.csv”文件,第一个用于训练数据集,另一个用于测试数据集。这两个“.csv”文件包含8 个功能:①怀孕次数;②葡萄糖;③血压;④皮肤厚度;⑤胰岛素;⑥BMI:体重指数;⑦糖尿病谱系函数;⑧年龄。
该数据集仅包含数值。FP-Growth、CFP-Growth和ICFP-Growth接受事务数据集。糖尿病数据集(数值数据集)被转换为交易数据集。为了进行这种转换,每个特征都被可视化,以便了解它在个体数量中的变化,将每个特征重新划分组合为几个个体的域。0:表示无糖尿病,1:表示有糖尿病。
第一个特征是年龄,可视化结果如图1所示。
图1 年龄与个体数量
在范围[20,30]中所看到的,与糖尿病患者的数量相比,没有糖尿病的人数很高,而对于范围[30,80],0和1两个类别的人数几乎相同,所以可将特征的范围分为两个域:A1:[0,30]和A2:[30,80]。
第二个特征是血压,结果如图2 所示。在[0,40]范围内,对0 类和1 类有相同的变化,在[40,90]中,0 类最高,在[90,120]范围内,也有0 类和1 类的相同变体,因此将此特征划分为三个域:B1:[0,40];B2:[40,90];B3:[90,120]。
图2 血压与个体数量
第三个特征是BMI,可视化结果如图3所示。可以将BMI特征的范围划分为两个域,第一个BMI1:[0,30],其中有0类的个体数量高于1类,第二个是BMI2:[30,60]其中两个类具有几乎相同的变化。
图3 BMI与个体数量
第四个特征是糖尿病谱系函数,可视化在图4中。在这张图中,可以看到在[0,0.8]中,0 类的个体数量最多,而在[0.8,2.5]范围内,相反,类1 的个体数量最多,因此可以将特征分为两个域:D1:[0,0.8]和D2:[0.8,2.5]。
图4 糖尿病谱系功能与个体数量
第五个特征是葡萄糖,其可视化结果如图5所示。在范围[0,125]内,与类别1 的个体数量相比,类别0 的数量较多,而对于范围[125,200],对于0 类和1 类个体数量几乎相同,可以将特征的范围划分为两个域:G1:[0,125]和G2:[125,200]。
图5 葡萄糖与个体数量
第六个特征是胰岛素,结果如图6 所示。在[0,30]范围内的胰岛素与个体数量的关系中,对于0类和1类有几乎相同的变化,在范围[30,150]内,0 类高于1 类,在范围[150,800]内,也有0 类和1 类的相同变体,因此将此特征划分为三个域:I1:[0,30];I2:[30,150];I3:[150,800]。
图6 胰岛素与个体数量
第七个特征是Pregnancy,可视化结果如图7所示。可以将Pregnancies 特征的范围划分为两个域,第一个P1:[0,7],其中0 类的个体数量高于1 类个体的数量,第二个是P2:[7,17]其中两个类具有几乎相同的变化。
图7 怀孕与个体数量
最后一个特征是皮肤厚度,可视化在图8 中。在这张图中,可以看到在[0,8]中,两个类的变化几乎相同,而在[8,45]中,0 类的个体数量几乎比1 类多。此外,对于[45,60]范围,这两个类也有相同的变化,因此可以将特征分为三个域:S1:[0,8],S2:[8,45]和S3:[45,60]。
图8 皮肤厚度与个体数量
经过以上分析,可以总结出所有转换的信息。转换结果如表1所示。
表1 转换结果
现在可以使用域将数据集转换为事务数据集。从转换中获得的结果如图9所示。
图9 转换的部分结果
首先,必须初始化FP-Growth 的minsupport,以及CFP-Growth和ICFP-Growth的MIS值。要为CFP增长分配MIS值,使用式⑴。
其中MIS(i)是项目“i”的MIS 值。β ∈[0,1]是一个参数,它控制项目的MIS 值,与其频率相关。f(i)是项目“i”的频率值。LS 是一个使用指定值,表示允许的最小支持。此外,对于ICFP-Growth,有:
在本实验中,我们将FP-Growth 的最小支持定义为40,对于CFP-Growth的β等于0.1,LS等于40,对于ICFP-Growth,SD值为0.1,LMS等于50,LMIS等于40。
针对CFP-Growth的MIS值生成结果如表2所示。此外,对于ICFP-Growth,MIS 值初始化的结果在表3中给出。
表2 CFP-Growth算法的MIS值
表3 ICFP-Growth算法的MIS值
在该数据集上应用这三种算法后,获得了三个包含关联规则的模型,如图10所示。
图10 已获取关联规则
我们所提模型的结构是(left)→(right,Confidence)。左为因,右为果。置信度是[0,1] 范围内的一个数字,它可以表示有多少左可以将我们引向右,有多少原因可以导致结果,使用式⑷计算置信度:
图11显示了所有特征之间的关联规则,但在所给例子中,想要做一个分类模型,因为过滤关联规则以在结果(右)中只包含代表类的项目('0'和'1'),结果如图11所示。
图11 关联规则结果
在图中有分类模型的关联,例如有这个关联规则('A2','BMI2','G2','P2')→(('1'),0.89)。这表示如果个人的年龄在[30,80]之间,则为A2。BMI2体重指数在[30,60]范围内,G2血浆葡萄糖浓度在口服葡萄糖耐量试验中2小时在[125,200]范围内,P2怀孕次数在[7,17]之间,因此可以看到该个体患有糖尿病,置信度为0.89。
FP-Growth、CFP-Growth 和ICFP-Growth 这三种算法使用与在训练数据集上应用的相同预处理进行评估,以将数值数据集转换为事务数据集。之后,从数据集中取出一个事务,并计算测试事务与模型关联规则左侧的距离。在这种情况下,使用一种方法来计算距离。例如,有T测试交易和G模型中存在的关联规则的左侧。T=['P1','G1','B2','S2','I3','BMI2','D2','A2'],G=['A1','B3','BMI2','D1','G2','I2','P1']。
首先,在数据集中有八个特征。将距离初始化为8,并检查T 的每个项目是否存在于G 中,并且对于每个项目存在,将距离减1。在这个例子中,有P1存在于T 和G,所以距离是7。另外,G1 不存在于G,所以仍然有距离是7,而B2、S2、I3、D2、A2 也没有。t 存在于G 中,有BMI2存在,所以将距离减1,这时有距离等于6,G 和T 之间的距离是6。另外,在计算距离之后,选择三个closet 关联规则,计算谁对“0”和“1”投了多少票,然后选择票数最高的类。在这个测试过程之后,计算每个算法的准确性。三种算法FP-Growth、CFP-Growth和ICFP-Growth的准确率分别为51.30%,57%和60.5%。
频繁项目集挖掘是数据挖掘中的一个重要课题。本文实现了三种关联规则算法,即FP-Growth、CFPGrowth 和ICFP-Growth。这些算法使用python 编程语言提取糖尿病数据集上的频繁项目集。实验结果表明,ICFP-Growth比其他两种算法更准确。