Cross-Validation

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

  • February 1, 2016

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

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

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

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

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

總體目標是最小化成本複雜度函數 $$ C_\alpha (T) = R(T)+ \alpha|T| $$

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

第一步是計算子樹序列 $ T^0\supseteq T^{1}…\supseteq T^{n-1}\supseteq T^{n} $ 在哪裡 $ T_n $ 是僅由根節點組成的樹,並且 $ T_0 $ 整棵樹。

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

如公式:最小化 $$ C_\alpha(T-T_t) - C_\alpha(T)\ =R(T-T_t)+ \alpha|T-T_t| - (R(T)+ \alpha|T|)\ =R(T-T_t)-R(T)+\alpha(|T-T_t|-|T|)\ =^1 R(T)-R(T_t)+R(t)-R(T) + \alpha(|T|-|T_t|+1-|T|)\ =R(t)-R(T_t) + \alpha(1-|T_t|)\ $$

這正好是 0

$$ \alpha=\frac{R(t)-R(T_t)}{|T_t|-1} $$

所以最小化 $ C_\alpha(T-T_t) - C_\alpha(T) $ 意味著最小化 $ \alpha=\frac{R(t)-R(T_t)}{|T_t|-1} $

所以從整棵樹開始 $ T^0 $ (和 $ \alpha^0=0 $ ) 在每一步 s 算法

  • 選擇最小化的節點 t $ \frac{R(t)-R(T^{s-1}_t)}{|T^{s-1}_t|-1} $
  • 放 $ T^s=T^{s-1}-T_t $ , $ \alpha^s=\frac{R(t)-R(T^{s-1}_t)}{|T^{s-1}_t|-1} $

直到樹只包含根節點。

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

$ T^0\supseteq T^{1}…\supseteq T^{n-1}\supseteq T^{n} $

與相應的 $ \alpha $ -價值觀

$ 0=\alpha^0\leq\alpha^1\leq…\alpha^{n-1}\leq\alpha^{n} $

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

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

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

資料來源:

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


附錄

(1)為什麼這是真的?

$$ =R(T-T_t)-R(T)+\alpha(|T-T_t|-|T|)\ =R(T)-R(T_t)+R(t)-R(T) + \alpha(|T|-|T_t|+1-|T|)\ $$

用圖片更容易理解

示例樹轉換

讓我們看看 $ R(T-T_t)=R(T)-R(T_t)+R(t) $

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

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

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


(2)如何確定 $ \alpha $ 通過交叉驗證?

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

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

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

  2. 計算子樹序列 $ S $ 和 $ \alpha $ s $ A $ 去測試。

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

  4. 計算子樹序列

  5. 對於每個 $ \alpha $ 在 $ A $ ,保留最小化的子樹 $ C_\alpha(T) $

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

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

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

  9. 返回那個子樹

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

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

comments powered by Disqus