張德青
(安徽三聯學院 計算機工程學院,安徽 合肥 230000)
案例推理(CBR)技術目前已成為人工智能領域中使用頻率較高、發展成熟的智能知識推理技術之一,尤其是醫療診斷系統的設計中.筆者擬將這一智能術技引入至兒科疾病診療系統的設計,旨在提高兒科疾病診療的精準度和效率.
案例推理是以過去已解決的問題的經驗知識為基礎,進一步推理出類似新問題的解決方案的過程[1].其中的知識是以案例的形式存儲在系統數據庫中,每次遇到新的問題時,便可在系統中搜索與該待解決問題最接近的案例(源案例),并以此為依據得到新問題(目標案例)的解.若該解決方案可以很好地處理新問題,則說明問題得到解決;否則需要對源案例作適當的修正,并將該問題也作為新案例存儲到案例庫中,完成案例學習的過程.
一個完整的案例推理應該包含:案例表示、案例檢索、案例重用、案例學習等4個部分,過程見圖1.

圖1 完整的案例推理過程
整個過程可描述為:首先抽取問題的特征屬性,通過GUI將問題表征成案例的形式輸入系統并發起檢索請求,然后系統根據事先設定的相似度匹配算法從源案例數據庫中檢索與之相匹配的案例.若檢索成功,則案例得到重用,問題解決;若未檢索到與之匹配的案例則需對該案例進行修正,通過案例學習之后作為新案例保存到案例庫中去[2].案例檢索方法的優劣將直接影響到系統檢索的速度和精準度,案例檢索是系統設計中的一個重要環節.
案例推理主要適用于一些知識難以表示、難以獲取,但又已積累了豐富經驗的案例領域中.隨著這一技術研究的不斷深入,使得其在法律咨詢、醫療系統、圖像分割、商業決策等方面的應用日趨廣泛,尤其是醫療系統中.醫生進行臨床診斷的過程恰好與案例推理的過程非常相似:醫生具有的臨床經驗非常重要,因為經驗豐富的醫生在遇到新的病癥時,可以很快地從經驗中找出相同或類似的病癥治療方法,而每次成功的治療又為將來積累了新的經驗,達到精益求精的境界[3].
兒科向來是醫院中的一個人滿為患的科室,許多家長甚至因為孩子發燒而在診室外排隊等待數小時,尤其遇到一些病毒高發期時更是如此.對于一些常見的疾病,若使用這樣一個CBR的醫療診斷系統,家長便可以通過系統的案例檢索推理得到較為有效的解決方案,輕松應對常見疾病.兒科疾病診療本就屬醫療診療中的一個分支,故案例推理技術亦可以很好地應用到兒科常見疾病的診療系統中.建立一個兒科常見疾病診療CBR系統可以適當地為家長們解決看病難的窘境.
將案例推理應用于兒科疾病診療系統的實質就是使用人工智能技術,用計算機來輔助模擬實現專家進行兒科疾病診斷的過程.對病癥案例特征屬性提取的效果,能直接影響病癥的推理效率,要將案例推理技術引入兒科常見疾病診療系統,首要的是進行兒科常見疾病案例的知識表示[4].
案例表示就是根據疾病的特點,抽取其中的特征屬性,使用一定的符號語言,借助于計算機技術把案例編碼成特定的數據結構的形式,以便存入案例數據庫中.本系統擬采用框架表示法進行案例表示,這一表示法的優點在于它可以很好地描述案例的細節,能更好地滿足結構化的需求.假設文中對所屬范圍的兒科疾病案例表示為:X(p1,p2,p3,…,pn),其中:p1,p2,…,pn 表示兒科常見疾病案例的 n 個特征屬性,若共有m條記錄,則該案例庫則可以表示成一個m*n的二維表.
案例數據庫的基本數據表及其主要屬性見表1.建立案例數據庫的目的是存儲源案例,記錄每一源案例的各項屬性值,以便檢索匹配重用.案例數據庫的邏輯設計將直接影響到案例檢索的效率,另外還必須考慮到數據庫中源案例的數量對檢索效率的影響,本系統采集了近1 000條年齡段為0~14歲兒童的常見疾病案例數據信息.

表1 Case基本數據
要建立這樣的一個兒科常見疾病診療案例數據庫,則首先需要按照X(p1,p2,p3,…,pn)的數據結構建立一張案例的基本數據表,并列出主要屬性.
2.2.1 數據采集
系統選擇的DBMS為MSSQL Server,根據表1給出的字段建立表結構,同時確定并設置各字段的域.通過MSSQL Server的數據導入/導出功能,將數據標本按照以上屬性要求優化,篩選并刪除無效數據之后一次性導入至基本數據表中,即可得到最基本的案例表.由于數據較多,故只取前10組案例的部分屬性數據為例(見圖 2).
2.2.2 數據轉換
為了進一步簡化設計,首先對數據進行預處理,進而優化源案例庫中的數據,最終保留m個有效案例,即CASE=(X1,X2,…,Xm).同時,考慮到度量各屬性的數據類型有所不同,在數據處理中將除數值類型屬性和Result、Plan之外的屬性均轉換為布爾類型,即將案例庫中的基本數據轉換為m*n大小的二維矩陣P,其中m為案例的個數,n為所有屬性的個數,此時矩陣中任一元素Pij=1 or 0.
實現這一轉換的最有效的方法是對基本數據表中的數據進行相應的轉換計算.具體算法步驟為:
(1)新建數據庫數據表,要求除主鍵字段、姓名字段、Result和Plan字段為varchar類型之外,其余所有字段的數據類型均設為Bit類型,字段值分別來自于基本數據表中相應字段值的計算結果;
(2)解決以上問題的有效方法可以借助于創建一個本地存儲過程p_changedata來實現,通過執行存儲過程得到待求解的結果,同時將求解結果寫入至數據表2中,其算法描述為:
S1:聲明n個變量,分別用于保存數據表中各字段的計算結果;
S2:使用T-SQL語句中的CASE…END語句對每一屬性值的所屬情況加以判斷求解,對應結果只能為1或0,如:性別為男,則Sex=1,否則Sex=0;
S3:對于多值字段(如:Skin、Cough等),則使用模式匹配like+通配符%進行匹配,若匹配成功(即包含相應項的值),則對應字段取值為1,否則,取值為0;
S4:使用Select Top i查詢得到經計算后的第i條結果記錄,并使用insert語句將之寫入數據表中;
S5:若i<=m則轉S2,否則求解結束,新數據表記錄寫入完畢,完成數據轉換.

圖2 基本數據表中部分屬性數
2.2.3 實驗結果
此處僅以性別和鼻腔這兩個屬性為例,使用以上算法編寫存儲過程,主要代碼如下:
create proc p_changedata
as
--聲明所用到的記錄總數、循環變量、性別和鼻腔屬性
declare@cnt int,@i int,@sex bit,
@Nose131 bit,@Nose132 bit,@Nose133 bit
select@cnt=COUNT(*)from 基本數據表
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基本數據
--將轉換之后的數據寫入新表
insert into數據表2
(sex,Nose131,Nose132,Nose133)
values(@sex,
@Nose131,@Nose132,@Nose133)
set@i=@i+1
end.
通過執行存儲過程p_changedata,將轉換后得到的布爾類型的數據寫入新表中,其結果見圖3.經過這一數據轉換,既可以使得度量屬性的數據類型統一,同時還可以簡化案例檢索的算法設計.

圖3 轉換后的數據表2中對應部分數
將案例推理技術引入至兒科疾病診療系統的根本目的是為兒科醫生對疾病診斷提供一定的診斷依據,當目標案例出現時,通過案例檢索評估源案例與目標案例的相似度以獲取相似案例,提高兒科常見疾病診斷的精準率,其系統設計的流程簡要表示見圖4[5].

圖4 引入案例推理的系統設計流程
案例檢索是案例推理中的關鍵環節,它是從案例庫中檢索與目標案例最為相似的源案例,并利用這些源案例的解來推理出目標案例的解,其實質就是通過比較目標案例和源案例的相似度來實現的.案例相似度算法選擇的優劣將直接影響到所檢索出的案例的匹配精確度,圖4的案例推理系統設計流程中的相似度算法的選擇顯得尤為重要.
常見的相似度計算方法主要有最近鄰檢索策略法、歸納推理法以及知識引導的檢索方法等[6].最近鄰檢索方法是一項較為簡單和成熟的檢索方法,主要是通過計算目標案例和源案例的各屬性之間的距離,進而得到案例整體相似度的一種檢索方法[7].
在求解相似度之前,通過主成分分析法來確定案例中每一特征屬性的權重ωi,這里的ωi表示第i個屬性 pi在當前案例中的權重,有:ωi∈(0,1),且ωi=1.首先采用歐幾里得方法計算出相對應的兩屬性間的距離差異的結果作為目標案例 Y(yp1,yp2,…,ypn)和源案例 Xi(xp1,xp2,…,xpn)(Xi∈CASE)中各自的第 i個屬性的相似度,有:

設Sim(Y,Xi)為目標案例Y和源案例Xi兩案例的整體相似度,則根據最近鄰檢索方法的計算公式[5],有:

通過公式(1)和(2)可知:兩屬性之間的距離越小說明屬性越相似,案例相似度Sim值越大說明兩案例間的相似度越高.按此方法進行計算,在源案例庫中檢索出一個相似度最高的案例作為目標案例的建議解.若要進一步提高案例檢索的精準性,還取決于各權重的確定及屬性的局部相似性.
3.3.1 問題與改進
雖然此方法在案例檢索中被使用的頻率較高,但也存在著一定的弊端,如:權重的確定、度量各屬性的數據類型不統一等.這里主要考慮度量屬性的數據類型的問題.公式(2)一般只適用于數值類型數據的計算,故具體計算中還應考慮增加非數值類型數據的相似度計算,即采用混合型的計算方法.;已轉換為布爾值類型的屬性只需對比相應值是否相同即可;字符串類型的屬性可采用表2中的相應計算公式進行計算求解.
數值類型的屬性可以直接采用歐式距離計算公式進行計算,即:

表2 不同類型的相似度計算方法
最后將本案例庫中的數據按照此前所提及的主成分分析法得到的各屬性的權值ωi,進行綜合計算得到兩案例間的總體相似度:該式中第一部分為數值類型屬性的相似度,第二部分為所有布爾類型屬性的相似度,第三部分為所有字符串類型屬性的相似度.
通過這一修正避免了布爾類型屬性間原先的相似度只能為0或1的情況,可以更為精確地求解出布爾類型屬性間的相似度;增加了字符串類型屬性的計算,解決了原先數值距離計算所不能實現的相似度的求解.
本文分析了一個基于案例推理的兒科診療系統設計的整個流程,特別是案例數據庫的設計及數據處理操作過程,以及最近鄰這一案例檢索方法在本診斷系統中的改進應用,提出了案例檢索方法中存在的度量方法不統一的問題并提出了相應的解決方法,以期能為該系統的進一步研究和后期的推廣使用奠定了基礎.