第二十三節決策樹系列之特點和數學表達形式(2)
上節我們講解了決策樹的概念,本節的話我們講解決策樹的特點以及其數學表達形式。
目錄
1-決策樹的特點
決策樹的特點大致有以下幾種:
1、可以處理非線性問題。邏輯迴歸處理非線性問題有一些捉襟見肘,沒有特別完善的方法能解決,我們有若干種妥協的方法來讓它湊合能用,而決策樹天生就可以處理非線性問題。假設在一個二維的平面上,有若干資料如圖:
每一個資料有兩個維度,x1和x2。總共9個資料點。如果我們想用邏輯迴歸來分類,無論怎麼分,都找不到一條很好地直線將圖中點分開。假設我們用決策樹分裂的話,第一次分裂選擇條件是x<3,相當於畫一條豎線,所有x<3的都分到左邊,x>3分到右邊。
分到左邊的都是O點,分到右邊的有一半是O點一半是X點,給它落成一個葉子節點不太合適,就需要再次分裂,再選擇分裂條件是x<6,就將資料完美的分開了。我們的決策樹的分裂圖如圖所示:
原來邏輯迴歸處理不了的非線性問題,決策樹輕而易舉的就把它們分開了。
再比如下圖:
資料點如圖,想把藍色,紅色的資料點分開,同樣的線性不可分,而決策樹卻可以會畫出一個波浪線,把資料分開,相當於每一個折點部分就多出分裂一個條件。所以說通過決策樹不斷分裂的方式,可以處理各種各樣的非線性問題。
2、可解釋性強。從資料集上抓到一個演算法,生成出來一個模型,邏輯迴歸模型的本質,記在計算機裡面的是一組w,訓練出來這個模型是個一組數,它沒有具體的物理含義。比如0.8和 0.7,怎麼解釋這兩個w到底差別在哪?說不太清,可解釋性差一些,機器到底學少什麼你不知道。而決策樹演算法,記錄下來的是一組分類條件,相比一組w來說,它的可解釋性是要強不少。
3、 決策樹的模型非常簡單。它不需要藉助函式最優化工具,在原生的決策樹裡面是沒有損失函式這個概念的。決策樹其實特別像森林球,某一條資料順根節點、分支節點下來,最後落到某一個葉子節點上。它這個模型相對於梯度下降的訓練過程中是比較簡單的,預測就更簡單了,直接跑一遍if…else,最後該是誰就是誰。
4、缺點 不容易顯示地使用函式表達,不可微。可能帶來一個問題是不好給它加正則項,正則項是用來評估模型簡單程度的。原來的損失函式,給它加一個L1正則,組成了一個新的形式函式叫obj,原本是讓L損失函式最小,現在要變成讓它們倆合obj最小。為什麼加上它效果就能好?在演算法模型裡邊是通過這L1和L2兩個指標來評估模型到底是簡單還是複雜的。如果有更簡單的方式能得到更好的模型,當然要優先簡單的,因為複雜模型容易過擬合,這也就是正則存在的意義。但是決策樹很難加這種正規表示式。
2-決策樹的數學表達形式
決策樹雖然不容易顯示地使用函式表達,非得要表達的話,我們有兩種方式表達。
第一種是從路徑的角度(Path View),將每個從根到葉子的路徑作為一個假設 g,通過不同的條件組合得到最後的 G (X)。
第二種是從遞迴的角度(Recursive View),父樹是由子樹遞迴定義的 tree=(root,sub-trees)
。
1、我們先說第一種從路徑的角度:表達如下:
上面G(x)是一個函式,對於函式我們永遠就把它理解成一個機器,你給我一個原材料,我給你生產一個東西。所以這裡面的G(x)也不例外,對於決策樹來說一般是做分類的,所以我們可以想到這個函式G(x)其實就代表著你給我一個X,我給你一個分類結果。所以G代表著這棵已經生成好的決策樹,X代表著扔進去的一個原資料。而函式後面的表示式代表我這個機器如何工作的,如何從已知得到結果的,是表示式記錄的資訊。我們看到後面是個連加符號,給它拆解出來就是
這是什麼意思呢?比如下圖的決策樹,我把葉子節點編號如圖:
這裡面q代表所有決策樹的路徑,比如我們的X是qutitingtime<17:00 並且沒有約會,那麼在上述決策樹存在的情況下,這個資料會落到2號節點,能夠通往幾號節點的路徑就叫幾號路徑,所以X扔進來的情況下,會通往2號路徑,所以我們定義此時的X只有q(2)x=1,其他路徑都為0,即q(1)x=0,q(3)x=0...。所以我們qt是定義出來的,代表著x是不是在第t號路徑上,is x on path t。gt(x)代表某一號葉子節點的表達,比如這裡的X,落在2號節點上,所以表達為Y,也就是說以後甭管X是什麼樣,只要落在2號節點上,就寫成Y,因此qt(x).gt(x)就是代表來一條資料,先是通過qt(x)看看落在哪個葉子節點上,然後再通過gt(x)看看這個葉子結點的表達是什麼,我們就返回什麼(Y 或者N),簡直就是一個很無聊的表達,並且表達的很簡單。
上面公式表達的前提就是樹已經存在了,它的判別函式怎麼表達。所以還是針對上述落在2號節點的X,我們針對上面的決策樹把連加符號拆解出來就是:
因為只有2號節點的q2(x)=1,其他都為0。這裡面的點乘代表著對應關係,並不是真正的乘。T代表第幾號葉子結點即葉子節點的序號。gt(x)是一個base hyponthesis 基礎的假設,這裡就是假設我所有的葉子結點的表達的形式是Y還是N,是一個常數。因為這裡面gt(x)的值只有Y或者N。不是取決於X的輸入,而是取決於我當前落在第幾號節點,g(1)(x)就是N,g(2)X就是Y。所以總結如下:
我們通過下面舉例解釋下上面公式:
實際上上面是個遞迴的表達形式。比如對於根節點(qutting time )來說,有3個子節點,如圖所示。對於1號子節點的根(has a date)來說有兩個子節點 N或者Y。還是拿上面X是qutitingtime<17:00 並且沒有約會的例子來說,從根節點下來會落到1號子節點,這裡面的b(x)是分支的條件,這個例子中b(x)=1 ,C代表幾個子節點,而對於qutting time的根節點來說,有3個子節點,所以C=3。落在幾號節點上,只有當前子節點為1,其他都為0,所以對於這裡只有G1(x)=1。當落到1號節點之後,繼續往下走,同理接著遍歷,會落到1號子節點中的Y子節點上,同理對於 has a date 作為根節點來說,C=2,因為落在Y子節點上,此時是葉子結點,不在遍歷,所以向上依次返回最終結果Y。
總結如下:
下一節我們講解決策樹的分裂流程以及分裂條件的評估。