成雨風, 賀 松, 劉 燕, 黃詩懿
(貴州大學, 貴陽550025)
近年來,隨著人工智能領域的飛速發(fā)展,人工智能的應用場景越來越豐富,語音交互、計算機視覺、認知計算技術逐漸成熟。 人工智能技術逐漸影響醫(yī)療行業(yè)的發(fā)展,人工智能技術與醫(yī)療衛(wèi)生領域的集成持續(xù)增長,成為提高衛(wèi)生保健水平的重要因素[1]。 數(shù)據(jù)挖掘是通過算法查找隱藏在大量數(shù)據(jù)中信息的過程,通過數(shù)據(jù)挖掘可以得到一些不平凡的、新奇的、有價值的信息。 如本文研究的,通過挖掘過往CRC 病人的病例,運用K - Means 算法和Apriori 算法得出患者體內(nèi)腸道菌群的內(nèi)在聯(lián)系,從而判斷基于數(shù)據(jù)挖掘的CRC 腸道菌群營養(yǎng)干預的可行性。
營養(yǎng)干預是對人們營養(yǎng)上存在的問題進行相應改進的對策,也叫營養(yǎng)調(diào)理。 簡單來說,就是通過食用相關食物或者營養(yǎng)藥物讓人們的身體狀況向健康的方向發(fā)展。
近年來,科學研究已經(jīng)證明:由于腸道菌群是人體腸道的正常微生物,因此CRC 的發(fā)生與腸道菌群存在密切的關系。 據(jù)研究表明,大約有10 萬億個細菌在人體腸道中寄生,影響人們的體重和消化能力,可以抵抗感染和自身免疫性疾病的風險,并在人類治療過程中控制癌癥的應激反應。 人體健康與腸道中益生菌的結(jié)構(gòu)密切相關。 在腸道菌群的長期進化中,根據(jù)個體適應和自然選擇,它們在不同菌群之間、菌群與宿主之間、菌群與宿主之間以及“環(huán)境平衡”中始終是動態(tài)的。 正常情況下,由于相互依存和相互制約系統(tǒng)的形成,解剖結(jié)構(gòu)相對穩(wěn)定并且對宿主無致病性[2]。 一些研究中得出,健康人腸道中健康細菌的比例已達70%,普通人已降至25%,便秘人群已減少至15%,結(jié)直腸癌患者腸道中的益生菌比率僅為10%。
據(jù)了解,現(xiàn)已有醫(yī)院將腸道菌群的調(diào)節(jié),作為結(jié)直腸癌治療的主要手段,并研發(fā)了很多相關藥物。如:雙歧桿菌三聯(lián)活菌腸溶膠囊、馬來酸曲美布汀、麗珠腸樂、整腸生等藥物,都是通過補充病人體內(nèi)某種腸道菌群使病人體內(nèi)的腸道菌群平衡,達到治療結(jié)直腸癌的效果。 但這些手段也存在一些弊端,藥物容易引起抗藥性,對后期治療產(chǎn)生相應干擾。 如果采用營養(yǎng)干預,間接使腸道菌群平衡就能避免這些問題,并且營養(yǎng)干預比較注重食物療法,在飲食的同時進行治療,從而達到最理想的狀態(tài)。
數(shù)據(jù)挖掘是通過算法,查找隱藏在大量數(shù)據(jù)中的信息過程。 通過數(shù)據(jù)挖掘可以得到一些不平凡的、新奇的、有價值的信息[3]。 目前在人工智能領域,數(shù)據(jù)挖掘的常用算法有十余種,本文通過K -Means 算法和Apriori 算法,分析了CRC 腸道菌群營養(yǎng)干預的可行性。
在進行數(shù)據(jù)挖掘之前,需要將數(shù)據(jù)轉(zhuǎn)換為適合進一步分析和處理的數(shù)據(jù)形式。 需要進行數(shù)據(jù)加工和數(shù)據(jù)清洗等前期工作。
數(shù)據(jù)加工的前提是數(shù)據(jù)提取,數(shù)據(jù)提取是一個涉及從各種來源檢索數(shù)據(jù)的過程。 而本文課題的數(shù)據(jù)均采用已有的電子病例,數(shù)據(jù)已經(jīng)整理好,不需要多方面檢索數(shù)據(jù),只需將數(shù)據(jù)進行簡單的數(shù)據(jù)加工即可。 本文最主要的字段匹配,是將原數(shù)據(jù)表中缺少的字段,從其它數(shù)據(jù)表中有效地匹配過來。 其中最常用的字段匹配是利用VLOOKUP 函數(shù):在表格的首列查找指定的數(shù)據(jù),并返回指定的數(shù)據(jù)所在行中的指定列處的單元格內(nèi)容。 VLOOKUP 函數(shù)形式如下:
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)。
數(shù)據(jù)清洗是對刪除、更正、不完整、格式有誤等數(shù)據(jù)的處理。 數(shù)據(jù)清洗的目的不僅僅更正錯誤,同時完成來自各個單獨信息系統(tǒng)不同數(shù)據(jù)間的一致性,讓原始數(shù)據(jù)可信且可用[4]。 數(shù)據(jù)清洗的過程就是數(shù)據(jù)流動的過程,從不同異構(gòu)數(shù)據(jù)源流向統(tǒng)一的目標數(shù)據(jù)。 其間,數(shù)據(jù)的抽取、清洗、轉(zhuǎn)換和裝載形成串行或并行的過程,把數(shù)據(jù)清洗的流程模塊化、清洗工具組件化、清洗過程智能化。 整個過程中主要用到的是SOL Server 數(shù)據(jù)庫[5]。 數(shù)據(jù)清洗中最主要的是數(shù)據(jù)類型轉(zhuǎn)換,例如圖1 中,是將一段varbinary類型的數(shù)據(jù)轉(zhuǎn)換為varchar 類型的常規(guī)代碼:
3.1.1 算法介紹
K -means 算法是一個聚類算法,目的是根據(jù)對象之間的相似性,將n 個對象收集到k 個不同的指定簇中,每個對象僅屬于落在距聚類中心最小距離的類簇中[6]。 雖然K - means 算法已經(jīng)提出來很久,但是它依然存在一些缺陷。 如:必須預先給出聚類中心的數(shù)量k,但實際上很難估計k 的選擇。 K -Means 算法需要人為地確定初始分組中心,不同的初始分組中心可以導致完全不同的聚類結(jié)果。
圖1 varbinary 類型的數(shù)據(jù)轉(zhuǎn)換為varchar 類型數(shù)據(jù)常規(guī)代碼Fig.1 Varbinary type data converted to varchar type data conventional code
通常情況下,在CRC 病人體內(nèi)乳酸桿菌產(chǎn)生病變,數(shù)目已經(jīng)發(fā)生變化,有可能比正常值高或低。 但CRC 患者因年齡性別的不同,正常值都會有變化。所以,無法確定分類k 值到底取多少。 因此,需要運用一種新的基于數(shù)據(jù)分布選取初始聚類中心的K -Means ++算法。 K-Means ++算法的基本思想:使初始的聚類中心之間的相互歐氏距離盡可能的遠,通過這種定義,可用該算法求解k 值[7]。
K - Means ++算法流程:
輸入:樣本集D ={x1,x2,x3,...,xm};聚類簇數(shù)k。
Step 1從樣本集中隨機選取一個樣本作為第一個初始聚類中心c1;
Step 2對數(shù)據(jù)集中的每個點xi,計算它與當前c1聚類中心之間的最短距離(即與最近的一個聚類中心的距離),用D(x) 表示;
Step 3把數(shù)據(jù)集中每個點與其距離最近的聚類中心點之間的距離相加, 其和用sum(D(x)) 表示;
Step 4在0 到sum(D(x)) 之間取隨機值Random。 Random = Random - D(x), 直 到Random ≤0,此時的點就是第二個聚類中心;
Step 5重復Step2 至Step4,直到選出所有的k個聚類中心;
Step 6對于數(shù)據(jù)集中的每個樣本xi,分別計算它們到k 個聚類中心的歐式距離,并將其分到距離最小的聚類中心對應的簇中;
Step 7針對每個簇ci, 更新聚類中心ci=(即計算該類樣本的質(zhì)心), ∣ci∣為該類樣本個數(shù);
Step 8Until 聚類中心不再變化,誤差平方和準則函數(shù)收斂。
輸出:k 個簇,滿足誤差平方和準則函數(shù)收斂。
通過分析上述流程可見,改進的K - Means ++算法在一定程度上降低了傳統(tǒng)K - Means 算法對初始值的依賴,降低了算法的不穩(wěn)定性,提高了算法效率,減少了算法開銷。
3.1.2 算法應用及分析
將篩選過的300 份含有大腸埃希菌詳細檢測數(shù)據(jù)的病例通過上述數(shù)據(jù)清洗辦法,集成數(shù)據(jù)集,然后將數(shù)據(jù)集導入進K - Means ++算法。 大腸埃希菌在人體內(nèi)的標準值是DNA(G+C)mol%為48-59,以54 為c1的縱坐標,通過K - Means ++算法應用計算k 聚類中心個數(shù),得到k =3,因為數(shù)據(jù)比較規(guī)范,通過2 次迭代就得出穩(wěn)定的縱坐標yc2=23,yc3=71,可以看出yc2<48,yc3>59,符合本文設想的數(shù)值。 通過病例分析可知,當DNA(G+C)mol%<48 時人們會有其他并發(fā)癥產(chǎn)生、DNA(G+C)mol%>59 的時候人們的結(jié)直腸會發(fā)生病變,嚴重的會造成CRC。
通過結(jié)果發(fā)現(xiàn),個別病人的數(shù)據(jù)游離于3 個聚類簇之外,距離ci很遠。 通過分析,這些患者均是年齡較大或較小,這就是K - Means 算法存在的不足。由于樣本數(shù)目少,年齡分化低,所以無法更多的體現(xiàn)K - Means ++算法的優(yōu)勢。
如果運用更多的樣本,細化每個年齡段不同性別的人群,將常規(guī)的5 種菌群所有簇類都計算出來,建立數(shù)據(jù)庫,當有病人診斷時,導入PCR 檢測數(shù)據(jù)(人體內(nèi)腸道菌群檢測方式)智能模型,可直接對比病人的檢查數(shù)據(jù),提示醫(yī)生該病人的對比情況,判斷菌群是否病變。
3.2.1 算法介紹
CRC 患者體內(nèi)并不是單一的腸道菌群病變,而是多種病變結(jié)合,并且每種關系間的營養(yǎng)干預方案也不一樣,需要通過關聯(lián)規(guī)則挖掘出內(nèi)部的所有關系。
關聯(lián)規(guī)則是指形如X →Y 的表達式,且X ∩Y =φ。 關聯(lián)規(guī)則的強度可以用支持度(support)和置信度(confidence)度量。 其中,支持度(s) 指X 與Y 同時出現(xiàn)的事務在T(所有事物的集合) 中的比例,確定規(guī)則可用于給定數(shù)據(jù)集的頻繁程度;置信度(c)指X 與Y 同時出現(xiàn)的事務在X 出現(xiàn)的事務中的比例,衡量Y 在包含X 的事務中出現(xiàn)的頻繁程度:
通過定義可知,由關聯(lián)規(guī)則作出的推論并不必然蘊涵因果關系[8]。
3.2.2 改進的Apriori 算法
Apriori 是關聯(lián)規(guī)則中最常用的一種算法。 在Apriori 算法中,最小支持度和最小置信度是該算法最重要的分析閾值和約束條件。 但是,在處理醫(yī)學數(shù)據(jù)時只有這兩個條件是不夠的。 如需要更加精準的分析CRC 病人的腸道菌群數(shù)據(jù)關聯(lián)性,Apriori 算法還存在一些需要改進的地方[9]。
改進的Apriori 算法依然是以Apriori 算法的分段思想基礎。 首先在輸入的事務數(shù)據(jù)集中尋找頻繁項集,部分代碼如下:
其中,集合iset 選擇樹結(jié)構(gòu)(抽象數(shù)據(jù)類型)存儲,init 初始化數(shù)據(jù)結(jié)構(gòu), frequent(k) 產(chǎn)生Lk,itemsets 返回項集中項的數(shù)量,maxlen 是關聯(lián)規(guī)模的限制。
使用上述方式找到的頻繁項集產(chǎn)生期望的規(guī)則如下:
改進算法解決了兩個問題:
(1)通過擴展項的屬性、添加項出現(xiàn)位置的約束標記,解決了項的位置問題;
(2)通過設置關聯(lián)最大長度maxlen 限制了關聯(lián)規(guī)模[10]。
實驗中關于CRC 病人的簡單數(shù)據(jù)集,設有7 個屬性(p =7)、5 個病人(n =5)。 表1 是原始醫(yī)療數(shù)據(jù),表2 是把所有原始屬性一一對應映射成項的映射表(索引表),表3 是轉(zhuǎn)換后的CRC 事務數(shù)據(jù)表。
表1 CRC 原始醫(yī)療數(shù)據(jù)Tab.1 CRC original medical data
表2 映射表1Tab.2 Mapping table1
表3 映射表2Tab.3 Mapping table2
表4 將CRC 醫(yī)療數(shù)據(jù)據(jù)映射成項Tab.4 Map CRC medical data into items
通過執(zhí)行上述分配過程,原始數(shù)據(jù)中的每個元組(記錄的一行)都映射到包含元素的事務元組。結(jié)果表和原始表的列數(shù)相同,但是每列都只包含整數(shù)值,該值與映射過程的索引一致。
實驗數(shù)據(jù)使用表1 提供的關于CRC 診斷的數(shù)據(jù)集,數(shù)據(jù)集包含5 個病人,7 個屬性,其中兩個為類別屬性,5 個為數(shù)值屬性。
對于關聯(lián)規(guī)則挖掘程序的參數(shù)設置方法如下:由于選用的數(shù)據(jù)集較小,但希望發(fā)現(xiàn)兩個或更多病人的關聯(lián),故最小支持度設置為20%,設最小置信度為80%。 根據(jù)研究需要對項進行限制,得到實驗需要的規(guī)則:
格式: [ 1,2,3,4]BODY
[5,6,7,8,9,10,11,12,13,14]BOTH
其中,BODY、BOTH 分別代表限制項出現(xiàn)的左部、左右部位置標記。 即CRC 病人的性別、年齡項(1,2,3,4)限制出現(xiàn)在規(guī)則的左部; CRC 病人腸道菌群指數(shù)項(5,6,7,8,9,10,11,12,13,14)出現(xiàn)在規(guī)則的左右部均可。
根據(jù)實驗研究要求,設左部最大關聯(lián)長度body maxlen =3,后續(xù)研究可以根據(jù)規(guī)則需求設置不同的maxlen 值。
通過實驗,可以得到5 個有關病人腸道菌群病變的項(5,7,9,11,13)出現(xiàn)在規(guī)則右部的所有規(guī)則。 例如:235 →711(40%,50%) 規(guī)則表示Gender=Fandage <45and 雙歧桿菌病變→乳酸桿菌病變and 糞腸球菌病變具有40%的支持度和100%的置信度,即:所研究病人有40%(支持度)在45 歲以下且雙歧桿菌病變的男性,其腸道菌群中乳酸桿菌和糞腸球菌都產(chǎn)生病變,在45 歲以下且雙歧桿菌病變的男性中,因乳酸桿菌和糞腸球菌都產(chǎn)生病變導致CRC 的可能性為100%(置信度)。
由實驗結(jié)果可見,若設X →Y 是一個合法規(guī)則,則添加右部一項限制條件后,會有O(2∣x∣+∣y∣-1)個無用規(guī)則被刪除,達到了改進Apriori 算法的目的。 利用實際的診斷數(shù)據(jù)集可以驗證已用的實際診斷規(guī)則,但還需進一步考慮項的分組(菌群病變組合)問題,以及添加營養(yǎng)方案的項關聯(lián),這樣將提高挖掘關聯(lián)規(guī)則的性能, 得到更準確的醫(yī)療規(guī)則。
通過深度學習,將已經(jīng)完成的部分結(jié)合處理,通過不斷的AI 學習以及醫(yī)學專家的修正,使病變規(guī)則和營養(yǎng)干預方案之間的聯(lián)系更加合理,達到預設的地步。 簡易的、完善的干預模型可以通過下述程序體現(xiàn):
上述代碼表示:在營養(yǎng)干預方案庫中查找33 歲男性且檢測出雙歧桿菌數(shù)目只有53 個(每克糞便)的營養(yǎng)干預方案。 在實際過程中,若需要添加其他限制規(guī)則,都可以通過深度學習不斷添加限制,繼續(xù)完善。
本文通過研究K - Means 算法、Apriori 算法在醫(yī)療數(shù)據(jù)上應用,發(fā)現(xiàn)相關算法在研究應用上的不足,提出了相應的K -Means ++算法以及改進的Apriori 算法,達到了對CRC 疑似病人體內(nèi)腸道菌群的分類,并發(fā)現(xiàn)其內(nèi)部關聯(lián)規(guī)則。 從多方面驗證了基于數(shù)據(jù)挖掘的CRC 腸道菌群營養(yǎng)干預切實可行。本論文的研究還存在一些完善和探索的地方。 如,后續(xù)需要完善所有規(guī)則,就需運用大型醫(yī)療數(shù)據(jù)集進行測試,同時要經(jīng)過醫(yī)療專家考慮項的分組問題,從而進一步改進算法。 隨著AI 技術的不斷發(fā)展,以及后續(xù)的進一步研究,相信在不久的將來,這項技術一定會在臨床治療當中得以應用。