決策樹是用於分類和**的一種樹結構,決策樹方法常用於類別屬性的資料集的分類和**,對於數值屬性的資料集,可以經過資料預處理後使用。
決策樹的建立是基於樣本的遞迴的學習過程,每個樣本都是具有確定的屬性的資料,決策樹就是基於樣本的各屬性建立起來的。決策樹分為根節點、內部節點和葉節點。從根節點出發,自頂向下,構建分支和內部節點,在內部節點進行屬性值的比較,並根據屬性的不同取值確定從該節點向下的分支,最終在葉節點給出類別。整棵樹就是乙個規則集,任意樣本都可以從根節點出發,根據樣本各屬性的取值,找到對應的樹中的分支(規則),從而得到樣本的類別。
具體方法是:選擇乙個屬性置於根節點,根據這個屬性的不同取值將測試樣本集劃分成多個子集,乙個子集對應乙個屬性取值,然後在每個分支上遞迴的重複這個過程,直到在乙個節點上的所有樣本具有相同的類別,即到達葉子結點。
在上述構建方法中,關鍵的問題在於如何選擇在根節點、中間節點進行劃分的屬性。乙個基本的原則是構建較小的決策樹,使得上述遞迴的過程盡早停止,即盡早完成分類。要達到上述目的,需要度量每個節點對應的樣本子集的純度,即樣本子集中類別分布的情況,類別數越少,各類別分布越不均勻,純度越高。資訊熵(entropy)是度量集合純度的最常用的一種指標,定義如下:
在選擇劃分屬性時,分別計算上一級節點對應的樣本子集的資訊熵和選擇各屬性劃分後該樣本子集的資訊熵,二者差值(資訊增益)最大劃分的對應的屬性即為劃分屬性。
溫度(t)
起風(w)
下雨(r)
濕度)(h
出去玩(o)10
0111
0110
0100
0110
0110
0011
1001
gain(o,t)=0.918-0.809=0.109
gain(o,w)=0.918-0.459=0.459(root)
gain(o,r)=0.918-0.602=0.316
gain(o,h)=0.918-0.874=0.044
起風(w)=1,資訊增益最大的是溫度(t)
溫度(t)
下雨(r)
濕度(h)
出去玩(o)00
0010
0110
01起風(w)=0,,資訊增益最大的是下雨(r)
溫度(t)
下雨(r)
濕度(h)
出去玩(o)10
1111
1010
01id3演算法的核心就是資訊增益的計算,gain(p1,p2)=e(p1)-e(p2),id3演算法屬於貪心演算法,用來構建樹
了解決策樹的引數
valmodel = decisiontree.train(data, algo.
classification
, entropy, 5,
9)valpredictionandlabel = data.map
println(predictionandlabel.collect().tobuffer)
valacc = labe.zip(predictionandlabel).filter(x => ).count() / labe.count().todouble
println("dt**患者在醫院花費的準確率是")
println(acc)}}
機器學習實踐(十) sklearn之決策樹
公式h x i 1np xi i xi i 1n p xi log 2p x i h x sum p x i i x i sum p x i log 2p x i h x i 1 n p x i i xi i 1 n p x i l og2 p xi 來自 數學之美 示例助解 舉乙個的例子 對遊戲活...
機器學習之決策樹
在這裡,我想以更直觀的方式幫助各位理解 掌握並且運用 注意 是運用 決策樹,從而為機器學習作鋪墊。ps 但還是希望大家稍微知道決策樹大概是什麼樣子。1.根結點 root node 沒有入邊,但有零條或多條出邊 2.內部結點 internal node 恰有一條入邊和 兩條或多條出邊 3.葉結點 le...
機器學習之決策樹
決策樹是很常見的機器學習分類演算法,竟然叫決策樹,那麼它的模型其實就像樹一樣。通過對樣本集的學習,挖掘出有用的規則。對於程式設計師來說或許以條件語句來看就更好理解了,決策樹可以看成是多個if then條件語句的集合。這種模型等同於我們寫的條件語句,所以它的 分類速度是很快的。來個例子了解下決策樹分類...