使用ID3演算法構造決策樹

2021-09-01 16:31:13 字數 1479 閱讀 5599

決策樹

決策樹是乙個**模型,它代表的是物件屬性與物件值之間的一種對映關係。樹中每個節點表示某個物件,而每個分叉路徑則代表的某個可能的屬性值,而每個葉結點則對應從根節點到該葉節點所經歷的路徑所表示的物件的值。

這張圖很好地解釋了決策樹:

明天要不要出去玩?

陰天:出去玩

雨天:

例子中可以找到兩層的分類依據屬性,第一層是晴/陰/雨,第二層是是否潮濕和是否颳風,分類依據的確定和先後順序對決策樹的質量有決定性的影響。另外,在實際構造決策樹時,經常要進行剪枝,主要是因為資料中往往存在一些噪音資料,或者是存在分類過細的問題,反而失去了分類的意義。一種是先剪枝,在構造樹的過程中,當某個節點滿足剪枝條件,則直接停止此分支的構造;還有一種是後剪枝,先構造完成完整的決策樹,再通過某些條件遍歷樹進行剪枝。

id3演算法

id3演算法是j. ross quinlan提出的分類**演算法,它的核心是用貪心演算法來根據「資訊熵」分類。何為資訊熵?這個概念還是夏農(c. e. shannon)提出來的,用以表示資訊的不確定性。資訊不確定的因素越多,這個熵就越大。

如果一組資料由構成,其和是sum,那麼資訊熵可以表示為:

下面舉例來說明這個公式:

假使說我們要研究狗的智商(目標屬性),潛在的關聯因素包括顏色和毛的長度。

顏色(color)

毛的長度(length)

智商(iq)

black長高

white長高

white短高

white短低

3次出現「高」智商,1次出現「低智商」,所以目標屬性iq的資訊熵:hiq(d)=-(2/4)log2(2/4)-(1/4)log2(1/4)

color屬性在取不同的值對應目標屬性iq的資訊熵:

而color屬性的整體資訊熵是上述二者的加權平均值:hcolor(d)=(1/4)hcolor(dblack)+(3/4)hcolor(dwhite)。同樣可以求得hlength(d)。

現在定義資訊增益gaincolor=hiq(d)-hcolor(d),gainlength=hiq(d)-hlength(d),它是資訊熵的有效減少量,值越高,說明目標屬性iq在參考屬性處損失的資訊熵越多,也就是失去的不確定性越多,那麼在決策樹進行分類的時候,這個參考屬性應該越早作為決策的依據屬性。

這個例子中如果gainlength > gaincolor,說明length比color要對iq有更大的影響,所以決策樹中,要先依據length來進行分類。

在實際應用中,往往引入乙個「閾值」,當節點下的任意一分類所佔百分比超過這個閾值時,就不再進行分類,以避免產生出過小的沒有實際意義分類節點。

id3演算法也存在諸多不足,比如分類偏向於取值數量,只能處理離散資料等等問題。c4.5演算法是對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...