id3决策树_信息熵、信息增益和决策树(ID3算法)
決策樹算法:
優點:計算復雜度不高,輸出結果易于理解,對中間值的缺失不敏感,可以處理不相關的特征數據。
缺點:可能會產生過度匹配問題。
適用數據類型:數值型和標稱型。
算法原理:
決策樹是一個簡單的為輸入值選擇標簽的流程圖。這個流程圖由檢查特征值的決策節點和分配標簽的子葉節點組成。為輸入值選擇標簽,我們以流程圖的初始決策節點(即根節點)開始。此節點包含一個條件,檢查輸入值的特征之一,基于該特征的值選擇一個分支。沿著這個描述我們輸入值的分支,我們到到了一個新的決策節點,有一個關于輸入值的特征的新條件。我們繼續沿著每個節點的條件選擇的分支,直到到達葉節點,它為輸入值提供了一個標簽。
image.png
算法流程:
收集數據:即建立訓練測試數據集。
準備數據:決策樹構造算法只適用于標稱型數據,因此數值型數據必須是離散化的。
分析數據:建立構造樹,構造樹完成后我們檢查圖形是否符合預期。
訓練數據:完善構造樹的數據結構。
測試數據:使用經驗樹計算。
使用算法:對實際數據進行預測。
ID3算法:
ID3算法(Iterative Dichotomiser 3,迭代二叉樹3代)是一種貪心算法,用來構造決策樹。ID3算法起源于概念學習系統(CLS),以信息熵的下降速度為選取測試屬性的標準,即在每個節點選取還尚未被用來劃分的具有最高信息增益的屬性作為劃分標準,然后繼續這個過程,直到生成的決策樹能完美分類訓練樣例。
為了實現ID3算法我們還需要了解這個高富帥提出的三個概念:信息、信息熵和信息增益。
ID3算法
并且由上面的公式我們可以看出其實信息熵就是信息的期望值,所以我們可知,信息熵越小,信息的純度越高,也就是信息越少,在分類領域來講就是里面包含的類別越少,所以我們可以得出,與初始信息熵的差越大分類效果越好。
下面我們來舉個例子:
買蘋果的時候,從外觀上評判一個蘋果甜不甜有兩個依據:紅不紅 和 圓不圓 (原諒我淺薄的挑蘋果經驗吧。。。)
挑蘋果
下面來算一下啊這5個蘋果是不是好蘋果的信息熵(只看結果值):
信息熵
下面給出python求信息熵的代碼
def calcShannonEnt(dataSet): numEntries = len(dataSet) #數據集大小 labelCounts = {} for featVec in dataSet:currentLabel = featVec[-1] #獲取分類標簽if currentLabel not in labelCounts.keys(): labelCounts[currentLabel] = 0labelCounts[currentLabel] += 1 #每個類中數據個數統計 shannonEnt = 0.0 for key in labelCounts: #信息熵計算prob = float(labelCounts[key])/numEntriesshannonEnt -= prob * log(prob,2) return shannonEnt我們來用程序求一下我們這個小例子的結果:
小例子的結果
接下來我們要尋找怎么分類比較好也就是決策樹的叉,我們的例子中可以按兩個方式分類,紅不紅和圓不圓。。到的按哪個分更好一點呢,這下就用到信息增益了:
def按紅不紅分類的各項數據結果
紅不紅分類
計算方法為:總的信息熵 - 紅不紅的信息熵
紅不紅的信息增益
我們可以看出,這種分類的信息熵是0.5509775,它的信息增益是0.419973
如果按照圓不圓來分類:
圓不圓分類
我們可以看出,這種分類的信息熵是0.8,它的信息增益是0.17095
顯然第一種分類的信息增益較大
我們來看一下啊兩個劃分的結果集:
兩個劃分的結果集
確實第一種方法劃分的較好。
這樣我們的決策樹也就構建好了:
總結
以上是生活随笔為你收集整理的id3决策树_信息熵、信息增益和决策树(ID3算法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三主摄时代来了!OPPO Find X6
- 下一篇: 特斯拉欧洲首个「远程试驾中心」在瑞典开放