RF、GBDT、XGboost特徵選擇方法
RF、GBDT、XGboost都可以做特徵選擇,屬於特徵選擇中的嵌入式方法。比如在sklearn中,可以用屬性feature_importances_去檢視特徵的重要度, 比如:
from sklearn import ensemble
#grd = ensemble.GradientBoostingClassifier(n_estimators=30)
grd = ensemble.RandomForestClassifier(n_estimators=30)
grd.fit(X_train,y_train)
grd.feature_importances_
但是這三個分類器是如何計算出特徵的重要度呢?下面來分別的說明一下。
1. 隨機森林(Random Forest)
用袋外資料 (OOB) 做預測。隨機森林在每次重抽樣建立決策樹時,都會有一些樣本沒有被選中,那麼就可以用這些樣本去做交叉驗證,這也是隨機森林的優點之一。它可以不用做交叉驗證,直接用oob _score_去對模型效能進行評估。
具體的方法就是:
1. 對於每一棵決策樹,用OOB 計算袋外資料誤差,記為 errOOB1;
2. 然後隨機對OOB所有樣本的特徵i加入噪聲干擾,再次計算袋外資料誤差,記為errOOB2;
3. 假設有N棵樹,特徵i的重要性為sum(errOOB2-errOOB1)/N;
如果加入隨機噪聲後,袋外資料準確率大幅下降,說明這個特徵對預測結果有很大的影響,進而說明它的重要程度比較高
2. 梯度提升樹(GBDT)
主要是通過計算特徵i在單棵樹中重要度的平均值,計算公式如下:
其中,M是樹的數量。特徵i在單棵樹的重要度主要是通過計算按這個特徵i分裂之後損失的減少值
其中,L是葉子節點的數量,L-1就是非葉子結點的數量。
3. XGboost
XGboost是通過該特徵每棵樹中分裂次數的和去計算的,比如這個特徵在第一棵樹分裂1次,第二棵樹2次……,那麼這個特徵的得分就是(1+2+...)。
相關文章
- xgboost 特徵選擇,篩選特徵的正要性特徵
- xgboost 特徵重要性選擇 / 看所有特徵哪個重要特徵
- GBDT、XGBoost、LightGBM比較
- XGBoost 輸出特徵重要性以及篩選特徵特徵
- Cart迴歸樹、GBDT、XGBoost
- 【特徵工程】(資料)使用Xgboost篩選特徵重要性特徵工程
- 特徵工程之特徵選擇特徵工程
- XGBoost學習(六):輸出特徵重要性以及篩選特徵特徵
- 決策樹中結點的特徵選擇方法特徵
- xgboost特徵重要性特徵
- 特徵選擇和特徵生成問題初探特徵
- 特徵工程 特徵選擇 reliefF演算法特徵工程演算法
- 機器學習之 基於xgboost的特徵篩選機器學習特徵
- 特徵選擇技術總結特徵
- 機器學習中,有哪些特徵選擇的工程方法?機器學習特徵
- xgboost 特徵重要性計算特徵
- [機器學習 ]RandomForest、GBDT、XGBoost、lightGBM 原理與區別機器學習randomREST
- 決策樹模型(2)特徵選擇模型特徵
- Python中XGBoost的特性重要性和特性選擇Python
- 基於條件熵的特徵選擇熵特徵
- 專欄 | 基於 Jupyter 的特徵工程手冊:特徵選擇(五)特徵工程
- 專欄 | 基於 Jupyter 的特徵工程手冊:特徵選擇(四)特徵工程
- 專欄 | 基於 Jupyter 的特徵工程手冊:特徵選擇(一)特徵工程
- 專欄 | 基於 Jupyter 的特徵工程手冊:特徵選擇(二)特徵工程
- 專欄 | 基於 Jupyter 的特徵工程手冊:特徵選擇(三)特徵工程
- 機器學習—降維-特徵選擇6-4(PCA-Kernel方法)機器學習特徵PCA
- ch11 特徵選擇與稀疏學習特徵
- 【原始碼】MATLAB特徵選擇函式庫version 6.2.2018.1原始碼Matlab特徵函式
- 用遺傳演算法進行特徵選擇演算法特徵
- Relief 特徵選擇演算法簡單介紹特徵演算法
- 用xgboost模型對特徵重要性進行排序模型特徵排序
- xgboost模型特徵重要性的不同計算方式模型特徵
- 用xgboost獲取特徵重要性及應用特徵
- 用xgboost獲取特徵重要性原理及實踐特徵
- xgboost輸出特徵重要性排名和權重值特徵
- 大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)
- 【演算法】關於xgboost特徵重要性的評估演算法特徵
- 演算法金 | 決策樹、隨機森林、bagging、boosting、Adaboost、GBDT、XGBoost 演算法大全演算法隨機森林