機器學習之決策樹學習筆記
什麼是決策樹?決策樹是根據資料特徵(屬性)進行不斷分類最終得到結論的一種機器學習方法。
point1:資料特徵的選擇的依據是屬性的資訊增益(部分?)
point2:不斷分類表明決策樹是乙個遞迴過程
一、資訊熵與資訊增益
決策樹學習的關鍵是如何選擇最優劃分屬性,隨著劃分過程不斷進行,希望使得決策樹的分支節點包含樣本盡可能屬於同一類別,即純度越來越高。
資訊熵是度量樣本集合純度最常用的乙個指標(可以理解為資訊的混亂程度,資訊熵越大,則純度越低)
資訊增益是某種特徵/屬性對分類的影響程度:對於某屬性a來說,它的可能取值有v個(例如在水果的顏色屬性可能有紅色,綠色等等),如果採用屬性a進行劃分,那麼就會產生v個分支節點;不同節點的樣本數不同,而樣本越多的分支節點的影響越大,則給節點賦予權重,
資訊增益越大,則意味著用該屬性進行劃分得到純度提公升越大。
二、**解析
part1 計算資訊熵
通過資訊熵的公式我們知道,在計算資訊熵的過程中,我們要計算:1、樣本型別的總數,要注意這個樣本型別是最終分類的樣本型別,而不是樣本特徵的總數。2、計算比例,這個比例是在根節點d中的各個型別的比例。3、進行總和計算。知道這三點,那麼對**就很好理解了
**如下:
frommathimportlog
defcalcshannonent (dataset):
numentries = len(dataset) #計算資料集中例項總數
labelcounts= {} #建立空字典,用於下步統計不同類別的數量
forfeatvecindataset:
currentlable = featvec[-1] #提取類別標籤鍵值
ifcurrentlablenot inlabelcounts.keys():
labelcounts[currentlable] = 0 #當鍵值不存在時擴充套件字典
labelcounts[currentlable]+= 1 #累加計數
shannonent= 0.0
forkeyinlabelcounts:
prob = float(labelcounts[key])/numentries #計算比例
shannonent-= prob*log(prob,2) #帶入公式計算資訊熵
returnshannonent
part2 按特徵劃分資料集
returnretdataset
為什麼要按特徵劃分資料集,在後面的計算最優資料集中需要對每種劃分的特徵進行資訊增益的對比,已選出最優劃分特徵。
part3 選擇最好的資料集
defchoosebestfeaturetosplit(dataset):
numfeature = len(dataset)-1 #計算特徵數
baseentropy= calcshannonent(dataset) #計算資料集資訊熵
bestinfogain= 0.0;bestfeature = -1 #初始化引數
foriinrange(numfeature):
featlist = [example[i]forexampleindataset] #擷取特徵值
uniquevals= set(featlist) #建立集合,集合中僅有唯一的特徵值
newentropy= 0.0
forvalueinuniquevals: #這倆迴圈意思就是對每個特徵按選擇的特徵值進行計算資訊增益
subdataset= splotdataset(dataset,i,value) #擷取劃分後的資料集
prob= len(subdataset)/float(len(dataset)) #計算劃分後的比例
newentropy+= prob*calcshannonent(subdataset)
infogain = baseentropy -newentropy#累加計算某一特徵的資訊增益
if(infogain > bestfeature):
bestinfogain= infogain
bestfeature = i #判斷最優資訊增益,輸出該特徵
returnbestfeature
author :cheshire cat
《機器學習》學習筆記之決策樹
決策樹,顧名思義,以樹的結構來進行 它的基本概念在章節開頭有詳細的介紹。構建樹的遞迴演算法中,有三個情形會導致遞迴返回。其中第二個 當前屬性 特徵 集為空,或是所有樣本在所有屬性上取值相同,無法劃分。其意思是 已經沒有特徵拿來作進一步劃分生成子節點,或者此結點中的樣本標記不一致,但是他們在剩餘待劃分...
機器學習之筆記 決策樹
決策樹 概念 決策樹 decision tree 是在已知各種情況發生概率的基礎上,通過構成決策樹來求取淨現值的期望值大於等於零的概率,評價專案風險,判斷其可行性的決策分析方法,是直觀運用概率分析的一種 法。由於這種決策分支畫成圖形很像一棵樹的枝幹,故稱決策樹。一般流程 1 收集資料 可以使用任何方...
機器學習筆記 決策樹學習
決策樹學習是一種逼近離散值目標函式的方法,在這樣的方法中學習到的函式被表示為一棵決策樹。表示法 把例項從根節點排列到某個葉子節點來分類例項,葉子節點即為例項所屬的分類。樹上的每個節點指定了對例項的某個屬性 attribute 的測試,而且該節點的每個字尾分支相應於該屬性的乙個可能值。分類例項的方法是...