集成方法中的梯度提升回歸樹(梯度提升機)模型
一、總結
一句話總結:
合並多個決策樹:梯度提升回歸樹是另一種集成方法,通過合並多個決策樹來構建一個更為強大的模型。
回歸和分類:雖然名字中含有“回歸”,但這個模型既可以用於回歸也可以用於分類。
每顆樹都試圖糾正前一棵樹的錯誤:與隨機森林方法不同,梯度提升采用連續的方式構造樹,每顆樹都試圖糾正前一棵樹的錯誤。默認情況下,梯度提升采用連續的方式構造樹,每棵樹都試圖糾正前一棵樹的錯誤。
強預剪枝:默認情況下,梯度提升回歸樹中沒有隨機化,而是用到了強預剪枝。梯度提升樹通常使用深度很小(1到5之間)的樹,這樣模型占用的內存更少,預測速度也更快。
1、梯度提升背后的主要思想?
不斷添加樹可以不斷迭代提高性能:梯度提升背后的主要思想是合並許多簡單的模型(在這個語境中叫做弱學習器),比如深度較小的樹。每顆樹只能對部分數據做出很好的預測,因此,添加的樹越來越多,可以不斷迭代提高性能。
2、梯度提升機學習率特點?
學習率:除了預剪枝與集成中樹的數量之外,梯度提升的另外一個重要參數是learning_rate(學習率),用於控制每棵樹糾正前一棵樹的錯誤的強度。較高的學習率意味着每棵樹都可以做出較強的修正,這樣模型更為復雜。
3、梯度提升和隨機森林選擇?
隨機森林魯棒性:由於梯度提升和隨機森林兩種方法在類似的數據上表現的都很好,因此一種常用的方法就是先嘗試隨機森林,它的魯棒性很好。
隨機森林->梯度提升:如果隨機森林效果很好,但預測時間太長,或者機器學習模型精度小數點后第二位的提高也很重要,那么切換成梯度提升通常會有用。
4、梯度提升主要缺點?
需要仔細調參:梯度提升主要缺點是需要仔細調參,而且訓練時間可能會比較長。與其他基於樹的模型類似,這一算法不需要對數據進行縮放就可以表現的很好,而且也適用於二元特征與連續特征同時存在的數據集。
不適用於高維稀疏矩陣:與其他基於樹的模型相同,它也通常不適用於高維稀疏矩陣。
二、第六個模型:集成方法中的梯度提升回歸樹(梯度提升機)模型
轉自或參考:第六個模型:集成方法中的梯度提升回歸樹(梯度提升機)模型
https://blog.csdn.net/az9996/article/details/86617885
1、梯度提升回歸樹(梯度提升機)
梯度提升回歸樹是另一種集成方法,通過合並多個決策樹來構建一個更為強大的模型。雖然名字中含有“回歸”,但這個模型既可以用於回歸也可以用於分類。與隨機森林方法不同,梯度提升采用連續的方式構造樹,每顆樹都試圖糾正前一棵樹的錯誤。默認情況下,梯度提升采用連續的方式構造樹,每棵樹都試圖糾正前一棵樹的錯誤。默認情況下,梯度提升回歸樹中沒有隨機化,而是用到了強預剪枝。梯度提升樹通常使用深度很小(1到5之間)的樹,這樣模型占用的內存更少,預測速度也更快。
梯度提升背后的主要思想是合並許多簡單的模型(在這個語境中叫做弱學習器),比如深度較小的樹。每顆樹只能對部分數據做出很好的預測,因此,添加的樹越來越多,可以不斷迭代提高性能。
梯度提升樹經常是機器學習競賽的優勝者,並且廣泛應用於業界。與隨機森林相比,它通常對參數設置更為敏感,但如果參數設置正確的話,模型精度會更高。
除了預剪枝與集成中樹的數量之外,梯度提升的另外一個重要參數是learning_rate(學習率),用於控制每棵樹糾正前一棵樹的錯誤的強度。較高的學習率意味着每棵樹都可以做出較強的修正,這樣模型更為復雜。通過增大n_estimators來向集成中添加更多的樹,也可以增加模型復雜度,因為模型有更多機會糾正訓練集上的錯誤。
2、分析梯度提升樹
可以看到,梯度提升樹的特征重要性與隨機森林的特征重要性有些類似,不過梯度提升完全忽略了某些特征。
由於梯度提升和隨機森林兩種方法在類似的數據上表現的都很好,因此一種常用的方法就是先嘗試隨機森林,它的魯棒性很好。如果隨機森林效果很好,但預測時間太長,或者機器學習模型精度小數點后第二位的提高也很重要,那么切換成梯度提升通常會有用。
如果想將梯度提升應用在大規模問題上,可以研究一下xgboots包機器Python接口,這個庫在許多數據集上的速度都比scikit-learn對梯度提升的實現要快(有時調參也更簡單)。
3、優點、缺點和參數
梯度提升決策樹是監督學習中最強大也最常用的模型之一。其主要缺點是需要仔細調參,而且訓練時間可能會比較長。與其他基於樹的模型類似,這一算法不需要對數據進行縮放就可以表現的很好,而且也適用於二元特征與連續特征同時存在的數據集。與其他基於樹的模型相同,它也通常不適用於高維稀疏矩陣。
參數n_estimators和learning_rate兩者之間高度相關,因為learning_rate越低,就需要更多的樹來構建具有相似復雜度的模型。隨機森林的n_estimators值總是越大越好,但梯度提升不同,增大n_estimators會導致模型更加復雜,進而可能導致過擬合。通常的做法是根據時間和內存的預算選擇合適的n_estimators,然后對不同的learning_rate進行遍歷。
另一個重要參數是max_depth(或max_leaf_nodes),用於降低每棵樹的復雜度。梯度提升模型的max_depth通常都設置的很小,一般不超過5。