決策樹定義
以鳶尾花爲例子來說明:
觀察上圖,判決鳶尾花的思考過程可以這麼來描述:花瓣的長度小於2.4cm的是setosa(圖中綠色的分類),長度大於2.4cm的呢?可以通過寬度來判別,寬度小於1.8cm的是versicolor(圖中紅色的分類),其餘的就是virginica(圖中黑色的分類)
用圖形來形象的展示上述思考過程便得到了下圖一棵決策樹:
這種從數據產生決策樹的機器學習技術叫做決策樹學習, 通俗點說就是決策樹,說白了,這是一種依託於分類、訓練上的預測樹,根據已知預測、歸類未來。
之前的k-近鄰算法也可以完成很多分類任務,但是他的缺點就是含義不清,說不清數據的內在邏輯,而決策樹則很好地解決了這個問題,他十分好理解。從存儲的角度來說,決策樹解放了存儲訓練集的空間,畢竟與一棵樹的存儲空間相比,訓練集的存儲需求空間太大了。
決策樹的構建
一、ID3的想法與實現
構造基本步驟:
(1)生成樹階段。選取部分受訓數據建立決策樹,決策樹是按廣度優先建立直到每個葉節點包括相同的類標記爲止。
(2)決策樹修剪階段。用剩餘數據檢驗決策樹,如果所建立的決策樹不能正確回答所研究的問題,我們要對決策樹進行修剪直到建立一棵正確的決策樹。這樣在決策樹每個內部節點處進行屬性值的比較,在葉節點得到結論。從根節點到葉節點的一條路徑就對應着一條規則,整棵決策樹就對應着一組表達式規則。
問題:我們如何確定起決定作用的劃分變量。
用鳶尾花的例子來說這個問題思考的必要性。使用不同的思考方式,我們不難發現下面的決策樹也是可以把鳶尾花分成3類的。
爲了找到決定性特徵,劃分出最佳結果,我們必須認真評估每個特徵。ID3算法以信息熵和信息增益以衡量標準。其他劃分的辦法爲信息增益率和基尼不純指數,對應的算法爲C4.5和CART。
信息熵(Entropy)主要指信息的混亂程度,變量的不確定性越大,熵的值也就越大,熵的公式可以表示爲
信息增益(Information gain)指的是劃分前後熵的變化,可以用下面公式表示:
1 計算給定數據集的熵
2 按照給定特徵劃分數據集
3 選擇最佳劃分(基於熵增益)
4 遞歸構建決策樹
二、C4.5算法
C4.5是ID3算法的擴展
C4.5算法描述 :
(1)創建根節點N;
(2) IF T都屬於同一類C,則返回N爲葉節點,標記爲類C;
(3) IF T_attributelist爲空或T中所剩的樣本數少於某給定值則返回N爲葉節點,標記爲T中出現最多的類;
(4) FOR each T_attributelist中的屬性計算信息增益率information gain ratio;
(5) N的測試屬性test_attribute=T_attributelist中具有最高信息增益率的屬性;
(6) IF測試屬性爲連續型則找到該屬性的分割閥值;
(7) FOR each 由節點N長出的新葉節點{
IF 該葉節點對應的樣本子集T’爲空
則分裂該葉節點生成一個新葉節點,將其標記爲T中出現最多的類;
ELSE在該葉節點上執行C4.5formtree(T’,T’_attributelist),對它繼續分裂;
}
(8)計算每個節點的分類錯誤,進行樹剪枝。
以鳶尾花數據爲例子,使用C4.5算法得到的分類樹見下圖:
三、 CART算法
分類與迴歸樹(CART——Classification And Regression Tree)) ,二叉決策樹
CART算法描述
(1)創建根節點N;
(2)爲N分配類別;
(3) IF T都屬於同一類別OR T中只剩一個樣本
則返回N爲葉節點,爲其分配類別;
(4) FOR each T_attributelist 中的屬性
執行該屬性上的一個劃分,計算此次劃分的GINI係數;
(5) N的測試屬性test_attribute=T_attributelist中具有最小GINI係數的屬性;
(6)劃分T得T1、T2兩個子集;
(7)調用cartformtree(T1);
(8)調用cartformtree(T2);