一
什麼是決策樹?
決策樹模型本質是一顆由多個判斷節點組成的樹。在樹的每個節點做參數判斷,進而在樹的最末枝(葉結點)能夠對所關心變量的取值作出最佳判斷。通常,一棵決策樹包含一個根結點,若干內部節點和若干葉結點,葉結點對應決策分類結果。分支做判斷,葉子下結論。
我們看一個簡單的決策樹的模型,通過動物的一些特點來判斷它是否是魚類,在決策樹模型中,我們來看每一個節點是如何做判斷的。我們將所有要研究的動物作為樹最上端的起點,對它進行第一個判斷,是否能脫離水生存?如果判斷為是的話,它不是魚類。如果為否的話,我們還要再進行下一個判斷,是否有腳蹼?如果是的話,它就是非魚類,如果否的話就是魚類。
我們僅僅是通過最多兩個層次的判斷,在樹最末端的葉子結點,可以對我們感興趣的問題給出了一個相對而言的最佳決策。這個就是決策樹的邏輯,非常簡單且和人腦理解事物的邏輯很類似。
決策樹是一種簡單高效並且具有強解釋性的模型,廣泛應用於數據分析領域。
簡單:邏輯相對簡單,整個算法沒有更複雜的邏輯,只是對節點進行分叉;高效:模型訓練速度較快;強解釋性:模型的判斷邏輯可以用語言清晰的表達出來,比如上述決策樹案例中的判斷,就可以直接用語言表述成:脫離水不能生存的沒有腳蹼的動物,我們判斷它是魚;決策樹模型應用於數據分析的場景主要有三種:
監督分層;驅動力分析:某個因變量指標受多個因素所影響,分析不同因素對因變量驅動力的強弱(驅動力指相關性,不是因果性);預測:根據模型進行分類的預測;二
熵是什麼?
熵是描述判斷的不確定性,大多數決策樹的最終判斷,並不是100%準確,決策樹只是基於不確定性,作出最優的判斷。
比如上述決策樹案例,我們判斷脫離水依然可以生存的是「非魚類」。但是有一種特殊的魚叫做非洲肺魚,它脫離水後依然可以存活4年之久。雖然不是100%正確,我們在這個葉結點做出非魚類的判斷,是因為所有脫離水依然可以生存的動物裡,有非常大部分都不是魚。雖然這個判斷有很大可能性是正確的,但判斷依然存在著一些不確定性。
那麼不確定性指的是什麼呢?如下圖,女生佔比為50%,具有最大的不確定性;女生佔比0%或者100%,則具備最小的不確定性。女生佔比30%,具有中等不確定性;如果女性佔比為70%的話,我們這個時候猜測是女性,出錯可能性是1-70%,即30%,和剛剛的情況相同。也就是說,10個人中女性佔比為30%,或是70%,我們雖然給出的判斷不同,但是兩個判斷出錯的可能性是一樣的,都是30%;
圖:在10個人中,判斷隨機挑選出來一個人,性別是男還是女
如果嘗試使用一個統計量E來表示不確定性的話,並且規定E的取值在0和1之間。他和人群中女性的佔比應該滿足這樣一條曲線的關係,當女性佔比為0或者100%的時候,進行判斷的不確定性最小;E取最小值0當女性佔比為50%的時候,判斷的不確定性最大,E取最大值1;當女性佔比取0到50%,或者50%到100%之間的值的時候,E的取值介於0到1之間。並且取值相對女性佔比50%是對稱的。
熵即是用來描述以上這種不確定性,它的數學表達式為:
Pi含義:對於事件,有c種可能的結果,每一種可能結果的概率為P1、P2…Pc;
熵的取值在0-1之間;一個判斷的不確定性越大,熵越大;
三
信息增益
信息增益表示經過一次決策判斷(分叉)後,人群熵值下降的大小,即母節點的熵與兩個子節點熵值和的差值。
如上圖,信息增益(IG) = 0.5842 - ( 38% * 0.9507 + 62 * 0 )=0.22
四
決策樹算法實現步驟
我們繼續用上一篇文章《如何用線性回歸模型做數據分析》中的共享單車服務滿意分數據集來做案例,分析哪一類人群更加偏向於成為公司的推薦者,我們需要分析用戶特徵,更好的區分出推薦者。
4.1測量節點對應人群的熵
決策樹模型的第一步,是測量每個節點對應人群的熵值,最終我們得到可以判斷推薦者的決策樹。如下圖,每個節點中標註兩個數字,上面是推薦者比例,下面是用戶群佔比。初始節點的推薦者比例為0.14,再沒任何分叉前,人群佔比100%。我們用熵來度量每個節點對應人群的不確定性,推薦者比例趨近0%和100%的人群,熵的值也趨近於0,推薦者比例趨近50%的人群,熵的值則趨近於1。
在這個案例中,我們想知道哪一類人更加偏向成為公司的推薦者,也就是說,我們希望通過決策樹,可以儘量地劃分出是或者不是推薦者這個事情最為確定的人群。如果這樣的人群在樹的最終結點、也就是葉子結點可以被很好地劃分出來的話,那麼葉子結點所對應的人群的特徵,就是推薦者或者非推薦者的典型特徵。
反應在人群的熵值計算,更大的確定性對應於比較小的熵值。我們實際上是希望通過決策樹不斷地分叉,使得節點的熵值越來越低,用戶的label越來越純。
4.2節點的分叉-信息增益我們使用信息增益(IG)來判斷決策樹的分叉方式。
節點分叉規則:在每個節點嘗試按照不同特徵變量的各種分組方式,選取信息增益最大(熵最小)的方式。
4.3在特定情況樹節點停止分叉
決策樹不會一直不停分叉,決策樹停止分叉的條件通常有:
樹的深度 — 如規定樹的深度不能超過3葉子結點樣本數 — 如葉子結點樣本數不能小於10信息增益 — 如每一個分叉的信息增益不能小於0.2(R中的默認值)停止分叉:再分叉會增加複雜度但是效果沒有提高,葉子越多越複雜,會加重解釋複雜性。
五
決策樹在數據分析中的實戰流程
我們了解了決策樹模型的算法原理,那麼它如何應用在日常的數據分析工作中呢?
繼續我們剛才的案例,我們想探究分析用戶推薦程度的主要影響因素是什麼?可以用決策樹模型將用戶按照推薦者比例高低進行分層。
一百條數據,由公司員工隨機採訪100名用戶產生,採訪對象是北京市四個城區(西城區、東城區、海澱區、朝陽區)的居民,組別分為實驗組和對照組。
5.1導入數據集
5.2切割自變量和因變量
5.3將分類變量轉換為啞變量
Python大多數算法模型無法直接輸入分類變量
5.4訓練模型
圈出葉子點-最終劃分出的人群分層
5.5分析結果
通過人群特徵取值的判斷,1、我們劃分出了推薦者比例有顯著區別的人群2、找出了區分推薦者人群的關鍵特徵,例如:海澱區用戶、29歲及以上等
『5.6決策樹擴展
模型建立後,可以將模型用作分類預測;決策樹不只可應用於預測量為分類變量,還可應用於數值型因變量,只需將熵改為連續變量的方差;特徵劃分的方法除了信息增益方法外,還可以用增益率(C4.5決策樹)、基尼指數(CART決策樹);剪枝是決策樹算法中防止過擬合的主要手段,分為預剪枝與後剪枝。預剪枝指在決策樹生成過程中,對每個結點在劃分前進行估計,若當前結點劃分不能使決策樹泛化能力提升則停止劃分。後剪枝指先從訓練集生成一顆決策樹,自底向上對非葉結點進行考察,若該結點對應的子樹替換為葉結點能使決策樹泛化能力提升,則該子樹替換為葉結點;作者:趙小洛 快手社區數據分析,網際網路行業的數據分析師 主要分享網際網路數據分析、產品、運營相關方法論及思考總結。