跨產業資料探勘標準作業程序(CRISP-DM)在心臟病資料分析之應用

 

陳嘉惠 鄭順林

 

一、CRISP-DM簡介

跨產業資料探勘標準作業程序(Cross Industry Standard Process for Data Mining, CRISP-DM),其資料探勘作業程序主要是由NCR Systems Engineering Copenhagen (美國和丹麥)DaimlerChrysler AG (德國)SPSS Inc. (美國)OHRA Verzekeringen en Bank Groep B.V (荷蘭)這幾家公司在1996年聯合發展而成。CRISP-DM具有產品中立性,使用上並不受限於特定作業平台(見參考資料1)。以下將介紹CRISP -DM作業程序之六個主要步驟:

 

1. 了解企業需求 (Business Understanding):重點主要是以企業的觀點來找出推動此方案的目的,在此步驟要先定義資料探勘問題,並且訂定初步計畫方案。

2. 了解資料特性 (Data Understanding):主要為收集完整資料,並對收集的資料作初步分析,包括識別資料的質量問題、找到對資料的基本觀察,接著並設立假設前提。

3. 準備資料 (Data Preparation):主要為篩選資料中各項表格、紀錄以及變數,接著整理經篩選出來的資料,則即可應用於模型選擇工具上。

4. 設計模型 (Modeling):此步驟著重於選擇並應用一或多種資料探勘技術。

5. 評估 (Evaluation):主要為分析結果,並證實前一步驟設計的模型是否符合企業所推動方案之目的,以及進一步的決定將來是否繼續採用此一模型。

6. 建置 (Deployment):此步驟主要是經評估後,若所建立之模型符合企業目標,則將再進一步擬定該模式之推動計畫。

 

二、CRISP-DM在醫療上-心臟病資料之應用

CRISP-DM應用的範圍十分廣泛,原始的開發者雖是以工業及商業資料為主要對象,但這些原則是可以平行推廣到其它領域的,例如生物、藥學、醫學方面。           

以下將利用一組關於心臟病病患的資料集來說明CRISP-DM的實際程序與應用。而由於此組資料型態並不完全類似於真正的企業結構,且其中資料也經過了些許的修改與轉換,因此將使用較簡化的CRISP-DM,即流程資料庫知識探索(Knowledge Discovery in Database, KDD)作業模型來進行,其過程共分為下列四步驟:

 

步驟一:定義目標

步驟二:準備資料

步驟三:運用資料探勘技術

步驟四:解釋及評估結果

 

 

心臟病之資料集

 

步驟一:定義目標

本案例共記錄了303位患者,依據13類輸入資料變數,及1類輸出資料變數來判定此病患是有心臟方面疾病(生病)或無心臟方面疾病(健康)。而本資料採礦實驗最主要的目的,在於判斷我們所選取的輸入資料變數是否能建立一個監督式學習模型,並成功地區分資料種類。其使用的實驗分析方法即是應用非監督式分群來測試能否將資料自然分成生病(Sick)及健康 (Healthy) 二組。

 

步驟二:準備資料

此實驗所使用的資料為各病患之相關資訊,其中曾經有心臟病發作者及沒有心臟方面之相關疾病者皆包括在內。原始資料是由Dr. Robert Detrano在長堤的VA 醫學中心所收集,共包含303個範例,其中165個範例是沒有心臟方面之相關疾病的,而138個範例是曾經有心臟病發作的。在原本的資料集中包含13個數值變數,而第14個變數表示此病人是否有心臟方面的問題。後來此資料集被Dr. John GennariFisher所修正,改變了其中8個數值變數為類別變數,使得資料探勘工具能夠以混合的型態來進行分類。

在此資料中並無遺漏值存在,而其各組分類水準及各水準所佔個數,如表1。進一步細分來看,數值變數方面,由各變數對類別(class)變數之盒鬚圖(Box chart)可得知;初步判斷變數舊的峰值(peak)和最大心跳率(maximum heart rate)對於用來判定是否曾有心臟疾病發作是較有顯著影響的,而其舊的峰值越高、以及最大心跳率越低者,是較容易判定為曾經有心臟病發作病患的,如圖1

至於在類別變數方面,由各變數對類別(class)變數之長條圖(Bar chart)可得知;在變數胸腔疼痛類型(Chest Pain Type)中之「無特性」(NoTang)者,多為是曾經有心臟疾病的病患,而為「無症狀」(Asymptomatic)者,多為是不曾有心臟疾病病患的;在變數靜態靜電圖(Resting ECG)中之「異常」(Abnormal)者,多為是曾經有心臟疾病的病患,而為「正常」(Normal) 者,多為是不曾有心臟疾病病患的;在變數是否心絞痛(Induced Angina ) 中之「是」者,多為是曾經有心臟疾病的病患,而為「否」者,多為是不曾有心臟疾病病患的;在變數斜率 (Slope) 中之「下」(down)者,多為是曾經有心臟疾病的病患,而為「上」(Up)者,多為是不曾有心臟疾病病患的;在變數帶因率(Thal) 中之「正常」(Normal)者,多為是曾經有心臟疾病的病患,而為「修正」(fix)者,多為是不曾有心臟疾病病患的,如圖2。整合來看,變數胸腔疼痛類型、斜率、彩色導管數、帶因率對於用來判定是否曾有心臟疾病發作是有顯著影響的。

接著初步檢視全部變數對於最後判別群組,其分類樹(Classification tree)之正確分類率為0.901,此值是相當高的,即表示說最後所決策出的規則,將會有不錯的分類效果。所以為了要再進一步瞭解各變數對於預測是否曾有心臟病病發的能力,以及變數之間關係,我們將使用概念分群法和相關的資料採礦技術來進行分析。

 

                                               

1

變數名稱

數值或類別

範圍

內容簡述

年齡性別

數值

數值[29,77]

年齡

性別

(207),女(96)

10

病人性別

胸腔疼痛類型

心絞痛(23),異常心絞痛(50),無特性(87),無症狀(143)

1-4

無特性=一般疼痛

血壓

數值

數值[94,200]

醫院認定平常的血壓

膽固醇

數值

數值[126,564]

免疫血清膽固醇

空腹血糖<120

(45),否(258)

10

空腹血糖是否低於120

靜態心電圖

正常(152),異常(4),可疑(147)

012

可疑=左心室肥大

最大心跳率

數值

數值[71,202]

心跳可達的最大速率

是否心絞痛

(99),否(204)

10

在運動中是否曾心絞痛

舊的峰值

數值

數值[0,6.2]

休息到運動的標準壓力值

斜率

(142),平坦(140),下(21)

1-3

運動峰值斜率、標準分割

(Slope of the peak exercise ST segment)

彩色導管數

0(179)1(66)2(38)3(20)

0123

經由X光著色的主要導管數

帶因率

正常(167),修正(18),加速(118)

367

正常,修正缺陷,反轉缺陷

類別

健康(165),生病(138)

10

疾病狀態

   (  )中之數值為各水準所佔之個數

 

 

                                   1

      

 

                                                    2                                                 

 

步驟三:運用資料探勘技術

l    首先應用非監督式分群於ESX實驗。ESXExcel上的一種多功能資料探勘工具,其可以建立目標資料,找出資料中的規則性,以作資料探勘,並對探勘出來的資訊提供深入的解析。其主要的演算法為概念分群(Conceptual Clustering)(見參考資料2)

l    接著設定相似參數(Instance similarity)45,以得出二組類別。

l    採用預設值給予實際容限值(Real-valued tolerance)設定,如圖3

                                                  

                                            3

                                     

 

 

l    開始資料探勘程序。

l    依預設之設定產生規則,如圖4

                                                          圖4

                                             

 

 

步驟四:解釋及評估結果

1.以相似度分數(Resemblance scores)及個別分級規則來驗證輸入變數分群的能力,如表2

l    所有資料被分為二個大小相近的群集,其中一個群集包含123組資料,另一個群集有180組資料。

l    這二群集的相似度分數為0.5530.599皆高於其整體的範疇相似度(Domain resemblance) 0.51;即表示其分群效果是顯著的有力證據。

l    各類別的分群品質(Cluster Quality)分數為其類別相似度對於範疇相似度的增加(或減少)之百分比。而在相同的範疇相似度下,第二群是較有高的分群品質,其分數為0.17

     表2

 

Class 1

Class 2

Domain

Resemblance scores

0.553

0.599

0.51

No. of  Instances.

123

180

303

Cluster Quality:

0.08

0.17

 

 

l    在二個群集中都可以歸納出許多條規則,這也可以進一步證明分群效果顯著。以下將個別列出其分群之規則,如表3

                                            表3

       

 

 

2.檢視範疇統計結果輔助判斷誤差值,和決定出有效益的數值變數。

l    數值變數最大心跳率(maximum heart rate)以及舊的峰值(peak)得到最高顯著分數1.191.07,即表示最具有分類能力;這和初步分析所得之結果一樣。而數值變數血壓(blood pressure)以及膽固醇(cholesterol)的判斷效果為最不顯著,如表4

4

 

Class 1

Class 2

Domain

Attribute Significance

age (mean)

57.31

52.36

54.37

0.55

blood pressure (mean)

134.55

129.62

131.62

0.28

cholesterol (mean)

251.44

242.73

246.26

0.17

maximum heart rate (mean)

135.11

159.58

149.65

1.07

peak (mean)

1.86

0.48

1.04

1.19

 

l    ESX概念分群法中之最常出現的分類變數一表中可看到,變數胸腔疼痛類型(chest pain type) 靜態心電圖(resting ecg)、是否心絞痛(angina)、斜率(slope)、帶因率(thal)結果得出不同的值,如表5

5

 

Class 1

Class 2

sex

Male

Male

chest pain type

Asymptomatic

NoTang

Fasting blood sugar <120

FALSE

FALSE

resting ecg

Hyp

Normal

angina

TRUE

FALSE

slope

Flat

Up

#colored vessels

0

0

thal

Rev

Normal

class

Sick

Healthy

 

3.檢視分類統計結果來找出具預測性之類別變數。

l    類別變數中,是否心絞痛(angina) 、斜率(slope)、帶因率(thal),其預測值(Predictability)以及預測分數(Predictiveness scores)相對較高,如表6

6

Name

Predictability

Predictiveness

angina

0.89

0.78

slope

0.69

0.87

thal

0.81

0.87

 

4.修正變數、資料範例,以及參數的設定,並重複使用資料探勘技術以求得最佳模型。

l    既然經過以上實驗證明,輸入變數有效地產生輸出變數,根據邏輯,下一步應該是使用訓練/測試方案建立並測試監督式學習模型。

l    同時也應考慮對於用來建立監督式模型的變數,應限制為已被認定為最具有類別預測能力者。

接著為提供額外輸入變數資料以正確建立監督式模型,我們接著應用一個訓練/測試方案。首先採用全部變數,以及全部資料之2/3202筆資料為訓練方案,其餘的1/3101筆資料來建立監督式學習模型,則所有資料中接近40%被判定為曾經有心臟病發作的病患,這個比例分佈正好也跟前述202筆資料相符。因此,我們將這202筆資料定為訓練資料。根據組合而成的模型顯示測試組有82%的分組正確性,詳見表7之混亂矩陣。

7

 

判定為生病

判定為健康

生病

33

13

健康

5

50

正確百分比

82.0%

 

 

接著繼續採用此組資料來進行下面三個實驗。

4.1實驗一

我們仍然使用同樣的訓練測試資料,並將大部分的分類資料及數值資料標示成不使用的。特別的是,只選擇使用較具預測能力的變數,最大心跳率(maximum heart rate)、舊的峰值(peak)、是否心絞痛(angina)、帶因率(thal)、空腹血糖<120(Fasting blood sugar <120)胸腔疼痛類型(chest pain type),則實驗結果顯示79%的資料正確率,如表8

4.2實驗二

我們將最具預測能力的六個變數資料標示成不使用的,並使用其餘七個的輸入變數資料來建立一個監督式模型,其結果顯示76%的資料正確率,如表9。此結果雖比選擇較具預測能力變數所得之分類正確率差,但卻相差不多,其有可能是變數間有些微的相互影響。

4.3實驗三

我們使用全部的變數資料,但是將訓練資料的範圍限定在兩類別生病與健康資料中最典型的各10筆,即共20筆,其結果顯示80%的分類正確率,詳見表10之混亂矩陣。在此值得注意的是此模型只判定6筆原本是無心臟方面疾病的患者為曾經有心臟病發的,而且一個只用20筆最典型資料建立的模型,其分析效果接近於一個用202筆資料建立的模型。這顯示了上述兩組資料範例原本就分屬二個不同的群集。  

8

 

判定為生病

判定為健康

生病

31

15

健康

6

49

正確百分比

79.0%

 

9

 

判定為生病

判定為健康

生病

30

16

健康

8

47

正確百分比

76.0%

 

10

 

判定為生病

判定為健康

生病

32

14

健康

6

49

正確百分比

80.0%

 

 

三、結論

CRISP-DM程序模型是一個經過認證的知識探索程序模型,其主要動機是想將資料採礦技術轉化為商業上的應用;整個過程依據了「了解企業需求、了解資料特性、準備資料、設計模型、評估、建置」等六個步驟來完成其作業程序。

而在這次所舉出的心臟病資料應用中,由分析所得知結果可發現,最大心跳率(maximum heart rate)、舊的峰值(peak)、是否心絞痛(angina)、帶因率(thal)、空腹血糖<120(Fasting blood sugar <120)胸腔疼痛類型(chest pain type),對於用來判別此病患是否曾經有心臟病發作是較有顯著影響的;而也發現選擇使用少數較具代表性的變數所得之分類正確率,其效果將會和採用全部變數所得之分類正確率是相當的;雖然說,選擇全部變數也是可行的,如在步驟二中所提到的,可達90 %之分組正確率,但這樣做並不一定很好;一方面是由於隨著變數個數的增加,模型的建立時間會隨之上升,更重要的是,如果把所有的變數都加進去,有可能會導致建立出預測能力反而較差的模型。所以如同統計上之迴歸分析一樣,當採用變數多與採用變數少之模型所預測出效果差不多時,將以選擇變數較少的模型為佳。

實施資料採礦,最終是想要由資料庫中去發掘一些潛在且有用的資訊,或者利用所建立的模型來找出資料中隱藏的樣式,而除了使用本次所採用的ESX多功能資料探勘工具外,其實還可利用其它探勘方式來達到最終目的,例如關聯法則(Association Rules)K-Means演算法、基因演算法(Genetic Algorithms)...等。而在此次雖然所舉出的資料集中,其執行的資料量較少,但同樣地運用於較大量的資料上也是可行的。而且若要更加確定分析結果之穩健度或預測能力,將建議可多次反覆進行實驗4.1 ~ 4.3 的過程來獲得最佳結果。

 

 

 

 

 

 

 

 

 

 

 

參考資料

1http: //www.crisp-dm.org. CRISP-DM 1.0版用戶指南。

2Richard J. Roiger ; Michael W. Geatz ; 曾新穆、李建億 譯:資料探勘 Data Mining  “ A TUTORIAL-BASED PRIMER ”,台灣培生教育出版股份有限公司,2003