99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀詳細(xì)解讀如何構(gòu)建專家診病模型
詳細(xì)解讀如何構(gòu)建專家診病模型
2016-03-24
收藏



專家系統(tǒng)是典型的大數(shù)據(jù)和人工智能結(jié)合的計算機程序系統(tǒng),其內(nèi)部含有大量的某個領(lǐng)域?qū)<宜降闹R與經(jīng)驗,能夠利用人類專家的知識和解決問題的方法來處理該領(lǐng)域問題。也就是說,專家系統(tǒng)是一個具有大量的專門知識與經(jīng)驗的程序系統(tǒng),它應(yīng)用人工智能技術(shù)和計算機技術(shù),根據(jù)某領(lǐng)域一個或多個專家提供的知識和經(jīng)驗,進(jìn)行推理和判斷,模擬人類專家的決策過程,以便解決那些需要人類專家處理的復(fù)雜問題,簡而言之,專家系統(tǒng)是一種模擬人類專家解決領(lǐng)域問題的計算機程序系統(tǒng)。


專家系統(tǒng)的發(fā)展已經(jīng)歷了3個階段,正向第四代過渡和發(fā)展。第一代專家系統(tǒng)(dendral、macsyma等)以高度專業(yè)化、求解專門問題的能力強為特點。但在體系結(jié)構(gòu)的完整性、可移植性、系統(tǒng)的透明性和靈活性等方面存在缺陷,求解問題的能力弱。第二代專家系統(tǒng)(mycin、casnet、prospector、hearsay等)屬單學(xué)科專業(yè)型、應(yīng)用型系統(tǒng),其體系結(jié)構(gòu)較完整,移植性方面也有所改善,而且在系統(tǒng)的人機接口、解釋機制、知識獲取技術(shù)、不確定推理技術(shù)、增強專家系統(tǒng)的知識表示和推理方法的啟發(fā)性、通用性等方面都有所改進(jìn)。第三代專家系統(tǒng)屬多學(xué)科綜合型系統(tǒng),采用多種人工智能語言,綜合采用各種知識表示方法和多種推理機制及控制策略,并開始運用各種知識工程語言、骨架系統(tǒng)及專家系統(tǒng)開發(fā)工具和環(huán)境來研制大型綜合專家系統(tǒng)。在總結(jié)前三代專家系統(tǒng)的設(shè)計方法和實現(xiàn)技術(shù)的基礎(chǔ)上,已開始采用大型多專家協(xié)作系統(tǒng)、多種知識表示、綜合知識庫、自組織解題機制、多學(xué)科協(xié)同解題與并行推理、專家系統(tǒng)工具與環(huán)境、人工神經(jīng)網(wǎng)絡(luò)知識獲取及學(xué)習(xí)機制等最新人工智能技術(shù)來實現(xiàn)具有多知識庫、多主體的第四代專家系統(tǒng)。

本案例使用SmartMining敏捷挖掘桌面版,以決策樹算法為背景,通過生動有趣的過程講解,幫助讀者了解依托大數(shù)據(jù)如何構(gòu)建專家診病模型,以及如何通過可視化探索數(shù)據(jù),實現(xiàn)決策樹同樣的計算結(jié)果!

該案例的工作流如下:




商業(yè)目標(biāo)

業(yè)務(wù)理解:該案例所用的數(shù)據(jù)是一份醫(yī)生診病的數(shù)據(jù),如下:




表1:數(shù)據(jù)視圖

其中,年齡、性別、血壓、膽固醇、鈉、鉀是病人的指標(biāo),而藥物是醫(yī)生針對病人的情況開出的藥物。

業(yè)務(wù)目標(biāo):建立專家診病系統(tǒng),當(dāng)把病人的指標(biāo)輸入到該系統(tǒng)時,系統(tǒng)會自動輸出該給此類病人開出的藥物。

數(shù)據(jù)挖掘目標(biāo):建立專家診病模型,該模型以病人的病例指標(biāo)為輸入,以藥物為目標(biāo),建立預(yù)測模型,該模型可以根據(jù)輸入指標(biāo)的值,計算預(yù)測值(藥物)。

操作實現(xiàn):

新建工作流

可以點擊文件菜單下的"新建"或者點擊工具欄左方的新建按鈕(  )開始創(chuàng)建工作流。點擊后會彈出以下向?qū)Ы缑妫?/span>




輸入工作流的名字后即可完成創(chuàng)建:




圖1:新建工作流

導(dǎo)入數(shù)據(jù)

此時要根據(jù)數(shù)據(jù)存儲文件的格式選擇相應(yīng)的導(dǎo)入節(jié)點。在這里由于數(shù)據(jù)源是CSV文件,因此可以選擇CSV導(dǎo)入節(jié)點(也可以使用可變文件)。左側(cè)節(jié)點庫中CSV導(dǎo)入節(jié)點拖到右側(cè)的工作流中。雙擊節(jié)點或者右鍵菜單中選擇"配置",彈出如下配置窗口:




圖2:CSV節(jié)點配置







理解數(shù)據(jù)

使用統(tǒng)計分析菜單下的統(tǒng)計節(jié)點可以對數(shù)據(jù)進(jìn)行描述,這是建模之前必須要做的工作,一方面是為了設(shè)計合理的實施方案,另外一方面也是為了更好的選擇合適的算法。從表2中可以看出每種分類變量的取值及每種取值的個數(shù)。比如,從這里我們可以看出藥物字段一共包含五種取值,且出現(xiàn)最多的是Y藥物。在這里目標(biāo)變量為分類型,因此只能選擇分類預(yù)測類模型,如決策樹、邏輯回歸等。



表3:預(yù)建模

接下來便是嘗試建模,看看建模效果。




圖3:預(yù)建模

首先,從數(shù)據(jù)準(zhǔn)備列>轉(zhuǎn)換菜單下選擇類型轉(zhuǎn)換節(jié)點。由于性別、血壓、膽固醇三個字段實際存儲類型該是字符型,但這里是整型,因此為了便于以下分析,使用類型轉(zhuǎn)換節(jié)點將它們的類型從整型轉(zhuǎn)化為字符型。配置如下:




其次,使用類型節(jié)點指定目標(biāo)變量的角色,將藥物的角色設(shè)為目標(biāo)。




再次,從數(shù)據(jù)準(zhǔn)備的行菜單中選擇分區(qū)節(jié)點。使用分區(qū)節(jié)點可以將數(shù)據(jù)集分成測試集和訓(xùn)練集,訓(xùn)練集用于訓(xùn)練模型,測試集用于測試模型。配置如下:





還有一點要注意,這里分區(qū)即把數(shù)據(jù)集隨機分成兩份,通常訓(xùn)練集要比測試集大,通常分為5:5,6:4,7:3,8:2,9:1。數(shù)據(jù)集越小,訓(xùn)練集應(yīng)該分的更多,原因是要保證模型的穩(wěn)定性,參與訓(xùn)練的數(shù)據(jù)要足夠多。實際中,各種比例都會嘗試,目的有二:一是選擇最佳的比例,二是測試模型的穩(wěn)定性。

然后,選擇分類預(yù)測節(jié)點,因為目標(biāo)變量(藥物)為分類型。此處我們重點學(xué)習(xí)決策樹算法,所以就先選擇決策樹算法節(jié)點。節(jié)點連接如上圖3所示,在決策樹(訓(xùn)練)節(jié)點配置中選擇目標(biāo)變量藥物。其中,決策樹(訓(xùn)練)節(jié)點連接分區(qū)節(jié)點。決策樹訓(xùn)練節(jié)點可以采用默認(rèn)配置,無需修改配置,如下:



最后,使用分類評估節(jié)點評估模型的準(zhǔn)確性。配置如下圖所示:



評估結(jié)果:



表3:模型評估1

從表3中可以看出,模型測試準(zhǔn)確度為95%,誤判5%。預(yù)建模的目的是為了從整體判斷現(xiàn)有變量與目標(biāo)變量的相關(guān)性,以便可以根據(jù)經(jīng)驗預(yù)估最終的效果和可操作性。

接下來如何優(yōu)化模型呢?通常來說有三種辦法:第一,增加新數(shù)據(jù),以便引入更多重要的影響因素;第二,嘗試其他模型,以便找到更適合的模型;第三,優(yōu)化輸入,即基于已有數(shù)據(jù)派生更多重要的變量,或者過濾不重要的變量。這三者中,第一種最難以實現(xiàn),一般企業(yè)的數(shù)據(jù)是有限的,企業(yè)內(nèi)部可用數(shù)據(jù)及外部可用網(wǎng)絡(luò)數(shù)據(jù),在項目需求調(diào)研階段就應(yīng)該明確,而企業(yè)外部行業(yè)數(shù)據(jù)難以獲取。第二種最容易嘗試,所有可用模型可以快速嘗試一遍,這個是每個項目中都必做的,但卻不是最重要的方法。而第三種方法才是項目中最可行,也是最重要的辦法。

如何優(yōu)化輸入?這是第三種方法的實現(xiàn)目標(biāo)。而優(yōu)化輸入最重要的環(huán)節(jié)就是數(shù)據(jù)探索。

數(shù)據(jù)探索



圖4:數(shù)據(jù)可視化探索

數(shù)據(jù)探索最核心的一項工作就是探索輸入變量與目標(biāo)變量的相關(guān)性。分析變量的相關(guān)性可以使用相關(guān)性計算,也可以使用圖形化分析,而后者最直觀常用。分析兩個分類型變量可以使用條形圖、網(wǎng)絡(luò)圖或者交叉表。分析兩個數(shù)值型變量可以使用散點圖。分析一個數(shù)值型變量和一個分類型變量可以使用直方圖。

通過分析,血壓和藥物字段有著強相關(guān)性,因為從圖中可以看出使用藥物B和藥物A的人都是高血壓(3表示高血壓,2表示正常,1表示低血壓),使用藥物C的人都是低血壓,這種很明細(xì)的規(guī)律反映出兩個字段間存在很強的相關(guān)關(guān)系,如下圖所示:




同理,膽固醇和選擇藥物之間也有一定相關(guān)性,而性別和選擇藥物相關(guān)性不大,如下圖所示:





接下來分析數(shù)值型字段的相關(guān)性,從圖中可以看出血液中的鈉和鉀相關(guān)性很弱或者沒有。從圖形化的方式判斷相關(guān)性強弱的方法就是看圖形中的規(guī)律,規(guī)律越明顯,相關(guān)性就越強,否則越弱。



就此圖來說,散點圖中的每一個點表示一個病例,而我們最想知道的還不是鈉和鉀的相關(guān)性,而是兩者與藥物的相關(guān)性,因為藥物才是我們分析的目標(biāo)。所以我們還想知道散點圖中的每個病例使用的什么藥物。因此,我們使用藥物作為顏色區(qū)分,重新修正散點圖。如下:




從圖中可見,上三角區(qū)都是淺紅色,說明這部分病例使用的都是Y藥物。這是很明顯的規(guī)律,說明這里面有一種很強的關(guān)聯(lián)。用數(shù)學(xué)的語言來描述,就是鈉和鉀的比例與藥物有很強的相關(guān)性。因此,我們發(fā)現(xiàn)了一個很重要的變量就是鈉和鉀的比例。因此,我們可以派生一個變量:鈉鉀比例。

優(yōu)化輸入

首先,使用派生字段節(jié)點或者Java代碼段節(jié)點生成鈉鉀比例字段。配置如下:




其次,使用過濾節(jié)點過濾鈉和鉀字段,否則它們的重復(fù)存在會導(dǎo)致多重共線性問題。配置如下:




過濾后預(yù)覽數(shù)據(jù)如下:




重新建模




模型整體評估如下:




表4:模型評估2


從表4中可看出,模型精度從原來的95%提升帶了100%。當(dāng)然實際中如果遇到預(yù)測精度為100%的情況一定就是錯的。下面我們再來解讀一下得到的決策樹模型。如下圖所示,


從整體來看,得此類病的人有大約一半的人(45%)選擇服用了Y藥物;

如果病人血液中鈉和鉀的比例大于14.8285,則選擇服用Y藥物,準(zhǔn)確率為100%;

如果病人血液中鈉和鉀的比例不大于14.8285,若全部判成X藥物準(zhǔn)確率只有47.5%,因此再看病人的另外一個指標(biāo)血壓;

如果血壓(其值有1、2和3)為2,則全部判為X藥物,準(zhǔn)確率為100%;

如果血壓為1,全部判為C藥物,準(zhǔn)確率僅50%。再看另外一個指標(biāo)膽固醇,若膽 固醇的值為1,全部判為X藥物,則準(zhǔn)確率為100%。若膽固醇的值為2,全部判為C 藥物,則準(zhǔn)確率為100%。

如果血壓為3,全部判為A藥物,則準(zhǔn)確率僅56.8%。再看另外一個指標(biāo)年齡,若 年齡大于50.5歲,判為B藥物,則準(zhǔn)確率100%。若年齡不大于50.5歲,判為A藥物, 準(zhǔn)確率為100%。




 小 結(jié)

第一,在建模中,應(yīng)該注意過擬合問題。在商業(yè)中建模的目的是為了商業(yè)應(yīng)用,因此不僅要保證模型的準(zhǔn)確性,更要保證模型的穩(wěn)定性。

第二,模型應(yīng)用的核心是模型的風(fēng)險控制。只有可以控制風(fēng)險的模型才可以使用,否則不管理論模型建的多么漂亮都是沒有實際意義的。

第三,數(shù)據(jù)挖掘的成果并不只是數(shù)學(xué)模型,數(shù)據(jù)挖掘也不等價于高級模型(如決策樹、神經(jīng)網(wǎng)絡(luò)等)。數(shù)據(jù)挖掘最重要的不僅是得到一個模型,還有分析得出最合理的輸入變量以及給出數(shù)據(jù)質(zhì)量管理的建議。

第四,數(shù)據(jù)挖掘的一個核心工作就是圖形化探索,貌似很簡單卻又最為重要。因為這是你數(shù)據(jù)挖掘思路的源泉。

文章來自思邁特,CDA獲授權(quán)轉(zhuǎn)載

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }