機器學習之決策樹演算法

2021-09-05 06:51:31 字數 2684 閱讀 3979

決策樹:從根節點開始一步步走到葉子節點(決策)

所有的資料最終都會落到葉子節點,既可以做分類也可以做回歸(這裡先講分類樹)

假如我們需要對是否玩遊戲進行分類,我們有兩個特徵。如上圖所示。

決策樹的訓練與測試

如何切分特徵(選擇節點):

衡量標準-熵

**資料:**14天打球情況

**特徵:**4種環境變化

目標:構造決策樹

劃分方式:4種

問題:誰當根節點呢?

**依據:**資訊增益

在歷史資料中(14天)有9天打球,5天不打球,所以此時的熵應為:

4個特徵逐一分析,先從outlook特徵開始:

outlook = sunny時,熵值為0.971

outlook = overcast時,熵值為0

outlook = rainy時,熵值為0.971

根據資料統計,outlook取值分別為sunny,overcast,rainy的概率分別為:5/14, 4/14, 5/14

熵值計算:5/14 * 0.971 + 4/14 * 0 + 5/14 * 0.971 = 0.693

(gain(temperature)=0.029 gain(humidity)=0.152 gain(windy)=0.048)

資訊增益:系統的熵值從原始的0.940下降到了0.693,增益為0.24

同樣的方式可以計算出其他特徵的資訊增益,那麼我們選擇最大的那個就可以啦,相當於是遍歷了一遍特徵,找出來了大當家,然後再其餘的中繼續通過資訊增益找二當家!

缺點:資訊增益比偏向取值較少的特徵

原因:當特徵取值較少時ha(d)的值較小,因此其倒數較大,因而資訊增益比較大。因而偏向取值較少的特徵。

參看鏈結

理論上決策樹能把所有的樣本區分開,但是這樣會有過擬合的風險

常用的策略:

預剪枝:限制深度,葉子節點個數 ,葉子節點樣本數,資訊增益量等

背景這裡…我們使用的資料集是sklearn 中封裝好的加利福尼亞房屋的資料集

# 建立決策樹

from sklearn import tree

dtr = tree.decisiontreeregressor(max_depth=2)

dtr.fit(housing.data[:,[6,7]],housing.target)

#要視覺化顯示 首先需要安裝 graphviz

dot_data = \

tree.export_graphviz(

dtr,

out_file = none,

feature_names = housing.feature_names[6:8],

filled = true,

impurity = false,

rounded = true

)import pydotplus

graph = pydotplus.graph_from_dot_data(dot_data)

graph.get_nodes()[7].set_fillcolor("#fff2dd")

graph.create_png()

graph.write_png("dtr_white_background.png")

from sklearn.model_selection import train_test_split

data_train, data_test, target_train, target_test = \

train_test_split(housing.data, housing.target, test_size = 0.1, random_state = 42)

dtr = tree.decisiontreeregressor(random_state = 42)

dtr.fit(data_train, target_train)

print("分數值:",dtr.score(data_test, target_test))

機器學習演算法之決策樹

1 演算法流程 一般的,一棵決策樹包含乙個根節點 若干內部節點和若干個葉節點 葉節點對應於決策結果,其他每個結點則對應於乙個屬性測試 每個結點包含的樣本集合根據屬性測試的結果被劃分到子結點中 根結點包含樣本全集.從根結點到每個葉結點的路徑對應了乙個判定測試序列.決策樹學習的目的是為了產生一棵泛化能力...

機器學習演算法 決策樹

決策樹類似一中策略或者條件選擇,其中各個節點代表選擇條件,各個葉子結點代表可能達到的結果,決策樹 decision tree 是乙個樹結構 可以是二叉樹或非二叉樹 其每個非葉節點表示乙個特徵屬性上的測試,每個分支代表這個特徵屬性在某個值域上的輸出,而每個葉節點存放乙個類別。使用決策樹進行決策的過程就...

機器學習演算法 決策樹

決策樹的使用主要是用於分類。年齡收入 信用是否學生 是否買電腦年輕高 高是是中年 低中否否 老年中低否 是對於一些適合分類的資料中,考慮各種因素對結果的影響大小進行決策,一般是先選取區分度較高的因素。比如說,年齡大小這個因素在很大程度上影響我們的結果 是否買電腦。那麼,年齡因素將作為第乙個決策因素出...