C4.5最新版本Release8與MDL的關係的詳細解讀
最近聯絡了決策樹的作者Quinlan教授,搞清了網上對C4.5的一些不夠前沿的描述,
《Inferring Decision Trees Using the Minimum Description Length Principle*》
《Improved Use of Continuous Attributes in C4.5》
對這兩篇文章做下總結:
我們一般希望決策樹可以稍微簡化點,要不然就太亂了.
所以這篇論文怎麼簡化決策樹呢?
作者提出使用MDL來簡化決策樹,簡化的衡量指標是MDL,也就是MDL編碼最短原則.
為什麼使用MDL來衡量決策樹?論文中提到,這個就是一個合理的artifice,也就是作者設定的一個合理的量化標準.
遵循這個標準對決策樹進行簡化
上面這個什麼意思呢?比如說,我要找一個好姑娘,有的看身材,有的看心靈善良,所以眾說紛紜是不行的,為了讓這個衡量有一個尺度所以我定下來一個衡量的規則,這個規則就是MDL,也就是文章中提到的的artifice
所謂的MDL,就是從傳送方傳送"編碼後的決策樹模型+不遵守模型的一些例外資料"給接收方,要求傳送的長度最短.
正好1996年以前,作者說有文章吐槽Quinlan的C4.5容易對"連續數值"的特徵有偏袒,也就是說,從ID3的熵增益到C4.5的熵增益率作為判據以後,依然會出現分割時,傾向於選擇連續數值特徵作為分割特徵的問題.
Quinlan教授看到有文章吐槽以後就對C4.5進行了最後一次改進,改進的文章就是《Improved Use of Continuous Attributes in C4.5》
這篇文章中的C4.5也是最後一個版本C4.5-Release8
下面詳細解釋MDL的原理.
這裡的MDL:有sender和receiver兩方,
兩方具備相同的資料集,但是限定:
receiver的資料集沒有類別標籤,也就是裸資料
現在想讓sender把這個分類規則傳送給receiver
要求這個分類規則最短,這個就是決策樹的MDL原則.
假如,一個連續數值的特徵有N個取值,那麼就有N-1個候選閾值.
我們採用獨熱編碼的話,從sender->receiver,就需要N-1bit,
為了省事兒,我們進行壓縮,需要bit數為log2(N-1)
例如:
某連續特徵取值有9個,那麼候選閾值是8個
sender傳送011
那麼receiver解碼後是3,選擇第3個(從第0個開始數)候選閾值作為該特徵的分割閾值
這樣呢,傳輸成本就從原來的8bit下降為log2(8)=3個bit,節省了5個bit
所以,Ross Quinlan教授對於決策樹的簡化與我們一般人理解的不同,我們一般可能百度上看個什麼部落格,深度淺一些啊,就是一個比較簡化的決策樹的.而Quinlan教授對於"決策樹簡化的量化程度",是依據於MDL原則的.
所謂的MDL有一些限定:
sender與receicer可以事先約定第幾個bit的數值代表什麼含義.
sender與receicer可以事先約定可能的取值的列表,例如sender告訴receiver對連續特徵進行分割時,第幾個閾值作為分割閾值,那麼這裡至少需要log2(N-1)bit才能表達是第幾個.
這篇文章中,log2(X)的含義,其實是,對X採用二進位制編碼,我需要幾個bit?
另外,這篇論文的相關實現中,關於分支數量是:
離散的特徵可以2分支及以上.連續的特徵的對應分支一律2分支,連續的特徵,不存在多分支.
整個C4.5-Release8演算法的細節總結如下面連結所示:
https://blog.csdn.net/appleyuchi/article/details/83154696
關於MDL+決策樹的具體例項可以看下面的連結:
https://blog.csdn.net/appleyuchi/article/details/83216608
這兩個連結都聯絡Ross Quinlan教授看過,已經沒問題了.
先總結下MDL:
MDL的原因:希望sender給receiver的決策樹編碼規則最小+exception編碼最小
MDL的好處:進一步降低"優選連續數值特徵"為分割特徵的"傾向性"
所謂的exception指的是,決策樹不完美或者輸入資料有噪聲的時候,導致按照這個決策樹規則判定的結果是錯的,這個時候就需要對這些例外(exception)的案例進行編碼,從sender傳輸到receiver.
另外,關於第一個連結中的連續數值特徵的判據使用,再做一些補充.
表示的是:
前面提到了exception,那麼上面的分子是啥呢?它的含義在第二篇文章中有提到:
MDL thus provides aframework for trading off the complexity of a theory against its accuracy on the training data
.
The exceptions cost associated with a set of cases
is
asymptotically equivalent to
so that
measures the reduction in exceptions cost when
is partitioned by a test
也就是說,當D被T分割時,分割前後產生的例外(也就是不滿足決策樹分類規則的所有資料)的編碼成本的降低bit數(reduction),
當D被T分割時,需要的編碼成本是:
這裡的N是連續特徵的取值的種數.
這裡的k=2,C4.5的連續特徵分割時,都是二樹叉的,不存在多樹叉.
只有離散特徵才是多樹叉.
這裡的例外(exception)什麼意思呢?舉例:
特徵 類別
0.1 0
0.3 1
0.6 0
0.8 0
如果現在分割閾值=0.5
那麼此時連續特徵轉化為離散特徵處理,也就將區間分成兩個子區間
那麼前兩條資料中,0.1和0.3對應的類別分別是0和1,也就是說,
決策樹的規則中到這一步為止,使用該特徵不能完美描述資料集,
這個時候就存在exception,為了對exception進行編碼(MDL的要求)
每個子區間需要消耗的編碼數量為
所以,用來確定到底選擇哪個特徵作為分割特徵的判據變成:
到底選擇哪個特徵,能夠使得exception的編碼數落差最大(文中提到的reduction in exceptions cost).
因為我們分割的時候,資料集每經過一個節點,資料集總量就會下降,所以exception的意思就是當前資料集不能使用"已經經過的樹枝(也就是從根節點到當前節點的一堆判定規則)"來判定,所以稱為exceptions
以上是為了精確地理解C4.5的最新版本,
但是呢,面試的時候,不要說這麼多,因為面試官也是打工的,
比較浮躁,你就說熵增益最大就行了.