張德青
(安徽三聯(lián)學(xué)院 計(jì)算機(jī)工程學(xué)院,安徽 合肥 230000)
案例推理(CBR)技術(shù)目前已成為人工智能領(lǐng)域中使用頻率較高、發(fā)展成熟的智能知識推理技術(shù)之一,尤其是醫(yī)療診斷系統(tǒng)的設(shè)計(jì)中.筆者擬將這一智能術(shù)技引入至兒科疾病診療系統(tǒng)的設(shè)計(jì),旨在提高兒科疾病診療的精準(zhǔn)度和效率.
案例推理是以過去已解決的問題的經(jīng)驗(yàn)知識為基礎(chǔ),進(jìn)一步推理出類似新問題的解決方案的過程[1].其中的知識是以案例的形式存儲在系統(tǒng)數(shù)據(jù)庫中,每次遇到新的問題時(shí),便可在系統(tǒng)中搜索與該待解決問題最接近的案例(源案例),并以此為依據(jù)得到新問題(目標(biāo)案例)的解.若該解決方案可以很好地處理新問題,則說明問題得到解決;否則需要對源案例作適當(dāng)?shù)男拚?,并將該問題也作為新案例存儲到案例庫中,完成案例學(xué)習(xí)的過程.
一個(gè)完整的案例推理應(yīng)該包含:案例表示、案例檢索、案例重用、案例學(xué)習(xí)等4個(gè)部分,過程見圖1.
圖1 完整的案例推理過程
整個(gè)過程可描述為:首先抽取問題的特征屬性,通過GUI將問題表征成案例的形式輸入系統(tǒng)并發(fā)起檢索請求,然后系統(tǒng)根據(jù)事先設(shè)定的相似度匹配算法從源案例數(shù)據(jù)庫中檢索與之相匹配的案例.若檢索成功,則案例得到重用,問題解決;若未檢索到與之匹配的案例則需對該案例進(jìn)行修正,通過案例學(xué)習(xí)之后作為新案例保存到案例庫中去[2].案例檢索方法的優(yōu)劣將直接影響到系統(tǒng)檢索的速度和精準(zhǔn)度,案例檢索是系統(tǒng)設(shè)計(jì)中的一個(gè)重要環(huán)節(jié).
案例推理主要適用于一些知識難以表示、難以獲取,但又已積累了豐富經(jīng)驗(yàn)的案例領(lǐng)域中.隨著這一技術(shù)研究的不斷深入,使得其在法律咨詢、醫(yī)療系統(tǒng)、圖像分割、商業(yè)決策等方面的應(yīng)用日趨廣泛,尤其是醫(yī)療系統(tǒng)中.醫(yī)生進(jìn)行臨床診斷的過程恰好與案例推理的過程非常相似:醫(yī)生具有的臨床經(jīng)驗(yàn)非常重要,因?yàn)榻?jīng)驗(yàn)豐富的醫(yī)生在遇到新的病癥時(shí),可以很快地從經(jīng)驗(yàn)中找出相同或類似的病癥治療方法,而每次成功的治療又為將來積累了新的經(jīng)驗(yàn),達(dá)到精益求精的境界[3].
兒科向來是醫(yī)院中的一個(gè)人滿為患的科室,許多家長甚至因?yàn)楹⒆影l(fā)燒而在診室外排隊(duì)等待數(shù)小時(shí),尤其遇到一些病毒高發(fā)期時(shí)更是如此.對于一些常見的疾病,若使用這樣一個(gè)CBR的醫(yī)療診斷系統(tǒng),家長便可以通過系統(tǒng)的案例檢索推理得到較為有效的解決方案,輕松應(yīng)對常見疾病.兒科疾病診療本就屬醫(yī)療診療中的一個(gè)分支,故案例推理技術(shù)亦可以很好地應(yīng)用到兒科常見疾病的診療系統(tǒng)中.建立一個(gè)兒科常見疾病診療CBR系統(tǒng)可以適當(dāng)?shù)貫榧议L們解決看病難的窘境.
將案例推理應(yīng)用于兒科疾病診療系統(tǒng)的實(shí)質(zhì)就是使用人工智能技術(shù),用計(jì)算機(jī)來輔助模擬實(shí)現(xiàn)專家進(jìn)行兒科疾病診斷的過程.對病癥案例特征屬性提取的效果,能直接影響病癥的推理效率,要將案例推理技術(shù)引入兒科常見疾病診療系統(tǒng),首要的是進(jìn)行兒科常見疾病案例的知識表示[4].
案例表示就是根據(jù)疾病的特點(diǎn),抽取其中的特征屬性,使用一定的符號語言,借助于計(jì)算機(jī)技術(shù)把案例編碼成特定的數(shù)據(jù)結(jié)構(gòu)的形式,以便存入案例數(shù)據(jù)庫中.本系統(tǒng)擬采用框架表示法進(jìn)行案例表示,這一表示法的優(yōu)點(diǎn)在于它可以很好地描述案例的細(xì)節(jié),能更好地滿足結(jié)構(gòu)化的需求.假設(shè)文中對所屬范圍的兒科疾病案例表示為:X(p1,p2,p3,…,pn),其中:p1,p2,…,pn 表示兒科常見疾病案例的 n 個(gè)特征屬性,若共有m條記錄,則該案例庫則可以表示成一個(gè)m*n的二維表.
案例數(shù)據(jù)庫的基本數(shù)據(jù)表及其主要屬性見表1.建立案例數(shù)據(jù)庫的目的是存儲源案例,記錄每一源案例的各項(xiàng)屬性值,以便檢索匹配重用.案例數(shù)據(jù)庫的邏輯設(shè)計(jì)將直接影響到案例檢索的效率,另外還必須考慮到數(shù)據(jù)庫中源案例的數(shù)量對檢索效率的影響,本系統(tǒng)采集了近1 000條年齡段為0~14歲兒童的常見疾病案例數(shù)據(jù)信息.
表1 Case基本數(shù)據(jù)
要建立這樣的一個(gè)兒科常見疾病診療案例數(shù)據(jù)庫,則首先需要按照X(p1,p2,p3,…,pn)的數(shù)據(jù)結(jié)構(gòu)建立一張案例的基本數(shù)據(jù)表,并列出主要屬性.
2.2.1 數(shù)據(jù)采集
系統(tǒng)選擇的DBMS為MSSQL Server,根據(jù)表1給出的字段建立表結(jié)構(gòu),同時(shí)確定并設(shè)置各字段的域.通過MSSQL Server的數(shù)據(jù)導(dǎo)入/導(dǎo)出功能,將數(shù)據(jù)標(biāo)本按照以上屬性要求優(yōu)化,篩選并刪除無效數(shù)據(jù)之后一次性導(dǎo)入至基本數(shù)據(jù)表中,即可得到最基本的案例表.由于數(shù)據(jù)較多,故只取前10組案例的部分屬性數(shù)據(jù)為例(見圖 2).
2.2.2 數(shù)據(jù)轉(zhuǎn)換
為了進(jìn)一步簡化設(shè)計(jì),首先對數(shù)據(jù)進(jìn)行預(yù)處理,進(jìn)而優(yōu)化源案例庫中的數(shù)據(jù),最終保留m個(gè)有效案例,即CASE=(X1,X2,…,Xm).同時(shí),考慮到度量各屬性的數(shù)據(jù)類型有所不同,在數(shù)據(jù)處理中將除數(shù)值類型屬性和Result、Plan之外的屬性均轉(zhuǎn)換為布爾類型,即將案例庫中的基本數(shù)據(jù)轉(zhuǎn)換為m*n大小的二維矩陣P,其中m為案例的個(gè)數(shù),n為所有屬性的個(gè)數(shù),此時(shí)矩陣中任一元素Pij=1 or 0.
實(shí)現(xiàn)這一轉(zhuǎn)換的最有效的方法是對基本數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行相應(yīng)的轉(zhuǎn)換計(jì)算.具體算法步驟為:
(1)新建數(shù)據(jù)庫數(shù)據(jù)表,要求除主鍵字段、姓名字段、Result和Plan字段為varchar類型之外,其余所有字段的數(shù)據(jù)類型均設(shè)為Bit類型,字段值分別來自于基本數(shù)據(jù)表中相應(yīng)字段值的計(jì)算結(jié)果;
(2)解決以上問題的有效方法可以借助于創(chuàng)建一個(gè)本地存儲過程p_changedata來實(shí)現(xiàn),通過執(zhí)行存儲過程得到待求解的結(jié)果,同時(shí)將求解結(jié)果寫入至數(shù)據(jù)表2中,其算法描述為:
S1:聲明n個(gè)變量,分別用于保存數(shù)據(jù)表中各字段的計(jì)算結(jié)果;
S2:使用T-SQL語句中的CASE…END語句對每一屬性值的所屬情況加以判斷求解,對應(yīng)結(jié)果只能為1或0,如:性別為男,則Sex=1,否則Sex=0;
S3:對于多值字段(如:Skin、Cough等),則使用模式匹配like+通配符%進(jìn)行匹配,若匹配成功(即包含相應(yīng)項(xiàng)的值),則對應(yīng)字段取值為1,否則,取值為0;
S4:使用Select Top i查詢得到經(jīng)計(jì)算后的第i條結(jié)果記錄,并使用insert語句將之寫入數(shù)據(jù)表中;
S5:若i<=m則轉(zhuǎn)S2,否則求解結(jié)束,新數(shù)據(jù)表記錄寫入完畢,完成數(shù)據(jù)轉(zhuǎn)換.
圖2 基本數(shù)據(jù)表中部分屬性數(shù)
2.2.3 實(shí)驗(yàn)結(jié)果
此處僅以性別和鼻腔這兩個(gè)屬性為例,使用以上算法編寫存儲過程,主要代碼如下:
create proc p_changedata
as
--聲明所用到的記錄總數(shù)、循環(huán)變量、性別和鼻腔屬性
declare@cnt int,@i int,@sex bit,
@Nose131 bit,@Nose132 bit,@Nose133 bit
select@cnt=COUNT(*)from 基本數(shù)據(jù)表
select@i=1
while(@i<=@cnt)
begin
select top (@i)
@sex=case sex when'男 'then 1 end,--性別
@Nose131=case when Nose13 like'%1 鼻塞%'then 1 end,--鼻腔
@Nose132=case when Nose13 like'%2鼻翼扇動%'then 1 end,
@Nose133=case when Nose13 like'%3鼻腔有分泌物%'then 1 end
from基本數(shù)據(jù)
--將轉(zhuǎn)換之后的數(shù)據(jù)寫入新表
insert into數(shù)據(jù)表2
(sex,Nose131,Nose132,Nose133)
values(@sex,
@Nose131,@Nose132,@Nose133)
set@i=@i+1
end.
通過執(zhí)行存儲過程p_changedata,將轉(zhuǎn)換后得到的布爾類型的數(shù)據(jù)寫入新表中,其結(jié)果見圖3.經(jīng)過這一數(shù)據(jù)轉(zhuǎn)換,既可以使得度量屬性的數(shù)據(jù)類型統(tǒng)一,同時(shí)還可以簡化案例檢索的算法設(shè)計(jì).
圖3 轉(zhuǎn)換后的數(shù)據(jù)表2中對應(yīng)部分?jǐn)?shù)
將案例推理技術(shù)引入至兒科疾病診療系統(tǒng)的根本目的是為兒科醫(yī)生對疾病診斷提供一定的診斷依據(jù),當(dāng)目標(biāo)案例出現(xiàn)時(shí),通過案例檢索評估源案例與目標(biāo)案例的相似度以獲取相似案例,提高兒科常見疾病診斷的精準(zhǔn)率,其系統(tǒng)設(shè)計(jì)的流程簡要表示見圖4[5].
圖4 引入案例推理的系統(tǒng)設(shè)計(jì)流程
案例檢索是案例推理中的關(guān)鍵環(huán)節(jié),它是從案例庫中檢索與目標(biāo)案例最為相似的源案例,并利用這些源案例的解來推理出目標(biāo)案例的解,其實(shí)質(zhì)就是通過比較目標(biāo)案例和源案例的相似度來實(shí)現(xiàn)的.案例相似度算法選擇的優(yōu)劣將直接影響到所檢索出的案例的匹配精確度,圖4的案例推理系統(tǒng)設(shè)計(jì)流程中的相似度算法的選擇顯得尤為重要.
常見的相似度計(jì)算方法主要有最近鄰檢索策略法、歸納推理法以及知識引導(dǎo)的檢索方法等[6].最近鄰檢索方法是一項(xiàng)較為簡單和成熟的檢索方法,主要是通過計(jì)算目標(biāo)案例和源案例的各屬性之間的距離,進(jìn)而得到案例整體相似度的一種檢索方法[7].
在求解相似度之前,通過主成分分析法來確定案例中每一特征屬性的權(quán)重ωi,這里的ωi表示第i個(gè)屬性 pi在當(dāng)前案例中的權(quán)重,有:ωi∈(0,1),且ωi=1.首先采用歐幾里得方法計(jì)算出相對應(yīng)的兩屬性間的距離差異的結(jié)果作為目標(biāo)案例 Y(yp1,yp2,…,ypn)和源案例 Xi(xp1,xp2,…,xpn)(Xi∈CASE)中各自的第 i個(gè)屬性的相似度,有:
設(shè)Sim(Y,Xi)為目標(biāo)案例Y和源案例Xi兩案例的整體相似度,則根據(jù)最近鄰檢索方法的計(jì)算公式[5],有:
通過公式(1)和(2)可知:兩屬性之間的距離越小說明屬性越相似,案例相似度Sim值越大說明兩案例間的相似度越高.按此方法進(jìn)行計(jì)算,在源案例庫中檢索出一個(gè)相似度最高的案例作為目標(biāo)案例的建議解.若要進(jìn)一步提高案例檢索的精準(zhǔn)性,還取決于各權(quán)重的確定及屬性的局部相似性.
3.3.1 問題與改進(jìn)
雖然此方法在案例檢索中被使用的頻率較高,但也存在著一定的弊端,如:權(quán)重的確定、度量各屬性的數(shù)據(jù)類型不統(tǒng)一等.這里主要考慮度量屬性的數(shù)據(jù)類型的問題.公式(2)一般只適用于數(shù)值類型數(shù)據(jù)的計(jì)算,故具體計(jì)算中還應(yīng)考慮增加非數(shù)值類型數(shù)據(jù)的相似度計(jì)算,即采用混合型的計(jì)算方法.;已轉(zhuǎn)換為布爾值類型的屬性只需對比相應(yīng)值是否相同即可;字符串類型的屬性可采用表2中的相應(yīng)計(jì)算公式進(jìn)行計(jì)算求解.
數(shù)值類型的屬性可以直接采用歐式距離計(jì)算公式進(jìn)行計(jì)算,即:
表2 不同類型的相似度計(jì)算方法
最后將本案例庫中的數(shù)據(jù)按照此前所提及的主成分分析法得到的各屬性的權(quán)值ωi,進(jìn)行綜合計(jì)算得到兩案例間的總體相似度:該式中第一部分為數(shù)值類型屬性的相似度,第二部分為所有布爾類型屬性的相似度,第三部分為所有字符串類型屬性的相似度.
通過這一修正避免了布爾類型屬性間原先的相似度只能為0或1的情況,可以更為精確地求解出布爾類型屬性間的相似度;增加了字符串類型屬性的計(jì)算,解決了原先數(shù)值距離計(jì)算所不能實(shí)現(xiàn)的相似度的求解.
本文分析了一個(gè)基于案例推理的兒科診療系統(tǒng)設(shè)計(jì)的整個(gè)流程,特別是案例數(shù)據(jù)庫的設(shè)計(jì)及數(shù)據(jù)處理操作過程,以及最近鄰這一案例檢索方法在本診斷系統(tǒng)中的改進(jìn)應(yīng)用,提出了案例檢索方法中存在的度量方法不統(tǒng)一的問題并提出了相應(yīng)的解決方法,以期能為該系統(tǒng)的進(jìn)一步研究和后期的推廣使用奠定了基礎(chǔ).