成雨風, 賀 松, 劉 燕, 黃詩懿
(貴州大學, 貴陽550025)
近年來,隨著人工智能領域的飛速發展,人工智能的應用場景越來越豐富,語音交互、計算機視覺、認知計算技術逐漸成熟。 人工智能技術逐漸影響醫療行業的發展,人工智能技術與醫療衛生領域的集成持續增長,成為提高衛生保健水平的重要因素[1]。 數據挖掘是通過算法查找隱藏在大量數據中信息的過程,通過數據挖掘可以得到一些不平凡的、新奇的、有價值的信息。 如本文研究的,通過挖掘過往CRC 病人的病例,運用K - Means 算法和Apriori 算法得出患者體內腸道菌群的內在聯系,從而判斷基于數據挖掘的CRC 腸道菌群營養干預的可行性。
營養干預是對人們營養上存在的問題進行相應改進的對策,也叫營養調理。 簡單來說,就是通過食用相關食物或者營養藥物讓人們的身體狀況向健康的方向發展。
近年來,科學研究已經證明:由于腸道菌群是人體腸道的正常微生物,因此CRC 的發生與腸道菌群存在密切的關系。 據研究表明,大約有10 萬億個細菌在人體腸道中寄生,影響人們的體重和消化能力,可以抵抗感染和自身免疫性疾病的風險,并在人類治療過程中控制癌癥的應激反應。 人體健康與腸道中益生菌的結構密切相關。 在腸道菌群的長期進化中,根據個體適應和自然選擇,它們在不同菌群之間、菌群與宿主之間、菌群與宿主之間以及“環境平衡”中始終是動態的。 正常情況下,由于相互依存和相互制約系統的形成,解剖結構相對穩定并且對宿主無致病性[2]。 一些研究中得出,健康人腸道中健康細菌的比例已達70%,普通人已降至25%,便秘人群已減少至15%,結直腸癌患者腸道中的益生菌比率僅為10%。
據了解,現已有醫院將腸道菌群的調節,作為結直腸癌治療的主要手段,并研發了很多相關藥物。如:雙歧桿菌三聯活菌腸溶膠囊、馬來酸曲美布汀、麗珠腸樂、整腸生等藥物,都是通過補充病人體內某種腸道菌群使病人體內的腸道菌群平衡,達到治療結直腸癌的效果。 但這些手段也存在一些弊端,藥物容易引起抗藥性,對后期治療產生相應干擾。 如果采用營養干預,間接使腸道菌群平衡就能避免這些問題,并且營養干預比較注重食物療法,在飲食的同時進行治療,從而達到最理想的狀態。
數據挖掘是通過算法,查找隱藏在大量數據中的信息過程。 通過數據挖掘可以得到一些不平凡的、新奇的、有價值的信息[3]。 目前在人工智能領域,數據挖掘的常用算法有十余種,本文通過K -Means 算法和Apriori 算法,分析了CRC 腸道菌群營養干預的可行性。
在進行數據挖掘之前,需要將數據轉換為適合進一步分析和處理的數據形式。 需要進行數據加工和數據清洗等前期工作。
數據加工的前提是數據提取,數據提取是一個涉及從各種來源檢索數據的過程。 而本文課題的數據均采用已有的電子病例,數據已經整理好,不需要多方面檢索數據,只需將數據進行簡單的數據加工即可。 本文最主要的字段匹配,是將原數據表中缺少的字段,從其它數據表中有效地匹配過來。 其中最常用的字段匹配是利用VLOOKUP 函數:在表格的首列查找指定的數據,并返回指定的數據所在行中的指定列處的單元格內容。 VLOOKUP 函數形式如下:
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)。
數據清洗是對刪除、更正、不完整、格式有誤等數據的處理。 數據清洗的目的不僅僅更正錯誤,同時完成來自各個單獨信息系統不同數據間的一致性,讓原始數據可信且可用[4]。 數據清洗的過程就是數據流動的過程,從不同異構數據源流向統一的目標數據。 其間,數據的抽取、清洗、轉換和裝載形成串行或并行的過程,把數據清洗的流程模塊化、清洗工具組件化、清洗過程智能化。 整個過程中主要用到的是SOL Server 數據庫[5]。 數據清洗中最主要的是數據類型轉換,例如圖1 中,是將一段varbinary類型的數據轉換為varchar 類型的常規代碼:
3.1.1 算法介紹
K -means 算法是一個聚類算法,目的是根據對象之間的相似性,將n 個對象收集到k 個不同的指定簇中,每個對象僅屬于落在距聚類中心最小距離的類簇中[6]。 雖然K - means 算法已經提出來很久,但是它依然存在一些缺陷。 如:必須預先給出聚類中心的數量k,但實際上很難估計k 的選擇。 K -Means 算法需要人為地確定初始分組中心,不同的初始分組中心可以導致完全不同的聚類結果。

圖1 varbinary 類型的數據轉換為varchar 類型數據常規代碼Fig.1 Varbinary type data converted to varchar type data conventional code
通常情況下,在CRC 病人體內乳酸桿菌產生病變,數目已經發生變化,有可能比正常值高或低。 但CRC 患者因年齡性別的不同,正常值都會有變化。所以,無法確定分類k 值到底取多少。 因此,需要運用一種新的基于數據分布選取初始聚類中心的K -Means ++算法。 K-Means ++算法的基本思想:使初始的聚類中心之間的相互歐氏距離盡可能的遠,通過這種定義,可用該算法求解k 值[7]。
K - Means ++算法流程:
輸入:樣本集D ={x1,x2,x3,...,xm};聚類簇數k。
Step 1從樣本集中隨機選取一個樣本作為第一個初始聚類中心c1;
Step 2對數據集中的每個點xi,計算它與當前c1聚類中心之間的最短距離(即與最近的一個聚類中心的距離),用D(x) 表示;
Step 3把數據集中每個點與其距離最近的聚類中心點之間的距離相加, 其和用sum(D(x)) 表示;
Step 4在0 到sum(D(x)) 之間取隨機值Random。 Random = Random - D(x), 直 到Random ≤0,此時的點就是第二個聚類中心;
Step 5重復Step2 至Step4,直到選出所有的k個聚類中心;
Step 6對于數據集中的每個樣本xi,分別計算它們到k 個聚類中心的歐式距離,并將其分到距離最小的聚類中心對應的簇中;
Step 7針對每個簇ci, 更新聚類中心ci=(即計算該類樣本的質心), ∣ci∣為該類樣本個數;
Step 8Until 聚類中心不再變化,誤差平方和準則函數收斂。
輸出:k 個簇,滿足誤差平方和準則函數收斂。
通過分析上述流程可見,改進的K - Means ++算法在一定程度上降低了傳統K - Means 算法對初始值的依賴,降低了算法的不穩定性,提高了算法效率,減少了算法開銷。
3.1.2 算法應用及分析
將篩選過的300 份含有大腸埃希菌詳細檢測數據的病例通過上述數據清洗辦法,集成數據集,然后將數據集導入進K - Means ++算法。 大腸埃希菌在人體內的標準值是DNA(G+C)mol%為48-59,以54 為c1的縱坐標,通過K - Means ++算法應用計算k 聚類中心個數,得到k =3,因為數據比較規范,通過2 次迭代就得出穩定的縱坐標yc2=23,yc3=71,可以看出yc2<48,yc3>59,符合本文設想的數值。 通過病例分析可知,當DNA(G+C)mol%<48 時人們會有其他并發癥產生、DNA(G+C)mol%>59 的時候人們的結直腸會發生病變,嚴重的會造成CRC。
通過結果發現,個別病人的數據游離于3 個聚類簇之外,距離ci很遠。 通過分析,這些患者均是年齡較大或較小,這就是K - Means 算法存在的不足。由于樣本數目少,年齡分化低,所以無法更多的體現K - Means ++算法的優勢。
如果運用更多的樣本,細化每個年齡段不同性別的人群,將常規的5 種菌群所有簇類都計算出來,建立數據庫,當有病人診斷時,導入PCR 檢測數據(人體內腸道菌群檢測方式)智能模型,可直接對比病人的檢查數據,提示醫生該病人的對比情況,判斷菌群是否病變。
3.2.1 算法介紹
CRC 患者體內并不是單一的腸道菌群病變,而是多種病變結合,并且每種關系間的營養干預方案也不一樣,需要通過關聯規則挖掘出內部的所有關系。
關聯規則是指形如X →Y 的表達式,且X ∩Y =φ。 關聯規則的強度可以用支持度(support)和置信度(confidence)度量。 其中,支持度(s) 指X 與Y 同時出現的事務在T(所有事物的集合) 中的比例,確定規則可用于給定數據集的頻繁程度;置信度(c)指X 與Y 同時出現的事務在X 出現的事務中的比例,衡量Y 在包含X 的事務中出現的頻繁程度:

通過定義可知,由關聯規則作出的推論并不必然蘊涵因果關系[8]。
3.2.2 改進的Apriori 算法
Apriori 是關聯規則中最常用的一種算法。 在Apriori 算法中,最小支持度和最小置信度是該算法最重要的分析閾值和約束條件。 但是,在處理醫學數據時只有這兩個條件是不夠的。 如需要更加精準的分析CRC 病人的腸道菌群數據關聯性,Apriori 算法還存在一些需要改進的地方[9]。
改進的Apriori 算法依然是以Apriori 算法的分段思想基礎。 首先在輸入的事務數據集中尋找頻繁項集,部分代碼如下:

其中,集合iset 選擇樹結構(抽象數據類型)存儲,init 初始化數據結構, frequent(k) 產生Lk,itemsets 返回項集中項的數量,maxlen 是關聯規模的限制。
使用上述方式找到的頻繁項集產生期望的規則如下:

改進算法解決了兩個問題:
(1)通過擴展項的屬性、添加項出現位置的約束標記,解決了項的位置問題;
(2)通過設置關聯最大長度maxlen 限制了關聯規模[10]。
實驗中關于CRC 病人的簡單數據集,設有7 個屬性(p =7)、5 個病人(n =5)。 表1 是原始醫療數據,表2 是把所有原始屬性一一對應映射成項的映射表(索引表),表3 是轉換后的CRC 事務數據表。

表1 CRC 原始醫療數據Tab.1 CRC original medical data

表2 映射表1Tab.2 Mapping table1

表3 映射表2Tab.3 Mapping table2

表4 將CRC 醫療數據據映射成項Tab.4 Map CRC medical data into items
通過執行上述分配過程,原始數據中的每個元組(記錄的一行)都映射到包含元素的事務元組。結果表和原始表的列數相同,但是每列都只包含整數值,該值與映射過程的索引一致。
實驗數據使用表1 提供的關于CRC 診斷的數據集,數據集包含5 個病人,7 個屬性,其中兩個為類別屬性,5 個為數值屬性。
對于關聯規則挖掘程序的參數設置方法如下:由于選用的數據集較小,但希望發現兩個或更多病人的關聯,故最小支持度設置為20%,設最小置信度為80%。 根據研究需要對項進行限制,得到實驗需要的規則:
格式: [ 1,2,3,4]BODY
[5,6,7,8,9,10,11,12,13,14]BOTH
其中,BODY、BOTH 分別代表限制項出現的左部、左右部位置標記。 即CRC 病人的性別、年齡項(1,2,3,4)限制出現在規則的左部; CRC 病人腸道菌群指數項(5,6,7,8,9,10,11,12,13,14)出現在規則的左右部均可。
根據實驗研究要求,設左部最大關聯長度body maxlen =3,后續研究可以根據規則需求設置不同的maxlen 值。
通過實驗,可以得到5 個有關病人腸道菌群病變的項(5,7,9,11,13)出現在規則右部的所有規則。 例如:235 →711(40%,50%) 規則表示Gender=Fandage <45and 雙歧桿菌病變→乳酸桿菌病變and 糞腸球菌病變具有40%的支持度和100%的置信度,即:所研究病人有40%(支持度)在45 歲以下且雙歧桿菌病變的男性,其腸道菌群中乳酸桿菌和糞腸球菌都產生病變,在45 歲以下且雙歧桿菌病變的男性中,因乳酸桿菌和糞腸球菌都產生病變導致CRC 的可能性為100%(置信度)。
由實驗結果可見,若設X →Y 是一個合法規則,則添加右部一項限制條件后,會有O(2∣x∣+∣y∣-1)個無用規則被刪除,達到了改進Apriori 算法的目的。 利用實際的診斷數據集可以驗證已用的實際診斷規則,但還需進一步考慮項的分組(菌群病變組合)問題,以及添加營養方案的項關聯,這樣將提高挖掘關聯規則的性能, 得到更準確的醫療規則。
通過深度學習,將已經完成的部分結合處理,通過不斷的AI 學習以及醫學專家的修正,使病變規則和營養干預方案之間的聯系更加合理,達到預設的地步。 簡易的、完善的干預模型可以通過下述程序體現:

上述代碼表示:在營養干預方案庫中查找33 歲男性且檢測出雙歧桿菌數目只有53 個(每克糞便)的營養干預方案。 在實際過程中,若需要添加其他限制規則,都可以通過深度學習不斷添加限制,繼續完善。
本文通過研究K - Means 算法、Apriori 算法在醫療數據上應用,發現相關算法在研究應用上的不足,提出了相應的K -Means ++算法以及改進的Apriori 算法,達到了對CRC 疑似病人體內腸道菌群的分類,并發現其內部關聯規則。 從多方面驗證了基于數據挖掘的CRC 腸道菌群營養干預切實可行。本論文的研究還存在一些完善和探索的地方。 如,后續需要完善所有規則,就需運用大型醫療數據集進行測試,同時要經過醫療專家考慮項的分組問題,從而進一步改進算法。 隨著AI 技術的不斷發展,以及后續的進一步研究,相信在不久的將來,這項技術一定會在臨床治療當中得以應用。