耿飆,梁成全
(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所示??梢詫MI特征的范圍劃分為兩個域,第一個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比其他兩種算法更準確。