摘 要:糖尿病是內(nèi)分泌失調(diào)綜合癥中的一種,已經(jīng)越來(lái)越多地出現(xiàn)在我們身邊,并且成為了危害現(xiàn)代人類正常生活的一大殺手。當(dāng)血糖超過(guò)腎臟的負(fù)荷時(shí),血液中的糖分便會(huì)經(jīng)由尿液排出,故稱為糖尿病。近年來(lái),隨著糖尿病病例的不斷增加,對(duì)于現(xiàn)有的醫(yī)療資源和醫(yī)療體系提出了越來(lái)越高的要求。雖然我國(guó)的疾病防治團(tuán)隊(duì)力量一直在不斷擴(kuò)充和壯大,但是面對(duì)快速增長(zhǎng)的患病人群,依然遠(yuǎn)遠(yuǎn)沒(méi)有滿足廣大人民的問(wèn)診需求。機(jī)器學(xué)習(xí)作為集計(jì)算機(jī)學(xué)科和統(tǒng)計(jì)學(xué)科與一體的跨領(lǐng)域?qū)W科,近幾年正在如火如荼地發(fā)展著。如果能夠?qū)C(jī)器學(xué)習(xí)的歷史復(fù)盤,擬合能力應(yīng)用于病理診斷領(lǐng)域,必將能夠極大地提高患者的問(wèn)診效率,使得醫(yī)護(hù)人員能夠從大量繁雜的重復(fù)工作中解放出來(lái),從而進(jìn)一步解決“看病難,看病慢”的問(wèn)題。本文基于該思路,利用決策樹(shù),SVM等機(jī)器學(xué)習(xí)手段,實(shí)現(xiàn)了能夠集病患自助診斷,醫(yī)師輔助診斷,醫(yī)患信息管理,歷史疾病復(fù)盤等功能于一體的糖尿病醫(yī)療問(wèn)診系統(tǒng)。
關(guān)鍵詞:糖尿病診斷;機(jī)器學(xué)習(xí);統(tǒng)計(jì)學(xué)
背景
糖尿病是一種代謝性疾病,它的特征是患者的血糖長(zhǎng)期高于標(biāo)準(zhǔn)值。高血糖會(huì)造成俗稱“三多一少”的癥狀:多食、多飲 、頻尿及體重下降。對(duì)于第一型糖尿病,其癥狀會(huì)在一個(gè)星期至一個(gè)月期間出現(xiàn),而對(duì)于第二型糖尿病則較后出現(xiàn)。不論是哪一種糖尿病,如果不進(jìn)行治療,可能會(huì)引發(fā)許多并發(fā)癥。一般病征有視力模糊、頭痛、肌肉無(wú)力、傷口愈合緩慢及皮膚很癢。急性并發(fā)癥包括糖尿病酮酸血癥與高滲透壓高血糖非酮酸性昏迷;嚴(yán)重的長(zhǎng)期并發(fā)癥則包括心血管疾病、中風(fēng)、慢性腎臟病、糖尿病足、以及視網(wǎng)膜病變等。2型糖尿病患者的初始治療包括教育,強(qiáng)調(diào)飲食、運(yùn)動(dòng)、減重(適當(dāng)時(shí))等生活方式改變。大多數(shù)患者需要二甲雙胍單藥治療,部分患者可能需要將胰島素作為初始治療。雖然一些研究發(fā)現(xiàn)經(jīng)初始治療后2型糖尿病的緩解可能會(huì)維持?jǐn)?shù)年,但大多數(shù)患者為了維持正?;蚪咏5难侨孕枰掷m(xù)的治療。有研究顯示,肥胖患者通過(guò)減肥手術(shù)大幅減重后,大部分患者的2型糖尿病緩解。不論患者對(duì)治療的初始反應(yīng)如何,從大多數(shù)2型糖尿病患者的自然病程來(lái)看,血糖濃度都會(huì)隨時(shí)間逐漸升高。因此,2型糖尿病的防控和治療作為一個(gè)醫(yī)療難題,必然會(huì)耗費(fèi)大量的醫(yī)療醫(yī)護(hù)資源。本文提出了一種能夠從源頭上節(jié)省醫(yī)療成本的方法,即從患者的自身情況,利用機(jī)器學(xué)習(xí)對(duì)歷史數(shù)據(jù)的擬合能力,從患者患病初期就能對(duì)患者身體展現(xiàn)的各項(xiàng)指標(biāo)進(jìn)行推斷,最終獲得初步預(yù)測(cè)的患病概率。輔以醫(yī)護(hù)人員的專業(yè)建議,不僅大大減少了醫(yī)療救護(hù)成本,而且有利于糖尿病例數(shù)據(jù)的收集和維護(hù),是計(jì)算機(jī)領(lǐng)域向醫(yī)療領(lǐng)域跨入的一次比較好的嘗試。
數(shù)據(jù)
眾所周知,機(jī)器學(xué)習(xí)項(xiàng)目需要大量高質(zhì)量的數(shù)據(jù)作為基準(zhǔn),而且其數(shù)據(jù)分布需要符合目標(biāo)領(lǐng)域的分布?;诜植嫉目紤],我們主要從以下幾個(gè)方面考慮對(duì)數(shù)據(jù)的選?。?/p>
(1)特征指標(biāo)獲取的難易程度:特征指標(biāo)應(yīng)當(dāng)是普通人在日常生活中常見(jiàn)且易于獲取的,否則獲取指標(biāo)依然需要耗費(fèi)很大的人力和物力資源;
(2)目標(biāo)人種的聚合程度:本文的目標(biāo)針對(duì)中國(guó)范圍內(nèi)的2型糖尿病患者及潛在患者,由于人種差異,采集的數(shù)據(jù)最好在亞洲/東南亞范圍內(nèi)進(jìn)行采集;
基于上面的考慮,我們采用印度Pima地區(qū)的人種體征患病標(biāo)注數(shù)據(jù)來(lái)進(jìn)行本文中系統(tǒng)的建模,該數(shù)據(jù)集包含如下特征列:
(1)Pregnancies:受孕次數(shù),如果為男性,則該指標(biāo)為0;
(2)Glucose:人體血液葡萄糖含量;
(3)BloodPressure:血壓值,計(jì)量單位為mm/Hg;
(4)SkinThickness:皮層厚度,計(jì)量單位為mm;
(5)Insulin:胰島素含量,2小時(shí)范圍內(nèi)血清胰島素含量,計(jì)量單位為Mu/ml;
(6)BMI:體重指數(shù),計(jì)算規(guī)則為(體重/身高)2;
(7)DiabetesPedigreeFunction:糖尿病譜系功能值;
(8)Age:年齡(歲)
(9)Outcome:label,0/1.
該數(shù)據(jù)集由上面的列以及768條樣本交錯(cuò)組成。
數(shù)據(jù)可視化
首先對(duì)數(shù)據(jù)進(jìn)行可視化,我們引用python中的pandas包,采用以下幾個(gè)步驟對(duì)數(shù)據(jù)進(jìn)行預(yù)處理:
(1)數(shù)據(jù)空值及數(shù)據(jù)類型探查
該數(shù)據(jù)集格式較為整齊,且不存在缺失值,因此不需要對(duì)缺失值進(jìn)行特別處理;
(2)數(shù)據(jù)各個(gè)維度交叉可視化
由于數(shù)據(jù)樣本條數(shù)不多,加上所有的樣本特征均為數(shù)值型,在各個(gè)維度上進(jìn)行數(shù)據(jù)的數(shù)值可視化如下:
其中,整體圖例橫/縱坐標(biāo)軸分別由上面提到的所有特征列組成,該圖例展示了各個(gè)特征列之間的兩兩相互情況。
(3)數(shù)據(jù)單維度與標(biāo)簽交叉統(tǒng)計(jì)可視化
數(shù)據(jù)單維度與標(biāo)簽交叉統(tǒng)計(jì)可視化是探索特征與標(biāo)簽關(guān)系的一個(gè)非常重要的部分,這一步驟可以幫助我們初步探查特征與標(biāo)簽之間的關(guān)系。我們以Pregenancies與標(biāo)簽的統(tǒng)計(jì)關(guān)系為例,得到下面的直方圖:
上圖中的橫軸數(shù)值為懷孕次數(shù),縱軸為患病的0/1數(shù)量的比例,其中藍(lán)色部分柱形代表未患病的數(shù)量,橙色部分柱形代表患病的數(shù)量。可以看出,隨著x軸的推移,藍(lán)色部分的柱形長(zhǎng)度趨向于0,因此可以初步得出類似于“患病概率與懷孕次數(shù)正相關(guān)”類似結(jié)論,但是該結(jié)論實(shí)際上并不具有說(shuō)服力,因?yàn)閱我坏奶卣鞑⒉荒芡耆爬ㄋ玫浇Y(jié)果的置信度。
數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理過(guò)程由離群點(diǎn)檢測(cè)和數(shù)據(jù)增強(qiáng)兩部分組成:其中離群點(diǎn)檢測(cè)用于進(jìn)行離群點(diǎn)數(shù)據(jù)的剔除;數(shù)據(jù)增強(qiáng)則通過(guò)對(duì)數(shù)據(jù)增加噪聲來(lái)增強(qiáng)模型對(duì)于更復(fù)雜情況數(shù)據(jù)的泛化能力和魯棒性。下面分開(kāi)詳述:
(1)離群點(diǎn)的檢測(cè)和剔除。離群點(diǎn)檢測(cè)可以使用的方法比較多,我們從數(shù)據(jù)規(guī)模和計(jì)算難度兩方面對(duì)離群點(diǎn)檢測(cè)的方法進(jìn)行挑選。該數(shù)據(jù)集僅有768條記錄,就算進(jìn)行噪聲加入后,數(shù)量級(jí)也不會(huì)超過(guò)104,再加上該模型建立之后需要服務(wù)于客戶端,對(duì)于性能上要求可能比較高。因此,我們需要選擇一種能夠快速定位和區(qū)分離群點(diǎn)的方法來(lái)輔助進(jìn)行醫(yī)療決策。基于上面的考慮,我們決定采用Robust Covariance和isolate Forest兩種方法從單維度上對(duì)數(shù)據(jù)進(jìn)行離群點(diǎn)剔除。其中,Robust Covariance方法是一種數(shù)據(jù)集協(xié)方差的魯棒估計(jì) (robust estimator)。 這個(gè)想法是找出一個(gè)給定比例的”好”觀察值,它們不是離群值, 且可以計(jì)算其經(jīng)驗(yàn)協(xié)方差矩陣。 然后將該經(jīng)驗(yàn)協(xié)方差矩陣重新縮放以補(bǔ)償所執(zhí)行的觀察選擇;Isolate Forest方法需要對(duì)采樣到的特征隨機(jī)生成分割點(diǎn)即可,不需要像各種決策樹(shù)算法一樣,按照各種標(biāo)準(zhǔn)(基尼系數(shù),信息增益或者信息增益率)選特征,選分割。我們以preganancies維度為例,利用;Isolate Forest算法進(jìn)行離群點(diǎn)檢測(cè)的結(jié)果如下:
可以看到,選用Robust Covariance時(shí),得到的邊界較為均勻圓潤(rùn),而選用isolate Forest時(shí),得到的表姐比較粗糙。因?yàn)槲覀兿M敫俚碾x群點(diǎn)以獲得更多符合規(guī)則的數(shù)據(jù)樣本,因此選用isolate Forest是可行的。
(2)數(shù)據(jù)加噪
數(shù)據(jù)加噪的本質(zhì)是通過(guò)數(shù)據(jù)的污染,對(duì)模型的訓(xùn)練造成難度,模型在訓(xùn)練過(guò)程中自主克服這些難度,從而達(dá)到更好的魯棒性和泛化能力的效果。同時(shí),模型加噪可以進(jìn)一步擴(kuò)充數(shù)據(jù)集容量,對(duì)于模型的充實(shí)和飽滿也具有比較積極的意義?;谏厦娴目紤],我們對(duì)該數(shù)據(jù)集進(jìn)行加噪類型如下:
(1)泊松噪聲。泊松噪聲是數(shù)據(jù)樣本中存在的比較主要的特征,盡管其有0均值的特質(zhì)但是由于其獨(dú)立于信號(hào)之外,因此很難除掉;
(2)乘性伯努利噪聲;
(3)Text加性噪聲;
(4)隨機(jī)脈沖噪聲
(5)交叉噪聲:例如對(duì)數(shù)據(jù)同時(shí)進(jìn)行泊松噪聲和乘性伯努利特征的加噪。
特征工程
在該步驟中,我們將對(duì)數(shù)據(jù)的各種特征進(jìn)行融合,裁剪和歸一化。然后通過(guò)與最終模型的融合步驟展示這些特征工程的給最終效果帶來(lái)的好處。
(1)特征歸一化
目前數(shù)據(jù)標(biāo)準(zhǔn)化方法有多種,歸結(jié)起來(lái)可以分為直線型方法(如極值法、標(biāo)準(zhǔn)差法)、折線型方法(如三折線法)、曲線型方法(如半正態(tài)性分布)。不同的標(biāo)準(zhǔn)化方法,對(duì)系統(tǒng)的評(píng)價(jià)結(jié)果會(huì)產(chǎn)生不同的影響,然而不幸的是,在數(shù)據(jù)標(biāo)準(zhǔn)化方法的選擇上,還沒(méi)有通用的法則可以遵循。根據(jù)本文所選取的數(shù)據(jù),我們需要將各個(gè)指標(biāo)的量綱進(jìn)行統(tǒng)一化即可,即采用簡(jiǎn)單的min-max scaler,將各列數(shù)據(jù)進(jìn)行去中心化(具體做法為X-min(x)/std(x))即可;
(2)特征融合和裁剪
特征融合有多種方式,包括全排列組合(將所有特征兩兩/三三…進(jìn)行組合)等手段。在這里,我們選取了特征的兩兩組合即可。一方面這樣即節(jié)省了計(jì)算的時(shí)間和空間,滿足能夠快速推斷,快速迭代的需求;另一方面,這樣能夠引入較少的參數(shù)和誤差,在模型訓(xùn)練時(shí)能夠快速收斂并取得成效。
評(píng)價(jià)指標(biāo)
基于選用的數(shù)據(jù),我們選擇交叉熵(cross-entropy)作為損失函數(shù)。交叉熵的概念與信息量息息相關(guān)。信息量來(lái)衡量一個(gè)事件的不確定性,一個(gè)事件發(fā)生的概率越大,不確定性越小,則其攜帶的信息量就越小。而熵用來(lái)衡量一個(gè)系統(tǒng)的混亂程度,代表系統(tǒng)中信息量的總和;熵值越大,表明這個(gè)系統(tǒng)的不確定性就越大。在本文描述的系統(tǒng)中,因?yàn)榇嬖谥?fù)樣本代價(jià)不對(duì)等的問(wèn)題(將一名患者診斷為無(wú)病造成的損失較將一名無(wú)病者診斷為患者造成的損失大),因此使用交叉熵來(lái)解決這個(gè)問(wèn)題。交叉熵中的Log能夠?qū)⒄_判斷的收益折損,并且將誤判的損失放大,較為符合本文中系統(tǒng)所取的場(chǎng)景。
模型建立
基于前面的數(shù)據(jù)處理步驟,我們選取幾種比較常見(jiàn)的機(jī)器學(xué)習(xí)方法,如下:
1.LR(Logistic Regression,邏輯回歸),Logistic Regression 雖然被稱為回歸,但其實(shí)際上是分類模型,并常用于二分類。Logistic Regression 因其簡(jiǎn)單、可并行化、可解釋強(qiáng)深受工業(yè)界喜愛(ài)。其本質(zhì)為假設(shè)數(shù)據(jù)服從這個(gè)分布,然后使用極大似然估計(jì)做參數(shù)的估計(jì);
2.KNN(K Nearrest Neightbour,最鄰近算法),KNN是通過(guò)測(cè)量不同特征值之間的距離進(jìn)行分類。它的思路是:如果一個(gè)樣本在特征空間中的k個(gè)最相似(即特征空間中最鄰近)的樣本中的大多數(shù)屬于某一個(gè)類別,則該樣本也屬于這個(gè)類別,其中K通常是不大于20的整數(shù)。KNN算法中,所選擇的鄰居都是已經(jīng)正確分類的對(duì)象。該方法在定類決策上只依據(jù)最鄰近的一個(gè)或者幾個(gè)樣本的類別來(lái)決定待分樣本所屬的類別;
3.DT(Decition Tree,決策樹(shù)模型),決策樹(shù)算法采用樹(shù)形結(jié)構(gòu),使用層層推理來(lái)實(shí)現(xiàn)最終的分類。預(yù)測(cè)時(shí),在樹(shù)的內(nèi)部節(jié)點(diǎn)處用某一屬性值進(jìn)行判斷,根據(jù)判斷結(jié)果決定進(jìn)入哪個(gè)分支節(jié)點(diǎn),直到到達(dá)葉節(jié)點(diǎn)處,得到分類結(jié)果。這是一種基于 if-then-else 規(guī)則的有監(jiān)督學(xué)習(xí)算法,決策樹(shù)的這些規(guī)則通過(guò)訓(xùn)練得到,而不是人工制定的。
4.AdaBoost;Adaboost是一種迭代算法,其核心思想是針對(duì)同一個(gè)訓(xùn)練集訓(xùn)練不同的分類器(弱分類器),然后把這些弱分類器集合起來(lái),構(gòu)成一個(gè)更強(qiáng)的最終分類器(強(qiáng)分類器)。Adaboost算法本身是通過(guò)改變數(shù)據(jù)分布來(lái)實(shí)現(xiàn)的,它根據(jù)每次訓(xùn)練集之中每個(gè)樣本的分類是否正確,以及上次的總體分類的準(zhǔn)確率,來(lái)確定每個(gè)樣本的權(quán)值。將修改過(guò)權(quán)值的新數(shù)據(jù)集送給下層分類器進(jìn)行訓(xùn)練,最后將每次得到的分類器最后融合起來(lái),作為最后的決策分類器。
訓(xùn)練階段的acc展示如下:
通過(guò)上面的建模,得到各個(gè)特征的重要程度如下:
可以看出,血糖濃度為判斷糖尿病的最直接指標(biāo),這與我們的認(rèn)知是相符的,從這點(diǎn)上至少說(shuō)明,模型已經(jīng)在一定程度上表現(xiàn)出人類的知識(shí)特性。
工程建造
本文所述系統(tǒng)基于python語(yǔ)言搭建,在工程端基于Django框架搭建,數(shù)據(jù)庫(kù)采用mysql 8.0,前端采用html+css+jquery實(shí)現(xiàn),目前已經(jīng)實(shí)現(xiàn)了用戶管理,自主診斷,醫(yī)師診斷,病例管理等多項(xiàng)功能。
參考文獻(xiàn):
[1] Falvo D, Holland BE. Medical and psychosocial aspects of chronic illness and disability. Jones & Bartlett Learning; 2017.
[2] Skyler JS, Bakris GL, Bonifacio E, Darsow T, Eckel RH, Groop L, et al. Differentiation of diabetes by pathophysiology, natural history, and prognosis. Diabetes 2017;66:241-55.
[3] Tao Z, Shi A, Zhao J. Epidemiological perspectives of diabetes. Cell Biochem Biophys 2015;73:181-5.
作者簡(jiǎn)介:
馬吉聰 (1987-8-2)性別:男 民族:漢 籍貫省市:山東省煙臺(tái)市 學(xué)歷碩士 主要從事方向研究:人工智能。
(云南師范大學(xué) ?云南 昆明 ?650000)