決策樹引數

2022-06-07 16:24:09 字數 2768 閱讀 8948

1、criterion: 特徵選取標準。

預設:gini。

可選gini(基尼係數)或者entropy(資訊增益)。

1.1  選擇entropy,則是id3或c4.5演算法。

id3演算法原理:

a 計算訓練集所有樣本的資訊熵。

b 計算每一特徵分類後的資訊增益。

c 選擇資訊增益最大的特徵進行分類,得到子節點。

d 在還未被選擇的特徵中迭代b和c,直到無特徵可分或資訊增益已經無法達到要求的標準時,演算法終止。

c4.5演算法原理:

c4.5是在id3的演算法基礎上,採用資訊增益率來做為特徵選擇,通過增加類別的懲罰因子,規避了id3中類別越多資訊增益越大的問題,同時也可以對連續變數通過均值離散化的方式,解決了id3演算法無法處理連續變數的問題。過程和id3一樣。

1.2通常選擇gini,則是cart演算法。

我簡單描述一下cart演算法原理:

cart不再通過資訊熵的方式選取最優劃分特徵,而是採用基尼係數,也叫基尼不純度,兩者衡量資訊量的作用相當,但是基尼係數由於沒有對數運算,可大大減少計算開銷。

當然cart相對於id3,c4.5最大的優勢就是可以處理回歸問題。cart演算法處理分類問題時,以葉子節點上樣本投票**類別,處理回歸問題時,以葉子節點的樣本均值作為**值。

cart演算法的過程如下:

a 計算訓練集所有樣本的基尼係數。

b 計算某一特徵下每一屬性劃分後左右兩邊的基尼係數,找到基尼係數和最小的劃分屬性。

c 將每乙個特徵均按b中的方法計算,得到每乙個特徵最佳的劃分屬性。

d 對比c中每乙個特徵的最優劃分屬性下的基尼係數和,最小的就是最優的劃分特徵。

e 按最優的特徵及最優屬性劃分,得到子節點。

f 在還未被選擇的特徵中迭代b-e,直到無特徵可分或資訊增益率已經無法達到要求的標準時,演算法終止。

1.3兩種演算法差異不大對準確率無影響,資訊墒的執行效率低一點,因為它有對數運算.一般說使用預設的基尼係數」gini」就可以了,即cart演算法。

3.max_depth:決策樹最大深度

預設為none。

一般來說,資料少或者特徵少的時候可以不管這個值。如果模型樣本量多,特徵也多的情況下,推薦限制這個最大深度,具體的取值取決於資料的分布。常用的可以取值10-100之間。常用來解決過擬合

4. min_samples_split:內部節點再劃分所需最小樣本數

預設為2。

意義:如果節點上的樣本已經低於這個值,則不會再尋找最優的劃分點進行劃分,且以該結點作為葉子節點。樣本過多的情況下,可以設定乙個閾值,具體可根據業務需求和資料量來定。可以輸入乙個具體的值(int),或小於1的數(float型別,會根據樣本量計算百分比)。

5.min_samples_leaf:葉子節點所需最少樣本數

預設為1。

意義:如果達不到這個閾值,則同一父節點的所有葉子節點均被剪枝,這是乙個防止過擬合的引數。可以輸入乙個具體的值(int),或小於1的數(float型別,會根據樣本量計算百分比)。

6.min_weight_fraction_leaf:葉子節點所有樣本權重和

預設為0。

意義:如果低於閾值,則會和兄弟節點一起被剪枝,預設是0,就是不考慮權重問題。這個一般在樣本的分布類別偏差很大,或有較多缺失值的情況下會考慮,這時我們就要注意這個值了。

7.max_features:劃分考慮最大特徵數

預設為none。

意義:不輸入則預設全部特徵,可以選 log2n,sqrt(n),auto或者是小於1的浮點數(百分比)或整數(具體數量的特徵)。如果特徵特別多時,比如大於50,可以考慮選擇auto來控制決策樹的生成時間。

8.random_state:隨機數生成種子

預設為:none。

意義:設定隨機數生成種子是為了保證每次隨機生成的數是一致的(即使是隨機的);如果不設定,那麼每次生成的隨機數都是不同的。

9.max_leaf_nodes:最大葉子節點數

預設為:none。

意義:防止過擬合,預設不限制,如果設定了閾值,那麼會在閾值範圍內得到最優的決策樹。

如果特徵不多,可以不考慮這個值,但是如果特徵分成多的話,可以加以限制,具體的值可以通過交叉驗證得到。

10.min_impurity_decrease:節點劃分最小不純度

預設為:0。

意義:這個值限制了決策樹的增長,如果某節點的不純度(基尼係數,資訊增益)小於這個閾值,則該節點不再生成子節點。

sklearn 0.19.1版本之前叫 min_impurity_split。

11.class_weight:類別權重

預設為:none。

意義:在樣本有較大缺失值,或類別偏差較大時可選,防止決策樹向類別過大的樣本傾斜。可設定none或者balanced,後者會自動根據樣本的數量分布計算權重,樣本數少則權重高,與min_weight_fraction_leaf對應。

不適用於回歸樹 sklearn.tree.decisiontreeregressor

12.presort:是否排序

預設為:false。

模型引數選擇的幾項建議:

1.樣本少數量但是樣本特徵非常多的時候,決策樹很容易過擬合,在擬合決策樹模型前,推薦先做維度規約,比如主成分分析(pca),特徵選擇(losso)。這樣特徵的維度會大大減小。再來擬合決策樹模型效果會好。

在訓練模型先,注意觀察樣本的類別情況(主要指分類樹),如果類別分布非常不均勻,就要考慮用class_weight來限制模型過於偏向樣本多的類別。

決策樹引數調節

基本的決策樹語法如下 from sklearn.datasets import load breast cancer from sklearn.model selection import train test split from sklearn.tree import decisiontreec...

決策樹 決策樹引數介紹(分類和回歸)

前面總結了資訊熵,資訊增益和基尼資訊的定義,以及決策樹三大演算法的原理及迭代過程,今天介紹下python中機器學習sklearn庫中決策樹的使用引數 決策樹既可以做分類,也可以做回歸,兩者引數大體相近,下面會先介紹分類,再對回歸不一樣的引數做單獨說明 1 criterion 特徵選取方法,可以是gi...

DecisionTree決策樹引數詳解

1.max depth 指定遍歷搜尋的最大深度。int or none,optional default none 一般來說,資料少或者特徵少的時候可以不管這個值。如果模型樣本量多,特徵也多的情況下,推薦限制這個最大深度,具體的取值取決於資料的分布。常用的可以取值10 100之間。常用來解決過擬合 ...