邵云霞,王 程,成 彬,韓珍珍,韓 月
(1.河北省科學院應(yīng)用數(shù)學研究所,河北 石家莊 050081;2.河北省信息安全認證工程技術(shù)研究中心,河北 石家莊 050081;3.河北師范大學,河北 石家莊 050000)
隨著國內(nèi)人民生活水平不斷提高和健康意識的日益增強,促使醫(yī)療費用也呈現(xiàn)快速增長。規(guī)范醫(yī)療服務(wù)行為,控制醫(yī)療費用不合理增長迫在眉睫。2017年6月,國務(wù)院辦公廳印發(fā)《關(guān)于進一步深化基本醫(yī)療保險支付方式改革的指導意見》,要求全面推行以按病種付費為主的多元復(fù)合式醫(yī)保支付方式,逐步統(tǒng)一疾病分類編碼(ICD-10)、手術(shù)與操作編碼系統(tǒng),明確病歷及病案首頁書寫規(guī)范[1]。醫(yī)療保險的管理模式由項目付費的粗放式逐步向規(guī)范化、精細化和智能化的疾病診斷相關(guān)分組(diagnostic related groups,DRGs)付費方式轉(zhuǎn)變。
目前,以病種付費為主的醫(yī)保支付方式推廣過程還存在很多困難,最突出問題是疾病主要診斷不準確,其產(chǎn)生原因有ICD-10版本不統(tǒng)一、醫(yī)師選擇疾病主要診斷和其他診斷選取欠規(guī)范、編碼員編碼專業(yè)知識缺乏等。出院主要診斷名稱不規(guī)范,一名多碼現(xiàn)象普遍存在。該文通過出院歸檔的病案首頁信息構(gòu)建病種分類分類器模型可有效地破解難題。病案首頁濃縮了病人基本信息、疾病診斷、病理診斷、手術(shù)及操作和費用等病歷檔案中最重要的信息[2],通常以文本的形式呈現(xiàn),因此,對疾病編碼的分類可以歸結(jié)到對文本的分類。目前,文本分類可以分為兩大類:傳統(tǒng)的機器學習方法和基于深度學習的神經(jīng)網(wǎng)絡(luò)方法。傳統(tǒng)的機器學習分類方法大多都是基于向量空間模型[3],包括樸素貝葉斯、支持向量機(support vector machine,SVM)等方法,現(xiàn)已廣泛應(yīng)用于疾病預(yù)測和判斷等方面[4]?;谏窠?jīng)網(wǎng)絡(luò)分類的原始文本數(shù)據(jù)是連續(xù)、稠密的,有局部相關(guān)性,能夠通過組合低層的特征形成更加抽象的高層屬性或特征,具有自動獲取特征的能力,在圖像處理、語音識別、自然語言處理等領(lǐng)域取得了豐碩的成果[5],常見的分類算法有Text CNN、Text LSTM等。
該文通過實驗以疾病編碼和名稱為核心,其他并發(fā)疾病、手術(shù)和費用等信息為輔助信息,對比并探索疾病分類的最佳方法。結(jié)合自然語言處理技術(shù),將病種歸一化到國際疾病編碼ICD-10統(tǒng)一版本中,不僅滿足醫(yī)保支付方式改革中按病種準確測算的需求,也方便醫(yī)院績效考核精細化管理,為DRGs支付方式在全國推廣打下堅實的基礎(chǔ)。
同類病案之間存在很大相似性[6]。文本相似度是通過一個具體數(shù)值表示多個文本之間相似的程度。目前已廣泛應(yīng)用于文本分類、相似文檔檢索、智能問答等領(lǐng)域。文本相似度的計算方式可分為表面文本相似度計算和語義相似度計算兩大類[7]。考慮到病案首頁信息中主要診斷語義關(guān)聯(lián)度不高的特點,實驗選取表面文本相似度計算中的基于向量空間模型(vector space model,VSM)的方法計算文本之間的相似度。向量空間模型的基本思想是假設(shè)詞與詞之間無關(guān),向量值通過詞頻-逆文檔頻率(term frequency-inverse document frequency,TF-IDF)模型將兩個文本轉(zhuǎn)為矢量形式,或通過詞集模型(Set of Words,SOW)將文本表示為獨熱向量(one-hot vector)形式,計算向量之間的相似度來衡量文本的相似度[8],相似度一般用[0,1]表示。
支持向量機是1995年Vapnik和他領(lǐng)導的貝爾實驗室小組提出的,是一種基于統(tǒng)計學習理論構(gòu)建的典型算法[8-9],其基本思想是使用線性模型解決非線性的問題。作為分類模型,目的是尋求一個最優(yōu)超平面,將正類和反類樣本沒有錯誤地分開,使兩個類別之間有最大的分類間隔。因而支持向量機可以轉(zhuǎn)化為求解最優(yōu)超平面的問題,即:
yi[(w·xi)+b]-1≥0,i=1,2,…,N
(1)
可通過拉格朗日法求解此問題,每個樣本引入一個拉格朗日系數(shù)αi≥0,i=1,2,…,N,最優(yōu)化問題就轉(zhuǎn)化為:
xi)+b]-1}
(2)
(3)
通過求解對偶問題得到原問題的解。
文本分類模型Text CNN是Yoon Kim提出的,針對卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks for sentence classification,CNN)的輸入層做了一些變形。其具有很強的文本淺層特征的抽取能力[10],專注于意圖分類時效性好,如搜索、對話等短文本領(lǐng)域。其在網(wǎng)絡(luò)結(jié)構(gòu)上沒有變化,而是輸入數(shù)據(jù)略有不同。自然語言是一維數(shù)據(jù),經(jīng)過詞向量(word embedding)生成二維向量,通過引入已經(jīng)訓練好的詞向量在多個數(shù)據(jù)集上有不錯表現(xiàn),構(gòu)造更好的embedding。
(1)word embedding分詞構(gòu)建詞向量。詞向量是神經(jīng)網(wǎng)絡(luò)輸入層的每一詞或詞組用實數(shù)向量表示。該文使用one-hot獨熱編碼技術(shù)將篩選出來的病案首頁信息轉(zhuǎn)化為低維度向量,得到低維的、稠密的一維詞向量用以表示分詞后的每一個詞語。通過word2vec或Tokenizer等embedding方式將每個病歷看作詞的序列,其長度為n,每個詞用向量xi表示,每個詞嵌入的維度是k,假設(shè)xi:i+k表示xi到xi+k個單詞序列(xi,xi,…,xi+k),詞映射成一個詞向量表示為:
xi:n=x1⊕x2⊕:::⊕xn
(4)
(2)convolution卷積層。卷積層是卷積神經(jīng)網(wǎng)絡(luò)的核心部分,卷積核通過權(quán)值共享的方式按照步長在輸入層滑動提取特征,經(jīng)過卷積操作得到若干feature map。每次窗口取的詞數(shù)為高度h,卷積核的卷積核ω∈Rhk,其與文本序列進行卷積操作,每一次滑窗的結(jié)果ci其卷積運算結(jié)果如下:ci=f(w·xi:i+h-1)+b,其中b∈R,f是非線性函數(shù)。卷積運算時對應(yīng)元素相乘然后相加,所以w和xi:i+h-1的維度是一致的。由于w的維度是h*k,xi:i+h-1的維度也是h*k,則x的維度是(n-h+1)*h*k。經(jīng)過卷積后,得到一個n-h+1維的特征向量c=[c1,c2,…,cn-h+1]。
(4)全連接層。池化層的一維向量層的輸出通過全連接的方式連接一個softmax層,進行分類。經(jīng)過dropout層,隨機選擇部分神經(jīng)元使其失活,提高分類模型準確率。
構(gòu)建病種分類模型的前提要有滿足需要的樣本集,選取病案首頁數(shù)據(jù)作為研究對象,先對病案進行質(zhì)量檢測,符合要求的病案進行數(shù)據(jù)相關(guān)性分析,抽取與病種分析相關(guān)的特征進入數(shù)據(jù)集,分別采用不同的文本分類的預(yù)測算法。
住院病案首頁信息是醫(yī)療數(shù)據(jù)的重要來源,其質(zhì)量直接影響醫(yī)院醫(yī)療數(shù)據(jù)質(zhì)量的準確性。對數(shù)據(jù)內(nèi)容進行完整性、規(guī)范性、合理性等檢測驗證。完整性檢測是對病案數(shù)據(jù)填寫完整,包括整體數(shù)據(jù)時間完整、必填內(nèi)容完整和組合數(shù)據(jù)完整等內(nèi)容的驗證,如病案號、入院時間、出院時間、總費用組合項是否完整,手術(shù)及操作名稱、ICD-9-CM-3編碼、手術(shù)及操作日期是否完整等;規(guī)范性檢測為是否符合病歷醫(yī)療規(guī)范要求,如住院次數(shù)不能為小數(shù),年齡不能為小數(shù),新生兒出生體重單位要求為克等等;合理性檢測內(nèi)容包括編碼、費用、時間與其他合理性等,如:疾病名稱與編碼對應(yīng)檢測、手術(shù)費用與手術(shù)編碼、入院日期與出生日期、新生兒體重(出生或入院)與年齡(天)、死亡患者與離院方式、同一患者住院次數(shù)等等。
選取病案首頁中的病人信息(如年齡、性別)、住院信息(如住院天數(shù)、住院總費用、離院方式)、診斷信息(如門診診斷、主要診斷、其他診斷組合、病理診斷組合等)、手術(shù)及操作信息組合及醫(yī)院編碼等內(nèi)容,經(jīng)過數(shù)據(jù)規(guī)約、清洗處理后形成數(shù)據(jù)集。
從患病數(shù)量上劃分疾病為常見病、少見病和罕見病,其疾病數(shù)量存在很大差異,即存在類別不平衡現(xiàn)象。疾病名稱混亂且和代碼對應(yīng)不一致,存在代價敏感問題。處理不平衡數(shù)據(jù)集的方法有人工生成數(shù)據(jù)集樣本、采用對數(shù)據(jù)不平衡不敏感的分類算法和對模型進行懲罰。構(gòu)造人工數(shù)據(jù)樣本方法采用SMOTE(synthetic minority over-sampling technique)過采樣方法[11]?;陬愖兞康膭澐忠?guī)則創(chuàng)建分類樹模型,可強制將不同類別樣本分開。模型懲罰采用設(shè)置不同的損失函數(shù)(即加權(quán)損失函數(shù))進行算法學習。目標函數(shù)極大似然函數(shù)中,要使樣本預(yù)測錯誤較少,讓l(θ)達到最小即可。在代價敏感前提下,加入正負樣本[α,β],公式求導后則有:
(5)
假設(shè)yi=0,則β乘以預(yù)測xi為1的概率值;yi=1,則α乘以預(yù)測xi為0的概率值,從而迭代至θj收斂即可:
θj:=θj+μ[αyi+(β-α)hθ(xi)yi-βhθ(xi)]xj
(6)
由此正負樣本權(quán)值[α,β]放大判錯某一類的代價。故根據(jù)真實病種的正負樣本比例取值,采用過采樣方法平衡訓練集和數(shù)據(jù)合成組合方法生成數(shù)據(jù)集。在每類采樣時加大敏感數(shù)據(jù)的權(quán)重,使其在類中占有一定比例,保持數(shù)據(jù)類別的均衡,防止訓練時產(chǎn)生過擬合。
算法思想:選取的病案樣本集進行文本質(zhì)量檢測后,去掉不規(guī)范病案,進行文本預(yù)處理和數(shù)值化;通過以疾病名稱為主的相似度分裂模型來篩選病種,相似度計算值分別進入病種組合模型的相應(yīng)病種模型進行預(yù)測;若為樣本量小的病種,采用SVM預(yù)測模型,若為樣本量大的病種,采用Text CNN預(yù)測模型;對于相似度低的病種,需要專家干預(yù),評定是罕見病或者異常數(shù)據(jù);最后將子模型輸出的預(yù)測值進行結(jié)果評估,其建模流程如圖1所示。
圖1 組合預(yù)測模型建模流程
算法步驟:
(1)病案質(zhì)量檢測:數(shù)據(jù)處理是對病案樣本集數(shù)據(jù)進行去規(guī)約清洗,降低噪聲,進行數(shù)據(jù)間完整性、規(guī)范性和合理性的質(zhì)量檢測。去除掉不完整、不一致或異常的數(shù)據(jù),如費用小于5元或超過20萬,疾病“妊娠合并闌尾炎”其診斷中含有“妊娠、懷孕、單胎活產(chǎn)、胎兒、流產(chǎn)、分娩”等內(nèi)容,校驗病人性別“女性”否則不一致。對病案文本進行預(yù)處理,剔除無意義的符號信息或冗余信息。
(2)相似度篩選:相對于英文來說中文的詞語之間沒有明顯的分隔符[12],故需要對清洗質(zhì)檢后病案中的漢字內(nèi)容進行中文分詞,將詞匯信息映射到一個數(shù)值化的語義空間即詞向量模型。建立語料集將詞映射向量空間轉(zhuǎn)換為稀疏向量數(shù)值化,然后進行語義相似度計算。該文采用python中的jieba進行分詞,劃分為合理的詞序列,去除停用詞、詞干提取、詞性還原使得分詞結(jié)果更加準確、清晰[13],采用corpora.dictionary建立疾病詞典,doc2bow分詞列表集轉(zhuǎn)換為稀疏向量集,計算其tf-idf值并調(diào)用similarities.SparseMatrix-Similarity進行相似值計算。
(3)構(gòu)建SVM預(yù)測模型:經(jīng)過相似度篩選后,樣本量小病種在文本的one-hot表示一個高維、稀疏的矩陣,其數(shù)據(jù)處理流程如圖2所示。
圖2 數(shù)據(jù)處理流程
由于詞向量比較稀疏,采用線性核函數(shù)具有較好的模擬效果[14],實驗選取線性函數(shù)(linear)作為SVM的核函數(shù),在訓練時求解的對偶問題為:
0≤αi≤C
(7)
模型構(gòu)建過程:加載數(shù)據(jù)后按比例分成訓練集和測試集,將數(shù)據(jù)集文本CountVectorizer()進行向量化,使用其.vocabulary_構(gòu)建字典,將向量化后的訓練集和測試集通過TfidfTransformer()提取特征,分別計算tf-idf值,設(shè)置SVC()核函數(shù)參數(shù)kernel為linear,decision_function_shape參數(shù)為ovr,模型中懲罰因子C設(shè)置為0.8,允許一些誤分類錯誤樣本,提高泛化能力。
(4)構(gòu)建Text CNN預(yù)測模型:適用于樣本量大的病種,文本是一維數(shù)據(jù),經(jīng)過word-embedding生成二維向量,對詞向量從左到右進行卷積沒有意義,通過引入訓練好的詞向量在多個數(shù)據(jù)集上有不錯表現(xiàn),構(gòu)造好的embedding是提升任務(wù)關(guān)鍵能力。其最大的優(yōu)勢是網(wǎng)絡(luò)結(jié)構(gòu)簡單。構(gòu)建流程:數(shù)據(jù)向量化如圖2所示,將分詞后的文本通過word2vec將詞典向量化,按約定長度pad_sequences填充序列,將其轉(zhuǎn)化為稀疏矩陣,生成訓練、驗證和測試集;建立序列Sequential(),定義輸入的Embedding層,防止過擬合加入正則化dropout(0.2)提高處理性能[15],采用一維卷積層Convs1D提取特征值(卷積層功能示意圖見圖3)和最大池化層max-pooling1D減少了模型參數(shù),又保證不定長卷基層的輸出獲得定長的全連接層輸入,全連接層Dense就是采用softmax進行n分類,其池化和全連接層數(shù)據(jù)處理示意圖如圖3所示。
圖3 池化層、連接層數(shù)據(jù)處理
文中選擇病案首頁為研究對象,國際疾病代碼ICD-10中涵蓋病種達2.8萬種,以常見疾病“闌尾炎”為例進行病種分類模型實驗。病案數(shù)據(jù)主要來自國家衛(wèi)生統(tǒng)計信息網(wǎng)絡(luò)直報系統(tǒng)4-1接口中2012年至2018年去隱私的部分病案首頁數(shù)據(jù),涵蓋全國30個省市轄區(qū)(不包含港澳臺)的醫(yī)院558家,包括二級、三級、甲等、乙等、丙等以及公立、民營、綜合、??频雀黝愥t(yī)院,覆蓋醫(yī)保、農(nóng)合、商保、自費等人群,共有數(shù)據(jù)316 680筆。
病種篩選主要以出院主要診斷和疾病名稱進行文本相似度測試,其評估結(jié)果正確率為0.593 9,雖然在分類方面效果不足,但在選擇病種上起到了較好的效果。涉及到闌尾炎的病種中,去除掉阿米巴闌尾炎、闌尾炎性假瘤、新生兒闌尾炎三類未出現(xiàn)病例,按照每組樣本量不同分為兩組,數(shù)量大的病種可分為17類,每類隨機選取100、300、500、1 000筆樣本數(shù)據(jù);數(shù)量小的病種分為病種30類,每類隨機選取20筆數(shù)據(jù),考慮到樣本少取樣存在不穩(wěn)定性,故隨機選取20個數(shù)據(jù)集作為小樣本集。選取AUC準確率和訓練耗時作為評估指標,對比算法選擇傳統(tǒng)計算學習,選擇樸素貝葉斯和深度學習的Text LSTM分別進行準確率和性能的實驗?!瓣@尾炎”17分類準確率和性能對比如圖4、圖5所示。
圖4 17分類病種模型準確率對比 圖5 17分類病種模型性能對比
“闌尾炎”30分類準確率、性能和模型穩(wěn)定性對比如圖6~圖8所示。
圖6 30分類病種模型準確率均值對比 圖7 30分類病種模型性能均值對比
圖8 30分類病種模型準確率穩(wěn)定性對比圖
實驗結(jié)果表明,文本相似度可以找到最相似的病組,能起到一定程度的降維去噪功效。SVM泛化錯誤率低,在樣本量大和小上表現(xiàn)得不錯,在量小時相比其他模型優(yōu)勢尤為明顯,性能最優(yōu),也有較強的穩(wěn)定性,具有很好的泛化能力。Text CNN模型簡單,在樣本量大于300的病種上有優(yōu)異的表現(xiàn),其性能相對較好,尤其在處理非常相近病種時表現(xiàn)尤為突出。
目前該領(lǐng)域存在的一些問題需要在未來研究中解決:
(1)病案數(shù)據(jù)獲取困難。出院病案首頁內(nèi)含病人隱私信息獲取困難,目前缺乏公開可用的數(shù)據(jù)集,尤其涵蓋地區(qū)廣疾病病種多的數(shù)據(jù)集。
(2)專業(yè)的醫(yī)學知識匱乏。需要各科醫(yī)學專業(yè)人士輔助和指導,熟悉疾病診斷和治療過程。
病種分類方法研究不僅可以輔助醫(yī)院醫(yī)師和編碼員分類的正確性,還可在病案出院主要診斷生成時進行有效校驗,從源頭上杜絕錯誤發(fā)生。目前病種分類方法取得效果尚可,還需要進一步嘗試其他監(jiān)督和半監(jiān)督的方法,還有進步的空間。通過研究病歷信息和病案首頁數(shù)據(jù)間的關(guān)聯(lián)進一步規(guī)范數(shù)據(jù),提高病案質(zhì)量,為醫(yī)保實施病種支付改革和科研奠定基礎(chǔ)。
隨著按病種付費方式的改革推進,病種分類準確性將直接影響醫(yī)院的收入和醫(yī)保費用的支出,也是醫(yī)改順利進行的關(guān)鍵環(huán)節(jié),目前存在的最大障礙是疾病編碼和病種名稱不規(guī)范且對應(yīng)混亂。該文提出構(gòu)建病種的組合預(yù)測模型,將文本相似度與SVM模型和Text CNN模型組合應(yīng)用于日常的疾病分組。經(jīng)實驗驗證根據(jù)樣本量大小分不同模型進行預(yù)測, 其穩(wěn)定性和預(yù)測精度達到了應(yīng)用的要求。但模型預(yù)測精度依賴于數(shù)據(jù)質(zhì)量的高低,代價敏感處理局限于數(shù)據(jù)層面,下一步考慮在模型算法上增加損失函數(shù)加權(quán)處理以避免對數(shù)據(jù)的過度依賴,同時,還需考慮醫(yī)療同質(zhì)的病種聚類成病種組。