決策樹演算法梳理

2021-09-11 23:46:29 字數 3875 閱讀 7966

1.資訊理論基礎

資訊熵:資訊熵是度量樣本的集合純度最常用的一種指標。在資訊理論和概率統計中,熵是表示隨機變數不確定性的度量。

聯合熵:兩個隨機變數x,y的聯合分布,可以形成聯合熵joint entropy,用h(x,y)表示。

條件熵:設有隨機變數(x, y),其聯合概率分布為

條件熵h(y|x) 表示在已知隨機變數x的條件下隨機變數y的不確定性。隨機變數x給定條件下隨機變數y的條件熵h(y|x),定義為x給定條件下y的條件概率分布的熵對x的數學期望

資訊增益:考慮到不同的分支所包含的樣本數不同,給分支節點賦予權重|dv|/|d||dv|/|d|,即樣本數越多的分支節點影響越大,於是計算出用屬性αα對樣本集dd進行劃分所獲得的資訊增益。

基尼不純度:從乙個資料集中隨機選取子項,度量其被錯誤的劃分到其他組裡的概率。

2.決策樹的不同分類演算法(id3演算法、c4.5、cart分類樹)的原理及應用場景

原理:資訊增益。在每個節點擊取還尚未被用來劃分的具有最高資訊增益的屬性作為劃分標準,然後繼續這個過程,直到生成的決策樹能完美分類訓練樣例。

應用場景:計算時間是例子個數、特徵屬性個數、節點個數之積的線性函式

c4.5(id3的擴充套件):資訊增益率、連續屬性處理、決策樹剪枝,解決了id3因分支數量不同造成的不公平

cart:採用基尼係數劃分資料

定義:基尼指數(基尼不純度):表示在樣本集合中乙個隨機選中的樣本被分錯的概率。

注意: gini指數越小表示集合中被選中的樣本被分錯的概率越小,也就是說集合的純度越高,反之,集合越不純。

即 基尼指數(基尼不純度)= 樣本被選中的概率 * 樣本被分錯的概率

3.回歸樹原理

回歸樹的每個節點(不一定是葉子節點)都會得乙個**值,以年齡為例,該**值等於屬於這個節點的所有人年齡的平均值。分枝時窮舉每乙個feature的每個閾值找最好的分割點,但衡量最好的標準不再是最大熵,而是最小化均方差即(每個人的年齡-**年齡)^2 的總和 / n。也就是被**出錯的人數越多,錯的越離譜,均方差就越大,通過最小化均方差能夠找到最可靠的分枝依據。分枝直到每個葉子節點上人的年齡都唯一或者達到預設的終止條件(如葉子個數上限),若最終葉子節點上人的年齡不唯一,則以該節點上所有人的平均年齡做為該葉子節點的**年齡。

4.決策樹防止過擬合手段

產生過擬合資料的原因:

原因1:樣本問題

(1)樣本裡的噪音資料干擾過大,大到模型過分記住了噪音特徵,反而忽略了真實的輸入輸出間的關係;(什麼是噪音資料?)

(2)樣本抽取錯誤,包括(但不限於)樣本數量太少,抽樣方法錯誤,抽樣時沒有足夠正確考慮業務場景或業務特點,等等導致抽出的樣本資料不能有效足夠代表業務邏輯或業務場景;

(3)建模時使用了樣本中太多無關的輸入變數。

原因2:構建決策樹的方法問題

在決策樹模型搭建中,我們使用的演算法對於決策樹的生長沒有合理的限制和修剪的話,決策樹的自由生長有可能每片葉子裡只包含單純的事件資料或非事件資料,可以想象,這種決策樹當然可以完美匹配(擬合)訓練資料,但是一旦應用到新的業務真實資料時,效果是一塌糊塗。

上面的原因都是現象,但是其本質只有乙個,那就是「業務邏輯理解錯誤造成的」,無論是抽樣,還是噪音,還是決策樹等等,如果我們對於業務背景和業務知識非常了解,非常透徹的話,一定是可以避免絕大多數過擬合現象產生的。因為在模型從確定需求,到思路討論,到搭建,到業務應用驗證,各個環節都是可以用業務敏感來防止過擬合於未然的。

針對原因1的解決方法:

合理、有效地抽樣,用相對能夠反映業務邏輯的訓練集去產生決策樹;

針對原因2的解決方法(主要):

剪枝:提前停止樹的增長或者對已經生成的樹按照一定的規則進行後剪枝。

5.模型評估

平均均方誤差mse

mse=1n∑(y¯−yi)2=var(y)mse = \frac\sum(\bar-y_i)^2 = var(y)

擬合優度goodness of fit

擬合優度(goodness of fit)是指回歸直線對觀測值的擬合程度。度量擬合優度的統計量是可決係數(亦稱確定係數)r^2.

最大值為1。r^2

的值越接近1,說明回歸直線對觀測值的擬合程度越好;反之,r^2的值越小,說明回歸直線對觀測值的擬合程度越差。

6.sklearn引數詳解,python繪製決策樹

引數詳解:

criterion=』gini』, string, optional (default=」gini」),衡量分支好壞的標準

splitter=』best』, string, optional (default=」best」),選擇分支的策略

max_depth=none, int or none, optional (default=none),樹的最大深度

min_samples_split=2, int, float, optional (default=2),分支時最小樣本數

min_samples_leaf=1, int, float, optional (default=1),葉子最少樣本

min_weight_fraction_leaf=0.0, float, optional (default=0.),葉子結點的最小權重

max_features=none, int, float, string or none, optional (default=none),生成樹時考慮的最多特徵點數

random_state=none, int, randomstate instance or none, optional (default=none),打亂樣本時所用的隨機種子

max_leaf_nodes=none, int or none, optional (default=none),生成樹時採用的最大葉子結點

min_impurity_decrease=0.0, float, optional (default=0.),當產生分支時,增加的純度

min_impurity_split=none, float, (default=1e-7),樹停止生長的閾值

class_weight=none, dict, list of dicts, 「balanced」 or none, default=none,分支權重預設定

presort=false,bool, optional (default=false),提前對資料排序,加快樹的生成

python 繪製決策樹:

import sklearn.tree as tree

clf=tree.decisiontreeregressor(min_samples_split=50,max_leaf_nodes=15)

clf_fit=clf.fit(x,y)

tree.export_graphviz(clf_fit,out_file=「tree.dot」 )

import pydotplus

from ipython.display import image

dot_data = tree.export_graphviz(clf_fit, out_file=none,

feature_names=feature_names,

class_names=target_names,

filled=true, rounded=true,

special_characters=true)

graph = pydotplus.graph_from_dot_data(dot_data)

image(graph.create_png())

決策樹演算法梳理

熵 entropy 在資訊理論與概率統計中,熵 entropy 是表示隨機變數不確定性的度量。設x是乙個取有限個值的離散隨機變數,其概率分布為 則隨機變數x的熵定義為 熵只依賴於x的分布,而與x的取值無關,所以也可將x的熵記作h 即 熵取值最大,隨機變數不確定性最大。條件熵 設有隨機變數 x,y 其...

決策樹演算法梳理

熵 又稱為自資訊,度量隨機變數的不確定性。純度 聯合熵 聯合熵是描述一對隨機變數平均所需要的資訊量 條件熵 h y x 表示在已知隨機變數 x 的條件下,隨機變數 y 的不確定性 資訊增益 以某特徵劃分資料集前後的熵的差值 基尼不純度 指將來自集合中的某種結果隨機應用在集合中,某一資料項的預期誤差率...

決策樹演算法梳理

決策樹通常包括三個步驟 特徵選擇,決策樹生成和決策樹剪枝 決策樹的生成過程就是 使用滿足劃分準則的特徵不斷的將資料集劃分為純度更高,不確定性更小的子集的過程。id3 採用資訊增益劃分資料。計算使用所有特徵劃分資料集,得到多個特徵劃分資料集的資訊增益,從這些資訊增益中選擇最大的,因而當前結點的劃分特徵...