嚴 玲,周作建**,宋懿花,胡 云,商洪濤,戰(zhàn)麗彬,董 青
(1. 南京中醫(yī)藥大學人工智能與信息技術學院 南京 210046;2. 江蘇省中醫(yī)院 南京 210029;3. 南京中醫(yī)藥大學中醫(yī)學院·中西醫(yī)結合學院 南京 210046;4. 連云港市衛(wèi)生健康委員會 連云港 222007)
中醫(yī)認為,疾病的發(fā)生及發(fā)展與體質差異有一定聯(lián)系。體質是個體在生命周期中形成的形態(tài)結構、生理功能和心理狀態(tài)方面相對穩(wěn)定的固有特質[1]。體質因人而異,但可通過類來劃分體質特征,“王琦中醫(yī)體質九分法”[2]將中醫(yī)體質分為平和質、氣虛質、陽虛質、陰虛質、痰濕質、濕熱質、血瘀質、氣郁質、特稟質,是目前權威且主流的體質劃分方法?!爸挝床 盵3]是中醫(yī)學的主要研究內(nèi)容之一,強調(diào)未病先防、欲病早治、既病防變,雖然體質在每個個體中都有一定的差異性,但是把握個體體質的差異性以及群體體質的規(guī)律性有助于將疾病從“治病”到“防病”的轉變。中醫(yī)體質辨識[4]就是以人的體質為認知對象,通過某些方式判斷個體所屬體質類型,從整體上把握健康與疾病的個體差異,進而制定適宜的治療、促進等干預措施,彌補西醫(yī)體檢在“未病先防”的不足。體質辨識的主要工作[5]包括辨識個體體質狀態(tài)、年齡老少、南北居住、奉養(yǎng)優(yōu)劣等,從而判斷所屬體質類別?!丁敖】抵袊?030”規(guī)劃綱要》《中國防治慢性病中長期規(guī)劃(2017-2025年)》以及習總書記在十九大報告中均強調(diào),為實施健康中國戰(zhàn)略需以預防為主,發(fā)揮中醫(yī)在“治未病”中的重要作用,而中醫(yī)體質辨識是“治未病”的具體措施,有效的、高效的體質辨識已經(jīng)成為目前中醫(yī)治未病的重要課題之一。
目前中醫(yī)體質辨識研究領域主要采用體質辨識量表及統(tǒng)計分析方法,體質辨識量表幾乎采用被列為中華中醫(yī)藥學會標準的《中醫(yī)體質分類與判定》標準[6];統(tǒng)計分析方法基本采用SPSS軟件作為分析工具。楊玲玲等[7]將中華中醫(yī)藥學會的《中醫(yī)體質分類與判定》作為辨識量表,以問卷形式進行數(shù)據(jù)收集,采用一般性統(tǒng)計描述進行分析,但是只能判定單一體質類型;陳燕麗等[8]將《中醫(yī)體質分類與判定》作為調(diào)查問卷,通過人工計算每一項得分及轉化分從而判定所屬的體質類型,但是每次計算需要花費40 min/人次,耗費較大的人力成本及時間成本;左文英等[9]同樣將《中醫(yī)體質分類與判定》作為量表計算條目的得分及轉化分,并采用SPSS軟件進行計量資料和計數(shù)資料的統(tǒng)計分析,得出社區(qū)高血壓患者的體質分布規(guī)律。單個生命體會存在幾種不同的體質類型,即存在主要體質類型和次要體質類型,回顧已有的體質辨識研究可以發(fā)現(xiàn),大多數(shù)研究只是將《中醫(yī)體質分類與判定》標準運用于特定的環(huán)境或人群,以此來分析體質的分布規(guī)律,從而進行干預措施的建議。但是體質辨識量表本身會花費大量的人力成本,隨著人工智能領域的興起及發(fā)展,中醫(yī)體質辨識的智能化研究需要進一步被提出,考慮到個體與體質之間存在一對多的關系,由此機器學習中的多標記學習算法可以應用在中醫(yī)體質類型智能化辨識的研究中。本文提出了基于多標記k近鄰算法(multi-label k nearest neighbor,ML-kNN)的中醫(yī)體質辨識模型,為中醫(yī)體質辨識的智能化、自動化研究提供新思路和新方法。
多標記學習[10,11]研究 1 個單獨實例與 1 組標簽相關聯(lián)的問題。假設xi為輸入,Yi為輸出,用(xi,Y)i表示1 個樣本集中的1 個輸入輸出對,其中Yi是1 個二進制向量,y(ijyi1、yi2……yiq)表示第i個樣本的第j個標記,yij=0表示該標記為負,yij=1表示該類別為正,這就是多標記學習基本思想。在多標記學習中,訓練集中的樣本都對應多個標記,目標任務是預測測試樣本的標記集合。
ML-kNN[12-14]改造“惰性學習”k近鄰算法以適應多標記數(shù)據(jù),使用kNN 的思想查找訓練集中的k個近鄰樣本,并使用最大后驗概率確定測試樣本的標記集合。給定多標記訓練集D={(xi,Yi)|1 ≤i≤m},測試示例x,假設Q(x)代表x在訓練集中的k個近鄰樣本的集合,那么對于j個類別yj(1 ≤j≤q),Q(x)中標簽j為1的樣本數(shù)可表示為每個標記先驗概率可表示為其中s為平滑項,m為訓練集樣本數(shù),q為標簽數(shù)。未知樣本的每個標記條件概率可表示為(1 ≤j≤q,0 ≤Cj≤k),其中kj[r]表示自身及k近鄰中r個近鄰均具有標記yj的訓練樣本個數(shù)。將先驗概率及條件概率代入多標記分類器h(x) ={yj|P(Hj|Cj)/P(?Hj|Cj)>0.5,1 ≤j≤q}獲得測試樣本的標記集合。
多標記評價指標[15]首先評價多標記分類器在單個測試樣本上的分類效果,最終返回其在整個測試樣本集上的“均值”。假定多標記分類器表示為h(.),多標記測試集表示為S={(xi,Yi)|1 ≤i≤p},其中Yi為xi的標記集合,p為測試集樣本數(shù),用如下多標記評價指標評估模型效果。
2.2.1 漢明損失
漢明損失[16](hamming loss,HLoss)計算分類器預測出的結果序列與實際結果序列之間數(shù)值上的距離,用來評估樣本在單個標記上的分類錯誤的情況。HLoss 取值越小,分類器預測結果越好,最優(yōu)值為HLoss(h)= 0。表達式為其中q為所有標簽總數(shù)。
2.2.2 1-錯誤率
1-錯誤率[17](OneError)用來評估樣本類別標記序列最前端的標記不屬于相關標記集合的情況。OneError取值越小,系統(tǒng)性能越優(yōu),最優(yōu)值為OneError(h)= 0。表達式為其中,f(.,.)為h(.)對應的實值函數(shù)。
2.2.3 覆蓋率
覆蓋率[18](Coverage)用于評估樣本類別標記序列中,覆蓋所有相關標記所要的搜索深度情況。Coverage 取值越小,系統(tǒng)性能越優(yōu),最優(yōu)值為表達式為:Coverage(h) =其中,rank為與實值函數(shù)f(.,.)f(.,.)對應的排序函數(shù)。
2.2.4 排序損失
排序損失[19](ranking loss,RLoss)用于評估樣本類別標記序列中無關標記與相關標記排序錯誤的情況。RLoss取值越小,系統(tǒng)性能越優(yōu),最優(yōu)值為RLoss(h)=0。表達式為:其中,為集合Yi的補集。
表1 實驗數(shù)據(jù)結構
表2 不同近鄰數(shù)下評價指標值
2.2.5 平均精度
平均精度[20](average precision,Avgprec)用于考察樣本類別標記序列中,排序靠前的標記均為相關標記的情況。Avgprec 取值越大,系統(tǒng)性能越優(yōu),最優(yōu)值為Avgprec(h) = 1。 表 達 式 為 :
數(shù)據(jù)來源于江蘇省中醫(yī)院體檢中心,共60個屬性9個標簽,過濾掉不完整、無意義的數(shù)據(jù)最終納入9844條數(shù)據(jù)作為研究對象,其中60個屬性是將原始數(shù)據(jù)的體質自測問題規(guī)范化為中醫(yī)癥狀,9個標簽是平和質、氣虛質、陽虛質、陰虛質、痰濕質、濕熱質、血瘀質、氣郁質及特稟質9種體質類型,原始數(shù)據(jù)標簽根據(jù)《中醫(yī)體質分類與判定》計算相應條目分及轉化分得到。屬性值按照“沒有(根本不)”“很少(有一點)”“有時(有些)”“經(jīng)常(相當)”“總是(非常)”分別賦值為0、1、2、3、4,標簽值按照體質類型有無分別賦值為1和0,實驗數(shù)據(jù)結構見表1。
中醫(yī)體質辨識模型ML-kNN 構建過程:①使用k近鄰算法查找訓練集中與測試樣本最接近的樣本,通過計算先驗概率及后驗概率預測測試樣本的體質標簽矩陣,詳細步驟如下:
初始化:指定體質數(shù)據(jù)樣本為x,體質標簽集合Y? Ω,體質標簽l ∈ Ω,樣本體質標簽向量y→x,樣本x在訓練集中的k近鄰N(x),測試樣本t(2952 條體質數(shù)據(jù)),初始化平滑參數(shù)s為1。
Step1:根據(jù)公式(1)、(2)分別求得體質標簽值為1、0的先驗概率。
Step2:計算N(x),并根據(jù)公式(3)、(4)分別求得體質標簽值為1和0的后驗概率。其中c[j]指訓練樣本中含有l(wèi)且其k近鄰中有j個l的樣本數(shù)。
Step3:計算測試樣本t的k近鄰N(t),并根據(jù)公式(5)、(6)求得t的體質標簽集合
②采用10折交叉驗證,每次訓練將數(shù)據(jù)集隨機分為10 份,按9∶1 的比例分配訓練集與測試集,以此考察體質辨識模型的擬合性能。
③從1-20 調(diào)整k值以尋找模型最佳參數(shù),并運用5項評價指標的均值評估模型預測效果。
采用10 折交叉驗證訓練模型,并在1-20 之間調(diào)整k值,評價指標對應的值見表2,從表中可以看出,模型的平均精度不會隨著近鄰數(shù)的增加而增加,當k=8時,模型的 HLoss、OneError、Coverage 及 RLoss 的取值相對較小且Avgprec 最高,模型效果最佳,體質分類效果最好,此時平均漢明損失(HL-mean)為0.096 1,平均1-錯誤率(OE-mean)為0.126 1,平均覆蓋率(COV-mean)為1.153 5,平均排序損失(RL-mean)為0.086 6,平均精度(AVP-mean)為88.57%。江蘇省中醫(yī)院體檢中心體質辨識根據(jù)《中醫(yī)體質分類與判定》所列出的問題條目計算得出,而本文基于體檢中心數(shù)據(jù)建立的體質辨識模型在評價指標中表現(xiàn)良好,有科學意義,表明ML-kNN 算法用于體質辨識是有效的。綜上說明,ML-kNN 模型解決中醫(yī)體質智能化辨識問題及其存在的體質多標記問題有現(xiàn)實意義。
圖1 體質辨識可視化結果
基于ML-kNN 算法建立的中醫(yī)體質辨識模型能夠以可視化的界面展示體質辨識結果,如圖1所示,體質辨識的結果可以通過可視化界面直觀地反映給用戶,能夠提高體檢中體質辨識的效率,促進中醫(yī)體質辨識客觀化研究。
中醫(yī)認為疾病治療應該將人作為整體,而體質狀態(tài)可以從整體上把握健康與疾病,體質偏頗是疾病變化的依據(jù),疾病發(fā)生及發(fā)展與體質有一定的聯(lián)系,由此體質辨識可為疾病預防及促進提供依據(jù)。目前研究中普遍采用的體質辨識量表無法避免測試者的主觀意識,且隨著體檢人數(shù)的增加耗費大量的人力、物力,由此需建立科學的體質辨識方法;部分研究采用數(shù)據(jù)挖掘算法辨識體質,但是忽略了單一個體存在幾個主次不一的體質類型而采用單標記學習算法,并不能較為科學準確地判斷出體質類型,由此需要引入人工智能中的機器學習算法,建立多標記學習模型進行體質類型自動、客觀辨識。本文運用ML-kNN 算法構建中醫(yī)體質辨識模型,采用10 折交叉驗證訓練模型,并用多標記學習評價指標評估模型效果,最終模型的 HLoss、OneError、Coverage、RLoss 及Avgprec 的值證實了ML-kNN 算法運用在體質辨識中的可行性及有效性,且當近鄰數(shù)的值為8 時模型的效果最佳,對中醫(yī)體質的分類效果最好,表明采用ML-kNN 算法建立體質辨識模型一定程度上可以代替?zhèn)鹘y(tǒng)的體質辨識方法且能彌補單標記學習不能識別多個體質類型的局限性,節(jié)約人力、物力成本且符合中醫(yī)辨識體質的思想,為中醫(yī)體質辨識智能化及自動化發(fā)展提供新方法,為實施健康中國戰(zhàn)略提供新思路。