史上最简单的决策树模型讲解
從前
從前,小夕種了一棵樹,種在了小夕的小屋后面~
為什么要種這棵樹呢?因為呀,它可以幫小夕總結歷史經驗,然后幫小夕對當前的局勢做出決策~這樣小夕就可以安心給大家寫文章啦~
這棵樹是這樣的。
一開始,小夕買了一顆小樹苗,把它栽到地上。
?
然后呢,小夕不給它澆水,也不給他澆肥料,而是讓他吃歷史經驗。比如呢,今天,小夕讓它幫小夕識別出圖片中的生物是喵還是驢。所以呢,這里的歷史經驗就是一大堆喵和驢的圖片,并且小夕給它標注好了每張圖片是喵還是驢。
?
?
?
可是由于樹沒有眼睛呀,不能直接觀察圖片。所以呢,小夕幫它把圖片轉化成了特征,也就是用幾個特征來描述每張圖片。小夕選了如下幾個特征來描述每張圖片:
1、頭是否是長條形
2、身上有沒有毛
3、有沒有發現胡須
4、丑不丑
5、萌不萌
所以,比如小夕就會對下面這張圖片:
?
轉化為[False True False False True]的特征向量(即,不是長條頭、有毛、沒發現胡須、不丑、萌)
然后小夕一口氣給上千張圖片提取完了特征,當然,這些圖片都是標注好類別的。
小夕就把它們丟給小夕心愛的小樹苗啦~
快快長大
誒?那小樹苗要怎么生長呢?
小夕問小樹苗:“小樹小樹,你接下來要怎么長呢?”
小樹苗喝了口水,說:“我每一步的生長都是非常慎重的,我從不會多長個枝丫或者少長個枝丫。每個樣本這不是有五個特征嘛,我呢,就會從中挑選出最有價值的一個特征,來作為我第一次生長的分支。”
小夕接著問:“那你要怎么挑選特征呢?”
小樹苗說:“你看啊,比如你挑出來的第二個特征,“身上有沒有毛”,這就是很糟糕的特征。為什么呢?我們就來看“有沒有毛”這個特征。我數了一下,在所有有毛的動物中,50%的動物是喵,50%的動物是驢。而在所有沒有毛的動物中,也是50%的動物是喵,50%的動物是驢。所以“有沒有毛”這個特征的任何一個取值下,所有類別的樣本數一樣,是完全等概率的,這樣的特征完全無法用來做分類啊。因為不管這個特征的值是什么,它所映射的各個類別都是等概率的。所以這個類別是最糟糕的。”
小樹苗喝了口水,接著說:“但是你用的第三個特征,“有沒有胡須”,就非常棒。我統計了一下,有胡須的動物中,喵占了92%,驢占了8%。而沒有胡須的動物中,喵占了20%,驢占了80%。這樣,如果給我一張未知類別的樣本,只需要看“有沒有胡須”這個特征的話,基本就可以判斷出這個樣本的類別是什么了!比如說這個樣本的這個特征的值恰好是“沒有胡須”,那么我就有80%的把握說這是一頭驢!當然,如果恰好這個樣本的特征的值是“有胡須”,我就有92%的把握說這個樣本時一只喵!這么棒的特征,當然是首選的啦!所以,我下面要長的枝丫就是叫做“有沒有胡須枝丫”!”
?
小夕:
?
“我可能買了一棵假樹。
我。。。懂你的意思了。你說的選擇最優特征的方法實際就是計算條件熵的過程。對于你說的“有沒有毛”這個很糟糕的特征,由于這個特征的每個取值下,各個類別都是完全等概率分布的,所以是最無序的,最隨機的特征,我們稱為“條件熵最大的特征”。熵最大就是1,所以計算出的“有沒有毛”這個特征的條件熵肯定是1。
而你說的“有沒有胡須”這個特征,它的每個取值下,類別分布很隨機,也就是說很有序(想象一下,最有序的狀態就是每個取值下,所有樣本都是同一個類別,多么有序啊。而類別等概率分布的時候,就是每個特征下魚龍混雜的時候,啥類別都有,亂糟糟的),這種很有序的特征,計算出的條件熵肯定很小。最有序的情況下,條件熵就是0啦。”
小樹:“好了。但是,我的分類目標是達到100%的準確率。所以,我要進一步挑選特征了!
基于有胡須的那個分支,我會將這個分支里的樣本重新計算各個特征的條件熵(當然胡須這個特征除外),像之前一樣選擇條件熵最大的特征作為下一個枝丫!
一直重復這個過程,直到哪一個枝丫下的全部樣本都是同一個類別了,這個枝丫就不再繼續分裂了。”
最終,小樹長成了大樹。
?
這時,小夕忙著給大家寫文章呢,但是小夕的一個好閨蜜小婭拿著一張圖片過來了,她想讓小夕幫她看看這是驢還是喵。
?
但是小夕很忙呀,沒空理她,就讓她拿著圖片問后院的決策樹啦~
然后小婭去問決策樹這是啥,決策樹說:“它有胡須嗎?”
小婭說:“有!”
樹:“它萌嗎?”
小婭:“一點也不萌!”
樹:“它是長臉嗎?”
小婭:“是長臉!”
樹:“那這就是只驢!”
留下一臉懵逼的小婭在樹下凌亂( ̄? ̄)
這棵神奇的樹叫什么呢?
這棵樹的專業說法叫“ID3決策樹”,為什么是ID3呢?因為它是通過計算條件熵來選擇最優特征的。其他經典決策樹如C4.5決策樹、CART決策樹等與ID3的區別僅在于最優特征選擇的算法。
總結
然后對本文總結一下,本文經過了如下步驟,這也是一個簡單的機器學習/數據挖掘任務的經典流程。
1、對已標注類別的數據集進行數據預處理與特征提取
2、訓練決策樹(分類器/機器學習模型)
3、對未知類別的數據集進行數據預處理與特征提取
4、利用決策樹對未知類別樣本的類別做出決策
想要詳細了解ID3決策樹選擇最優特征的過程(即計算條件熵)的同學,可以Google或者百度一下“條件熵”或者查閱《數據挖掘導論》等機器學習相關的書籍;想要詳細了解如何代碼實現ID3決策樹的同學,可以搜索各種CSDN博客或者查閱《機器學習實戰》等側重代碼實現的書籍。對于如何提高決策樹的泛化能力(防止過擬合)等優化技巧,或者其他類型的決策樹,可以看《數據挖掘導論》等經典書籍~
總結
以上是生活随笔為你收集整理的史上最简单的决策树模型讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java多线程系列(九):CountDo
- 下一篇: 消息中间件系列(九):详解RocketM