1. 程式人生 > >第三章 決策樹

第三章 決策樹

復雜 必須 turn 因此 alt http 尋找 決策 檢查

1.經常使用決策樹處理分類問題,決策樹也是最經常使用的數據挖掘算法。

2.kNN可以完成很多分類任務,最大的缺點是無法給出數據的內在含義,決策樹的優勢在於數據形式容易理解。

3.1決策樹的構造

決策樹的優點:計算復雜度不高,輸出結果易於理解,對中間值缺失不敏感,可以處理不相關特征數據。

缺點:可能會產生過度匹配問題。

適用數據類型:數值型和標稱型。

技術分享圖片

構造決策樹時,解決的第一個問題是,必須評估每一個特征找出劃分數據分類時起決定性作用的特征。

完成後,原始數據被劃分為幾個數據子集,這些數據子集會分布在第一個決策點的所有分支上。如果某個分支下的數據屬於同一類型,則當前無需閱讀的垃圾郵件已經正確的劃分數據分類,無需進一步對數據進行分割。如果數據子集的數據不屬於同一類型,則需要重新劃分數據子集的過程。

劃分數據子集的算法與劃分原始數據的算法相同,直到所有相同類型的數據均在一個數據子集內。

創建分支的偽代碼函數createBranch():

檢測數據集中的每一個子項是否屬於同一分類
If so return 類標簽;
Else
    尋找劃分數據集的最好特征
    劃分數據集
    創建分支節點
        for 每個劃分的子集
            調用函數createBranch並增加返回結果到分支節點中
    return 分支節點 

createBranch()是一個遞歸函數,在倒數第二行直接調用它自己。

決策樹一般流程:

(1).收集數據:可以使用任何方法

(2).準備數據:樹構造算法只適用於標稱型數據,因此數值型數據必須離散化。

(3).分析數據:可以使用任何方法,構造樹完成之後,我們應檢查圖形是否符合預期。

(4).訓練算法:構造樹的數據結構

(5).測試算法:使用經驗計算錯誤率。

(6).使用算法:此步驟可以使用於任何監督學習算法,而使用決策樹可以更好地理解數據的內在含義。

依據某個屬性劃分數據將會產生4個可能的值,我們將把數據劃分成4塊,並創建4個不同的分支。本書將使用ID3算法劃分數據集,該算法處理如何劃分數據集,何時停止劃分數據集。每次劃分數據集時我們只選取一個特征屬性,如果訓練集中存在20個特征,第一次選擇哪個特征作為劃分的參考屬性是個問題。

表3-1的數據包含5個海洋動物,特征包括:不浮出水面是否可以生存,以及是否有腳蹼。將動物分為兩類:魚類和非魚類。現在要決定依據哪個特征劃分數據。回答這個問題前,必須采用量化方法判斷如何劃分數據。

技術分享圖片

3.1.1信息增益

劃分數據的大原則是:將無序的數據變得更加有序。組織雜亂無章數據的一種方法就是使用信息論度量信息,信息論是量化處理信息的分支科學。可以在劃分數據前用信息論量化度量信息的內容。

在劃分數據之前之後信息發生的變化稱為信息增益。知道如何計算信息增益,就可以計算每個特征值劃分數據集獲得信息增益,獲得信息增益最高的特征就是最好的選擇。

熵定義為信息的期望值。如果待分類的事物劃分在多個分類中,則符號xi的信息定義為

l(xi) = -log2p(xi)

其中p(xi)是選擇該分類的概率。

第三章 決策樹