目錄html
RandomForest、XGBoost、GBDT和LightGBM都屬於集成學習。算法
集成學習經過構建並結合多個分類器來完成學習任務,也稱爲多分類系統,集成學習的目的是經過結合多個機器學習分類器的預測結果來改善基本學習器的泛化能力和魯棒性。api
集成學習方法大體分爲兩類:多線程
基本學習器之間存在強依賴關係、必須串行生成的序列化方法,即Boosting提高方法。框架
基本學習器之間不存在強依賴關係、可同時生成的並行化方法,即Bagging方法。dom
RF原理:RF是Bagging的擴展變體,它在以決策樹爲基礎學習器構建Bagging集成的基礎上,進一步在決策樹的訓練過程當中引入了隨機特徵選擇,其流程大概分爲四個步驟:機器學習
隨機選擇樣本(放回抽樣)。函數
隨機選擇特徵屬性。性能
構建決策樹。學習
隨機森林投票(平均)。
所以防止過擬合能力更強,下降方差。
Bagging,即套袋法,算法過程以下:
從原始樣本集中抽取訓練集。每輪從原始樣本集中使用Bootstraping的方法抽取n個訓練樣本,共進行k輪抽取,獲得k個訓練集。
每次使用一個訓練集獲得一個模型,k個訓練集共獲得k個模型。(模型能夠根據具體問題具體選取,如決策樹,SVM,感知機。)
對於分類問題:將上面獲得的k個模型採用投票的方式獲得分類結果;
對於迴歸問題:計算上述模型的均值做爲最後的結果。(由於全部模型的重要性是相同的)
RF和Bagging對比: RF的起始性能較差,特別當只有一個基學習器時,隨着學習器數目增多,隨機森林一般會收斂到更低的泛化偏差。隨機森林的訓練效率也會高於Bagging,由於在單個決策樹的構建中,Bagging使用的是‘肯定性’特徵數,在選擇特徵劃分結點時,要對全部的特徵進行考慮,而隨機森林使用的是‘隨機性’特徵數,只需考慮特徵的子集。
\[Obj^{t} = \sum_{i=1}^{n} L(y_{i}, \hat{y}_{i}^{(t-1)} + f_{t}(x_{i})) + \Omega (f_{t}) + constant\]
其中\(\sum_{i=1}^{n} L(y_{i}, \hat{y}_{i}^{(t-1)})\)爲損失函數,紅色方框爲正則項,包括L一、L2;紅色圓圈爲常數項。
L1正則化項:\[L(\omega) = \frac{1}{N} \sum_{i=1}^{N} (f(x_{i}) - y_{i})^{2} + \frac{\lambda}{2} ||\omega||^{1}\]
L2正則化項:\[L(\omega) = \frac{1}{N} \sum_{i=1}^{N} (f(x_{i}) - y_{i})^{2} + \frac{\lambda}{2} ||\omega||^{2}\]
XGBoost與GBDT算法的區別:
傳統的GBDT在優化的時候只用到了一階導數信息,而XGBoost則對代價函數進行了二階泰勒展開,獲得一階和二階導數,而且XGBoost在代價函數中加入了正則項,用於控制模型的複雜度。
另外XGBoost還支持線性分類器,經過在代價函數中加入正則項,下降了模型的方差,使學習出來的模型更加簡單,避免過擬合。
GBDT的基本原理是Boosting裏面的boosting tree(提高樹),並使用gradient boost。其關鍵是利用損失函數的負梯度方向在當前模型的值做爲殘差的近似值,進而擬合一顆CART迴歸樹(classification and regression tree)。
\[r_{ti} = -[\frac{\partial L(y_{i}, f(x_{i}))}{\partial f(x_{i})}]_{f(x)=f_{t-1}(x)}\]
\[c_{tj} = arg \ \min\limits_{c} \sum\limits_{x_{i} \in R_{tj}} L(y_{i}, f_{t-1}(x_{i}) + c)\]
直方圖算法的基本思想是先把連續的浮點特徵值離散化成k個整數,同時構造一個寬度爲k的直方圖。在遍歷數據的時候,根據離散化後的值做爲索引在直方圖中累積統計量,當遍歷一次數據後,直方圖累積了須要的統計量,而後根據直方圖的離散值,遍歷尋找最優的分割點。
參考:
一、牛人:https://blog.csdn.net/zwqjoy/article/details/82150528
二、周志華《機器學習》
三、劉建平GBDT:http://www.javashuo.com/article/p-coowgizi-dv.html
四、大牛XGBoost:http://www.javashuo.com/article/p-wdqpjpms-hq.html