尹梓名 張震宇 胡曉暉 吳洪亮 樂(lè)珺怡黃偉杰 林勇
1.上海理工大學(xué)醫(yī)療器械與食品學(xué)院,上海 200093 2.上??祻?fù)器械工程技術(shù)研究中心,上海 200093 3.上海市浦東新區(qū)浦南醫(yī)院骨科,上海 200125
骨質(zhì)疏松癥(osteoporosis,OP)是一種最常見(jiàn)的骨骼疾病,是一種以骨強(qiáng)度下降和骨折風(fēng)險(xiǎn)增加為主要特征的骨骼疾病[1]。原發(fā)性骨質(zhì)疏松為骨質(zhì)疏松癥中的主要類型,且原發(fā)性骨質(zhì)疏松發(fā)生的概率隨著年齡增長(zhǎng)而不斷增加。目前我國(guó)60歲以上人口已經(jīng)超過(guò)2.5億[2],而因?yàn)樵l(fā)性骨質(zhì)疏松導(dǎo)致骨折每年的花費(fèi)達(dá)到10億美元,所以原發(fā)性骨質(zhì)疏松也是導(dǎo)致老年患者致殘和致死的主要原因之一[3]。原發(fā)性骨質(zhì)疏松起病隱匿,且對(duì)其的診斷涉及到骨密度、骨折情況、骨代謝標(biāo)志物、其他臨床特征和既往病史等多方面的因素,雖然目前診斷骨質(zhì)疏松的主要方法為根據(jù)各類骨密度識(shí)別骨質(zhì)疏松,但原發(fā)性骨質(zhì)疏松的臨床診斷較為復(fù)雜,醫(yī)生需要綜合臨床的各類特征信息做出診斷,目前尚無(wú)較為全面且易于使用的診斷模型。
隨著人工智能的迅速發(fā)展,在包括醫(yī)學(xué)的許多領(lǐng)域都顯示出了較好的效果并得到了廣泛的應(yīng)用,在骨質(zhì)疏松診斷和預(yù)測(cè)方面國(guó)內(nèi)外也有學(xué)者進(jìn)行了研究。神經(jīng)網(wǎng)絡(luò)是人工智能機(jī)器學(xué)習(xí)中重要的一種方法,因此在骨質(zhì)疏松患者中使用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行輔助診斷預(yù)測(cè)取得到了不錯(cuò)的效果[4-6]。其中包括分析患者既往病史,生活習(xí)慣等指標(biāo)進(jìn)行風(fēng)險(xiǎn)預(yù)測(cè),疾病診斷并最終取得了不錯(cuò)的效果。除此之外,機(jī)器學(xué)習(xí)中的其他經(jīng)典方法,例如支持向量機(jī)方法(support vector machines,SVM)通過(guò)學(xué)習(xí)骨質(zhì)疏松患者骨代謝標(biāo)志物和其他骨密度指標(biāo)進(jìn)而對(duì)骨質(zhì)疏松診斷預(yù)測(cè)也有應(yīng)用[7]。通過(guò)支持向量機(jī)建立的模型對(duì)相應(yīng)的骨質(zhì)疏松問(wèn)題有較好的預(yù)測(cè)結(jié)果。另外,在基因表達(dá)層面對(duì)基因與骨質(zhì)疏松關(guān)系進(jìn)行學(xué)習(xí)也取得了不錯(cuò)的結(jié)果[8]。此外,基于模糊邏輯的模糊決策樹算法在頸椎骨質(zhì)疏松疾病的應(yīng)用,較好地實(shí)現(xiàn)了對(duì)頸椎骨質(zhì)疏松類別和嚴(yán)重程度的預(yù)測(cè)和判斷[9]。
目前,針對(duì)骨質(zhì)疏松診斷的機(jī)器學(xué)習(xí)模型多數(shù)都是基于單一機(jī)器學(xué)習(xí)模型,存在精度有限、模型魯棒性低、過(guò)擬合風(fēng)險(xiǎn)高等問(wèn)題。所以本研究考慮采用更加合理的集成學(xué)習(xí)方法,將單一分類器納入集成學(xué)習(xí)算法中,提出骨質(zhì)疏松診斷模型SAB-SVMKNN,期望可以提高骨質(zhì)疏松的診斷準(zhǔn)確率。
本實(shí)驗(yàn)采用的實(shí)驗(yàn)數(shù)據(jù)是從上海市浦南醫(yī)院獲得的200例原發(fā)性骨質(zhì)疏松患者臨床數(shù)據(jù)。在這200例受試者中,經(jīng)綜合診斷為原發(fā)性骨質(zhì)疏松的患者數(shù)量為65例,骨量減少患者為102例,正常骨密度者為33例。數(shù)據(jù)包含受試者基本數(shù)據(jù):身高、體重、年齡等,受試者臨床檢查和化驗(yàn)數(shù)據(jù):血糖、血紅蛋白、癌胚抗原等,受試者各部分骨密度數(shù)據(jù):腰2錐體骨密度值、腰1椎體骨密度值等,其相關(guān)特征屬性見(jiàn)表1。
表1 原始數(shù)據(jù)特征Table 1 Raw data characteristics
原始數(shù)據(jù)存在缺失值,離群值和屬性值范圍不統(tǒng)一的問(wèn)題。缺失值、離群值問(wèn)題:考慮到數(shù)據(jù)本身內(nèi)容較少,本文采用平均值代替的方法進(jìn)行處理。對(duì)于因男女性別不同產(chǎn)生的固有屬性缺失值,使用0來(lái)填充進(jìn)行處理。數(shù)據(jù)歸一化問(wèn)題:為了消除不同屬性之間的量綱和單位影響,對(duì)不同種類的屬性值進(jìn)行標(biāo)準(zhǔn)化,轉(zhuǎn)化為0~1的數(shù)值,這里使用min-max標(biāo)準(zhǔn)化方法,公式如下:
(1)
其中x*為歸一化后的值,x為對(duì)應(yīng)屬性原始值。數(shù)據(jù)不平衡問(wèn)題:由于原始數(shù)據(jù)中不同類別對(duì)應(yīng)的樣本數(shù)目不相同且差異較大,這里使用SMOTE升采樣對(duì)數(shù)據(jù)進(jìn)行增強(qiáng):SMOTE是一種通過(guò)過(guò)采樣來(lái)合成更多少數(shù)類樣本的算法[10],通過(guò)這種方法將骨質(zhì)疏松類樣本(標(biāo)記為0)和正常骨密度樣本(標(biāo)記為2)的數(shù)量擴(kuò)充至與骨量減少(標(biāo)記為1)的樣本數(shù)量相同,其中骨量減少樣本數(shù)量為102,因此數(shù)據(jù)增強(qiáng)后的樣本數(shù)量為306個(gè)。
由于原始數(shù)據(jù)具有的特征數(shù)量較多,因此需要根據(jù)屬性相關(guān)性對(duì)屬性進(jìn)行排序和篩選,這里使用多算子的特征排序方法,其示意圖見(jiàn)圖1。
圖1 特征選擇示意圖Fig.1 Diagram of feature selection
如圖1所示,對(duì)原始數(shù)據(jù)特征進(jìn)行9種特征選擇算法計(jì)算屬性與最終診斷結(jié)果的相關(guān)性,再將相關(guān)性進(jìn)行歸一化、求和并排序后,使用支持向量機(jī)單模型進(jìn)行特征選擇,保留準(zhǔn)確度最高時(shí)相關(guān)性較強(qiáng)的若干屬性。
集成學(xué)習(xí)(ensemble learning)是機(jī)器學(xué)習(xí)的分支領(lǐng)域,是一種可以將若干不同或相同的弱學(xué)習(xí)器通過(guò)集成方法提升為強(qiáng)學(xué)習(xí)器的思想和方法。集成學(xué)習(xí)被認(rèn)為是目前用于提高經(jīng)典機(jī)器學(xué)習(xí)算法乃至深度學(xué)習(xí)算法性能的有效方法。
Adaboost算法:Adaboost是集成學(xué)習(xí)的一種算法[11],可以通過(guò)串行訓(xùn)練若干弱學(xué)習(xí)器從而將其提升為強(qiáng)學(xué)習(xí)器。設(shè)數(shù)據(jù)集為D={(x1,y1),(x2,y2),…,(xm,ym)},則在初始狀態(tài)下,每一個(gè)樣本的權(quán)重為1/m,在每一輪訓(xùn)練中,分類錯(cuò)誤的樣本所占的權(quán)重會(huì)提升,從而使得該樣本在后續(xù)的分類中得到更高的關(guān)注。其中,每一個(gè)分類器的權(quán)重由下式給出:
(2)
其中,αt表示第t個(gè)學(xué)習(xí)器的決策權(quán)重,εt表示該學(xué)習(xí)器的分類錯(cuò)誤率。另外,在每一輪訓(xùn)練中,對(duì)屬性的權(quán)重更新方法為:
(3)
其中,Dt+1(x)表示下一輪中樣本的權(quán)重分布,Dt(x)表示當(dāng)前樣本的權(quán)重分布,zt是令Dt+1滿足分布條件的歸一化因子,f(x)和ht(x)表示樣本的實(shí)際值和當(dāng)前學(xué)習(xí)器的預(yù)測(cè)值。得到所有基學(xué)習(xí)器訓(xùn)練好的模型后,集成學(xué)習(xí)最后的輸出如下所示:
(4)
最后的輸出為所有分類器按照自己權(quán)重決策的加權(quán)組合,最終以符號(hào)判別輸出。
Bagging算法:Bagging為另一種并行訓(xùn)練若干基分類器并將其進(jìn)行組合而達(dá)到集成分類目的的分類器[12]。其具體方法為通過(guò)從樣本中有放回采樣得到若干采樣集,分別訓(xùn)練并綜合所有的分類器從而得到集成的結(jié)果,最后的輸出如下所示:
(5)
其中輸出值y為樣本實(shí)際值,且y屬于樣本輸出空間Y。I為指示函數(shù),學(xué)習(xí)器最終的輸出結(jié)果為所有基分類器投票的結(jié)果。
Stacking算法:Stacking是另一種可以集成多種異構(gòu)分類器的集成方法[13],其通過(guò)先訓(xùn)練若干一級(jí)學(xué)習(xí)器,再將一級(jí)學(xué)習(xí)器的輸出作為二級(jí)學(xué)習(xí)器的訓(xùn)練輸入,將原始樣本標(biāo)記作為二級(jí)學(xué)習(xí)器的標(biāo)記進(jìn)行學(xué)習(xí)。Stacking算法的示意圖見(jiàn)圖2。
圖2 Stacking算法示意圖Fig.2 Diagram of the stacking algorithm
根據(jù)集成學(xué)習(xí)思想和方法的指導(dǎo),本文構(gòu)建了面向骨質(zhì)疏松輔助診斷的機(jī)器學(xué)習(xí)模型SAB-SVMKNN,見(jiàn)圖3。在模型最外層使用Stacking集成模型,其中一級(jí)學(xué)習(xí)器分別使用一個(gè)Bagging算法和一個(gè)Adaboost算法,在這兩種算法中使用支持向量機(jī)分類模型作為串行和并行訓(xùn)練所用的模型,由于一級(jí)學(xué)習(xí)器的輸出為二維的分類結(jié)果標(biāo)簽,因此二級(jí)學(xué)習(xí)器使用KNN分類算法對(duì)一級(jí)學(xué)習(xí)器的結(jié)果進(jìn)行進(jìn)一步學(xué)習(xí)分類。根據(jù)特征相關(guān)性算法處理過(guò)的原始數(shù)據(jù)將會(huì)被分為訓(xùn)練集和測(cè)試集進(jìn)入骨質(zhì)疏松篩查識(shí)別模型。當(dāng)前模型含兩個(gè)基學(xué)習(xí)器:一個(gè)為Adaboost集成算法,另一個(gè)為Bagging集成算法。因此訓(xùn)練數(shù)據(jù)也被劃分為兩部分,將兩部分分別用作基學(xué)習(xí)器的訓(xùn)練過(guò)程,再使用兩個(gè)模型分別對(duì)測(cè)試集數(shù)據(jù)進(jìn)行預(yù)測(cè),預(yù)測(cè)的結(jié)果會(huì)進(jìn)行平均并作為次級(jí)學(xué)習(xí)器的預(yù)測(cè)樣本數(shù)據(jù)。
圖3 SAB-SVMKNN結(jié)構(gòu)示意圖Fig.3 Diagram of SAB-SVMKNN
從Stacking的結(jié)構(gòu)可以判斷,當(dāng)構(gòu)成Stacking一級(jí)學(xué)習(xí)器的各個(gè)學(xué)習(xí)器之間差異越大時(shí),模型對(duì)于更復(fù)雜問(wèn)題的過(guò)擬合風(fēng)險(xiǎn)就會(huì)越低,所以在對(duì)骨質(zhì)疏松篩查模型使用兩種集成方式完全不一樣的集成學(xué)習(xí)模型時(shí),可將篩查識(shí)別的準(zhǔn)確率和篩查模型的泛化性能得到均衡的提升。
混淆矩陣:混淆矩陣也成為誤差矩陣,是在監(jiān)督學(xué)習(xí)中用以評(píng)價(jià)模型泛化預(yù)測(cè)性能的一種標(biāo)準(zhǔn)格式,通常使用n行n列的矩陣表示,見(jiàn)表2。其中以3分類舉例:則在實(shí)際值與預(yù)測(cè)值相同時(shí)代表模型對(duì)測(cè)試樣本的預(yù)測(cè)正確,其余均為預(yù)測(cè)與實(shí)際值不相等的情形。
表2 多分類混淆矩陣Table 2 Multi-class confusion matrix
(1)準(zhǔn)確率(Accuracy):準(zhǔn)確率定義公式如下:其表示分類正確的樣本數(shù)占總樣本數(shù)的比例。
(6)
(2)精確率(Precision):精確率指在對(duì)當(dāng)前分類的預(yù)測(cè)中,正確分類的數(shù)量占所有預(yù)測(cè)為該分類數(shù)量的比率,以類0為例可由下式表示:
(7)
(3)特異率(Specificity):特異率指在對(duì)當(dāng)前分類的預(yù)測(cè)中,正確判斷不是當(dāng)前分類的數(shù)量占所有不是該分類數(shù)量的比率,以類0為例的特異率如下:
(8)
(4)召回率(Recall):召回率指對(duì)當(dāng)前分類的預(yù)測(cè)中,正確分類的數(shù)量占所有真實(shí)該分類數(shù)量的比例,以類0為例的召回率可以表示為:
(9)
(5)F值(F-measure):F值為綜合精確度和召回率的平均值,其計(jì)算公式如下:
(10)
(6)Kappa系數(shù)(Kappa):Kappa系數(shù)是基于多分類問(wèn)題所提出的用于衡量模型泛化預(yù)測(cè)性能和分類精度的計(jì)算指標(biāo)。通過(guò)計(jì)算總體分類精度p0即準(zhǔn)確率(Accuracy)和pe數(shù)值最終計(jì)算出Kappa值(Kappa),其中p0、pe和Kappa值的計(jì)算方法如下:
(11)
(12)
(13)
Kappa值計(jì)算的結(jié)果通常為0~1,根據(jù)模型性能和預(yù)測(cè)結(jié)果可以分為5個(gè)等級(jí):0.0~0.2為極低的預(yù)測(cè)性能;0.21~0.40為一般的預(yù)測(cè)性能;0.41~0.60為中等的性能;0.61~0.80為高度的性能;0.81~1被認(rèn)為具有極高的性能。
(7)Friedman檢驗(yàn)(Friedman Test):Friedman檢驗(yàn)是一種用于判斷多個(gè)樣本是否具有齊一性的檢驗(yàn)[14],通過(guò)該檢驗(yàn)可以確定研究模型最終的分類結(jié)果與同等數(shù)據(jù)條件下的其他對(duì)照模型是否有區(qū)別。
通過(guò)特征篩選挑選出的8類特征從高到低的重要性排序依次為:腰2椎體骨密度值、腰1椎體骨密度值、頸部骨密度值、大粗隆骨密度值、絕經(jīng)年齡、腰椎體骨密度均值、Ward’s三角區(qū)骨密度值和性別,其歸一化權(quán)重見(jiàn)表3。
表3 特征重要性與權(quán)重Table 3 Importance and weight of features
為驗(yàn)證特征篩選的有效性,研究使用5種單模型機(jī)器學(xué)習(xí)算法、2種經(jīng)典集成學(xué)習(xí)算法和使用與本研究基分類器不相同的Stacking算法進(jìn)行對(duì)比,該算法在Stacking內(nèi)部使用雙Bagging集成,一級(jí)學(xué)習(xí)器使用KNN,二級(jí)學(xué)習(xí)器使用樸素貝葉斯分類算法(簡(jiǎn)稱SDB-KNNNB算法)對(duì)特征篩選前后的準(zhǔn)確率、精確率均值、特異率均值、召回率均值、F值均值和Kappa值進(jìn)行記錄。由于類別不平衡問(wèn)題,模型均在使用SMOTE數(shù)據(jù)增強(qiáng)后進(jìn)行訓(xùn)練,實(shí)驗(yàn)結(jié)果采用10折交叉驗(yàn)證計(jì)算。其中1為準(zhǔn)確率(%),2為精確率均值(%),3為特異度均值(%),4為召回率均值(%),5為F值均值(%),6為Kappa值。各模型特征篩選前性能見(jiàn)表4。
表4 多種模型對(duì)比結(jié)果(特征篩選前)
表5為經(jīng)過(guò)特征篩選后各個(gè)模型的性能,其中1為準(zhǔn)確率(%),2為精確率均值(%),3為特異度均值(%),4為召回率均值(%),5為F值均值(%),6為Kappa值。
表5 多種模型對(duì)比結(jié)果(特征篩選后)
通過(guò)比較研究方法與相應(yīng)對(duì)照試驗(yàn)的顯著性區(qū)別,選用Friedman檢驗(yàn)將特征篩選后本文所建模型的預(yù)測(cè)結(jié)果與對(duì)照模型的預(yù)測(cè)結(jié)果進(jìn)行Frideman檢驗(yàn),其秩結(jié)果見(jiàn)表6,最終結(jié)果見(jiàn)表7。
表6 Frideman檢驗(yàn)的秩Table 6 Rank of Friedman test
表7 Frideman檢驗(yàn)結(jié)果Table 7 Results of Friedman test
由表1可得,在特征篩選前,準(zhǔn)確率最高的模型為基于SVM基分類器的Adaboost模型,準(zhǔn)確率為85.95%,且其F值均值也為最高,F(xiàn)值較本研究模型SAB-SVMKNN高5.65%。此外,SVM單模型、邏輯回歸、神經(jīng)網(wǎng)絡(luò)的模型準(zhǔn)確率也較高,均在80%以上。經(jīng)過(guò)特征篩選后,所有模型均獲得了性能提升,其中提升最為顯著的為SAB-SVMKNN模型,準(zhǔn)確率提高了18.63%,F(xiàn)值均值提高了14.39%。經(jīng)過(guò)特征篩選模型性能變化最小的為SVM單模型,其準(zhǔn)確率約提升了2.62%,F(xiàn)值均值提升了2.54%,Kappa值提升了0.042。經(jīng)過(guò)特征篩選后,KNN模型、基于KNN的Bagging分類和SDB-KNNNB分類的準(zhǔn)確率也提升較高,均在10%以上,說(shuō)明了特征篩選的有效性。
從Frideman檢驗(yàn)的結(jié)果可以看出,表4得出的雙尾P統(tǒng)計(jì)量約為0.011,小于0.05,因此可以認(rèn)為本方法提出的模型與其他各模型之間的預(yù)測(cè)結(jié)果具有顯著性差異。
本文根據(jù)臨床獲得的200例原發(fā)性骨質(zhì)疏松臨床患者的體檢數(shù)據(jù)和各項(xiàng)骨密度數(shù)據(jù)出發(fā),首先通過(guò)9種不同相關(guān)性算子對(duì)31項(xiàng)骨質(zhì)疏松特征進(jìn)行了特征相關(guān)性分析,并通過(guò)算法將其結(jié)合以得到特征相關(guān)性排序。使用各模型綜合對(duì)數(shù)據(jù)進(jìn)行特征篩選訓(xùn)練,得出了使得模型精度最高的8類特征及其排序,為原發(fā)性骨質(zhì)疏松臨床診斷提供了參考。并在此基礎(chǔ)上使用基于Stacking的集成學(xué)習(xí)方法,通過(guò)集成進(jìn)一步提高了單模型的預(yù)測(cè)精度,與此同時(shí)使用雙層集成也降低了模型潛在的過(guò)擬合問(wèn)題。由于無(wú)關(guān)性特征的干擾,SAB-SVMKNN模型在特征篩選前的性能并不突出,在特征篩選之后模型的性能得到了大幅度的提升,進(jìn)一步說(shuō)明在模型特征選擇階段對(duì)于模型構(gòu)建的重要性。
本模型使用的內(nèi)部集成算法Adaboost和Bagging均使得基分類器進(jìn)行了10次迭代。在后續(xù)的研究中將嘗試其他的迭代次數(shù)以期進(jìn)一步提高模型的性能。此外,本研究嘗試將神經(jīng)網(wǎng)絡(luò)加入集成模型進(jìn)行訓(xùn)練但實(shí)際性能較低,原因可能為當(dāng)前數(shù)據(jù)不適合使用神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練和預(yù)測(cè),對(duì)于特征選擇的權(quán)重?cái)?shù)值,在本研究中只起到了特征的重要性比較和排序作用,故在后續(xù)的研究中嘗試將對(duì)應(yīng)的特征權(quán)重?cái)?shù)值與實(shí)際模型結(jié)合起來(lái),再嘗試使用融合了特征權(quán)重值的數(shù)據(jù)對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,將更加合適的神經(jīng)網(wǎng)絡(luò)加入本模型中,使得本研究中的模型進(jìn)一步提高數(shù)據(jù)屬性的利用效率,增強(qiáng)預(yù)測(cè)的精確度和適應(yīng)性。
本文介紹了一種基于人工智能方法,使用多種特征相關(guān)性權(quán)重計(jì)算原發(fā)性骨質(zhì)疏松臨床屬性重要性的特征選擇算法,通過(guò)算法確定了對(duì)于原發(fā)性骨質(zhì)疏松診斷影響最大的若干特征及其具體的重要性權(quán)重,對(duì)于診斷具有重要意義。并在此基礎(chǔ)上提出了一種對(duì)于臨床診斷具有重要意義的預(yù)測(cè)模型,經(jīng)過(guò)與其他模型的對(duì)比,其分類預(yù)測(cè)的精度更高,采用集成學(xué)習(xí)設(shè)計(jì)的模型對(duì)新數(shù)據(jù)的適應(yīng)性更強(qiáng),有效地增強(qiáng)了模型的魯棒性。本模型對(duì)于醫(yī)生在原發(fā)性骨質(zhì)疏松臨床診斷具有重要參考意義,有助于提高臨床醫(yī)生對(duì)于原發(fā)性骨質(zhì)疏松診斷的準(zhǔn)確率。