讀古今文學網 > 機器學習實戰 > 9.1 複雜數據的局部性建模 >

9.1 複雜數據的局部性建模

樹回歸

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

第3章使用決策樹來進行分類。決策樹不斷將數據切分成小數據集,直到所有目標變量完全相同,或者數據不能再切分為止。決策樹是一種貪心算法,它要在給定時間內做出最佳選擇,但並不關心能否達到全局最優。

第3章使用的樹構建算法是ID3。ID3的做法是每次選取當前最佳的特徵來分割數據,並按照該特徵的所有可能取值來切分。也就是說,如果一個特徵有4種取值,那麼數據將被切成4份。一旦按某特徵切分後,該特徵在之後的算法執行過程中將不會再起作用,所以有觀點認為這種切分方式過於迅速。另外一種方法是二元切分法,即每次把數據集切成兩份。如果數據的某特徵值等於切分所要求的值,那麼這些數據就進入樹的左子樹,反之則進入樹的右子樹。

除了切分過於迅速外,ID3算法還存在另一個問題,它不能直接處理連續型特徵。只有事先將連續型特徵轉換成離散型,才能在ID3算法中使用。但這種轉換過程會破壞連續型變量的內在性質。而使用二元切分法則易於對樹構建過程進行調整以處理連續型特徵。具體的處理方法是:如果特徵值大於給定值就走左子樹,否則就走右子樹。另外,二元切分法也節省了樹的構建時間,但這點意義也不是特別大,因為這些樹構建一般是離線完成,時間並非需要重點關注的因素。

CART是十分著名且廣泛記載的樹構建算法,它使用二元切分來處理連續型變量。對CART稍作修改就可以處理回歸問題。第3章中使用香農熵來度量集合的無組織程度。如果選用其他方法來代替香農熵,就可以使用樹構建算法來完成回歸。

下面將實現CART算法和回歸樹。回歸樹與分類樹的思路類似,但葉節點的數據類型不是離散型,而是連續型。

樹回歸的一般方法

  1. 收集數據:採用任意方法收集數據。
  2. 準備數據:需要數值型的數據,標稱型數據應該映射成二值型數據。
  3. 分析數據:繪出數據的二維可視化顯示結果,以字典方式生成樹。
  4. 訓練算法:大部分時間都花費在葉節點樹模型的構建上。
  5. 測試算法:使用測試數據上的R2值來分析模型的效果。
  6. 使用算法:使用訓練出的樹做預測,預測結果還可以用來做很多事情

有了思路之後就可以開始寫代碼了。下一節將介紹在Python中利用CART算法構建樹的最佳方法。