聯系我們 - 廣告服務 - 聯系電話:
您的當前位置: > 關注 > > 正文

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

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

一、決策樹原理

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


【資料圖】

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

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

三、決策樹構造

決策樹的構造過程不依賴領域知識,它使用屬性選擇度量來選擇將元組最好地劃分成不同的類的屬性。所謂決策樹的構造就是進行屬性選擇度量確定各個特征屬性之間的拓撲結構。

3.1構造決策樹的關鍵步驟——分裂屬性

所謂分裂屬性就是在某個節點處按照某一特征屬性的不同劃分構造不同的分支,其目標是讓各個分裂子集盡可能地“純”。盡可能“純”就是盡量讓一個分裂子集中待分類項屬于同一類別。 分裂屬性分為三種不同的情況:

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

3.2 交叉驗證

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

3.3函數介紹

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

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

4.1 基于鳶尾花數據集實現決策樹分類 啟動環境后,登錄到服務器,編輯代碼文件: 1.導入用到的庫 2.加載數據集 3.構建模型 4.模型評估 4.2基于癌癥數據集實現決策樹分類 1.導入數據集 2.提取數據

3.劃分數據集

4.構建模型 5.模型評估

6.決策樹的屬性

7.繪圖 運行結果:

責任編輯:

標簽:

相關推薦:

精彩放送:

新聞聚焦
Top 岛国精品在线