原文:機器學習面試題彙總(決策樹相關),做了一些筆記。
1.簡述決策樹的原理
2.簡述決策樹的構建過程
3.信息增益率有什麼優缺點?
4.如何對決策樹進行剪枝?
5.爲什麼決策樹需要進行剪枝?
6.C4.5對ID3做了哪些改進?
7.C4.5決策樹算法如何處理連續數值型屬性?
8.C4.5與CART的區別
9.簡述一下分類樹和迴歸樹
10.CART如何生成迴歸樹?
11.CART決策樹對離散特徵取值數目>=3的特徵如何處理?
12.決策樹對缺失值如何處理?
13.如果決策樹屬性用完了仍未對決策樹完成劃分應該怎麼辦?
14.如何避免決策樹的過擬合?
15.決策樹需要進行歸一化處理嗎?
16.常用的決策樹一定是二叉樹嗎?二叉決策樹與多分支決策樹相比各有什麼特點?
17.你認爲在一棵決策樹構建過程中較爲耗時的步驟是什麼?
18.你正在一個時間序列數據集上工作,開始用決策樹算法,因爲你知道它在所有類型數據上的表現都不錯。後來,你嘗試了時間序列迴歸模型,並得到了比決策樹模型更高的精度。這種情況會發生嗎?爲什麼?
19.決策樹在選擇特徵進行分類時一個特徵被選擇過後,之後還會選擇到這個特徵嗎?
20.和其他模型比,決策樹有哪些優點和缺點?
1. 原理
決策樹是一種基本分類和迴歸方法,利用樹的結構,先構建根節點,遞歸地選擇最優特徵(一般是離散型特徵),最優特徵有幾種取值就劃分幾個子集,對數據集進行分割。
一棵決策樹包含一個根結點、若干個內部結點和若干個葉結點;葉結點對應於決策結果,其他每個結點則對應一個屬性測試;每個結點包含的樣本結合根據屬性測試的結果被劃分到子結點中;根結點包含樣本全集,從根結點到每個葉結點的每個葉結點的路徑對應一個判定測試序列。決策樹學習的目的是爲了產生一棵泛化能力強,也就是能夠處理未見實例的決策樹。
決策樹算法包括特徵選擇
、決策樹的生成
、剪枝
等操作。
- ID3算法:選擇信息增益最大的特徵
- C4.5算法:用信息增益比來選擇特徵
- CART算法:用基尼指數來選擇特徵
特徵選擇劃分的“純度
”的幾個重要概念:信息熵
、信息增益
、信息增益率
、基尼指數
。
參考我的博客:解釋決策樹
2.構建過程
把特徵看做樹的節點,特徵的取值看作是樹的路徑。
構建步驟:
- 開始,所有記錄看作一個節點;
- 遍歷每種分割方式,找到最好的分割點;
- 將數據分隔爲兩個節點部分N1和N2;
- 對N1和N2分別繼續執行2-3步,直到每個節點中的項足夠“純”(純度可以理解爲同一個葉子節點的樣本大致都爲同一類)
不同類型的特徵的處理方法:
- 特徵是離散值,而且不要求生成的是二叉決策樹,此時一個屬性就是一個分支;
- 特徵是離散值,而且要求生成的是二叉決策樹,此時使用屬性劃分的子集進行測試,按照“屬於此子集”和“不屬於此子集”分成兩個分支;
- 特徵是連續值,可以確定一個值作爲分裂點,按照大於和小於等於分裂點生成兩個分支。
停止條件(滿足一個即可):
- 當每個葉子節點(特徵)只有一種取值類型的時候;
- 當前節點中記錄數(滿足當前特徵劃分方式的樣本數)小於某個閥值;
- 迭代次數達到給定值時。
3.信息增益率的優缺點
先看一下信息增益和信息增益率的公式:
優點:
信息增益率比信息增益多做了一個歸一化,減小了特徵取值多給特徵劃分帶來的不利影響。
缺點:
基於信息增益率的定義,偏向取值數目少的特徵,所以並不是直接選擇信息增益率最大的特徵,而是在現在候選特徵中找出信息增益高於平均水平的特徵。(????不是很懂)
4.如何剪枝?
- 預剪枝:自上而下,順着決策樹構建過程,每次特徵劃分後判斷一下要不要剪枝(比較特徵劃分前後能不能來帶來性能提升,即比較驗證集精度),可能剪枝的節點的子節點不需要剪枝,欠擬合的風險高;
- 後剪枝。自下而上,發生在決策樹構建之後,相比預剪枝欠擬合風險降低,但兩次遍歷決策樹,時間成本增加。
5.爲什麼要剪枝?
緩解過擬合。
6.C4.5對ID3做了哪些改進?
答案感謝博客:決策樹C4.5算法對ID3算法的改進
C4.5用信息增益來選擇特徵,ID3用信息增益比來選擇特徵。
ID3算法有四個主要的不足,一是不能處理連續特徵,第二個就是用信息增益作爲標準容易偏向於取值較多的特徵,最後兩個是缺失值處理和過擬合問題。
- 對於第一個問題,不能處理連續特徵, C4.5的思路是將
連續的特徵離散化
(具體怎麼做參考筆記7)。 - 對於第二個問題,引入
信息增益比
,相當於給信息增益做了歸一化處理,特徵數越多的特徵對應的特徵熵越大,它作爲分母,可以校正信息增益容易偏向於取值較多的特徵的問題。 - 對於第三個缺失值處理的問題,主要需要解決的是兩個問題,一是在樣本某些特徵缺失的情況下選擇劃分的屬性(將有
缺失值的特徵單獨劃分爲一個特徵
),二是選定了劃分屬性,對於在該屬性上缺失特徵的樣本的處理(參考拉普拉斯平滑
)。 - 對於第4個問題,C4.5引入了
正則化係數
進行初步的剪枝。
7.C4.5決策樹算法如何處理連續數值型特徵?
對連續性特徵先排序(升序),如果是二叉樹,有N個樣本就N-1中劃分方式,eg:<vj劃分到左子樹,≥vj劃分到右子樹。
8.C4.5與CART的區別
基尼指數:反映了隨機抽取兩個樣本,其類別標記不一致的概率。
屬性a的基尼指數定義爲
優化
區別:
- 在特徵選擇的方式上,C4.5採用信息增益率,CART採用基尼指數;
- CART還可以做迴歸,迴歸的時候用均方誤差,分類用基尼指數;
c1、c2 分別是兩段連續值特徵的均值。 - (從公式上看)CART對特徵的利用是可重複的,C4.5不行。
- (從公式上看),CART只適合做二叉樹,C4.5可以多叉。
9. 簡述一下分類樹與迴歸樹
分類樹:根據信息增益/信息增益率/基尼指數等方式來做特徵選擇,將符合條件的樣本歸於劃分的節點中;
迴歸樹:總體流程類似,不同的地方在於,每個節點都會得到一個迴歸的值c(這個值是當前節點連續值樣本的平均值),採用均方誤差來懲罰損失。
10.CART如何生成迴歸樹?
參考筆記9、參考博客cart迴歸樹算法過程
1)依次遍歷每個特徵j,以及該特徵的每個取值s,計算每個切分點(j,s)的損失函數,選擇損失函數最小的切分點;
2)使用上步得到的切分點將當前的輸入空間劃分爲兩個部分;
3)然後將被劃分後的兩個部分再次計算切分點,依次類推,直到不能繼續劃分。
4)最後將輸入空間劃分爲M個區域R1,R2,…,RM,生成的決策樹爲:
其中cm爲所在區域的輸出值的平均。
總結:此方法的複雜度較高,尤其在每次尋找切分點時,需要遍歷當前所有特徵的所有可能取值,假如總共有F個特徵,每個特徵有N個取值,生成的決策樹有S個內部節點,則該算法的時間複雜度爲:O(FNS)
11.CART決策樹對離散特徵取值數目>=3的特徵如何處理?
這個題很詭異,打個???來提醒我,以後可能會修改。
常見的CART都是二叉樹,取值數目多了怎麼辦,人爲地合併特徵唄。
爲什麼是二叉樹呢,我的理解是:從基尼指數的公式上看,基尼指數反映了隨機抽取兩個樣本,其類別標記不一致的概率,多個樣本就尷尬了,時間複雜度也會飆升。
12.決策樹對於缺失值如何處理?
- 將有缺失值的特徵單獨劃分爲一個特徵,在樣本某些特徵缺失的情況下選擇劃分的屬性;
- 類似拉普拉斯平滑,選定了劃分屬性,對於在該屬性上缺失特徵的樣本的處理;
- 還有忽略和填充等傳統辦法。
13.如果決策樹屬性用完了仍未對決策樹完成劃分怎麼辦?
也就是說,同一的葉子節點的樣本(自帶類別)不是純淨的,不完全是同一個類別,這種情況下在訓練樣本多、特徵少的情況下很容易發生。
解決辦法:
- 重新訓練,嘗試特徵組合等辦法去擴充特徵;
- 多數表決,使用節點中出現最多的類別作爲該節點的標籤。
14.如何避免決策樹的過擬合?
剪枝。參考筆記4
15.決策樹需要進行歸一化處理嗎?
不需要。概率模型(樹形模型)不需要歸一化,因爲它們不關心變量的值,而是關心變量的分佈和變量之間的條件概率,如決策樹、RF。而像Adaboost、SVM、LR、Knn、KMeans之類的最優化問題就需要歸一化。
概率模型(Statistical Model,也稱爲Probabilistic Model)是用來描述不同隨機變量之間關係的數學模型,通常情況下刻畫了一個或多個隨機變量之間的相互非確定性的概率關係。
16.常用的決策樹一定是二叉樹嗎?二叉樹和多叉樹對比有什麼特點?
CART必須是二叉樹,ID3和C4.5可以是多叉樹,這是根據它們特徵選擇的公式來決定的。
二叉樹可能比多叉樹達到更深的最終決策樹。
17.一棵決策樹在構建過程中最耗時的步驟?
如果處理連續值特徵(ID3、C4.5、CART這三種決策樹都可以處理),確定最佳分割點的時候,要對特徵的值進行排序,這個過程中耗時多。
18. 在處理時序數據上,時序迴歸模型會比決策樹模型好嗎?
時序數據指的是一類事物或現象隨着時間變化狀態或程度。時間序列是線性模型,決策樹是已知的檢測非線性交互最好的算法,不能像迴歸模型一樣對線性關係有那麼好的映射。
19.
其他參考資料
1.決策樹知識點小結