《機器學(xué)習(xí)實戰(zhàn)》筆記(九):Ch9 - 樹回歸

第九章 樹回歸(代碼)

  • 樹回歸算法的優(yōu)缺點

    • 優(yōu)點:可以對復(fù)雜和非線性的問題建模.

    • 缺點:結(jié)果不容易理解.

    • 適用數(shù)據(jù)類型:數(shù)值型和標(biāo)稱型.

  • 樹回歸和分類樹的思路類似,且方法如下

    • 收集數(shù)據(jù)

      • 采用任意方法收集數(shù)據(jù).
    • 準(zhǔn)備數(shù)據(jù)

      • 需要數(shù)值型的數(shù)據(jù),標(biāo)稱型數(shù)據(jù)應(yīng)該映射成為二值型數(shù)據(jù).
    • 分析數(shù)據(jù)

      • 匯出數(shù)據(jù)的二維可視化顯示結(jié)果,以字典方式生成樹
    • 訓(xùn)練算法

      • 大部分時間都花費在葉節(jié)點樹模型的構(gòu)建上.
    • 測試算法

      • 使用測試數(shù)據(jù)上的R*R值來分析模型的效果.
    • 使用算法

      • 使用訓(xùn)練出的樹做預(yù)測,預(yù)測結(jié)果還可以來做很多事情.
  • 連續(xù)和離散型特征的樹的構(gòu)建

    • 在樹的構(gòu)建過程中,需要使用到字典,該字典包含以下4個元素

      • 帶切分的特征

      • 待切分的特征值

      • 右子樹

      • 左子樹

    • 構(gòu)建樹的偽代碼

      • 找到最佳的待切分特征

      • 如果該節(jié)點不能再分,將該節(jié)點存為葉節(jié)點

      • 執(zhí)行二元切分

      • 在右子樹調(diào)用方法

      • 在左子樹調(diào)用方法

  • 將CART算法用于回歸

    • 在構(gòu)建樹種新增偽代碼

      • 對每個特征

      • 對每個特征值

      • 將數(shù)據(jù)切成兩份

      • 計算切分的誤差

      • 如果當(dāng)前誤差小于當(dāng)前最小誤差,那么將切分設(shè)定為最佳切分并且更新最小誤差

  • 樹剪枝

    一棵樹如果節(jié)點過多,就會出現(xiàn)“過擬合”
    通過降低決策樹的復(fù)雜度來避免過擬合的過程稱為剪枝

    • 預(yù)剪枝方法

      • 定義一個高度,當(dāng)決策樹達到該高度的時候就停止決策樹的增長

      • 達到某個節(jié)點的實例具有相同的特征向量,即使這些實例不屬于同一類,也可以停止決策樹的生長,這個方法對處理數(shù)據(jù)沖突的時候比較有效

      • 定義一個閥值,當(dāng)某個節(jié)點樹小于閥值的時候就可以停止

      • 定義一個閥值,通過計算每次擴張對系統(tǒng)性能的增益,并比較增益值與該閥值大小來決定是否停止決策樹的增長

    • 后剪枝方法

      • REP(錯誤率降低剪枝)

        • 刪除以此節(jié)點為根的子樹

        • 使其成為葉子節(jié)點

        • 賦予該節(jié)點關(guān)聯(lián)的訓(xùn)練數(shù)據(jù)的最常見分類

        • 當(dāng)修剪后的樹對于驗證集合的性能不會比原來的樹差時,才真正刪除該節(jié)點

      • PEP(悲觀錯誤剪枝)

        • 根據(jù)剪枝前后錯誤率來判定子樹的修剪。彌補了REP種的缺陷,在評價子樹的訓(xùn)練錯誤公式中添加了一個常數(shù),假定每個葉子節(jié)點都動自動對實例的某個部分進行錯誤的分類

        • 缺陷

          • PEP算法使用的從上往下的剪枝策略,會導(dǎo)致剪枝過度

          • 會出現(xiàn)剪枝失敗的情況

      • CCP(代價復(fù)雜度剪枝)

        • 根據(jù)真實的誤差估計選擇最佳決策樹
      • EBP(基于錯誤剪枝)

        • 計算葉節(jié)點的錯分類樣本率估計的置信區(qū)上線為U

        • 計算葉節(jié)點的預(yù)測分類樣本數(shù)

        • 判斷是否剪枝以及如何剪枝

以下是集中剪枝的方法比較

REP PEP CCP
剪枝方式 自底向上 自頂向下 自底向上
計算復(fù)雜度 o(n) o(n) o(n)*o(n)
誤差估計 剪枝集上誤差估計 使用連續(xù)糾正 標(biāo)準(zhǔn)誤差
  • 小節(jié)

    CART算法可以用于構(gòu)建二元樹并處理離散型和連續(xù)型的切分,該算法構(gòu)建出的樹會傾向于對數(shù)據(jù)過擬合。


代碼托管見Github

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容