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

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀基于R語言和SPSS的決策樹算法介紹及應(yīng)用
基于R語言和SPSS的決策樹算法介紹及應(yīng)用
2015-10-13
收藏

基于R語言和SPSS的決策樹算法介紹及應(yīng)用


機(jī)器學(xué)習(xí)在各個(gè)領(lǐng)域都有廣泛的應(yīng)用,特別在數(shù)據(jù)分析領(lǐng)域有著深遠(yuǎn)的影響。決策樹機(jī)器學(xué)習(xí)中最基礎(chǔ)且應(yīng)用最廣泛的算法模型。本文介紹了機(jī)器學(xué)習(xí)的相關(guān)概念、常見的算法分類和決策樹模型及應(yīng)用。通過一個(gè)決策樹案例,著重從特征選擇、剪枝等方面描述決策樹的構(gòu)建,討論并研究決策樹模型評(píng)估準(zhǔn)則。最后基于 R 語言和 SPSS 這兩個(gè)工具,分別設(shè)計(jì)與實(shí)現(xiàn)了決策樹模型的應(yīng)用實(shí)例。

機(jī)器學(xué)習(xí)概念

機(jī)器學(xué)習(xí) (Machine Learning) 是近 20 多年興起的一門多領(lǐng)域交叉學(xué)科,涉及概率論、統(tǒng)計(jì)學(xué)、逼近論、凸分析、算法復(fù)雜度理論等多門學(xué)科。

機(jī)器學(xué)習(xí)理論主要是設(shè)計(jì)和分析一些讓計(jì)算機(jī)可以自動(dòng)學(xué)習(xí)的算法。機(jī)器學(xué)習(xí)算法是一類從數(shù)據(jù)中自動(dòng)分析獲得規(guī)律,并利用規(guī)律對(duì)未知數(shù)據(jù)進(jìn)行預(yù)測(cè)的算法。因?yàn)閷W(xué)習(xí)算法中涉及了大量的統(tǒng)計(jì)學(xué)理論,機(jī)器學(xué)習(xí)與統(tǒng)計(jì)推斷學(xué)聯(lián)系尤為密切,也被稱為統(tǒng)計(jì)學(xué)習(xí)理論。在算法設(shè)計(jì)方面,機(jī)器學(xué)習(xí)理論關(guān)注可以實(shí)現(xiàn)的、行之有效的學(xué)習(xí)算法。很多相關(guān)問題的算法復(fù)雜度較高,而且很難找到固有的規(guī)律,所以部分的機(jī)器學(xué)習(xí)研究是開發(fā)容易處理的近似算法。

機(jī)器學(xué)習(xí)數(shù)據(jù)挖掘計(jì)算機(jī)視覺、自然語言處理、生物特征識(shí)別、搜索引擎、醫(yī)學(xué)診斷、檢測(cè)信用卡欺詐、證券市場(chǎng)分析、DNA 序列測(cè)序、語言與手寫識(shí)別、戰(zhàn)略游戲與機(jī)器人運(yùn)用等領(lǐng)域有著十分廣泛的應(yīng)用。它無疑是當(dāng)前數(shù)據(jù)分析領(lǐng)域的一個(gè)熱點(diǎn)內(nèi)容。

算法分類

機(jī)器學(xué)習(xí)的算法繁多,其中很多算法是一類算法,而有些算法又是從其他算法中衍生出來的,因此我們可以按照不同的角度將其分類。本文主要通過學(xué)習(xí)方式和算法類似性這兩個(gè)角度將機(jī)器學(xué)習(xí)算法進(jìn)行分類。

學(xué)習(xí)方式

監(jiān)督式學(xué)習(xí):從給定的訓(xùn)練數(shù)據(jù)集中學(xué)習(xí)出一個(gè)函數(shù),當(dāng)新的數(shù)據(jù)到來時(shí),可以根據(jù)這個(gè)函數(shù)預(yù)測(cè)結(jié)果。監(jiān)督學(xué)習(xí)的訓(xùn)練集需要包括輸入和輸出,也可以說是特征和目標(biāo)。訓(xùn)練集中的目標(biāo)是由人標(biāo)注的。常見的監(jiān)督式學(xué)習(xí)算法包括回歸分析和統(tǒng)計(jì)分類。

非監(jiān)督式學(xué)習(xí):與監(jiān)督學(xué)習(xí)相比,訓(xùn)練集沒有人為標(biāo)注的結(jié)果。常見的非監(jiān)督式學(xué)習(xí)算法有聚類。

半監(jiān)督式學(xué)習(xí):輸入數(shù)據(jù)部分被標(biāo)識(shí),部分沒有被標(biāo)識(shí),介于監(jiān)督式學(xué)習(xí)與非監(jiān)督式學(xué)習(xí)之間。常見的半監(jiān)督式學(xué)習(xí)算法有支持向量機(jī)

強(qiáng)化學(xué)習(xí):在這種學(xué)習(xí)模式下,輸入數(shù)據(jù)作為對(duì)模型的反饋,不像監(jiān)督模型那樣,輸入數(shù)據(jù)僅僅是作為一個(gè)檢查模型對(duì)錯(cuò)的方式,在強(qiáng)化學(xué)習(xí)下,輸入數(shù)據(jù)直接反饋到模型,模型必須對(duì)此立刻作出調(diào)整。常見的強(qiáng)化學(xué)習(xí)算法有時(shí)間差學(xué)習(xí)。

算法類似性

決策樹學(xué)習(xí):根據(jù)數(shù)據(jù)的屬性采用樹狀結(jié)構(gòu)建立決策模型。決策樹模型常常用來解決分類和回歸問題。常見的算法包括 CART (Classification And Regression Tree)、ID3、C4.5、隨機(jī)森林 (Random Forest) 等。

回歸算法:試圖采用對(duì)誤差的衡量來探索變量之間的關(guān)系的一類算法。常見的回歸算法包括最小二乘法 (Least Square)、邏輯回歸 (Logistic Regression)、逐步式回歸 (Stepwise Regression) 等。

聚類算法:通常按照中心點(diǎn)或者分層的方式對(duì)輸入數(shù)據(jù)進(jìn)行歸并。所有的聚類算法都試圖找到數(shù)據(jù)的內(nèi)在結(jié)構(gòu),以便按照最大的共同點(diǎn)將數(shù)據(jù)進(jìn)行歸類。常見的聚類算法包括 K-Means 算法以及期望最大化算法 (Expectation Maximization) 等。

人工神經(jīng)網(wǎng)絡(luò):模擬生物神經(jīng)網(wǎng)絡(luò),是一類模式匹配算法。通常用于解決分類和回歸問題。人工神經(jīng)網(wǎng)絡(luò)算法包括感知器神經(jīng)網(wǎng)絡(luò) (Perceptron Neural Network) 、反向傳遞 (Back Propagation) 和深度學(xué)習(xí)等。

集成算法:用一些相對(duì)較弱的學(xué)習(xí)模型獨(dú)立地就同樣的樣本進(jìn)行訓(xùn)練,然后把結(jié)果整合起來進(jìn)行整體預(yù)測(cè)。集成算法的主要難點(diǎn)在于究竟集成哪些獨(dú)立的較弱的學(xué)習(xí)模型以及如何把學(xué)習(xí)結(jié)果整合起來。這是一類非常強(qiáng)大的算法,同時(shí)也非常流行。常見的算法包括 Boosting、Bagging、AdaBoost、隨機(jī)森林 (Random Forest) 等。

決策樹

決策樹是附加概率結(jié)果的一個(gè)樹狀的決策圖,是直觀的運(yùn)用統(tǒng)計(jì)概率分析的圖法。機(jī)器學(xué)習(xí)決策樹是一個(gè)預(yù)測(cè)模型,它表示對(duì)象屬性和對(duì)象值之間的一種映射,樹中的每一個(gè)節(jié)點(diǎn)表示對(duì)象屬性的判斷條件,其分支表示符合節(jié)點(diǎn)條件的對(duì)象。樹的葉子節(jié)點(diǎn)表示對(duì)象所屬的預(yù)測(cè)結(jié)果。

決策樹案例

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>

圖 1. 決策樹案例圖

圖 1 是一棵結(jié)構(gòu)簡(jiǎn)單的決策樹,用于預(yù)測(cè)貸款用戶是否具有償還貸款的能力。貸款用戶主要具備三個(gè)屬性:是否擁有房產(chǎn),是否結(jié)婚,平均月收入。每一個(gè)內(nèi)部節(jié)點(diǎn)都表示一個(gè)屬性條件判斷,葉子節(jié)點(diǎn)表示貸款用戶是否具有償還能力。例如:用戶甲沒有房產(chǎn),沒有結(jié)婚,月收入 5K。通過決策樹的根節(jié)點(diǎn)判斷,用戶甲符合右邊分支 (擁有房產(chǎn)為“否”);再判斷是否結(jié)婚,用戶甲符合左邊分支 (是否結(jié)婚為否);然后判斷月收入是否大于 4k,用戶甲符合左邊分支 (月收入大于 4K),該用戶落在“可以償還”的葉子節(jié)點(diǎn)上。所以預(yù)測(cè)用戶甲具備償還貸款能力。

決策樹建立

本文上一節(jié)已經(jīng)討論如何用一棵決策樹進(jìn)行分類。本節(jié)將通過特征選擇、剪枝,介紹如何根據(jù)已有的樣本數(shù)據(jù)建立一棵決策樹。

首先介紹下特征選擇。選擇一個(gè)合適的特征作為判斷節(jié)點(diǎn),可以快速的分類,減少決策樹的深度。決策樹的目標(biāo)就是把數(shù)據(jù)集按對(duì)應(yīng)的類標(biāo)簽進(jìn)行分類。最理想的情況是,通過特征的選擇能把不同類別的數(shù)據(jù)集貼上對(duì)應(yīng)類標(biāo)簽。特征選擇的目標(biāo)使得分類后的數(shù)據(jù)集比較純。如何衡量一個(gè)數(shù)據(jù)集純度,這里就需要引入數(shù)據(jù)純度函數(shù)。下面將介紹兩種表示數(shù)據(jù)純度的函數(shù)。

信息增益

信息熵表示的是不確定度。均勻分布時(shí),不確定度最大,此時(shí)熵就最大。當(dāng)選擇某個(gè)特征對(duì)數(shù)據(jù)集進(jìn)行分類時(shí),分類后的數(shù)據(jù)集信息熵會(huì)比分類前的小,其差值表示為信息增益。信息增益可以衡量某個(gè)特征對(duì)分類結(jié)果的影響大小。

假設(shè)在樣本數(shù)據(jù)集 D 中,混有 c 種類別的數(shù)據(jù)。構(gòu)建決策樹時(shí),根據(jù)給定的樣本數(shù)據(jù)集選擇某個(gè)特征值作為樹的節(jié)點(diǎn)。在數(shù)據(jù)集中,可以計(jì)算出該數(shù)據(jù)中的信息熵:

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>

圖 2. 作用前的信息熵計(jì)算公式

其中 D 表示訓(xùn)練數(shù)據(jù)集,c 表示數(shù)據(jù)類別數(shù),Pi 表示類別 i 樣本數(shù)量占所有樣本的比例。

對(duì)應(yīng)數(shù)據(jù)集 D,選擇特征 A 作為決策樹判斷節(jié)點(diǎn)時(shí),在特征 A 作用后的信息熵的為 Info(D),計(jì)算如下:

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>

圖 3. 作用后的信息熵計(jì)算公式

其中 k 表示樣本 D 被分為 k 個(gè)部分。

信息增益表示數(shù)據(jù)集 D 在特征 A 的作用后,其信息熵減少的值。公式如下:

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>

圖 4. 信息熵差值計(jì)算公式

對(duì)于決策樹節(jié)點(diǎn)最合適的特征選擇,就是 Gain(A) 值最大的特征。

基尼指數(shù)

基尼指數(shù)是另一種數(shù)據(jù)的不純度的度量方法,其公式為:

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>

圖 5. 基尼指數(shù)計(jì)算公式

其中 c 表示數(shù)據(jù)集中類別的數(shù)量,Pi 表示類別 i 樣本數(shù)量占所有樣本的比例。

從該公式可以看出,當(dāng)數(shù)據(jù)集中數(shù)據(jù)混合的程度越高,基尼指數(shù)也就越高。當(dāng)數(shù)據(jù)集 D 只有一種數(shù)據(jù)類型,那么基尼指數(shù)的值為最低 0。

如果選取的屬性為 A,那么分裂后的數(shù)據(jù)集 D 的基尼指數(shù)的計(jì)算公式為:

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>

圖 6. 分裂后的基尼指數(shù)計(jì)算公式

其中 k 表示樣本 D 被分為 k 個(gè)部分,數(shù)據(jù)集 D 分裂成為 k 個(gè) Dj 數(shù)據(jù)集。

對(duì)于特征選取,需要選擇最小的分裂后的基尼指數(shù)。也可以用基尼指數(shù)增益值作為決策樹選擇特征的依據(jù)。公式如下:

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>

圖 7. 基尼指數(shù)差值計(jì)算公式

決策樹選擇特征時(shí),應(yīng)選擇基尼指數(shù)增益值最大的特征,作為該節(jié)點(diǎn)分裂條件。

接下來介紹剪枝。在分類模型建立的過程中,很容易出現(xiàn)過擬合的現(xiàn)象。過擬合是指在模型學(xué)習(xí)訓(xùn)練中,訓(xùn)練樣本達(dá)到非常高的逼近精度,但對(duì)檢驗(yàn)樣本的逼近誤差隨著訓(xùn)練次數(shù)而呈現(xiàn)出先下降后上升的現(xiàn)象。過擬合時(shí)訓(xùn)練誤差很小,但是檢驗(yàn)誤差很大,不利于實(shí)際應(yīng)用。

決策樹過擬合現(xiàn)象可以通過剪枝進(jìn)行一定的修復(fù)。剪枝分為預(yù)先剪枝和后剪枝兩種。

預(yù)先剪枝指在決策樹生長(zhǎng)過程中,使用一定條件加以限制,使得產(chǎn)生完全擬合的決策樹之前就停止生長(zhǎng)。預(yù)先剪枝的判斷方法也有很多,比如信息增益小于一定閥值的時(shí)候通過剪枝使決策樹停止生長(zhǎng)。但如何確定一個(gè)合適的閥值也需要一定的依據(jù),閥值太高導(dǎo)致模型擬合不足,閥值太低又導(dǎo)致模型過擬合。

后剪枝是在決策樹生長(zhǎng)完成之后,按照自底向上的方式修剪決策樹。后剪枝有兩種方式,一種用新的葉子節(jié)點(diǎn)替換子樹,該節(jié)點(diǎn)的預(yù)測(cè)類由子樹數(shù)據(jù)集中的多數(shù)類決定。另一種用子樹中最常使用的分支代替子樹。

預(yù)先剪枝可能過早的終止決策樹的生長(zhǎng),后剪枝一般能夠產(chǎn)生更好的效果。但后剪枝在子樹被剪掉后,決策樹生長(zhǎng)的一部分計(jì)算就被浪費(fèi)了。

決策樹模型評(píng)估

建立了決策樹模型后需要給出該模型的評(píng)估值,這樣才可以來判斷模型的優(yōu)劣。學(xué)習(xí)算法模型使用訓(xùn)練集 (training set) 建立模型,使用校驗(yàn)集 (test set) 來評(píng)估模型。本文通過評(píng)估指標(biāo)和評(píng)估方法來評(píng)估決策樹模型。

評(píng)估指標(biāo)有分類準(zhǔn)確度、召回率、虛警率和精確度等。而這些指標(biāo)都是基于混淆矩陣 (confusion matrix) 進(jìn)行計(jì)算的。

混淆矩陣是用來評(píng)價(jià)監(jiān)督式學(xué)習(xí)模型的精確性,矩陣的每一列代表一個(gè)類的實(shí)例預(yù)測(cè),而每一行表示一個(gè)實(shí)際的類的實(shí)例。以二類分類問題為例,如下表所示:

表 1. 混淆矩陣
預(yù)測(cè)的類
實(shí)際的類 類 = 1 類 = 0
類 = 1 TP FN P
類 = 0 FP TN N

其中

P (Positive Sample):正例的樣本數(shù)量。
N(Negative Sample):負(fù)例的樣本數(shù)量。
TP(True Positive):正確預(yù)測(cè)到的正例的數(shù)量。
FP(False Positive):把負(fù)例預(yù)測(cè)成正例的數(shù)量。
FN(False Negative):把正例預(yù)測(cè)成負(fù)例的數(shù)量。
TN(True Negative):正確預(yù)測(cè)到的負(fù)例的數(shù)量。

根據(jù)混淆矩陣可以得到評(píng)價(jià)分類模型的指標(biāo)有以下幾種。

分類準(zhǔn)確度,就是正負(fù)樣本分別被正確分類的概率,計(jì)算公式為:

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>
圖 8. 分類準(zhǔn)確度計(jì)算公式

召回率,就是正樣本被識(shí)別出的概率,計(jì)算公式為:

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>
圖 9. 召回率計(jì)算公式

虛警率,就是負(fù)樣本被錯(cuò)誤分為正樣本的概率,計(jì)算公式為:

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>
圖 10. 虛警率計(jì)算公式

精確度,就是分類結(jié)果為正樣本的情況真實(shí)性程度,計(jì)算公式為:

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>
圖 11. 精確度計(jì)算公式

評(píng)估方法有保留法、隨機(jī)二次抽樣、交叉驗(yàn)證和自助法等。

保留法 (holdout) 是評(píng)估分類模型性能的最基本的一種方法。將被標(biāo)記的原始數(shù)據(jù)集分成訓(xùn)練集和檢驗(yàn)集兩份,訓(xùn)練集用于訓(xùn)練分類模型,檢驗(yàn)集用于評(píng)估分類模型性能。但此方法不適用樣本較小的情況,模型可能高度依賴訓(xùn)練集和檢驗(yàn)集的構(gòu)成。

隨機(jī)二次抽樣 (random subsampling) 是指多次重復(fù)使用保留方法來改進(jìn)分類器評(píng)估方法。同樣此方法也不適用訓(xùn)練集數(shù)量不足的情況,而且也可能造成有些數(shù)據(jù)未被用于訓(xùn)練集。

交叉驗(yàn)證 (cross-validation) 是指把數(shù)據(jù)分成數(shù)量相同的 k 份,每次使用數(shù)據(jù)進(jìn)行分類時(shí),選擇其中一份作為檢驗(yàn)集,剩下的 k-1 份為訓(xùn)練集,重復(fù) k 次,正好使得每一份數(shù)據(jù)都被用于一次檢驗(yàn)集 k-1 次訓(xùn)練集。該方法的優(yōu)點(diǎn)是盡可能多的數(shù)據(jù)作為訓(xùn)練集數(shù)據(jù),每一次訓(xùn)練集數(shù)據(jù)和檢驗(yàn)集數(shù)據(jù)都是相互獨(dú)立的,并且完全覆蓋了整個(gè)數(shù)據(jù)集。也存在一個(gè)缺點(diǎn),就是分類模型運(yùn)行了 K 次,計(jì)算開銷較大。

自助法 (bootstrap) 是指在其方法中,訓(xùn)練集數(shù)據(jù)采用的是有放回的抽樣,即已經(jīng)選取為訓(xùn)練集的數(shù)據(jù)又被放回原來的數(shù)據(jù)集中,使得該數(shù)據(jù)有機(jī)會(huì)能被再一次抽取。用于樣本數(shù)不多的情況下,效果很好。

決策樹建模

在本節(jié)中,將通過 R 和 IBM SPSS 兩種建模工具分別對(duì)其實(shí)際案例進(jìn)行決策樹建模。

R

R 是一個(gè)用于統(tǒng)計(jì)計(jì)算及統(tǒng)計(jì)制圖的優(yōu)秀的開源軟件,也是一個(gè)可以從大數(shù)據(jù)中獲取有用信息的絕佳工具。它能在目前各種主流操作系統(tǒng)上安裝使用,并且提供了很多數(shù)據(jù)管理、統(tǒng)計(jì)和繪圖函數(shù)。

下面本節(jié)就將使用 R 所提供的強(qiáng)大的函數(shù)庫(kù)來構(gòu)建一棵決策樹并加以剪枝。

清單 1. 構(gòu)建決策樹及其剪枝的 R 代碼

# 導(dǎo)入構(gòu)建決策樹所需要的庫(kù)
library("rpart")
library("rpart.plot")
library("survival")
# 查看本次構(gòu)建決策樹所用的數(shù)據(jù)源
stagec
# 通過 rpart 函數(shù)構(gòu)建決策樹
fit <- rpart(Surv(pgtime,pgstat)~age+eet+g2+grade+gleason+ploidy,stagec,method="exp")
# 查看決策樹的具體信息
print(fit)
printcp(fit)
# 繪制構(gòu)建完的決策樹圖
plot(fit, uniform=T, branch=0.6, compress=T)
text(fit, use.n=T)
# 通過 prune 函數(shù)剪枝
fit2 <- prune(fit, cp=0.016)
# 繪制剪枝完后的決策樹圖
plot(fit2, uniform=T, branch=0.6, compress=T)
text(fit2, use.n=T)

根據(jù)代碼,運(yùn)行步驟如下:

  1. 導(dǎo)入需要的函數(shù)庫(kù)。當(dāng)然如果本地開發(fā)環(huán)境沒有相應(yīng)的庫(kù)的話,還需要通過 install.packages 函數(shù)對(duì)庫(kù)進(jìn)行安裝。
  2. 查看本次構(gòu)建決策樹的數(shù)據(jù)源。stagec 是一組前列腺癌復(fù)發(fā)的研究數(shù)據(jù)。
  3. 通過 rpart 函數(shù)構(gòu)建決策樹,以研究癌復(fù)發(fā)與病人年齡、腫瘤等級(jí)、癌細(xì)胞比例,癌細(xì)胞分裂狀況等之間的關(guān)系。
  4. 查看決策樹的具體信息。
  5. 繪制構(gòu)建完成的決策樹圖。
  6. 通過 prune 函數(shù)對(duì)該決策樹進(jìn)行適當(dāng)?shù)募糁Γ乐?a href='/map/guonihe/' style='color:#000;font-size:inherit;'>過擬合,使得樹能夠較好地反映數(shù)據(jù)內(nèi)在的規(guī)律并在實(shí)際應(yīng)用中有意義。
  7. 繪制剪枝完后的決策樹圖。

該案例決策樹的擬合結(jié)果與剪枝前后的樹如下圖所示:

圖 12. 決策樹案例擬合圖

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>

圖 13. 未剪枝的決策樹

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>

圖 14. 剪枝后的決策樹

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>

SPSS

IBM SPSS Modeler 是一個(gè)預(yù)測(cè)分析平臺(tái),能夠?yàn)閭€(gè)人、團(tuán)隊(duì)、系統(tǒng)和企業(yè)做決策提供預(yù)測(cè)性信息。它可提供各種高級(jí)算法和技術(shù) (包括文本分析、實(shí)體分析、決策管理與優(yōu)化),幫助您選擇可實(shí)現(xiàn)更佳成果的操作。

在 SPSS Modeler 中有很多應(yīng)用實(shí)例,其中就包括一個(gè)決策樹算法模型的案例。此示例使用名為 druglearn.str 的流,此流引用名為 DRUG1n 的數(shù)據(jù)文件。這些文件可在任何 IBM SPSS Modeler 安裝程序的 Demos 目錄中找到。操作步驟如下:

  1. 添加“變量文件”節(jié)點(diǎn) GRUGln,打開該節(jié)點(diǎn),添加 DRUGln 文件。
  2. 創(chuàng)建新字段 Na_to_K, 通過對(duì) Na 和 K 數(shù)據(jù)的觀察,發(fā)現(xiàn)可以用 Na 和 K 的比例來預(yù)測(cè)藥物 Y。
  3. 添加過濾器 (Discard Fields),過濾掉原始的字段 Na 和 K,以免在建模算法中重復(fù)使用。
  4. 添加類型節(jié)點(diǎn) (Define Types),設(shè)置字段的角色,將藥物字段設(shè)置為目標(biāo),其他的字段設(shè)置為輸入。
  5. 添加 C5.0 節(jié)點(diǎn),使用默認(rèn)的參數(shù)設(shè)置。
  6. 點(diǎn)擊運(yùn)行,生成一個(gè)模型 Drug,如下圖所示。
圖 15. 模型流圖

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>

在生成模型 Drug 以后,我們可以在模型頁(yè)面中瀏覽 Drug 模型。打開 Drug 模型以后,可在規(guī)則瀏覽框中以決策樹形式顯示 C5.0 節(jié)點(diǎn)所生成的規(guī)則集。還可以通過更復(fù)雜的圖表形式查看同一決策樹。如下圖所示:

圖 16. 生成模型的決策樹

<a href='/map/jueceshu/' style='color:#000;font-size:inherit;'>決策樹</a>,<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>

結(jié)束語

本文主要通過一個(gè)決策樹的典型案例,著重從特征選擇、剪枝等方面描述決策樹的構(gòu)建,討論并研究決策樹模型評(píng)估準(zhǔn)則,最后基于 R 語言和 SPSS 這兩個(gè)工具,分別設(shè)計(jì)與實(shí)現(xiàn)了決策樹模型的應(yīng)用實(shí)例。通過較多的統(tǒng)計(jì)學(xué)公式和案例圖表,生動(dòng)地展示了一棵決策樹是如何構(gòu)建并將其應(yīng)用到實(shí)際場(chǎng)景中去的。

本文也展開討論了分類算法之間的相互比較和優(yōu)缺點(diǎn),特征選擇與剪枝各種方法之間的相互比較,各個(gè)評(píng)估方法的優(yōu)缺點(diǎn)等。通過這些討論與分析,能夠以更好的方法論來解決實(shí)際生產(chǎn)環(huán)境下的問題。

同時(shí),決策樹只是整個(gè)機(jī)器學(xué)習(xí)領(lǐng)域的冰山一角,而機(jī)器學(xué)習(xí)領(lǐng)域又是當(dāng)前大數(shù)據(jù)分析領(lǐng)域的熱點(diǎn),因此還有很多很多值得我們?nèi)W(xué)習(xí)、去研究的地方。

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

若不方便掃碼,搜微信號(hào):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(), // 加隨機(jī)數(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)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".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 = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+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); }