RF,GBDT ,XGBoost 特徵選擇方法

2021-09-27 03:45:01 字數 853 閱讀 2076

rf,gbdt,xgboost 都可以做特徵選擇,屬於特徵選擇中的嵌入式方法,比如在sklearn 中,可以用屬性feature_importances_ 去查特徵的重要度。如何計算的

1  隨機森林

用袋外資料oob 做**,隨機森林在每次重抽樣建立決策樹時,都會有一些樣本沒有被選中,那麼就可以用這些樣本做交叉驗證,這也是隨機森林的優點之一,它可以不用做交叉驗證,直接用oob_score_ 去對模型效能進行評估。

具體的方法就是:

1) 對於每一顆決策樹,用oob 計算袋外資料誤差,記為erroob2.

2) 然後隨機對oob 所有樣本的特徵i 加入雜訊干擾,再次計算袋外資料誤差,記為erroob2

3) 假設有n 顆樹,特徵i的重要性為sum(erroob2-erroob1)/n

如果加入隨機雜訊後,袋外資料準確率大幅度下降,說明這個特徵對**結果有很大的影響,進而說明它的重要程度比較高。

2 gbdt

主要通過計算特徵i 在單顆樹中重要度的平均值,計算公式如下:

其中,m 是樹的數量,特徵i 在單顆樹的重要度主要是通過計算按這個特徵i **之後損失的減少值

其中l 是葉子節點的數量,l-1就是非葉子結點的數量。

3 xgboost 

xgboost 是通過該特徵每棵樹中**次數的和去計算的,比如這個特徵在第一棵樹**一次,第二棵樹2次.......,那麼這個特徵的得分就是(1+2+3.....)。

RF GBDT XGBOOST的區別與聯絡

2 xgboost 考慮了訓練資料為稀疏值的情況,可以為缺失值或者指定的值指定分支的預設方向,這能大大提公升演算法的效率 提到50倍。特徵列排序後以塊的形式儲存在記憶體中,在迭代中可以重複使用 雖然boosting演算法迭代必須序列,但是在處理每個特徵列時可以做到並行。按照特徵列方式儲存能優化尋找最...

RF GBDT XGBOOST的區別與聯絡

gradient boosting gb 機器學習中的學習演算法的目標是為了優化或者說最小化loss function,gradient boosting的思想是迭代生多個 m個 弱的模型,然後將每個弱模型的 結果相加,後面的模型fm 1 x 基於前面學習模型的fm x 的效果生成的。gradien...

特徵工程 特徵交叉 交叉特徵 特徵組合

關於特徵交叉的作用以及原理,我這裡不進行詳細描述,因為大佬們已經說得很清楚了,這裡就附上幾個連線 特徵組合 特徵交叉 feature crosses 結合sklearn進行特徵工程 對於特徵離散化,特徵交叉,連續特徵離散化非常經典的解釋 下面說怎樣製作和交叉特徵 多項式生成函式 sklearn.pr...