《機器學習實戰》 第九章【樹迴歸】

算法描述

實際生活中的很多問題都是非線性的,不可能使用全局線性模型來進行擬合數據,有一種方法是將數據集切分成爲很多份易於建模的數據,然後再利用上一節所使用的方法,線性迴歸技術,來進行建模,如果首次切分後還是很難以擬合線性模型,我們就繼續進行切分。使用樹迴歸發給發就比較有用。

樹迴歸算法

構建樹

找到最佳的待切分特徵:
    如果該節點不能再分,將該節點存爲葉節點
    執行二元切分
    在右子樹調用 createTree() 方法
    在左子樹調用 createTree() 方法

找數據集最佳切分點

對每個特徵:
    對每個特徵值: 
        將數據集切分成兩份(小於該特徵值的數據樣本放在左子樹,否則放在右子樹)
        計算切分的誤差
        如果當前誤差小於當前最小誤差,那麼將當前切分設定爲最佳切分並更新最小誤差
返回最佳切分的特徵和閾值

樹剪枝

預剪枝

預剪枝就是及早的停止樹增長,在構造決策樹的同時進行剪枝。所有決策樹的構建方法,都是在無法進一步降低熵的情況下才會停止創建分支的過程,爲了避免過擬合,可以設定一個閾值,熵減小的數量小於這個閾值,即使還可以繼續降低熵,也停止繼續創建分支。但是這種方法實際中的效果並不好。

後剪枝

基於已有的樹切分測試數據:
    如果存在任一子集是一棵樹,則在該子集遞歸剪枝過程
    計算將當前兩個葉節點合併後的誤差
    計算不合並的誤差
    如果合併會降低誤差的話,就將葉節點合併

CART算法

CART模型是應用廣泛的決策樹學習方法,由特徵選擇樹的生成剪枝組成,既可以用於分類也可以用於迴歸。CART是在給定輸入隨機變量X條件下輸出隨機變量Y的條件概率分佈的學習方法,CART假設決策樹是二叉樹,內部特徵結點的取值爲“是”和“否”,左分支是取值爲“是”的分支,右分支是取值爲“否”的分支,這樣的決策樹等價於遞歸地二分每個特徵,將輸入空間即特徵空間劃分爲有限個單元,並在這些單元上確定預測的概率分佈,也就是在輸入給定的條件下輸出的條件概率分佈。對CART稍作修改就可以處理迴歸問題。
這裏有一篇比較好的CART解釋文章

模型樹

用樹來對護具進行建模,除了把葉節點簡單地設定爲常熟值外,還有一種方法是把葉節點設定爲分段線性函數,分段線性也就是指模型由多個線性片段組成。模型樹的可解釋性優於迴歸樹,其預測準確度也比較高。

一般流程

  • 收集數據:任意方法
  • 準備數據:數值型數據,標稱型數據轉爲二值型數據
  • 分析數據:繪出數據的二維可視化顯示結果,以字典方式生成樹
  • 訓練算法:大部分時間都花費在葉節點樹模型的構建上
  • 測試算法:使用測試數據中的R2值來進行分析
  • 使用算法:使用訓練出來的樹做預測,預測結果還可以用來做很多事情

優缺點

  • 優點:可以對複雜和非線性的數據建模
  • 缺點:結果不易理解
  • 適用數據類型:數值型和標稱型數據

代碼可參考:
https://blog.csdn.net/u010859707/article/details/78180285

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章