Cross-Validation

如何選擇𝛼αalpha在成本複雜性修剪中?

  • February 1, 2016

在接下來的講座樹方法中,他們在第 21 頁描述了一種用於成本複雜度修剪的樹算法。它說我們將成本複雜度修剪應用於大樹,以獲得最佳子樹序列,作為以下函數. 我最初的想法是我們有一套(IE. 然後我們計算每個集合的 K 折交叉驗證並選擇對應於最低的 K 折交叉驗證。

作為參考,我所指的 K 折交叉驗證在以下Cross-Validation的幻燈片 15 中進行了描述。

然而,經過一番思考和閱讀;我發現有一個定理,即通過最弱鏈接修剪經過的子樹序列將包含子樹. 在哪裡是最小化成本複雜性標準的子樹

在樹方法幻燈片 中的幻燈片 19 中進行了描述。 由於這個定理存在,我認為您可以推斷出每個定理的簡潔映射可能是合理的到最優子樹. 或者至少我們可以看到在一定的時間間隔內s 它將對應於特定的子樹。我在第 4 版的Elements of Statistical Learning book的第 308 頁上找到了這個定理。如果有人能闡明算法並且知道這樣的映射是否存在會有所幫助。

是的,確實存在這樣的映射,但它的用處不如預期。

總體目標是最小化成本複雜度函數 Cα(T)=R(T)+α|T|

在哪裡 |T| 是樹的葉子數 TR(T) 在這些葉子上計算的損失函數。

第一步是計算子樹序列 T0T1Tn1Tn 在哪裡 Tn 是僅由根節點組成的樹,並且 T0 整棵樹。

這是通過連續替換子樹來完成的 Tt 有根節點 t 帶有葉子(即折疊此子樹)。在每個步驟中,子樹 Tt 被選中,它使成本複雜度函數的降低最小化,因此是樹的最薄弱環節。

如公式:最小化 Cα(TTt)Cα(T) =R(TTt)+α|TTt|(R(T)+α|T|) =R(TTt)R(T)+α(|TTt||T|) =1R(T)R(Tt)+R(t)R(T)+α(|T||Tt|+1|T|) =R(t)R(Tt)+α(1|Tt|) 

這正好是 0

α=R(t)R(Tt)|Tt|1

所以最小化 Cα(TTt)Cα(T) 意味著最小化 α=R(t)R(Tt)|Tt|1

所以從整棵樹開始 T0 (和 α0=0 ) 在每一步 s 算法

  • 選擇最小化的節點 t R(t)R(Ts1t)|Ts1t|1
  • Ts=Ts1Tt , αs=R(t)R(Ts1t)|Ts1t|1

直到樹只包含根節點。

因此,作為輸出,我們得到一系列子樹

T0T1Tn1Tn

與相應的 α -價值觀

0=α0α1αn1αn

使用這些值可以定義一個映射 α 到子樹列表。

成本複雜度函數和損失/誤差函數是在訓練數據上計算出來的,因此存在自我驗證和過擬合的危險。正因為如此決賽 α 由交叉驗證確定。 2

計算在所有訓練數據上訓練的樹的子樹序列(在通過內部交叉驗證優化之前)至少給了我們一個可能的區間 α - 可供選擇的值。

資料來源:

以上所有來源均指的是*Breiman, L.、Friedman, J.、Olshen, R. 和 Stone, C. (1984)。分類和回歸樹,紐約沃茲沃思。*不幸的是,我無法得到它。


附錄

(1)為什麼這是真的?

=R(TTt)R(T)+α(|TTt||T|) =R(T)R(Tt)+R(t)R(T)+α(|T||Tt|+1|T|) 

用圖片更容易理解

示例樹轉換

讓我們看看 R(TTt)=R(T)R(Tt)+R(t)

誤差/損失函數 R 在輸入樹的所有葉子上計算。轉型 TTt 折疊子樹 Tt 成一片葉子 t . 所以 R(TTt)

  • R(T) (在所有葉子上)
  • - R(Tt) (穿過“已移除”子樹的葉子 Tt )
  • + R(t) (穿過新加入的葉子 t 子樹 Tt 已折疊到)

同樣的邏輯適用於計算葉子數量的部分。


(2)如何確定 α 通過交叉驗證?

我不確定這是否是佳能,但我會這樣做。

輸入:外圍交叉驗證提供的訓練數據

  1. 在整個訓練數據上訓練樹

  2. 計算子樹序列 Sα s A 去測試。

  3. 應用內部交叉驗證。對於每次運行:在內部交叉驗證提供的訓練數據上訓練樹

  4. 計算子樹序列

  5. 對於每個 αA ,保留最小化的子樹 Cα(T)

  6. 在測試集上評估這些測試樹

  7. 選擇 α 基於內部交叉驗證的最佳性能

  8. 在序列中查找子樹 S 基於整個訓練數據構建 α

  9. 返回那個子樹

在斯坦福大學的一次講座中描述了類似的方法(從幻燈片 10 開始)。

引用自:https://stats.stackexchange.com/questions/193538