決策樹是一種基本的分類和回歸方法.決策樹顧名思義,模型可以表示為樹型結構,可以認為是if-then的集合,也可以認為是定義在特徵空間與類空間上的條件概率分布.
[上傳失敗...(image-2e6565-1543139272117)]
決策樹的中間節點可以看做是對一種特徵的判斷,也是符合上一次判斷特徵某種取值的資料集,根節點代表所有資料集;葉子節點看做是判斷所屬的類別.
決策樹學習通常包括3個步驟: 特徵選擇. 決策樹生成和決策樹剪枝.
目前常用的決策樹演算法有id3, c4.5 和cart.
在資料集中的所有特徵列表中,選擇分類效果最好的特徵,或者說讓分類效果盡可能的"純",通俗的說就是讓劃分的每個結果的盡可能屬於同乙個類別,都是自己人. 那麼, 分類效果最好,或者說純度,怎麼定義? 用什麼衡量特徵的分類效果呢? 不同的決策樹演算法採用不同的衡量指標.比如說,id3採用資訊增益,c4.5採用資訊增益比率,cart分類回歸樹當用於分類時,採用gini指數,用於回歸問題時採用均方差差[計算劃分之前的均方差,劃分之後的均方差,再做差運算]. 無論是哪種指標,本質上,都是比較用特徵劃分前後兩種狀態之間的差異變化,變化越明顯越好,而各種指標是對這種差異變化的量化. 但是不同的指標會有不同的傾向性,這種傾向性從指標計算公式上可以發現,而傾向性又會引出不同的問題,進而產生不同的優化方法.
另一方面,最佳的特徵的選擇,總是需要對所有特徵進行一次遍歷,分別計算每種特徵的劃分效果,比較求最優特徵的最佳特徵劃分值.
計算資訊增益之前,需要先引出資訊熵的概念.熵是資訊理論中的乙個非常重要的概念,資訊熵的計算,對於乙個資料集d,其中n中類別的第k類樣本所佔比例為pk,則資料集d的資訊熵:
\(ent(d)= -\sum_^p_k log_2 p_k\)
從資訊熵的計算公式可以知道,ent(d)的取值範圍在[0, \(log_2n\)], 最小,或者說節點最純時[都是同乙個類別],為0;最大,最混亂時[每種類別比例都相等],為\(log_2n\).
知道了資訊熵的計算公式,那麼劃分前,計算資料集的資訊熵, 依據特徵f的n種取值劃分後的n個節點,分別計算資訊熵,然後依據各個節點資料集的比率,加權平均,計算劃分後的總的資訊熵,前後兩次做差,得到這次劃分的資訊增益,用來衡量特徵f的劃分效果如何.
資訊增益:
資訊增益表示得知特徵f的資訊而使得類y的資訊的不確定性較少的程度.
\(gain(d,f) = ent(d) - \sum_^ \fracent(d_i)\)
資訊增益越大,特徵劃分效果越好. 資訊增益指標,趨向於選擇取值數目多的特徵.[個人觀點:特徵取值越多,劃分到每個子節點的資料越少,一定程度上,純度越高,混亂程度越低,熵取值越小,進而,資訊增益越大.比如說,id特徵,因為id是唯一的,所有劃分到每個id取值節點上也就乙個資料點,純度100%,熵為0.]
\(gainratio(d,f)=\frac\)
其中,\(iv(f) = -\sum_^\fraclog_2\frac\)
\(d_v\)表示特徵f取值為v的資料子集.
因為資訊增益會傾向於選擇特徵取值多的特徵,所以,我們對多取值特徵進行懲罰,除以特徵f的固有值[或者說特徵f的資訊熵,f的資訊熵越大,相應f的取值情況越多,懲罰力度越大].
假設資料集d有k個類,樣本點屬於第k類的概率為pk,則概率分布的基尼指數定義為:
\(gini(d)=\sum_^kp_k(1-p_k) =1 - \sum_^kp_k^2\)
知道了gini指數的計算公式,計算劃分前的gini指數,劃分後,計算各個節點的gini指數值,然後根據劃分後子節點的資料比例進行加權求和,得到劃分後的總gini指數,最後對兩次結果做差,得到特徵f的劃分效果, 差值越大,分類效果越好.
和分類時相似,計算劃分前節點的均方差,劃分後計算子節點的均方差,依據資料比例加權平均,再計算兩次結果差值,差值越大越好.
mae也可以用作特徵選擇指標,和mse類似.
決策樹本質上也是一棵樹,所以符合資料結構中樹的一般性構造過程,也就是遞迴.
既然是遞迴構建過程,首先要明白的是遞迴終止條件,否則就會陷入死迴圈.那麼決策樹的終止條件是什麼呢?決策樹中符合終止條件時,停止繼續劃分,生成葉節點.
如果是分類樹:
如果節點資料全是同一類別,停止遞迴[沒有必要了,都是自己人];
如果特徵列表為空,停止遞迴[在分類問題中,一般情況下,每種劃分特徵只會用一次,用完就扔了---負心漢];
如果所有樣本在所有特徵上取值都相同,停止遞迴[特徵沒用,不具有區分度---所有特徵上取值都相同,千篇一律]
如果是回歸樹,回歸樹通常會設定自定義的引數,比如均方差變化最小值,每個節點容忍的最小樣本數,相應的條件:
均方差變化太小[小於預定義的閾值];
劃分後節點的樣本量太少[小於預定義的閾值,比如只有2,3個,小貓兩三隻沒有必要繼續劃分了];
[終止條件]檢測資料集中的每個子項是否屬於同一分類,or 特徵集為空:
if so: return 類標籤
else:
尋找劃分資料集的最好特徵(--基於資訊增益)
劃分資料集
建立分支結點
for 每個劃分的子集
呼叫自己,並增加返回結果到分支結點中
return 分支結點
上面偽**中存在乙個問題, 類標籤怎麼確定?
如果葉子節點都屬於同一類別,那麼給定所屬類別即可;如果葉子節點資料屬於不同的類別,大家進行投票決定,服從多數人的利益[少數服從多數].
因為在決策樹的構建過程中,可能會存在過擬合現象,或者說決策樹深度太深,太過於複雜;因此,我們可以對決策樹進行剪枝處理.剪枝又分為預剪枝和後剪枝.
預剪枝是指在決策樹生成過程中,對每個節點在劃分前先進行估計,如果當前的劃分不能帶來決策樹泛化效能的提公升[泛化效能可以用錯誤率,或者說均方差衡量],則停止劃分將當前節點標記為葉節點.
後剪枝過程是乙個不斷嘗試的過程:找到葉子節點,嘗試合併[將葉子節點的雙親變成葉子節點],比較合併前後的變化效果.變化效果需要定量分析,這個資料量指標分類問題可以使用錯誤率,回歸樹可以使用均方差, 而指標的計算需要資料,因此我們需要一定的測試資料,然後使用測試資料在已經生成的決策樹上進行不斷測試,假如合併後比合併前效果好,分類問題上就是錯誤率降低了,回歸問題上均方差減少了,我們就進行合併處理[或者說是剪枝處理].
決策樹使用範圍,或者說對資料集的要求: 標稱資料或數值型資料.本質上,決策樹只適用於標稱型資料[也就是離散資料],但如果是連續資料[在特徵取值上連續],我們需要進行離散處理.不同型別的決策樹處理問題不同,有的決策樹需要對資料進行預先離散化處理;但有的決策樹本身可以處理連續資料.
決策樹在生成過程中會遇到各種各樣的問題.有資料集的問題,也有決策樹本身的問題,而決策樹本身也有自己的適用範圍,不可能適用於所有問題[一招鮮吃遍天impossible].比如說:
具體問題具體分析,依據不同的任務,資料集的不同特點擊擇適合的演算法模型.
repository 歡迎fork,star.
決策樹演算法ID3,C4 5, CART
決策樹是機器學習中非常經典的一類學習演算法,它通過樹的結構,利用樹的分支來表示對樣本特徵的判斷規則,從樹的葉子節點所包含的訓練樣本中得到 值。決策樹如何生成決定了所能處理的資料型別和 效能。主要的決策樹演算法包括id3,c4.5,cart等。id3是由 ross quinlan在1986年提出的一種...
決策樹中ID3 C4 5 CART
決策樹中最初的演算法是id3,然後是c4.5,再之後是cart。下面分別介紹其優缺點 id3 基本思想 決策樹構建最初最經典的演算法。利用資訊增益選擇特徵向量,構建決策樹。優點 1 原理簡單易懂,需要了解資訊熵是表示樣本無序的度量方式。2 構造出的決策樹能夠儲存在磁碟中,再次分類時,可以直接呼叫,無...
感性理解 決策樹ID3 C4 5 CART
決策樹 先舉例子,如下 左子樹熱戀,右子樹單身。決策樹的演算法是如何構建,而不是如何用。決策樹分兩大類分類樹和回歸樹。其中,分類樹比如c4.5 id3決策樹,分類樹用於分類標籤值,那麼回歸樹的話,用於 實際的值比如,溫度,年齡,相關程度。分類樹的輸出是定性的,回歸樹的輸出是定量的。構造決策樹的過程 ...