機器學習筆記 二 決策樹之ID3演算法

2021-08-23 14:34:21 字數 1546 閱讀 7299

決策樹之所以如此流行,乙個很重要的原因是乙個很重要的原因就是不需要了解機器學習的知識就能搞明白決策樹是如何工作的。

決策樹的優點:計算複雜度不高,輸出結構易於理解,對中間值的缺失不敏感。缺點:可能產生過度匹配問題。

建立決策樹分支createbranch()的偽**:

if 資料集中所有資料都是同一類:

return 類標籤

else:

尋找劃分資料集最好的特徵

根據最好的特徵劃分資料集

建立分支節點

for 每個劃分的子集

呼叫createbranch(),並且返回結果到分支節點

return 分支節點

決策樹的一般流程:

(1)收集資料:任何方法

(2)準備資料:構造樹演算法只適合於標量資料,因此必須離散化數值型資料

(3)分析資料:

(4)訓練資料:構造決策樹

(5)測試資料:使用經驗樹計算錯誤率

(6)使用演算法:使用決策樹進行分類資料

決策樹的id3演算法每次劃分資料只選取乙個特徵值,選取特徵值的原則是按照獲取的最大資訊增益(熵的減少)的方法劃分資料。

決策樹建立的**:

def

createtree

(dataset,labels):

classlist = [example[-1] for example in dataset]

if classlist.count(classlist[0]) == len(classlist): #只剩乙個類時返回標籤

return classlist[0]

if len(dataset[0]) == 1: #特徵值使用完時,返回剩下最多的標籤

return majoritycnt(classlist)

bestfeat = choosebestfeaturetosplit(dataset) #選擇資訊增益最大的特徵值

bestfeatlabel = labels[bestfeat]

mytree = } #建立樹結構

del(labels[bestfeat])

featvalues = [example[bestfeat] for example in dataset]

uniquevals = set(featvalues) #確定此特徵值的的所有取值

for value in uniquevals: #根據不同取值建立分支

sublabels = labels[:]

mytree[bestfeatlabel][value] = createtree(splitdataset(dataset, bestfeat, value),sublabels)

return mytree

由這個字典樹結構可知,字典的從左的第乙個關鍵字是第乙個劃分資料集的特徵名稱,該鍵的值是乙個字典,該字典的第乙個關鍵字是劃分的資料集。該資料集的值如果為類標籤則為葉子節點,如果為字典則為判斷節點。

機器學習筆記之決策樹ID3

劃分資料集最大的原則是 將無序的資料變得更加有序。我們可以使用多種方法劃分資料集,但是每種方法都有各自的優缺點。我們可以在劃分資料之前使用資訊理論量化度量資訊的內容。在劃分資料集之前之後資訊發生的變化稱為資訊增益,知道如何計算資訊增益,我們就可以計算每個特徵值劃分資料集獲得的資訊增益,獲得資訊增益最...

決策樹之 ID3

id3 是一種用來構建決策樹的演算法,它根據資訊增益來進行屬性選擇。關於決策樹,請參見 此處主要介紹 id3 演算法如何利用資訊增益選擇屬性。資訊熵,簡稱 熵 假定訓練集中目標屬性為 c c的取值為 c1 c2,cm 每個取值佔的比例為p1 p2,pm 則資訊熵的定義為 en trop y s en...

決策樹之ID3

一組含n個例項的資料集,每乙個例項長為m,其中包括m 1個特徵 屬性 最後乙個為該特徵的類別標籤。在此種資料集的基礎上,有一棵樹,這棵樹上的非葉子節點均為某特徵,葉子節點均為其父節點特徵的特徵值。那麼這棵樹是怎麼來的?我們 1.首先要在當前資料集中找到最適合分組的乙個特徵,2.然後根據這個特徵值的不...