


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