哈工大 機器學習 複習總結
決策樹
例子:稅務欺詐檢測問題
決策樹可以表示輸入屬性的任何函式
注意決策樹的泛化能力
同一個訓練資料集,可以有多棵決策樹與其一致
下面介紹如何構造最優的決策樹:Top-Down的決策樹歸納演算法
- 每一個內結點可以看成用來分離資料集的屬性,我們需要找到分離效果最好的屬性並且作為決策屬性賦值給當前結點
- 為每一個取值建立一個兒子結點,把相應的訓練樣本分到葉結點
- 如果訓練樣本被很好的分類,則停止,否則在新的葉結點上重複上述過程
(這裡是我自己的理解,大家想看具體的可以看老師的ppt或者參考資料,如果有問題也歡迎指出)
決策樹的歸納其實是基於貪心策略,基於一個可以最優化某項準則的屬性來切分資料集,後面會看到這個準則是什麼
問題來了,如何確定最好的切分?
Idea:好的屬性切分是將示例集合分成若干子集,最理想情況是將“正例”和“反例”完全分開到不同的集合裡。
作為貪心搜尋的思想,我們更傾向節點上的資料具有同質(homogeneous)類別分佈
上圖中左圖就是具有同質性,低混雜度的切分,右圖則相反。
為了確定最好的切分方式,我們需要對結點混雜度進行測量,引出熵(Entropy)的概念:
- 對於一個隨機變數X的熵H(X)
- H(X)是對從X隨機取樣值在最短編碼情況下的每個值平均(期望)長度(以2為底就是0、1編碼)
- 公式為:
- 在資訊理論中,最短編碼情況下,對訊息X=i分配位,所以其編碼一個隨機變數X的期望位數是
關於資訊理論中的具體解釋,大家請自行查閱資料
有了“熵”的定義之後,如何衡量屬性的“好”與“壞”?下面引出條件熵:
- X在給定Y=v特定條件熵:
- X在給定Y條件熵: [本質就是對特定條件熵的加權平均]
- X和Y的互資訊:
上述關於熵的幾個公式直接記憶會比較複雜,自己動手動腦搞懂它們之間的關係記起來會比較容易
定義樣本熵,也就是樣本資料集S的熵H(S),,是S中的正例比例,是S中的反例比例
熵H(S)就可以用來測量表示S的混雜度,H(S)的函式圖如下:
定義資訊增益
- 父結點P被切分成k部分;是每一切分的樣本數,即目標類變數與屬性A變數在S(樣本集)上的互資訊
- 資訊增益測量由於切分帶來的熵減少量,選擇具有最大減少量的切分(最大增益)
- 缺點:可能會傾向於選擇具有切分分支多的屬性,每份分得很少很純的樣本
決策樹歸納構造的停止準則:
- 當一個結點上所有樣本屬於同一個類別,停止擴充套件
- 當一個結點上所有樣本具有相似的屬性值,停止擴充套件
基於決策樹的分類有很多優點:
- 構建過程計算資源開銷小
- 分類未知樣本速度極快
- 對於小規模的樹比較容易解釋
- 在許多小的簡單資料集合上效能與其它方法相近
注意Occam's剃刀:選擇適合訓練集合資料的最簡單假設
我的理解是在可接受的範圍內,越小的決策樹對於測試資料的泛化能力越好,可避免過擬合問題。
對於模型的評估,定義MDL(最小描述長度)
- cost是編碼所需的位數,尋找cost最小的模型
- 編碼誤分類的errors
- 使用結點編碼(子結點數目)加分離條件編碼
為了避免過擬合問題,我們有兩種策略:
第一種為Pre-Pruning,即在決策樹成為完全樹之前就停止演算法,除了之前的兩條停止準則,還可有其他的條件,比如當擴充套件當前結點時,資訊增益不再增加,就可以停止擴充套件。
第二種為Post-Pruning,即等決策樹成長為完全樹之後再以自下而上的方式進行剪枝,在Post-Pruning中可以使用MDL
處理屬性值缺失的問題
缺失值以三種不同的方式影響決策樹的構建:
- 影響如何計算混雜度測量值
- 影響如何將缺少值的例項分發到子節點
- 影響具有缺失值的測試例項的分類方式
上圖是在Refund有一個缺失值的情況下對於混雜度量的計算,注意對於根據Refund切分時的計算,只考慮有資料的情況,對於缺失的情況直接忽略,不予計算。資訊增益也要乘以0.9,表示不計算缺失的值。
上圖是分發例項的過程,將缺失值按照權重分別分發給不同的分支。
上圖是對於新例項有缺失值的情況下如何分類,可以看到也要利用概率來看。
關於曲線擬合的例子,實驗已經做過,不再贅述,只是需要注意公式的矩陣化和向量化,掌握矩陣求導,能自己推匯出實驗中用到的公式,求出W的解析解,以及懲罰項的使用和意義。