讀古今文學網 > 機器學習實戰 > 第3章 決策樹 >

第3章 決策樹

本章內容

  • 決策樹簡介
  • 在數據集中度量一致性
  • 使用遞歸構造決策樹
  • 使用Matplotlib繪製樹形圖

你是否玩過二十個問題的遊戲,遊戲的規則很簡單:參與遊戲的一方在腦海裡想某個事物,其他參與者向他提問題,只允許提20個問題,問題的答案也只能用對或錯回答。問問題的人通過推斷分解,逐步縮小待猜測事物的範圍。決策樹的工作原理與20個問題類似,用戶輸入一系列數據,然後給出遊戲的答案。

我們經常使用決策樹處理分類問題,近來的調查表明決策樹也是最經常使用的數據挖掘算法1 。不需要瞭解機器學習的知識,就能搞明白決策樹是如何工作的。

1. Giovanni Seni and John Elder, Ensemble Methods in Data Mining: Improving Accuracy Through Combining Predictins, Synthesis Lectures on Data Mining and Knowledge Discovery (Morgan and Claypool, 2010), 28.

如果你以前沒有接觸過決策樹,完全不用擔心,它的概念非常簡單。即使不知道它也可以通過簡單的圖形瞭解其工作原理,圖3-1所示的流程圖就是一個決策樹,長方形代表判斷模塊(decision block),橢圓形代表終止模塊(terminating block),表示已經得出結論,可以終止運行。從判斷模塊引出的左右箭頭稱作分支(branch),它可以到達另一個判斷模塊或者終止模塊。圖3-1構造了一個假想的郵件分類系統,它首先檢測發送郵件域名地址。如果地址為myEmployer.com,則將其放在分類「無聊時需要閱讀的郵件」中。如果郵件不是來自這個域名,則檢查郵件內容裡是否包含單詞曲棍球,如果包含則將郵件歸類到「需要及時處理的朋友郵件」,如果不包含則將郵件歸類到「無需閱讀的垃圾郵件」。

圖3-1 流程圖形式的決策樹

第2章介紹的k-近鄰算法可以很好地完成分類任務,但是它最大的缺點就是無法給出數據的內在含義,決策樹的主要優勢就在於數據形式非常容易理解。

本章構造的決策樹算法能夠讀取數據集合,構建類似於圖3-1的決策樹。決策樹的一個重要任務是為了數據中所蘊含的知識信息,因此決策樹可以使用不熟悉的數據集合,並從中提取出一系列規則,在這些機器根據數據創建規則時,就是機器學習的過程。專家系統中經常使用決策樹,而且決策樹給出結果往往可以匹敵在當前領域具有幾十年工作經驗的人類專家。

現在我們已經大致瞭解了決策樹可以完成哪些任務,接下來我們將學習如何從一堆原始數據中構造決策樹。首先我們討論構造決策樹的方法,以及如何編寫構造樹的Python代碼;接著提出一些度量算法成功率的方法;最後使用遞歸建立分類器,並且使用Matplotlib繪製決策樹圖。構造完成決策樹分類器之後,我們將輸入一些隱形眼鏡的處方數據,並由決策樹分類器預測需要的鏡片類型。