決策樹


決策樹

決策樹(Decision Tree)是一種非參數的有監督學習方法,它能夠從一系列有特征和標簽的數據中總結出決策規則,並用樹狀圖的結構來呈現這些規則,以解決分類和回歸問題。

優點:

  簡單易懂,容易解釋,可視化,適用性廣

缺點:

  容易過擬合,

  數據中的小變化會影響結果,不穩定,

  每一個節點的選擇都是貪婪算法,不能保證全局最優解。

  

樹模型

  決策樹:

    從根節點開始一步步走到葉子節點(決策)
    所有的數據最終都會落到葉子節點,既可以做分類也可以做回歸

  樹的組成:

    根節點:第一個選擇點
    非葉子節點與分支:中間過程
    葉子節點:最終的決策結果

核心問題

  如何選出最佳節點和最佳分支?

  決策樹剪枝策略

 

  如何選出最佳節點和最佳分支?

    每一步都選擇最好的節點分支

    衡量標准-熵:

      熵是表示隨機變量不確定性的度量,即事物的混亂程度。

        H(X)=- ∑ pi * logpi, i=1,2, ... , n

        熵值低,相對穩定。

        p=0或p=1時,H(p)=0,沒有不確定性

        p=0.5時,H(p)=1,不確定性最大

    ID3:信息增益

      特征屬性值多的信息增益大,不能處理特征屬性值連續的情況

    C4.5:信息增益率,考慮自身熵

    CART:使用了GINI系數作為衡量標准

 

  決策樹剪枝策略

    決策樹過擬合風險很大,理論上可以完全分得開數據

      剪枝策略:

        預剪枝:邊建立決策樹邊進行剪枝的操作,實用

          控制樹的深度。 樣本數和節點數

          葉子節點個數,葉子節點樣本數,信息增益量

        后剪枝:完成決策樹后進行剪枝操作

          通過一定的衡量標准

          葉子節點越多,損失越大

sklearn中的決策樹

模塊sklearn.tree

tree.DecisionTreeClassifier 

分類樹
tree.DecisionTreeRegressor 回歸樹
tree.export_graphviz 將生成的決策樹導出為DOT格式,畫圖專用
tree.ExtraTreeClassifier 高隨機版本的分類樹
tree.ExtraTreeRegressor 高隨機版本的回歸樹
from sklearn import tree
 
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X_train,y_train)
result = clf.score(X_test,y_test) 
View Code

重要參數

criterion:不純度的計算方法,效果基本相同

  默認為“gini”,基尼系數

    通常使用,維度大,噪音大時使用,

  輸入“entropy”,使用信息熵

    涉及對數,計算較慢,對於高維數據或者噪聲很多的數據容易過擬合。

random_state:用來設置分支中的隨機模式的參數,高維效果明顯

  默認None,輸入任意整數

splitter:string,optional(default =“best”)

  best:選擇最佳分割

  random:隨機選擇拆分策略

max_depth int or None, optional (default=None)

  樹的最大深度

min_samples_split int, float, optional (default=2)

 

  拆分節點所需的最小樣本數

min_samples_leaf int, float, optional (default=1)

  拆分節點后的葉子節點的最小樣本數,滿足時才進行拆分。

min_weight_fraction_leaf float, optional (default=0.)

 

  

max_features int, float, string or None, optional (default=None)

  考慮的特征數量,int,float,“auto”,“sqrt”,“log2”,None

min_impurity_decrease float, optional (default=0.)

  最小信息熵增益

重要屬性

feature_importances_ array of shape = [n_features]

  返回特征重要性。

max_features_ int,

 

  最大特征

n_features_ int

  fit執行時的特征數量

n_outputs_ int

 

  fit執行時的輸出數量

tree_ Tree object

  樹對象

重要方法

apply(X[, check_input])

  每個樣本在葉子節點的索引

decision_path(X[, check_input])

  樹中的決策路徑

fit(X, y[, sample_weight, check_input, …])

predict(X[, check_input])

  預測類或回歸值

get_params([deep]):

  獲取參數

set_params(**params)

  設置參數

score(X, y[, sample_weight])


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM