機器學習筆記(四)決策樹

二加三等於五發表於2020-10-28

一、背景

在上一篇文章中,我們講解了線性迴歸和邏輯迴歸的相關數學推導和Python實現,本篇文章我們將繼續下一個機器學習中一個非常重要的模型——決策樹的學習。決策樹之所以叫決策樹,是和它的原理緊密相關的,看下面這個場景,是不是很熟悉。首先看天氣情況,然後根據天氣情況做下一步決定,如果天氣好,再看游泳館是否開放,如果天氣不好,再視父母是否在家來做決定,最終會有三種選擇,或者可以認為是一個三分類問題。這就是一個典型的決策樹場景,樹的深度是3,從根節點(天氣)開始,根據每一步的條件,決策下一步的計劃(非葉子節點/內部節點),最終每條路都會走到一個葉子節點(游泳、看電視、去外婆家)。例如,今天天氣好,父母在家,我們就知道今天是要去外婆家。

上面我們已經引入了一個決策樹的背景案例,不過這個決策樹是已知的,我們只是根據這個決策樹來決定(推理/預測)最終的行為,但是這個決策樹是怎麼來的呢?這和我們的機器學習又有什麼關係呢?我們看下面一組資料,某化妝品店統計了十位顧客的屬性資訊以及是否會購買化妝品的資料,詳細如下:

列名性別年齡是否購買
1青年
2中年
3中年
4青年
5青年
6青年
7中年
8青年
9青年
10中年

從上面這個表格中可以看出什麼規律呢?統計可以發現,從性別看,所有的女性都購買了產品,所有的男性都沒有購買,從年齡看,青年裡面3人購買,3人未購買,中年裡面3人購買,1人未購買,如果用決策樹的形式表達出來,可以有下面兩種:

如果需要構建一個決策樹模型,肯定會選擇上圖的(a),而不是(b),為什麼呢?因為根據性別就可以直接得出結果了,沒必要先判斷年齡,再判斷性別。換句話說,(a)樹的深度更淺。這就是一個非常簡單的構建決策樹模型的過程,當然實際中的資料遠比上面更復雜,比如會存在連續值資料,而接下來我們要詳細介紹的決策樹演算法就是為了要解決在複雜資料場景下,如何構建一個更加合理的決策樹模型的過程。一旦構造好了決策樹,那麼分類或者預測任務就很簡單了,只需要走一遍決策樹流程到葉子節點就ok了。

二、決策樹模型

2.1 資訊熵

在第一章中我們提到了採用性別作為第一個判決條件比年齡更好,因為採用性別一次就可以劃分所有結果,那麼有沒有一個量化值來衡量這個好壞呢?這裡就引出了一個概念——資訊熵。在介紹資訊熵之前,先看一個例子。假如有人告訴你明天太陽從東邊升起,你的感覺是什麼?這TM不是廢話嗎?因為明天太陽從東邊升起的概率可以認為是1,或者可認為是一個必然事件,所以這句話沒什麼意義。如果有人告訴你下期雙色球的中獎號碼,這還是廢話嗎?當然不是,因為這句話很有用,換句話這句話的價值很大,因為猜中雙色球的概率是百萬分之一,告訴你一個百萬分之一的概率事件,當然這句話的資訊量就很大。在資訊理論中,隨機離散事件出現的概率存在著不確定性。為了衡量這種資訊的不確定性,資訊學之父夏農引入了資訊熵的概念,並給出了計算資訊熵的數學公式:

其中,n為可能的所有類別數(例如拋硬幣正反兩種),p(xi)表示類別xi發生的概率。一個事件的不確定性越大,則資訊熵越大,反之亦然。

 

相關文章