決策樹分類器DecisionTreeClassifier參數解釋

sklern中使用sklearn.tree.DecisionTreeClassifier類來實現決策樹分類算法。
模型調參常用參數如下:

名稱 功能 描述
criterion 特徵選擇標準 ‘gini’ or ‘entropy’ (default=”gini”),前者是基尼係數,後者是信息熵。兩種算法差異不大對準確率無影響,信息墒雲孫效率低一點,因爲它有對數運算.一般說使用默認的基尼係數”gini”就可以了,即CART算法。除非你更喜歡類似ID3, C4.5的最優特徵選擇方法。
splitter 特徵劃分標準 ‘best’ or ‘random’ (default=”best”) 前者在特徵的所有劃分點中找出最優的劃分點。後者是隨機的在部分劃分點中找局部最優的劃分點。 默認的”best”適合樣本量不大的時候,而如果樣本數據量非常大,此時決策樹構建推薦”random” 。
max_depth 決策樹最大深度  int or None, optional (default=None) 一般來說,數據少或者特徵少的時候可以不管這個值。如果模型樣本量多,特徵也多的情況下,推薦限制這個最大深度,具體的取值取決於數據的分佈。常用的可以取值10-100之間。常用來解決過擬合。
min_impurity_decrease 節點劃分最小不純度 float, optional (default=0.) 這個值限制了決策樹的增長,如果某節點的不純度(基尼係數,信息增益,均方差,絕對差)小於這個閾值,則該節點不再生成子節點。 sklearn 0.19.1版本之前叫 min_impurity_split
 
    min_samples_split
        
內部節點再劃分所需最小樣本數 int, float, optional (default=2) 如果是 int,則取傳入值本身作爲最小樣本數; 如果是 float,則去 ceil(min_samples_split * 樣本數量) 的值作爲最小樣本數,即向上取整。
min_samples_leaf 葉子節點最少樣本數 如果是 int,則取傳入值本身作爲最小樣本數; 如果是 float,則去 ceil(min_samples_leaf * 樣本數量) 的值作爲最小樣本數,即向上取整。 這個值限制了葉子節點最少的樣本數,如果某葉子節點數目小於樣本數,則會和兄弟節點一起被剪枝。
max_leaf_nodes 最大葉子節點數 int or None, optional (default=None) 通過限制最大葉子節點數,可以防止過擬合,默認是”None”,即不限制最大的葉子節點數。如果加了限制,算法會建立在最大葉子節點數內最優的決策樹。如果特徵不多,可以不考慮這個值,但是如果特徵分成多的話,可以加以限制,具體的值可以通過交叉驗證得到。
min_impurity_split  信息增益的閥值 決策樹在創建分支時,信息增益必須大於這個閥值,否則不分裂
min_weight_fraction_leaf    葉子節點最小的樣本權重和    float, optional (default=0.) 這個值限制了葉子節點所有樣本權重和的最小值,如果小於這個值,則會和兄弟節點一起被剪枝。 默認是0,就是不考慮權重問題。一般來說,如果我們有較多樣本有缺失值,或者分類樹樣本的分佈類別偏差很大,就會引入樣本權重,這時我們就要注意這個值了。
class_weight 類別權重  dict, list of dicts, “balanced” or None, default=None 指定樣本各類別的的權重,主要是爲了防止訓練集某些類別的樣本過多,導致訓練的決策樹過於偏向這些類別。這裏可以自己指定各個樣本的權重,或者用“balanced”,如果使用“balanced”,則算法會自己計算權重,樣本量少的類別所對應的樣本權重會高。當然,如果你的樣本類別分佈沒有明顯的偏倚,則可以不管這個參數,選擇默認的”None” 不適用於迴歸樹 sklearn.tree.DecisionTreeRegressor

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章