本文總結於《machine learning in action》一書
一. 決策樹的一般流程
1. 收集資料:可以使用任何方法
2. 準備資料:數構造演算法只適應於標稱型資料,因此數值型資料必須離散。
3. 分析資料:可以使用任何方法,構造樹完成之後,我們應該檢查圖形是否符合預期。
4. 訓練資料:構造樹的資料結構
5. 測試資料:使用經驗樹計算錯誤率
6. 使用演算法:此步驟可以適應於任何監督學習演算法,而使用決策樹可以更好地理解資料的內在含義。
二. 決策樹的優缺點
缺點:可能會產生過渡匹配問題
適應資料型別:數值型和標稱型
三. 決策樹相關說明
(1)k近鄰與決策樹的對比:
k近鄰最大的缺點是無法給出資料的內在含義,決策樹的主要優勢在於資料形式非常容易理解。
(2)決策樹的目的:
決策樹的乙個重要任務是為了資料中蘊含的知識資訊,因此決策樹可以使用不熟悉的資料集合,並從中提取
一系列規則,在這些機器根據資料集建立規則時,就是機器學習的過程。
(3)應用領域
專家系統經常使用決策樹
四. 資訊理論
在決策樹中,劃分資料集的大原則為:將無序的資料變得更加有序。因此,這裡,資訊理論就變得尤為重要,資訊理論
是量化處理資訊的分支科學。
(1)資訊增益(information gain):
在劃分資料集之前之後資訊發生的變化成為資訊增益。知道如何計算資訊增益,我們就可以計算每個特性值
劃分資料集獲得的資訊增益,獲得資訊增益最高的特徵就是最好的選擇。
(2)夏農熵(shannon entropy)簡稱熵
集合資訊的度量方式成為夏農熵或簡稱熵,即資訊的期望值。
資訊的定義——符號xi的資訊定義
l(xi) = -log2
p(xi)
p(xi)
表示選擇該分類的概率
因此,熵的定義為:
h = -sum(p(xi) * log2(p(xi))) i = 1,2,...,n
熵計算將會告訴我們如何劃分資料集是最好的資料組織方式。
另外,度量集合無序程度的方法還有乙個,稱為基尼不純度(gini impurity),簡單的說就是乙個從乙個資料集中隨
機選取子項,度量其被錯誤分類到其他組裡的概率。
五. 額外補充關於python的知識點
1. 列表推導(list comprehension)
列表推導可以大量簡化**,使用很方便。可以通過乙個示例來介紹
示例:featlist = [example[i] for example in dataset]
等價於:
featlist=[ ]
for example in dataset:
更詳細的資料可以參考:
2. 集合的一種使用用途:
從列表中建立集合是python語言中得到列表中唯一元素值的最快方法。
3. python中關於列表作為函式的引數:
python語言在函式中傳遞的是列表的引用,在函式內部對列表物件的修改,將會影響該列表物件的整個生命
週期。4. python中函式的一種使用方法:
python中的函式可以像類(class)一樣使用新增屬性值。同樣地,可以使用內建函式hasattr()或者__dict__方法
來檢查函式或類的屬性值。
六. 遞迴建立決策樹
1. 決策樹的工作原理:
得到原始資料集,然後基於最好的屬性值劃分資料集(依據夏農熵),由於特徵值可能多於兩個,因此可能存在
大於兩個分支的資料集劃分。第一次劃分之後,資料將被向下傳遞到樹分支的下乙個節點,在這個節點上,我們可以
再次劃分資料。因此,我們可以採用遞迴的原則處理資料集。
2. 遞迴的終止條件1:
程式遍歷完所有劃分資料集的屬性,或者每個分支下的所有例項都具有相同的分類。如果所有例項具有相同的
分類,則得到乙個葉子節點或者終止塊。任何到達葉子節點的資料必然屬於葉子節點的分類。
3. 遞迴的終止條件2:
這裡,需要強調的是,除上述每個葉子節點的標籤完全相同,還存在另外一種情況,即使用完了所有特徵,仍
然不能將資料集劃分成僅包含唯一類別的分組。此時應該挑選出現次數最多的類別作為返回值。
七. 使用matplotlib繪製決策樹圖:需仔細研究
八. 小結
上述構造決策樹的方法稱之為id3。id3演算法可以用於劃分標稱型資料集。構建決策樹時,我們通常採用遞迴的方法
將資料集轉化為決策樹。且不需要構造新的資料結構,直接使用python中的字典儲存樹節點資訊即可。缺點在於,id3
演算法無法直接處理數值型資料,儘管我們可以通過量化的方法將數值型資料轉化為標稱型資料,但是如果存在太多的
特徵劃分,id3演算法仍會面臨其他問題。
後續將介紹其它的決策樹構造演算法,最為出名的是c4.5和cart
注意事項:決策樹構造存在過度匹配(overfitting)問題。為了減少過度匹配問題,可以裁剪決策樹,去掉一些不必要
的葉子節點,或者合併相鄰的無法產生大量資訊增益的葉節點,以此來消除過度匹配問題。
機器學習(2) 決策樹
前言 決策樹是一種機器學習的方法。決策樹是一種樹形結構,其中每個內部節點表示乙個屬性上的判斷,每個分支代表乙個判斷結果的輸出,最後每個葉節點代表一種分類結果。決策樹需要監管學習。監管學習就是給出一堆樣本,每個樣本都有一組屬性和乙個分類結果,也就是分類結果已知,那麼通過學習這些樣本得到的決策樹,這個決...
機器學習 2 決策樹
用年齡 收入 是否學生 信用度高低來判斷是否購買電腦為例子 資訊 如果待分類的事物可能劃分在多個類之中,則符號xi的資訊定義為 上例中,買電腦的概率為9 14,那麼yes的資訊為 同理,no的資訊為 資訊熵 即資訊期望值。公式如下 即 在決策樹id3演算法中,選擇使用資訊獲取量 informatio...
機器學習演算法 決策樹
決策樹類似一中策略或者條件選擇,其中各個節點代表選擇條件,各個葉子結點代表可能達到的結果,決策樹 decision tree 是乙個樹結構 可以是二叉樹或非二叉樹 其每個非葉節點表示乙個特徵屬性上的測試,每個分支代表這個特徵屬性在某個值域上的輸出,而每個葉節點存放乙個類別。使用決策樹進行決策的過程就...