魏大順,張德林,董瑞國
(1.徐州醫科大學 醫學信息學院,江蘇 徐州 221000;2.徐州醫科大學附屬醫院,江蘇 徐州 221000)
由于醫療報銷等問題,在圍術期過程中醫生要控制、縮短平均住院日,術后如果沒有較嚴重并發癥,一般要求病人盡快出院;但是患者又擔心康復不徹底;而國家又沒有相關的出院技術標準,因此在患者各項生理指標正常的情況下,我們提出一種以病人術后活動指標作為一種檢測是否可以出院的方法。通過患者腕帶標簽,局域網內的接收器檢測這些標簽,并向位置軟體傳遞即時位置狀態等資料,具體如圖1所示。FP-growth作為一種有效的關聯規則挖掘算法已經被用于許多領域,許多學者也針對不同的應用場景或者算法本身進行了許多改進。如基于節點表的FP-growth算法改進[1]、基于FP-tree的快速構建算法[2]和無項頭的FP-growth[3]算法。但在醫療應用場景下這些算法都很難發揮他們的優勢,特別是在處理RFID所產生的事務數據,這主要是由于其高維度性、高無用性、高冗余性等特性導致[4]。例如基于節點表的FP-growth算法通過新增的節點表和頻繁模式樹兩者中共通的項,從而進行頻繁項集挖掘,然而當數據維度越高,兩者中共通的項則越多,挖掘效率因此也就越低下;基于FP-growth的快速構建算法通過動態調整各項的順序從而減少數據庫訪問頻度,但是醫療數據具有高無用性以及高冗余性,因此若利用此方法處理醫療數據將會消耗大量的內存;無項頭的FP-growth算法雖然可以精簡生成的關聯規則,但是生成的關聯規則中依然還會存在大量的冗余規則。在實際應用場景中,醫療人員更多的是希望在他們已有的專業判斷下,進一步從某些關鍵因素進行確認患者是否達到出院標準,比如患者在術后的行動時間與行動距離是否存在關聯性、活動范圍與術后時間是否存在關聯性。若使用原始FP-growth或者目前已有的改進算法去解決這一需求,不僅無法針對性的進行關聯挖掘,而且會找出許多無用的關聯規則[5],而這必然會嚴重影響挖掘效率,降低挖掘質量。本文針對此種應用場景,以胸外科數據為作為實驗數據,提出了一種改進的FP-growth算法。該算法首先通過計算數據集中各屬性的條件信息熵[6]進行約減;創建FP-Tree,根據判斷分支中是否含有決策項以及項重要度大小進行相應的剪枝。該算法從整體上縮減了事務數據庫的規模,對FP-tree進行了橫向和縱向剪枝壓縮,從而簡化了最終頻繁項集的挖掘,提高了挖掘效率,降低了算法運行所需內存與CPU。實驗結果表明,本文改進方法在可接受的精度范圍內,挖掘效率高于已有主要挖掘算法。

圖1 患者活動RFID射頻識別
本節介紹本文所需的基本知識,主要是RFID以及FP-growth算法。
定義1:RFID,無線射頻識別即射頻識別技術(radio frequency identification,RFID),是自動識別技術的一種,通過無線射頻方式進行非接觸雙向數據通信,利用無線射頻方式對記錄媒體(電子標簽或射頻卡)進行讀寫,從而達到識別目標和數據交換的目的。
定義2:FP-growth,FP-Growth算法采取如下分治策略:將提供頻繁項集的數據庫壓縮到一棵頻繁模式樹(FP-tree),但仍保留項集關聯信息。
定義3:支持度,確定規則可以用于給定數據集的頻繁程度,公式如下:
(1)
其中:N是事務的總數,X,Y為對應的屬性。
輸入:事務數據庫(transaction database,TD);最小支持度(minimum support,MinSup)[2]。
輸出:頻繁模式的完全集。
1)對TD中的事務進行逐條遍歷,統計每項支持度,并且以集合F表示,并且按照支持度大小重新排列,最終得到頻繁項表L。
2)再一次對數據庫TD進行掃描,按照L中的順序對TD進行重新排序,得到TD′;
3)創建頻繁挖掘樹FP-tree,其中根節點為root,默認值為空,將步驟2)得到的TD'中的數據按照順序插入FP-tree中,若數據節點第一次在FP-tree中出現,則新建節點,并計數1,若待插入的節點已經存在于FP-tree中,則原計數加1,同時令項頭表為步驟1)中得到的L,且鏈頭為項頭,連接內容相同的項;
4)對項集L中的項逆序挖掘頻繁項集。
FP-growth算法在處理事務庫時無法對無用屬性的篩選以及對特定關聯的挖掘,從而導致挖掘速度緩慢以及影響挖掘質量。因此,本文提出了一種改進的驗證式挖掘算法—IEFP-growth(Information Entropy FP-growth)算法。通過對FP-growth挖掘前的屬性約減和FP-tree創建過程中的剪枝來進行優化。該算法首先通過計算數據集中各屬性的條件信息熵[7]進行約減;在原算法掃描數據庫生成頻繁一項集的基礎上,創建FP-Tree,根據判斷分支中是否含有決策項以及項重要度IT(Item importance)大小進行相應的剪枝,若不含決策項則進行剪枝,若含決策項且所在分支中含有項重要度大于重要度閾值的項則保留,否則進行剪枝。該算法首先從整體上縮減了事務數據庫的規模,其次對FP-tree進行了橫向壓縮,進而提高了整體挖掘速度與質量。
剪枝依據性質:
1)支持度大的項并不一定和決策項具有關聯;
2)支持度大于MinSup且重要度大于或等于IT的項一定和決策項具有一定程度的關聯。
輸入:TD;MinSup;IT。
輸出:含決策屬性的頻繁模式集
1)對TD-事務數據庫進行屬性約減得到TD′;
(1)計算TD中除決策屬性[8]外每個屬性相對于決策屬性的條件信息熵,例如D相對于C的:

(2)
其中:D是決策屬性,C是條件屬性,U為論域,Xi,Yj分別是某一屬性的屬性集合。
(2)計算條件屬性集C中相對于決策屬性集D的主屬性Cr,并令P=Cr,B=C-Cr;
(3)計算條件信息熵H(D|P),轉步驟(6);
(4)對i=1…n,bi∈B中的每個屬性計算條件熵H(D|P∪bi),求:
SGF(bi,P,D)=H(D│P)-H(D|P∪bi)
(3)
得到屬性bi相對于決策屬性的重要度SGF;
(5)找出屬性bi,該bi可以讓SGF取得最大值,然后在P的后面追加bi,并且去掉使SGF為0的bi;
(6)如果H(D|P)=H(D|C),則轉步驟(7,否則轉步驟(4);
(7)依次判斷p中每個屬性是否可以去掉,判斷順序是從p尾開始,p頭結束。假如a在coreC(D)中,則從a往前都不可約,算法結束;否則a是可約減的,于是把a從A中刪除。
(8)得到處理之后的TD′
2)第一次掃描TD′,除去小于MinSup的項,得到頻繁一項集L;
3)再次遍歷TD′,重新排列TD′,排序規則以L中各項的支持度為度量進行降序排序,得到TD″;
4)建立FP-tree根節點,值為null,將TD″中的事務依次插入,若分支中不含決策項則進行剪枝,若含決策項且所在分支中含有項重要度-SGF大于重要度閾值IT的項則保留,否則進行剪枝;若節點不存在,則新建并計數并置1,若節點存在,則計數加1;
5)對創建好的FP-tree進行頻繁項集的挖掘。
(1)獲取頭指針表中每一個元素的條件模式基;
(2)按照步驟1)至步驟4)的建樹步驟,對上一步驟獲得條件模式基建立條件FP樹;
(3)重復以上步驟,獲取條件模式基并構建條件FP樹,直至無法構建條件FP樹為止;
(1)以表1簡易患者活動事務數據庫-TD為例。

表1 患者活動事務數據庫TD
為使得RFID數據信息滿足挖掘要求,將活動時間、活動距離等數據以范圍表示。
計算各屬性重要度SGF:
H(D|C)=0.5
H(D|P)=1
SGF(活動時間,P,D)=H(D|)-H(D|半小時,)=0.049
SGF(心跳,P,D)=H(D|)-H(D|快,)=0
SGF(活動距離P,D)=H(D|)-H(D|5米以內,)=0.311 278
根據屬性重要度SGF進行屬性約減得到表2。
(2)再次遍歷TD′,重新排列TD′,排序規則以L中各項的支持度為度量進行降序排序,得到TD″;
(3)在TD″的基礎上生成FP-tree,并且對根節點初始化,其中根節點名稱為root,默認值為空。按照頻繁樹生

表2 約減后數據庫TD′
成規則,將TD″中事務逐條壓縮到頻繁樹中。若需驗證活動時間與活動距離是否存在關聯規則,則待插入的分支中不含有“活動時間”屬性,則舍棄該分支,若待插入分支中含有“活動時間”屬性且所在分支中含有項重要度大于重要度閾值IT的項則保留,否則進行剪枝;若節點不存在,則新建并計數并置1,若節點已經在FP-tree中出現,則相應的計數加1。
(4)利用項頭表和頻繁模式樹遞歸挖掘頻繁項集。
本節通過將IEFP-growth算法與當前效果較好的基于節點表的FP-growth算法以及原始FP-growth算法進行實驗對比,對比分析本文所提出的IEFP算法的挖掘效果;最后將挖掘結果與其對應的生理指標進行對比,證明所提方法具有一定的臨床可行性。
綜上所述,現階段,我國各大高中學校管理人員已經有效地認知到分層教學模式對于提升學生學習水平的重要性,并且在這種意識的引導下,正在積極開展化學分層教學活動,但是由于起步時間較晚,該種教學模式的教學成效并不顯著,因此相關的教職人員必須要將工作重心放到高中化學分層教學模式實施措施的研究上,結合實際情況,制訂出具有針對性的措施,以此來實現既定教學目標。
軟件環境:pycharm編輯器;硬件環境:Intel(R)Core(TM)i5-7300HQCPU@ 2.50GHz,內存為8G,64位Window10操作系統;
隨機選取10 000條實驗數據,事務數據事務中項的頻繁項集支持度大多在0.04%到0.18%之間,分別測試FP-growth、基于節點表優化的FP-growth和IEFP-growth算法在不同支持度下的消耗時間以及經過差分隱私后的IEFP-tree的挖掘時間對比。詳細數據內容見表3。

表3 不同算法運行時間對比圖
由表3可知,第一列是最小支持度,第二列、第三列和第四列分別是FP-growth算法、基于節點表優化的FP-growth算法和IEFP-growth算法執行時間,并且IEFP-growth在各支持度下的消耗時間都低于FP-growth原始算法和基于節點表的FP-growth算法所需要的時間。
圖2繪制了FP-growth、基于節點表的FP-growth算法和IEFP-growth在最小支持度變化下各自挖掘時間的變化及對比情況。

圖2 不同算法在不同支持度下的執行時間對比圖
由圖2可以看出,隨著支持度的縮小,IEEP-growth算法相比于FP-growth算法以及基于節點表的FP-growth算法在相同支持度下所需時間更少,且隨著支持度的減小,所需時間增長速率緩慢,且支持度范圍在0.04~0.08之間,IEEP-growth消耗時間的增長速率明顯低于其他兩種算法,這表明支持度越小,IEFP-growth比原始FP-Growth、基于節點表的FP-growth挖掘能力越顯著。
在不同事務量的情況下分別測試FP-growth、基于節點表優化的nodetable-FP-growth和IEFP-growth算法,統計在不同事務量下的內存消耗情況[9]。詳細數據見表4。

表4 不同算法所需內存對比
由表4可知,第一列是事務量,第二列、第三列和第四列分別是FP-growth算法、基于節點表的FP-growth算法以及IEFP-growth算法在不同事務量情況下內存利用率占比,并且IEFP-growth算法在各事務量情況下,特別是事務量越大的情況下,所需要的內存相對于其他兩種算法都相對較少。
圖3繪制了FP-growth算法、基于節點表的FP-growth算法、以及經過差分隱私保護的IEFP-tree算法在不同事務量變化下下各自內存利用率的柱狀對比圖。

圖3 不同算法在不同事務量下所需內存圖
在不同事務量的情況下進行FP-growth、基于節點表優化的FP-growth、IEFP-growth挖掘,統計在不同事務量情況下的CPU使用情況[10]。詳細數據見表5。

表5 不同算法所需CPU對比
如表5所示,第一列是事務量,第二列、第三列和第四列分別是FP-growth、基于節點表的FP-growth和IEFP-growth算法CPU利用率占比,并且IEFP-growth算法在各事務量情況下,特別是事務量越大的情況下,所需要的CPU相對于其他兩種算法都相對較少。
圖4繪制了FP-growth、IEFP-growth、基于節點表優化的FP-growth以及經過差分隱私保護的IEFP-tree算法在不同事務量變化下各自CPU利用率的變化。

圖4 不同算法CPU變化圖
從圖4可以看出,IEFP-growth算法所需CPU比FP-growth算法和基于節點表的FP-growth算法所需CPU少,且事務量越大,所需CPU差距越明顯。
實驗選取10 000條事務數據,分別利用FP-growth算法、基于節點表的FP-growth算法以及IEFP-growth算法進行關聯規則挖掘,對挖掘得到的頻繁模式集分析其中含有決策屬性-活動時間的構成比[11],如圖5所示。

圖5 不同算法挖掘結果中頻繁項集構成比圖
從圖5可以發現,IEFP-growth挖掘得到的頻繁項集中決策項占據了絕大部分,其中少部分不是決策屬性主要是在剪枝過程中由于重要度以及支持度等因素被減去,也就是說假設的關聯關系中存在少部分非關聯規則,而由FP-growth和基于節點表的FP-growth算法挖掘得到的頻繁項集中與決策屬性有關的頻繁項只占了很小的一部分。因此IEFP-growth算法可以很好地進行針對性的挖掘,對臨床具有一定的價值。
為了證明本文所提方法具有一定的臨床指導意義,從電子病歷系統中提取100位患者闌尾炎患者術后不同時間內白細胞數量平均值,如圖6所示,以及術后的活動距離平均值,如圖7所示。

圖6 術后白細胞變化

圖7 術后患者活動距離平均值
從圖6我們可以看出在天數為0時即未進行手術情況下,白細胞的數量達到了25 000/L以上,此時病人闌尾已經發生壞死、穿孔等癥狀,但術后隨著時間的推移,白細胞數量逐漸下降,在第6天之后白細胞數量已經趨近于正常水平,且在第八天之后患者辦理了出院,因此沒有了數據;從圖7我們可以看出,患者的活動距離隨著術后時間的推移逐步增加,結合圖6與圖7我們可以發現患者的活動距離與白細胞數量在術后一定時間內具有一定的關聯性,而這也符合挖掘結果,因此利用RFID獲取的患者活動距離來挖掘數據間的關系并判斷是否達康復行為具有一定的臨床指導意義。
本文通過挖掘RFID采集的患者活動信息數據,為醫療人員提供患者術后出院參考。
針對FP-growth算法在進行頻繁模式挖掘過程中,RFID采集的患者數據無關屬性過多以及無法進行目的性的挖掘從而引起挖掘效率和質量低下的問題,提出一種驗證式挖掘算法——IEFP-growth算法。在對數據庫屬性約減的基礎上,根據判斷FP-tree分支中是否含有決策項以及項重要度大小進行相應的橫向和縱向剪枝壓縮,簡化最終頻繁項集的挖掘,提高了挖掘效率和質量,降低了算法運行所需內存和CPU。實驗結果表明了IEFP-growth算法在時間效率、內存與CPU利用率以及挖掘質量上較傳統FP-growth算法都有所改進;并且通過對比分析患者術后白細胞與活動距離的變化趨勢,發現白細胞變化與活動距離在一定時間內具有一定的關聯,證明該算法在臨床檢測上具有可行性與實用性[12-18]。