一.演算法
決策樹在優化過程中,有3個經典的演算法,分別是ID3,C4.5,和CART。後面的演算法都是基於前面演算法的一些不足進行改進的,這裡用ID3演算法。
二. 一個案例
大家可能賴床過,早上要不要賴床是一個問題。它取決於多個變數,下面就讓我們看看小明的賴床習慣。
季節 | 時間是否過8點 | 風力情況 | 要不要賴床 |
---|---|---|---|
春天 | 否 | 微風 | 要 |
冬天 | 否 | 無風 | 要 |
秋天 | 是 | 微風 | 要 |
冬天 | 否 | 無風 | 要 |
夏天 | 否 | 微風 | 要 |
冬天 | 是 | 微風 | 要 |
冬天 | 否 | 大風 | 要 |
冬天 | 是 | 無風 | 要 |
春天 | 是 | 無風 | 不要 |
夏天 | 是 | 大風 | 不要 |
夏天 | 否 | 大風 | 不要 |
秋天 | 是 | 微風 | 不要 |
我們隨機抽了一年中12天小明的賴床情況。現在我們可以根據這些資料來構建一顆決策樹。可以發現,資料中有三個屬性會影響到最終的結果,分別是,季節,時間是否過8點,風力情況。
要構建一顆決策樹,首先我們要找到它的根,我們需要計算每一個屬性的資訊熵。
從資料我們可以知道,12天中,有賴床為8天,不賴床為4天。
p(賴床)=8/12
p(不賴床)=4/12
分裂前的熵值為:(保留三位小數)
這次我把風力情況作為分支屬性的分裂情況
“風力情況”中的“微風情況”中有4個正例,1個反例子,其熵值為: