聯(lián)系我們 - 廣告服務(wù) - 聯(lián)系電話:
您的當(dāng)前位置: > 關(guān)注 > > 正文

快資訊丨決策樹算法是什么?決策樹的定義與核心思想

來源:CSDN 時間:2023-03-07 11:40:21

一、決策樹原理

決策樹是一種比較常用的分類算法,理解起來也相對容易。所謂決策樹分類就是用決策條件構(gòu)成的一個樹狀預(yù)測模型,通過這個模型,我們可以對未知類別的數(shù)據(jù)進(jìn)行分類。


【資料圖】

二、決策樹的定義與核心思想

決策樹又稱為判定樹,是運(yùn)用于分類的一種樹結(jié)構(gòu),其中的每個內(nèi)部節(jié)點(diǎn)代表對某一屬性的一次測試,每條邊代表一個測試結(jié)果,葉節(jié)點(diǎn)代表某個類或類的分布。 決策樹的決策過程需要從決策樹的根節(jié)點(diǎn)開始,待測數(shù)據(jù)與決策樹中的特征節(jié)點(diǎn)進(jìn)行比較,并按照比較結(jié)果選擇選擇下一比較分支,直到葉子節(jié)點(diǎn)作為最終的決策結(jié)果。

三、決策樹構(gòu)造

決策樹的構(gòu)造過程不依賴領(lǐng)域知識,它使用屬性選擇度量來選擇將元組最好地劃分成不同的類的屬性。所謂決策樹的構(gòu)造就是進(jìn)行屬性選擇度量確定各個特征屬性之間的拓?fù)浣Y(jié)構(gòu)。

3.1構(gòu)造決策樹的關(guān)鍵步驟——分裂屬性

所謂分裂屬性就是在某個節(jié)點(diǎn)處按照某一特征屬性的不同劃分構(gòu)造不同的分支,其目標(biāo)是讓各個分裂子集盡可能地“純”。盡可能“純”就是盡量讓一個分裂子集中待分類項(xiàng)屬于同一類別。 分裂屬性分為三種不同的情況:

屬性是離散值且不要求生成二叉決策樹。此時用屬性的每一個劃分作為一個分支。屬性是離散值且要求生成二叉決策樹。此時使用屬性劃分的一個子集進(jìn)行測試,按照“屬于此子集”和“不屬于此子集”分成兩個分支。屬性是連續(xù)值。此時確定一個值作為分裂點(diǎn)split point,按照>split point和<=split point生成兩個分支。構(gòu)造決策樹的關(guān)鍵性內(nèi)容是進(jìn)行屬性選擇度量,屬性選擇度量是一種選擇分裂準(zhǔn)則,是將給定了類標(biāo)記的訓(xùn)練集合劃分,“最好”地分成個體類的啟發(fā)式方法,它決定了拓?fù)浣Y(jié)構(gòu)及分裂點(diǎn)split point的選擇。 屬性選擇度量算法有很多,一般使用自頂向下遞歸分治法,并采用不回溯的貪心策略,常用的算法有ID3和C4.5。 在實(shí)際構(gòu)造決策樹時,通常要進(jìn)行剪枝,這是為了處理由于數(shù)據(jù)中的噪聲和離群點(diǎn)導(dǎo)致的過分?jǐn)M合問題。剪枝有兩種:先剪枝——在構(gòu)造過程中,當(dāng)某個節(jié)點(diǎn)滿足剪枝條件,則直接停止此分支的構(gòu)造。后剪枝——先構(gòu)造完成完整的決策樹,再通過某些條件遍歷樹進(jìn)行剪枝。

3.2 交叉驗(yàn)證

因?yàn)樵趯?shí)際的訓(xùn)練中,訓(xùn)練的結(jié)果對于訓(xùn)練集的擬合程度通常還是挺好的(初試條件敏感),但是對于訓(xùn)練集之外的數(shù)據(jù)的擬合程度通常就不那么令人滿意了。因此我們通常并不會把所有的數(shù)據(jù)集都拿來訓(xùn)練,而是分出一部分來(這一部分不參加訓(xùn)練)對訓(xùn)練集生成的參數(shù)進(jìn)行測試,相對客觀的判斷這些參數(shù)對訓(xùn)練集之外的數(shù)據(jù)的符合程度。這種思想就稱為交叉驗(yàn)證。

3.3函數(shù)介紹

(1)train_test_split函數(shù) train_test_split來自sklearn.model_selection,是交叉驗(yàn)證中常用的函數(shù),它能從樣本中按比例隨機(jī)選取訓(xùn)練集和測試集。其用法如下: X_train, X_test, y_train, y_test = cross_validation.train_test_split(train_data, train_target, test_size=0.25, random_state=None) 參數(shù)解釋: . train_data: 所要劃分的樣本特征集。 . train_target: 所要劃分的樣本結(jié)果。 . test_size: 樣本占比,如果是整數(shù)的話就是樣本的數(shù)量。 . random_state: 是隨機(jī)數(shù)的種子 (2)tree.DecisionTreeClassifier函數(shù) DecisionTreeClassifier函數(shù)用于創(chuàng)建決策樹分類器。其用法如下: clf = tree.DecisionTreeClassifier() 常用參數(shù)解釋: . criterion: string類型,可選(默認(rèn)為"gini")。指定使用哪種方法衡量分類的質(zhì)量。支持的標(biāo)準(zhǔn)有"gini"代表的是Gini impurity(不純度)與"entropy"代表的是information gain(信息增益)。 . splitter: string類型,可選(默認(rèn)為"best")。指定在節(jié)點(diǎn)中選擇分類的策略。支持的策略有"best",選擇最好的分類,“random"選擇最好的隨機(jī)分類。 . max_depth: int or None,可選(默認(rèn)為"None”)。表示樹的最大深度。 . min_samples_split: int,float,可選(默認(rèn)為2)。一個內(nèi)部節(jié)點(diǎn)需要的最少的樣本數(shù)。 . max_features: int,float,string or None類型,可選(默認(rèn)為None)。在進(jìn)行分類時需要考慮的特征數(shù)。 . random_state: 可為int類型,RandomState 實(shí)例或None,可選(默認(rèn)為"None")。 如果是int,random_state是隨機(jī)數(shù)字發(fā)生器的種子;如果是RandomState,random_state是隨機(jī)數(shù)字發(fā)生器,如果是None,隨機(jī)數(shù)字發(fā)生器是np.random使用的RandomState instance.

四、編寫線性回歸算法代碼

4.1 基于鳶尾花數(shù)據(jù)集實(shí)現(xiàn)決策樹分類 啟動環(huán)境后,登錄到服務(wù)器,編輯代碼文件: 1.導(dǎo)入用到的庫 2.加載數(shù)據(jù)集 3.構(gòu)建模型 4.模型評估 4.2基于癌癥數(shù)據(jù)集實(shí)現(xiàn)決策樹分類 1.導(dǎo)入數(shù)據(jù)集 2.提取數(shù)據(jù)

3.劃分?jǐn)?shù)據(jù)集

4.構(gòu)建模型 5.模型評估

6.決策樹的屬性

7.繪圖 運(yùn)行結(jié)果:

責(zé)任編輯:

標(biāo)簽:

相關(guān)推薦:

精彩放送:

新聞聚焦
Top