分類演算法 決策樹(ID3)

2021-09-23 21:19:08 字數 3258 閱讀 3106

決策樹是以例項為基礎的歸納學習演算法。 它從一組無次序、無規則的元組中推理出決策樹表示形式的分類規則。它採用自頂向下的遞迴方式,在決策樹的內部結點進行屬性值的比較,並根據不同的屬性值從該結點向下分支,葉結點是要學習劃分的類。從根到葉結點的一條路徑就對應著一條合取規則,整個決策樹就對應著一組析取表示式規則。

一棵決策樹由以下3類結點構成:

其中,根結點和內部結點都對應著我們要進行分類的屬性集中的乙個屬性,而葉結點是分類中的類標籤的集合。如果一棵決策樹構建起來,其分類精度滿足我們的實際需要,我們就可以使用它來進行分類新的資料集。

這棵決策樹就是我們根據已有的訓練資料集訓練出來的分類模型,可以通過使用測試資料集來對分類模型進行驗證,經過調整模型直到達到我們所期望的分類精度,然後就可以使用該模型來**實際應用中的新資料,對新的資料進行分類。

通過上面描述,我們已經能夠感覺出,在構建決策樹的過程中,如果選擇其中的內部結點(決策結點),才能夠使我們的決策樹得到較高的分類精度,這是難點。其中,id3演算法主要是給出了通過資訊增益的方式來進行決策結點的選擇。

首先,看一下如何計算資訊熵。熵是不確定性的度量指標,假如事件a的全概率劃分是(a1,a2,…,an),每部分發生的概率是(p1,p2,…,pn),那麼資訊熵通過如下公式計算:

1info(a) = entropy(p1,p2,...,pn) = -p1 * log2(p1) -p2 * log2(p2) - ... -pn * log2(pn)

我們以乙個很典型被引用過多次的訓練資料集d為例,來說明id3演算法如何計算資訊增益並選擇決策結點,訓練集如圖所示:

上面的訓練集有4個屬性,即屬性集合a=;而類標籤有2個,即類標籤集合c=,分別表示適合戶外運動和不適合戶外運動,其實是乙個二分類問題。

資料集d包含14個訓練樣本,其中屬於類別「yes」的有9個,屬於類別「no」的有5個,則計算其資訊熵:

1info(d) = -9/14 * log2(9/14) - 5/14 * log2(5/14) = 0.940

下面對屬性集中每個屬性分別計算資訊熵,如下所示:

outlook屬性中,有3個取值:sunny、overcast和rainy,樣本分佈情況如下:

類別為yes時,sunny有2個樣本;類別為no時,sunny有3個樣本。

類別為yes時,overcast有4個樣本;類別為no時,overcast有0個樣本。

類別為yes時,rainy有3個樣本;類別為no時,rainy有2個樣本。

從而可以計算outlook屬性的資訊熵:

1info(outlook) = 5/14 * [- 2/5 * log2(2/5) – 3/5 * log2(3/5)] + 4/14 * [ - 4/4 * log2(4/4) - 0/4 * log2(0/4)] + 5/14 * [ - 3/5 * log2(3/5) – 2/5 * log2(2/5)] = 0.694

temperature屬性中,有3個取值:hot、mild和cool,樣本分佈情況如下:

類別為yes時,hot有2個樣本;類別為no時,hot有2個樣本。

類別為yes時,mild有4個樣本;類別為no時,mild有2個樣本。

類別為yes時,cool有3個樣本;類別為no時,cool有1個樣本。

1info(temperature) = 4/14 * [- 2/4 * log2(2/4) – 2/4 * log2(2/4)] + 6/14 * [ - 4/6 * log2(4/6) - 2/6 * log2(2/6)] + 4/14 * [ - 3/4 * log2(3/4) – 1/4 * log2(1/4)] = 0.911

temperature屬性中,有2個取值:high和normal,樣本分佈情況如下:

類別為yes時,high有3個樣本;類別為no時,high有4個樣本。

類別為yes時,normal有6個樣本;類別為no時,normal有1個樣本。

1info(humidity) = 7/14 * [- 3/7 * log2(3/7) – 4/7 * log2(4/7)] + 7/14 * [ - 6/7 * log2(6/7) - 1/7 * log2(1/7)] = 0.789

windy屬性中,有2個取值:true和false,樣本分佈情況如下:

類別為yes時,true有3個樣本;類別為no時,true有3個樣本。

類別為yes時,false有6個樣本;類別為no時,false有2個樣本。

1info(windy) = 6/14 * [- 3/6 * log2(3/6) – 3/6 * log2(3/6)] + 8/14 * [ - 6/8 * log2(6/8) - 2/8 * log2(2/8)] = 0.892

根據上面的資料,我們可以計算選擇第乙個根結點所依賴的資訊增益值,計算如下所示:

1gain(outlook) = info(d) - info(outlook) = 0.940 - 0.694 = 0.246

2gain(temperature) = info(d) - info(temperature) = 0.940 - 0.911 = 0.029

3gain(humidity) = info(d) - info(humidity) = 0.940 - 0.789 = 0.151

4gain(windy) = info(d) - info(windy) = 0.940 - 0.892 = 0.048

根據上面對各個屬性的資訊增益值進行比較,選出資訊增益值最大的屬性:

1max(gain(outlook), gain(temperature), gain(humidity), gain(windy)) = gain(outlook)

所以,第乙個根結點我們選擇屬性outlook。

繼續執行上述資訊熵和資訊增益的計算,最終能夠選出其他的決策結點,從而建立一棵決策樹,這就是我們訓練出來的分類模型。基於此模型,可以使用一組測試資料及進行模型的驗證,最後能夠對新資料進行**。

id3演算法的優點是:演算法的理論清晰,方法簡單,學習能力較強。

id3演算法的缺點是:只對比較小的資料集有效,且對雜訊比較敏感,當訓練資料集加大時,決策樹可能會隨之改變。

決策樹 ID3演算法

id3演算法通過計算每個屬性的資訊增益,認為資訊增益越大屬性越優,每次劃分選取資訊增益最大的屬性為劃分標準,重複這個過程,直到構成一棵決策樹。資訊熵是描述事件給我們的驚訝程度,如果所有事件的概率均等,那熵值大,驚訝程度低。如果有一事件的概率極高而其他極低,熵值便低,驚訝程度大。其計算公式如下 資訊增...

決策樹 ID3演算法

一 決策樹基本概念 在機器學習中,決策樹是乙個 模型,它代表的是物件屬性與物件值之間的一種對映關係。本質上決策樹是通 過一系列規則對資料進行分類的過程。下圖為經典決策樹例項。如圖所示,例項是由 屬性 值 對表示的 例項是用一系列固定的屬性和他們的值構成。目標函式具有離散的輸出值 上圖給每個例項賦予乙...

決策樹ID3演算法

typeerror dict keys object does not support indexing 9.typeerror dict keys object does not support indexing 這個問題是python版本的問題 如果使用的是python2 firststr my...