分類算法——決策樹算法及其R實現

決策樹定義

以鳶尾花爲例子來說明:

 分類算法——決策樹算法及其R實現

觀察上圖,判決鳶尾花的思考過程可以這麼來描述:花瓣的長度小於2.4cm的是setosa(圖中綠色的分類),長度大於2.4cm的呢?可以通過寬度來判別,寬度小於1.8cm的是versicolor(圖中紅色的分類),其餘的就是virginica(圖中黑色的分類)

用圖形來形象的展示上述思考過程便得到了下圖一棵決策樹:

分類算法——決策樹算法及其R實現

這種從數據產生決策樹的機器學習技術叫做決策樹學習, 通俗點說就是決策樹,說白了,這是一種依託於分類、訓練上的預測樹,根據已知預測、歸類未來。

之前的k-近鄰算法也可以完成很多分類任務,但是他的缺點就是含義不清,說不清數據的內在邏輯,而決策樹則很好地解決了這個問題,他十分好理解。從存儲的角度來說,決策樹解放了存儲訓練集的空間,畢竟與一棵樹的存儲空間相比,訓練集的存儲需求空間太大了。

決策樹的構建

一、ID3的想法與實現

構造基本步驟

1)生成樹階段。選取部分受訓數據建立決策樹,決策樹是按廣度優先建立直到每個葉節點包括相同的類標記爲止。

2)決策樹修剪階段。用剩餘數據檢驗決策樹,如果所建立的決策樹不能正確回答所研究的問題,我們要對決策樹進行修剪直到建立一棵正確的決策樹。這樣在決策樹每個內部節點處進行屬性值的比較,在葉節點得到結論。從根節點到葉節點的一條路徑就對應着一條規則,整棵決策樹就對應着一組表達式規則。

問題:我們如何確定起決定作用的劃分變量。

用鳶尾花的例子來說這個問題思考的必要性。使用不同的思考方式,我們不難發現下面的決策樹也是可以把鳶尾花分成3類的。

爲了找到決定性特徵,劃分出最佳結果,我們必須認真評估每個特徵。ID3算法以信息熵和信息增益以衡量標準。其他劃分的辦法爲信息增益率和基尼不純指數,對應的算法爲C4.5CART

信息熵(Entropy)主要指信息的混亂程度,變量的不確定性越大,熵的值也就越大,熵的公式可以表示爲

分類算法——決策樹算法及其R實現

信息增益(Information gain)指的是劃分前後熵的變化,可以用下面公式表示:

分類算法——決策樹算法及其R實現

1 計算給定數據集的熵

2 按照給定特徵劃分數據集

3 選擇最佳劃分(基於熵增益) 

4 遞歸構建決策樹

二、C4.5算法

C4.5是ID3算法的擴展

C4.5算法描述

1)創建根節點N;

2IF T都屬於同一類C,則返回N爲葉節點,標記爲類C

3IF T_attributelist爲空或T中所剩的樣本數少於某給定值則返回N爲葉節點,標記爲T中出現最多的類;

4FOR each T_attributelist中的屬性計算信息增益率information gain ratio;

5N的測試屬性test_attribute=T_attributelist中具有最高信息增益率的屬性;

6IF測試屬性爲連續型則找到該屬性的分割閥值;

7FOR each 由節點N長出的新葉節點{

                IF 該葉節點對應的樣本子集T’爲空

                      則分裂該葉節點生成一個新葉節點,將其標記爲T中出現最多的類;

                 ELSE在該葉節點上執行C4.5formtree(T,T_attributelist),對它繼續分裂;

 }

8)計算每個節點的分類錯誤,進行樹剪枝。

 

以鳶尾花數據爲例子,使用C4.5算法得到的分類樹見下圖:

分類算法——決策樹算法及其R實現

三、 CART算法

分類與迴歸樹(CART——Classification And Regression Tree)) ,二叉決策樹

CART算法描述

1)創建根節點N;

2)爲N分配類別;

3IF T都屬於同一類別OR T中只剩一個樣本

                 則返回N爲葉節點,爲其分配類別;

4FOR each T_attributelist 中的屬性

                 執行該屬性上的一個劃分,計算此次劃分的GINI係數;

5N的測試屬性test_attribute=T_attributelist中具有最小GINI係數的屬性;

6)劃分TT1T2兩個子集;

7)調用cartformtree(T1);

8)調用cartformtree(T2)

 分類算法——決策樹算法及其R實現
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章