決策樹:從根節點開始一步步走到葉子節點(決策)
所有的資料最終都會落到葉子節點,既可以做分類也可以做回歸(這裡先講分類樹)
假如我們需要對是否玩遊戲進行分類,我們有兩個特徵。如上圖所示。
決策樹的訓練與測試
如何切分特徵(選擇節點):
衡量標準-熵
**資料:**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 是乙個樹結構 可以是二叉樹或非二叉樹 其每個非葉節點表示乙個特徵屬性上的測試,每個分支代表這個特徵屬性在某個值域上的輸出,而每個葉節點存放乙個類別。使用決策樹進行決策的過程就...
機器學習演算法 決策樹
決策樹的使用主要是用於分類。年齡收入 信用是否學生 是否買電腦年輕高 高是是中年 低中否否 老年中低否 是對於一些適合分類的資料中,考慮各種因素對結果的影響大小進行決策,一般是先選取區分度較高的因素。比如說,年齡大小這個因素在很大程度上影響我們的結果 是否買電腦。那麼,年齡因素將作為第乙個決策因素出...