熵是表示隨機變數不確定性的度量,越小越好
資訊增益:表示特徵x使得類y的不確定性減少的程度。
先計算y的熵值為原始熵值,再計算
增益=原始熵值-
id3:資訊增益(id熵值小,增益大,但是對結果的影響基本沒有)
c4.5:資訊增益率(解決id3,考慮自身熵)
cart:使用gini係數來當做衡量標準
gini係數:
(與熵的衡量標準類似,計算方法不同)
離散化:貪婪演算法,先排序,再找中位數為分界點
決策樹過擬合風險很大,理論上可以完全分開資料
剪枝策略:預剪枝,後剪枝
邊建立決策樹邊進行剪枝(更實用)
限制深度,葉子節點個數,葉子節點裡的樣本數,資訊增益量
建立好決策樹之後進行剪枝
(葉子節點越多,損失越大)
當前節點gini係數*樣本數+
以當前節點的為根節點的所有葉子節點
對比1,2的值判斷當前節點是否**
criterion gini or entropy
splitter best or random 前者是在所有特徵中找最好的切分點 後者是在部分特徵中(資料量大的時候)
max_features none(所有),log2,sqrt,n 特徵小於50的時候一般使用所有的
max_depth 資料少或者特徵少的時候可以不管這個值,如果模型樣本量多,特徵也多的情況下,可以嘗試限制下
min_samples_split 如果某節點的樣本數少於min_samples_split,則不會繼續再嘗試選擇最優特徵來進行劃分如果樣本量不大,不需要管這個值。如果樣本量數量級非常大,則推薦增大這個值。
min_samples_leaf 這個值限制了葉子節點最少的樣本數,如果某葉子節點數目小於樣本數,則會和兄弟節點一起被剪枝,如果樣本量不大,不需要管這個值,大些如10w可是嘗試下5
min_weight_fraction_leaf 這個值限制了葉子節點所有樣本權重和的最小值,如果小於這個值,則會和兄弟節點一起被剪枝預設是0,就是不考慮權重問題。一般來說,如果我們有較多樣本有缺失值,或者分類樹樣本的分布類別偏差很大,就會引入樣本權重,這時我們就要注意這個值了。
max_leaf_nodes 通過限制最大葉子節點數,可以防止過擬合,預設是"none」,即不限制最大的葉子節點數。如果加了限制,演算法會建立在最大葉子節點數內最優的決策樹。如果特徵不多,可以不考慮這個值,但是如果特徵分成多的話,可以加以限制具體的值可以通過交叉驗證得到。
class_weight 指定樣本各類別的的權重,主要是為了防止訓練集某些類別的樣本過多導致訓練的決策樹過於偏向這些類別。這裡可以自己指定各個樣本的權重如果使用「balanced」,則演算法會自己計算權重,樣本量少的類別所對應的樣本權重會高。
min_impurity_split 這個值限制了決策樹的增長,如果某節點的不純度(基尼係數,資訊增益,均方差,絕對差)小於這個閾值則該節點不再生成子節點。即為葉子節點 。
n_estimators:要建立樹的個數
將訓練集分成若干份(這裡用3舉例),用其中2份訓練出的模型**另乙份,得出3個結果,取評分的均值作為該引數評分。可以挑選出較好引數
from sklearn.grid_search import gridsearchcv
param_grid =
grid = gridsearchcv(randomforestregressor(), param_grid=pram_grid, cv=5)
# 可以選擇不同的模型,cv為劃分的段
grid.fit(train, test)
gird.gird_scores_
grid.best_params_
grid.best_score_
決策樹學習筆記
模型 監督學習中的分類演算法 決策樹演算法的思路 利用樹的結構,將資料集中的特徵 屬性 劃分為樹中的分支節點 資料集中類別標籤對應樹的葉節點。構建決策樹的三要素 1.特徵選擇 資訊熵或資訊增益gini係數來選擇特徵 2.決策樹的生成 id3演算法 資訊增益 c4.5演算法 gini係數 3.決策樹的...
決策樹學習筆記
一 什麼是決策樹 決策樹是一種基於規則的方法,它用一組巢狀的規則進行 在樹的每個決策節點處,根據判斷結果進入乙個分之,反覆執行這種操作直到到達葉子節點,得到 結果。這些規則是通過訓練得到的,而不是認為設定的。規則是每一次 時的閥值。二 樹形成決策的過程 為便於用程式實現,一般將決策樹設計成二叉樹。與...
決策樹學習筆記
決策樹是一種有監督機器學習方法。熵 entropy 是表示隨機變數不確定性的度量。設x是乙個取有限個值的離散隨機變數,其概率分布為 則其隨機變數的資訊熵為 熵越大,則隨機變數的不確定性越大。決策樹的目的就是讓資訊熵越來越小,分類則越來越明確。資訊增益表示得知特徵a的資訊而使得總樣本d的資訊的不確定性...