嚴(yán) 玲,周作建**,宋懿花,胡 云,商洪濤,戰(zhàn)麗彬,董 青
(1. 南京中醫(yī)藥大學(xué)人工智能與信息技術(shù)學(xué)院 南京 210046;2. 江蘇省中醫(yī)院 南京 210029;3. 南京中醫(yī)藥大學(xué)中醫(yī)學(xué)院·中西醫(yī)結(jié)合學(xué)院 南京 210046;4. 連云港市衛(wèi)生健康委員會(huì) 連云港 222007)
中醫(yī)認(rèn)為,疾病的發(fā)生及發(fā)展與體質(zhì)差異有一定聯(lián)系。體質(zhì)是個(gè)體在生命周期中形成的形態(tài)結(jié)構(gòu)、生理功能和心理狀態(tài)方面相對(duì)穩(wěn)定的固有特質(zhì)[1]。體質(zhì)因人而異,但可通過類來劃分體質(zhì)特征,“王琦中醫(yī)體質(zhì)九分法”[2]將中醫(yī)體質(zhì)分為平和質(zhì)、氣虛質(zhì)、陽(yáng)虛質(zhì)、陰虛質(zhì)、痰濕質(zhì)、濕熱質(zhì)、血瘀質(zhì)、氣郁質(zhì)、特稟質(zhì),是目前權(quán)威且主流的體質(zhì)劃分方法。“治未病”[3]是中醫(yī)學(xué)的主要研究?jī)?nèi)容之一,強(qiáng)調(diào)未病先防、欲病早治、既病防變,雖然體質(zhì)在每個(gè)個(gè)體中都有一定的差異性,但是把握個(gè)體體質(zhì)的差異性以及群體體質(zhì)的規(guī)律性有助于將疾病從“治病”到“防病”的轉(zhuǎn)變。中醫(yī)體質(zhì)辨識(shí)[4]就是以人的體質(zhì)為認(rèn)知對(duì)象,通過某些方式判斷個(gè)體所屬體質(zhì)類型,從整體上把握健康與疾病的個(gè)體差異,進(jìn)而制定適宜的治療、促進(jìn)等干預(yù)措施,彌補(bǔ)西醫(yī)體檢在“未病先防”的不足。體質(zhì)辨識(shí)的主要工作[5]包括辨識(shí)個(gè)體體質(zhì)狀態(tài)、年齡老少、南北居住、奉養(yǎng)優(yōu)劣等,從而判斷所屬體質(zhì)類別。《“健康中國(guó)2030”規(guī)劃綱要》《中國(guó)防治慢性病中長(zhǎng)期規(guī)劃(2017-2025年)》以及習(xí)總書記在十九大報(bào)告中均強(qiáng)調(diào),為實(shí)施健康中國(guó)戰(zhàn)略需以預(yù)防為主,發(fā)揮中醫(yī)在“治未病”中的重要作用,而中醫(yī)體質(zhì)辨識(shí)是“治未病”的具體措施,有效的、高效的體質(zhì)辨識(shí)已經(jīng)成為目前中醫(yī)治未病的重要課題之一。
目前中醫(yī)體質(zhì)辨識(shí)研究領(lǐng)域主要采用體質(zhì)辨識(shí)量表及統(tǒng)計(jì)分析方法,體質(zhì)辨識(shí)量表幾乎采用被列為中華中醫(yī)藥學(xué)會(huì)標(biāo)準(zhǔn)的《中醫(yī)體質(zhì)分類與判定》標(biāo)準(zhǔn)[6];統(tǒng)計(jì)分析方法基本采用SPSS軟件作為分析工具。楊玲玲等[7]將中華中醫(yī)藥學(xué)會(huì)的《中醫(yī)體質(zhì)分類與判定》作為辨識(shí)量表,以問卷形式進(jìn)行數(shù)據(jù)收集,采用一般性統(tǒng)計(jì)描述進(jìn)行分析,但是只能判定單一體質(zhì)類型;陳燕麗等[8]將《中醫(yī)體質(zhì)分類與判定》作為調(diào)查問卷,通過人工計(jì)算每一項(xiàng)得分及轉(zhuǎn)化分從而判定所屬的體質(zhì)類型,但是每次計(jì)算需要花費(fèi)40 min/人次,耗費(fèi)較大的人力成本及時(shí)間成本;左文英等[9]同樣將《中醫(yī)體質(zhì)分類與判定》作為量表計(jì)算條目的得分及轉(zhuǎn)化分,并采用SPSS軟件進(jìn)行計(jì)量資料和計(jì)數(shù)資料的統(tǒng)計(jì)分析,得出社區(qū)高血壓患者的體質(zhì)分布規(guī)律。單個(gè)生命體會(huì)存在幾種不同的體質(zhì)類型,即存在主要體質(zhì)類型和次要體質(zhì)類型,回顧已有的體質(zhì)辨識(shí)研究可以發(fā)現(xiàn),大多數(shù)研究只是將《中醫(yī)體質(zhì)分類與判定》標(biāo)準(zhǔn)運(yùn)用于特定的環(huán)境或人群,以此來分析體質(zhì)的分布規(guī)律,從而進(jìn)行干預(yù)措施的建議。但是體質(zhì)辨識(shí)量表本身會(huì)花費(fèi)大量的人力成本,隨著人工智能領(lǐng)域的興起及發(fā)展,中醫(yī)體質(zhì)辨識(shí)的智能化研究需要進(jìn)一步被提出,考慮到個(gè)體與體質(zhì)之間存在一對(duì)多的關(guān)系,由此機(jī)器學(xué)習(xí)中的多標(biāo)記學(xué)習(xí)算法可以應(yīng)用在中醫(yī)體質(zhì)類型智能化辨識(shí)的研究中。本文提出了基于多標(biāo)記k近鄰算法(multi-label k nearest neighbor,ML-kNN)的中醫(yī)體質(zhì)辨識(shí)模型,為中醫(yī)體質(zhì)辨識(shí)的智能化、自動(dòng)化研究提供新思路和新方法。
多標(biāo)記學(xué)習(xí)[10,11]研究 1 個(gè)單獨(dú)實(shí)例與 1 組標(biāo)簽相關(guān)聯(lián)的問題。假設(shè)xi為輸入,Yi為輸出,用(xi,Y)i表示1 個(gè)樣本集中的1 個(gè)輸入輸出對(duì),其中Yi是1 個(gè)二進(jìn)制向量,y(ijyi1、yi2……yiq)表示第i個(gè)樣本的第j個(gè)標(biāo)記,yij=0表示該標(biāo)記為負(fù),yij=1表示該類別為正,這就是多標(biāo)記學(xué)習(xí)基本思想。在多標(biāo)記學(xué)習(xí)中,訓(xùn)練集中的樣本都對(duì)應(yīng)多個(gè)標(biāo)記,目標(biāo)任務(wù)是預(yù)測(cè)測(cè)試樣本的標(biāo)記集合。
ML-kNN[12-14]改造“惰性學(xué)習(xí)”k近鄰算法以適應(yīng)多標(biāo)記數(shù)據(jù),使用kNN 的思想查找訓(xùn)練集中的k個(gè)近鄰樣本,并使用最大后驗(yàn)概率確定測(cè)試樣本的標(biāo)記集合。給定多標(biāo)記訓(xùn)練集D={(xi,Yi)|1 ≤i≤m},測(cè)試示例x,假設(shè)Q(x)代表x在訓(xùn)練集中的k個(gè)近鄰樣本的集合,那么對(duì)于j個(gè)類別yj(1 ≤j≤q),Q(x)中標(biāo)簽j為1的樣本數(shù)可表示為每個(gè)標(biāo)記先驗(yàn)概率可表示為其中s為平滑項(xiàng),m為訓(xùn)練集樣本數(shù),q為標(biāo)簽數(shù)。未知樣本的每個(gè)標(biāo)記條件概率可表示為(1 ≤j≤q,0 ≤Cj≤k),其中kj[r]表示自身及k近鄰中r個(gè)近鄰均具有標(biāo)記yj的訓(xùn)練樣本個(gè)數(shù)。將先驗(yàn)概率及條件概率代入多標(biāo)記分類器h(x) ={yj|P(Hj|Cj)/P(?Hj|Cj)>0.5,1 ≤j≤q}獲得測(cè)試樣本的標(biāo)記集合。
多標(biāo)記評(píng)價(jià)指標(biāo)[15]首先評(píng)價(jià)多標(biāo)記分類器在單個(gè)測(cè)試樣本上的分類效果,最終返回其在整個(gè)測(cè)試樣本集上的“均值”。假定多標(biāo)記分類器表示為h(.),多標(biāo)記測(cè)試集表示為S={(xi,Yi)|1 ≤i≤p},其中Yi為xi的標(biāo)記集合,p為測(cè)試集樣本數(shù),用如下多標(biāo)記評(píng)價(jià)指標(biāo)評(píng)估模型效果。
2.2.1 漢明損失
漢明損失[16](hamming loss,HLoss)計(jì)算分類器預(yù)測(cè)出的結(jié)果序列與實(shí)際結(jié)果序列之間數(shù)值上的距離,用來評(píng)估樣本在單個(gè)標(biāo)記上的分類錯(cuò)誤的情況。HLoss 取值越小,分類器預(yù)測(cè)結(jié)果越好,最優(yōu)值為HLoss(h)= 0。表達(dá)式為其中q為所有標(biāo)簽總數(shù)。
2.2.2 1-錯(cuò)誤率
1-錯(cuò)誤率[17](OneError)用來評(píng)估樣本類別標(biāo)記序列最前端的標(biāo)記不屬于相關(guān)標(biāo)記集合的情況。OneError取值越小,系統(tǒng)性能越優(yōu),最優(yōu)值為OneError(h)= 0。表達(dá)式為其中,f(.,.)為h(.)對(duì)應(yīng)的實(shí)值函數(shù)。
2.2.3 覆蓋率
覆蓋率[18](Coverage)用于評(píng)估樣本類別標(biāo)記序列中,覆蓋所有相關(guān)標(biāo)記所要的搜索深度情況。Coverage 取值越小,系統(tǒng)性能越優(yōu),最優(yōu)值為表達(dá)式為:Coverage(h) =其中,rank為與實(shí)值函數(shù)f(.,.)f(.,.)對(duì)應(yīng)的排序函數(shù)。
2.2.4 排序損失
排序損失[19](ranking loss,RLoss)用于評(píng)估樣本類別標(biāo)記序列中無關(guān)標(biāo)記與相關(guān)標(biāo)記排序錯(cuò)誤的情況。RLoss取值越小,系統(tǒng)性能越優(yōu),最優(yōu)值為RLoss(h)=0。表達(dá)式為:其中,為集合Yi的補(bǔ)集。

表1 實(shí)驗(yàn)數(shù)據(jù)結(jié)構(gòu)

表2 不同近鄰數(shù)下評(píng)價(jià)指標(biāo)值
2.2.5 平均精度
平均精度[20](average precision,Avgprec)用于考察樣本類別標(biāo)記序列中,排序靠前的標(biāo)記均為相關(guān)標(biāo)記的情況。Avgprec 取值越大,系統(tǒng)性能越優(yōu),最優(yōu)值為Avgprec(h) = 1。 表 達(dá) 式 為 :
數(shù)據(jù)來源于江蘇省中醫(yī)院體檢中心,共60個(gè)屬性9個(gè)標(biāo)簽,過濾掉不完整、無意義的數(shù)據(jù)最終納入9844條數(shù)據(jù)作為研究對(duì)象,其中60個(gè)屬性是將原始數(shù)據(jù)的體質(zhì)自測(cè)問題規(guī)范化為中醫(yī)癥狀,9個(gè)標(biāo)簽是平和質(zhì)、氣虛質(zhì)、陽(yáng)虛質(zhì)、陰虛質(zhì)、痰濕質(zhì)、濕熱質(zhì)、血瘀質(zhì)、氣郁質(zhì)及特稟質(zhì)9種體質(zhì)類型,原始數(shù)據(jù)標(biāo)簽根據(jù)《中醫(yī)體質(zhì)分類與判定》計(jì)算相應(yīng)條目分及轉(zhuǎn)化分得到。屬性值按照“沒有(根本不)”“很少(有一點(diǎn))”“有時(shí)(有些)”“經(jīng)常(相當(dāng))”“總是(非常)”分別賦值為0、1、2、3、4,標(biāo)簽值按照體質(zhì)類型有無分別賦值為1和0,實(shí)驗(yàn)數(shù)據(jù)結(jié)構(gòu)見表1。
中醫(yī)體質(zhì)辨識(shí)模型ML-kNN 構(gòu)建過程:①使用k近鄰算法查找訓(xùn)練集中與測(cè)試樣本最接近的樣本,通過計(jì)算先驗(yàn)概率及后驗(yàn)概率預(yù)測(cè)測(cè)試樣本的體質(zhì)標(biāo)簽矩陣,詳細(xì)步驟如下:
初始化:指定體質(zhì)數(shù)據(jù)樣本為x,體質(zhì)標(biāo)簽集合Y? Ω,體質(zhì)標(biāo)簽l ∈ Ω,樣本體質(zhì)標(biāo)簽向量y→x,樣本x在訓(xùn)練集中的k近鄰N(x),測(cè)試樣本t(2952 條體質(zhì)數(shù)據(jù)),初始化平滑參數(shù)s為1。
Step1:根據(jù)公式(1)、(2)分別求得體質(zhì)標(biāo)簽值為1、0的先驗(yàn)概率。

Step2:計(jì)算N(x),并根據(jù)公式(3)、(4)分別求得體質(zhì)標(biāo)簽值為1和0的后驗(yàn)概率。其中c[j]指訓(xùn)練樣本中含有l(wèi)且其k近鄰中有j個(gè)l的樣本數(shù)。

Step3:計(jì)算測(cè)試樣本t的k近鄰N(t),并根據(jù)公式(5)、(6)求得t的體質(zhì)標(biāo)簽集合

②采用10折交叉驗(yàn)證,每次訓(xùn)練將數(shù)據(jù)集隨機(jī)分為10 份,按9∶1 的比例分配訓(xùn)練集與測(cè)試集,以此考察體質(zhì)辨識(shí)模型的擬合性能。
③從1-20 調(diào)整k值以尋找模型最佳參數(shù),并運(yùn)用5項(xiàng)評(píng)價(jià)指標(biāo)的均值評(píng)估模型預(yù)測(cè)效果。
采用10 折交叉驗(yàn)證訓(xùn)練模型,并在1-20 之間調(diào)整k值,評(píng)價(jià)指標(biāo)對(duì)應(yīng)的值見表2,從表中可以看出,模型的平均精度不會(huì)隨著近鄰數(shù)的增加而增加,當(dāng)k=8時(shí),模型的 HLoss、OneError、Coverage 及 RLoss 的取值相對(duì)較小且Avgprec 最高,模型效果最佳,體質(zhì)分類效果最好,此時(shí)平均漢明損失(HL-mean)為0.096 1,平均1-錯(cuò)誤率(OE-mean)為0.126 1,平均覆蓋率(COV-mean)為1.153 5,平均排序損失(RL-mean)為0.086 6,平均精度(AVP-mean)為88.57%。江蘇省中醫(yī)院體檢中心體質(zhì)辨識(shí)根據(jù)《中醫(yī)體質(zhì)分類與判定》所列出的問題條目計(jì)算得出,而本文基于體檢中心數(shù)據(jù)建立的體質(zhì)辨識(shí)模型在評(píng)價(jià)指標(biāo)中表現(xiàn)良好,有科學(xué)意義,表明ML-kNN 算法用于體質(zhì)辨識(shí)是有效的。綜上說明,ML-kNN 模型解決中醫(yī)體質(zhì)智能化辨識(shí)問題及其存在的體質(zhì)多標(biāo)記問題有現(xiàn)實(shí)意義。

圖1 體質(zhì)辨識(shí)可視化結(jié)果
基于ML-kNN 算法建立的中醫(yī)體質(zhì)辨識(shí)模型能夠以可視化的界面展示體質(zhì)辨識(shí)結(jié)果,如圖1所示,體質(zhì)辨識(shí)的結(jié)果可以通過可視化界面直觀地反映給用戶,能夠提高體檢中體質(zhì)辨識(shí)的效率,促進(jìn)中醫(yī)體質(zhì)辨識(shí)客觀化研究。
中醫(yī)認(rèn)為疾病治療應(yīng)該將人作為整體,而體質(zhì)狀態(tài)可以從整體上把握健康與疾病,體質(zhì)偏頗是疾病變化的依據(jù),疾病發(fā)生及發(fā)展與體質(zhì)有一定的聯(lián)系,由此體質(zhì)辨識(shí)可為疾病預(yù)防及促進(jìn)提供依據(jù)。目前研究中普遍采用的體質(zhì)辨識(shí)量表無法避免測(cè)試者的主觀意識(shí),且隨著體檢人數(shù)的增加耗費(fèi)大量的人力、物力,由此需建立科學(xué)的體質(zhì)辨識(shí)方法;部分研究采用數(shù)據(jù)挖掘算法辨識(shí)體質(zhì),但是忽略了單一個(gè)體存在幾個(gè)主次不一的體質(zhì)類型而采用單標(biāo)記學(xué)習(xí)算法,并不能較為科學(xué)準(zhǔn)確地判斷出體質(zhì)類型,由此需要引入人工智能中的機(jī)器學(xué)習(xí)算法,建立多標(biāo)記學(xué)習(xí)模型進(jìn)行體質(zhì)類型自動(dòng)、客觀辨識(shí)。本文運(yùn)用ML-kNN 算法構(gòu)建中醫(yī)體質(zhì)辨識(shí)模型,采用10 折交叉驗(yàn)證訓(xùn)練模型,并用多標(biāo)記學(xué)習(xí)評(píng)價(jià)指標(biāo)評(píng)估模型效果,最終模型的 HLoss、OneError、Coverage、RLoss 及Avgprec 的值證實(shí)了ML-kNN 算法運(yùn)用在體質(zhì)辨識(shí)中的可行性及有效性,且當(dāng)近鄰數(shù)的值為8 時(shí)模型的效果最佳,對(duì)中醫(yī)體質(zhì)的分類效果最好,表明采用ML-kNN 算法建立體質(zhì)辨識(shí)模型一定程度上可以代替?zhèn)鹘y(tǒng)的體質(zhì)辨識(shí)方法且能彌補(bǔ)單標(biāo)記學(xué)習(xí)不能識(shí)別多個(gè)體質(zhì)類型的局限性,節(jié)約人力、物力成本且符合中醫(yī)辨識(shí)體質(zhì)的思想,為中醫(yī)體質(zhì)辨識(shí)智能化及自動(dòng)化發(fā)展提供新方法,為實(shí)施健康中國(guó)戰(zhàn)略提供新思路。