張 燕 汪衛(wèi)霞
(安徽財(cái)經(jīng)大學(xué)管理科學(xué)與工程學(xué)院,安徽 蚌埠 233030)
信息技術(shù)的發(fā)展推動(dòng)著數(shù)據(jù)的不斷增加,如何從海量的數(shù)據(jù)中提取所需的信息成為人們關(guān)注的焦點(diǎn),通過人類的長(zhǎng)期試驗(yàn)數(shù)據(jù)挖掘應(yīng)運(yùn)而生。數(shù)據(jù)挖掘是指從大量的數(shù)據(jù)中提取出有價(jià)值的信息的過程。數(shù)據(jù)挖掘工具通過對(duì)未來的預(yù)測(cè)影響人們的決策。其常用方法有人工神經(jīng)網(wǎng)絡(luò)、貝葉斯網(wǎng)絡(luò)、遺傳算法、QUEST、決策樹方法等。決策樹以樹的形式顯示數(shù)據(jù)挖掘的結(jié)果,它具有結(jié)構(gòu)簡(jiǎn)單,構(gòu)造時(shí)間短,輸出結(jié)果通俗易懂,準(zhǔn)確度高的優(yōu)點(diǎn)。因此,它在數(shù)據(jù)挖掘中應(yīng)用較廣。但決策樹方法也有其固有缺點(diǎn),即運(yùn)用決策樹方法時(shí)很難發(fā)現(xiàn)規(guī)律。有多種算法可以構(gòu)建決策樹,ID3和C5.0是決策樹中的典型算法,文章以C5.0算法對(duì)藥物選擇過程進(jìn)行挖掘分析,并給出了挖掘分析的結(jié)果。
決策樹是指采用由上而下的遞歸方式對(duì)數(shù)據(jù)進(jìn)行歸類,使得歸類后的數(shù)據(jù)具有相同屬性并以樹的形式顯示分類結(jié)果的過程。決策樹包括分類樹和回歸樹,分類樹用于對(duì)離散變量做決策,而回歸樹用于對(duì)連續(xù)變量做決策。決策樹的根節(jié)點(diǎn)是整個(gè)數(shù)據(jù)的集合,每個(gè)分節(jié)點(diǎn)代表某一屬性的測(cè)試,該測(cè)試將數(shù)據(jù)集合分成眾多子集合。每個(gè)葉節(jié)點(diǎn)代表了一個(gè)類或類分布。連接根節(jié)點(diǎn)和葉節(jié)點(diǎn)之間的那條線表示一種分類規(guī)則。決策樹的構(gòu)造步驟是:樹的根部作為數(shù)據(jù)的集合首先數(shù)據(jù)由根部遞歸進(jìn)行分類,然后對(duì)樹進(jìn)行修剪,去掉那些其干擾作用或者異常的數(shù)據(jù)。當(dāng)樹的某個(gè)分節(jié)點(diǎn)的數(shù)據(jù)具有相同屬性,而沒有其他屬性再分割時(shí)就停止該分支的分割,當(dāng)所有的分支都停止分割時(shí)最終的樹就形成了。
假設(shè)一名正在整理數(shù)據(jù)的醫(yī)學(xué)研究者收集了一組患有相同疾病的病人的數(shù)據(jù),在病人的治療過程中,由于每個(gè)病人自身狀況的不同對(duì)藥物的反應(yīng)也不同?,F(xiàn)在有五種藥物可供選擇,每個(gè)人都對(duì)5種藥物的一種有反應(yīng)。病人的血壓、年齡、膽固醇、血液中的鈉和鉀離子的含量都會(huì)影響藥物的選擇產(chǎn)生影響。本模型通過200名患者服用5種不同藥物的反應(yīng)結(jié)果和每個(gè)病人的血壓、膽固醇、血液中的鈉和鉀離子的含量應(yīng)用決策樹方法為未來患有此類疾病的病人尋找適合自身狀況的藥物。
本文以服用可供選擇的5種藥物的200患者為分析對(duì)象。
從目標(biāo)數(shù)據(jù)源中提取數(shù)據(jù)挖掘的目標(biāo)數(shù)據(jù)集進(jìn)行數(shù)據(jù)預(yù)處理評(píng)估相關(guān)因素包括:血壓、年齡、膽固醇、血液中的鈉和鉀離子的含量。
本節(jié),假設(shè)一名正在整理數(shù)據(jù)的醫(yī)學(xué)研究者收集了一組患有相同疾病的病人的數(shù)據(jù),在他們的治療過程中,每個(gè)人都對(duì)5種藥物的一種有反應(yīng)。研究員工作的一部分是利用數(shù)據(jù)挖掘?yàn)槲磥砘加型瑯蛹膊〉牟∪苏页鲞m合他們的藥物。這個(gè)示例名為druglearn.str流,它引用的數(shù)據(jù)文件名drug1n。這些文件可以從任何客戶端與演示目錄安裝。這可以從桌面Clementine程序組訪問的開始菜單啟動(dòng)。druglearn.str文件在分類模塊中。
在演示中使用的數(shù)據(jù)域如表1:
表1 演示中使用的數(shù)據(jù)域
第一步:添加一個(gè)變量節(jié)點(diǎn),使用一個(gè)可變的文件節(jié)點(diǎn)讀取帶分隔符的文本數(shù)據(jù)。首先添加一個(gè)變量文件節(jié)點(diǎn)從從調(diào)色板中單擊“源”選項(xiàng)卡上找到的節(jié)點(diǎn)或使用收藏夾選項(xiàng)卡,其中包括這個(gè)節(jié)點(diǎn)的默認(rèn)。其次,雙擊新放置的節(jié)點(diǎn)打開對(duì)話框。
第二步:打開可變文件對(duì)話框。首先單擊該按鈕在文件中標(biāo)有省略號(hào)(……)文件箱右邊來瀏覽裝在你系統(tǒng)中的數(shù)據(jù)挖掘目錄,打開Demos文件并選擇文件drug1n,然后選擇讀取字段名稱并注意剛剛被加載到對(duì)話框的文件的字段和值。
第三步:對(duì)打開的對(duì)話框進(jìn)行設(shè)置,在類型上選擇值單擊“數(shù)據(jù)”選項(xiàng)卡來重寫和更改字段存儲(chǔ)。注意存儲(chǔ)不同于類型或使用的數(shù)據(jù)字段。通過類型的選項(xiàng)卡可以了解數(shù)據(jù)中更多的字段類型。對(duì)每個(gè)從數(shù)值表中選擇的字段也可以通過選擇讀值查看每個(gè)字段的實(shí)際值。這個(gè)過程被稱為實(shí)例化。
第四步:添加一個(gè)表。建立一個(gè)包括表節(jié)點(diǎn)的流。將一個(gè)表節(jié)點(diǎn)放入流中,可以雙擊圖標(biāo)調(diào)色板或拖放到畫布上來看一些的值記錄。
第五步:將表節(jié)點(diǎn)連接到數(shù)據(jù)源,并從工具欄執(zhí)行流。雙擊節(jié)點(diǎn)從調(diào)色板將自動(dòng)連接到在所選節(jié)點(diǎn)流的畫布。另外,如果節(jié)點(diǎn)不是已連接,可以使用中鼠標(biāo)按鈕連接源節(jié)點(diǎn)到節(jié)點(diǎn)的表。模擬鼠標(biāo)中鍵,按住 Alt鍵的同時(shí),用鼠標(biāo)。單擊綠色箭頭按鈕工具欄執(zhí)行流,或右鍵單擊表節(jié)點(diǎn)并選擇執(zhí)行查看表。
第六步:創(chuàng)建一個(gè)分布圖,數(shù)據(jù)挖掘過程中,通過創(chuàng)建可視化的總結(jié)來探索數(shù)據(jù)常常是很有用的。Clementine提出了幾種不同類型的圖供選擇,這取決于你要總結(jié)的數(shù)據(jù)類型。例如,使用分配節(jié)點(diǎn)找出每種藥物的患者反應(yīng)比例。添加一個(gè)分布節(jié)點(diǎn)的流,并將其連接到源節(jié)點(diǎn),然后雙擊編輯可顯示的選項(xiàng)。將想要顯示的藥物分布選擇為目標(biāo)字段。然后,從對(duì)話框單擊“執(zhí)行”,并選擇藥物為目標(biāo)字段。藥物反應(yīng)的分布圖(圖1),通過結(jié)果圖可以看到“成形”的數(shù)據(jù)。結(jié)果表明,患者對(duì)藥物Y反應(yīng)最常見,對(duì)藥物B和C反應(yīng)最少見。同時(shí)也可以快速瀏覽所有字段的數(shù)據(jù)和直方圖后連接和執(zhí)行審核節(jié)點(diǎn)。
圖1 藥物反應(yīng)分布圖
第七步:創(chuàng)建一個(gè)散點(diǎn)圖找出必然會(huì)影響藥物的因素,并將其作為目標(biāo)變量。醫(yī)學(xué)研究者都知道在血液中鈉和鉀的濃度是重要的元素。首先創(chuàng)建一個(gè)用藥品的類別作為顏色疊加的鈉和鉀的散點(diǎn)圖,因?yàn)檫@些都是數(shù)字值。使用該藥物的種類作為一種顏色疊加,在工作空間放置一個(gè)圖節(jié)點(diǎn)(圖選項(xiàng)上)并把它連接到源節(jié)點(diǎn),然后雙擊編輯節(jié)點(diǎn)。在選項(xiàng)卡圖上藥物覆蓋領(lǐng)域選擇鈉作為X,鉀作為Y字段。單擊“執(zhí)行”。然后,創(chuàng)建一個(gè)散點(diǎn)圖(圖2),從圖2可以清楚地的看出閾值以上藥物Y是最好的選擇,而閾值以下就不是藥物Y了此閾值是一種比例即鈉(Na)比鉀(K)。
圖2 散點(diǎn)圖
第八步:創(chuàng)建一個(gè) web圖,由于許多數(shù)據(jù)域是絕對(duì)的,因此可以嘗試?yán)L制網(wǎng)絡(luò)圖反應(yīng)不同類別之間的關(guān)聯(lián)。首先在工作空間連接一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)(圖形選項(xiàng)上)到源節(jié)點(diǎn)。在Web節(jié)點(diǎn)對(duì)話框中,選擇BP(血壓)和藥物。然后,單擊“執(zhí)行”。從圖3上,似乎藥物Y與三個(gè)層次的血壓水平都相關(guān)。這一點(diǎn)也不奇怪,因?yàn)閺纳厦娴难芯恐幸呀?jīng)知道 Y是最好的藥物。為了專注于其他藥物,可以先把它藏起來。在藥物 Y點(diǎn)右鍵單擊并選擇隱藏并重新規(guī)劃。藥物對(duì)血壓的網(wǎng)絡(luò)圖如圖3所示:
圖3 藥物對(duì)血壓的網(wǎng)絡(luò)圖
在簡(jiǎn)化的圖上,藥物 Y和其所有的鏈接都是隱藏的。從圖中可以清楚地看到,只有藥物A和B與高血壓有關(guān)。只有藥物C和X與低血壓有關(guān)。在這一點(diǎn)上正常血壓只與藥物X相關(guān)。不過,對(duì)于一個(gè)給定的病人你還不知道怎樣在藥物 A和B或 C和X之間進(jìn)行選擇,這時(shí)可以運(yùn)用模擬加以確定。網(wǎng)絡(luò)圖與藥物及其鏈接隱藏如圖4所示:
圖4 網(wǎng)絡(luò)圖與藥物及其鏈接隱藏圖
第九步:導(dǎo)出一個(gè)新的字段,由于用藥物 Y時(shí)鈉與鉀比例似乎能預(yù)測(cè)到,因此可以為每個(gè)記錄派生一個(gè)包含這一比率的字段。這個(gè)字段可能對(duì)構(gòu)建一個(gè)模型來預(yù)測(cè)什么時(shí)候使用這五個(gè)藥物是有用的。在流中添加一個(gè)導(dǎo)出節(jié)點(diǎn),然后雙擊節(jié)點(diǎn)編輯。編輯導(dǎo)出節(jié)點(diǎn),命名這個(gè)新的導(dǎo)出字段na_to_k??梢詫⑩c值和鉀值直接輸入公式,也可以通過單擊圖標(biāo)右邊的字段創(chuàng)建一個(gè)公式。這將打開“表達(dá)式生成器”,一種以交互方式創(chuàng)建表達(dá)式使用內(nèi)置列表的功能,操作數(shù)和和字段數(shù)及其值。最后,通過附加一個(gè)直方圖節(jié)點(diǎn)派生節(jié)點(diǎn)檢查新字段的分布。在直方圖節(jié)點(diǎn)對(duì)話框中,指定 na_to_k作為繪制字段和藥物作為覆蓋領(lǐng)域即可得到編輯節(jié)點(diǎn)的直方圖,當(dāng)執(zhí)行流時(shí),應(yīng)該得到圖5所示?;谶@一顯示可以得出結(jié)論,當(dāng)na_to_k值是15或以上,選擇藥物Y。
第十步: 建立一個(gè)模型,通過探索和操作數(shù)據(jù)已經(jīng)能夠形成一些假設(shè)。血液中鉀與鈉似乎會(huì)影響藥物的選擇,如血壓。但還仍然不能解釋所有的關(guān)系,如血壓。這是建??赡軙?huì)提供一些答案。在這種情況下,應(yīng)盡量使用規(guī)則的建筑物模型擬合模型C5.0。由于使用的是導(dǎo)出的字段,na_to_k,可以過濾掉原來的字段,Na和 K,所以在建模算法中他們不止使用一次,可以使用一個(gè)過濾節(jié)點(diǎn)做這個(gè)。編輯過濾節(jié)點(diǎn):在“過濾”選項(xiàng)卡,單擊Na和K旁邊的箭頭,出現(xiàn)紅叉表示字段
現(xiàn)在被過濾掉了。然后,將一個(gè)類型節(jié)點(diǎn)連接到過濾節(jié)點(diǎn)。允許類型節(jié)點(diǎn)顯示已使用的該類型的字段,以及它們是如何被用來預(yù)測(cè)結(jié)果的。在“類型”選項(xiàng)卡上,設(shè)置了藥物字段的方向,表明藥物是要預(yù)測(cè)的類型。將偏離方向的其他類型設(shè)置為預(yù)測(cè)因子,再將工作區(qū)的C5.0的節(jié)點(diǎn)附加到流的末端顯示以估計(jì)模型。然后點(diǎn)擊綠色按鈕執(zhí)行流執(zhí)行,當(dāng)執(zhí)行 C5.0節(jié)點(diǎn),生成的模型節(jié)點(diǎn)(GEM圖標(biāo))將被添加到窗口右上角的模型選項(xiàng)卡上。右鍵單擊該圖標(biāo)并選擇菜單的瀏覽來瀏覽模式。規(guī)則的瀏覽器顯示了C5.0節(jié)點(diǎn)在決策樹中生成的規(guī)則。通過抽象的拼圖可以看到 na-to-k比率低于14.642時(shí),高血壓患者應(yīng)根據(jù)年齡選擇藥物,對(duì)于低血壓的人,應(yīng)根據(jù)膽固醇水平選擇藥物。最初,樹木是塌的,單擊“所有”按鈕來顯示所有的層次以拓展它。點(diǎn)擊“視圖”選項(xiàng)卡可以在一個(gè)更復(fù)雜的圖形和格式中看到同樣的決策樹。在這里,也可以更容易的看到每個(gè)血壓層次的病例數(shù)以及病例重要性百分比。通過圖6可以得出如下結(jié)論:當(dāng) na-to-k比率高于14.642時(shí)藥物Y是唯一選擇。當(dāng)na-to-k比率低于14.642時(shí),血壓會(huì)影響藥物的選擇,當(dāng)患者血壓正常時(shí),應(yīng)選擇藥物X;當(dāng)患者患有高血壓時(shí),年齡也會(huì)影響藥物的選擇,對(duì)于年齡不超過50歲的人應(yīng)選擇藥物A,對(duì)于年齡超過50歲的人應(yīng)選擇藥物B;而當(dāng)患者患有低血壓時(shí),膽固醇會(huì)影響藥物的選擇,當(dāng)患者體內(nèi)的膽固醇含量正常時(shí)應(yīng)選擇藥物X,而當(dāng)患者體內(nèi)的膽固醇含量高時(shí)應(yīng)選擇藥物C。
圖6
通過分析節(jié)點(diǎn)可以評(píng)估模型的準(zhǔn)確性。首先,將C5.0模型添加到流,然后附上分析節(jié)點(diǎn)(從輸出節(jié)點(diǎn)和執(zhí)行節(jié)點(diǎn)調(diào)色板)和執(zhí)行流。添加分析節(jié)點(diǎn)后得圖7:
圖7
分析節(jié)點(diǎn)的輸出顯示(圖8所示),通過人工干預(yù),該模型準(zhǔn)確預(yù)測(cè)了數(shù)據(jù)集中幾乎每一個(gè)記錄的藥物選擇。一個(gè)真正的數(shù)據(jù)集不可能有100%的準(zhǔn)確性,但可以使用分析節(jié)點(diǎn)為特定的應(yīng)用程序來確定模型可接受的準(zhǔn)確度。分析節(jié)點(diǎn)輸出的結(jié)果如下:即準(zhǔn)確率為99.5%,錯(cuò)誤率為0.5%。
圖8
由于決策樹方法可以將事例逐步分類成表示不同屬性的類別,因此,在數(shù)據(jù)挖掘中應(yīng)用廣泛。決策樹通過數(shù)據(jù)挖掘?yàn)闆Q策者帶來了巨大的經(jīng)濟(jì)利益。雖然決策樹在不斷的完善,但決策樹也還有很多不足的地方需要改進(jìn)。這主要是使用決策樹方法時(shí)會(huì)遇到一些數(shù)據(jù)準(zhǔn)備和數(shù)據(jù)表示方面的問題,如:虛假的數(shù)據(jù)、數(shù)據(jù)表示以外的其他數(shù)據(jù)的缺失、對(duì)數(shù)據(jù)細(xì)節(jié)理解不透等。這些都會(huì)影響到?jīng)Q策樹的生成,因此,決策樹算法在實(shí)際的應(yīng)用中還需要進(jìn)一步的深入研究。
[1] 韓家煒.數(shù)據(jù)挖掘:概念與技術(shù)第二版[M].北京:機(jī)械工業(yè)出版社,2001.
[2] 張劍飛.數(shù)據(jù)挖掘中決策樹分類方法研究[J].長(zhǎng)春師范學(xué)院學(xué)報(bào),2005(3):96-98.
[3] 湛寧,徐杰.決策樹算法的改進(jìn)[J].電腦知識(shí)與技術(shù),2008(5):1068-1069.
[4] 馬秀紅,宋建社,董晟飛.數(shù)據(jù)挖掘中決策樹的探討[J].計(jì)算機(jī)工程與應(yīng)用,2004(1):185,214.
[5] 李楠,段隆振,陳萌.決策樹C4.5算法在數(shù)據(jù)挖掘中的分析及其應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化,2008(12):160-163.
[6] 唐華松,姚耀文.數(shù)據(jù)挖掘中決策樹算法的探討[J].計(jì)算機(jī)應(yīng)用研究,2001(8):18-22.
[7] 施蕾,唐艷琴,張欣星.數(shù)據(jù)挖掘中決策樹方法的研究[J].計(jì)算機(jī)與現(xiàn)代化,2009(10):29-31.
[8] 沈晨鳴.決策樹分類算法研究[J].鹽城工學(xué)院學(xué)報(bào),2005(12):22-24.
[9] 江效堯,江偉.決策樹在數(shù)據(jù)挖掘中的應(yīng)用研究[M].安慶師范學(xué)院學(xué)報(bào),2003(2):83-85.
[10] 王靜紅,李筆.基于決策樹的一種改進(jìn)算法[J].電訊技術(shù),2004(10):175-177.
[11] 林向陽(yáng).數(shù)據(jù)挖掘中的決策樹算法比較研究[J].中國(guó)科技信息,2010(1):94-95.
[12] 馮帆,徐俊剛.C4.5決策樹改進(jìn)算法研究[J].電子技術(shù),2012(6):1-4.
[13] 林靜.基于決策樹的數(shù)據(jù)挖掘算法研究[J].福建電腦,2012(11):60-62.