【演算法】關於xgboost特徵重要性的評估
xgboost很好用,但是很多同學對它特徵重要性評估的原理不太明白。今天簡單梳理下:
特徵重要性函式
呼叫xgb.feature_importances_函式,即可求出各個特種的重要性,這是我們的目標。
現在就來探究一下,這個feature_importances是怎麼得到的。
那麼重要性指標到底是如何評價的呢?進入feature_importances_,可以看到:
①求每個特徵對應的score
②把每個特徵得到的score/sum(score)
大概思路如此。
那麼,現在就要知道,這個score到底是怎麼求得的?
此時,我們需要知道,特徵重要性指標評估三種常用的方式:
①gain 增益意味著相應的特徵對通過對模型中的每個樹採取每個特徵的貢獻而計算出的模型的相對貢獻。與其他特徵相比,此度量值的較高值意味著它對於生成預測更為重要。
②cover 覆蓋度量指的是與此功能相關的觀測的相對數量。例如,如果您有100個觀察值,4個特徵和3棵樹,並且假設特徵1分別用於決定樹1,樹2和樹3中10個,5個和2個觀察值的葉節點;那麼該度量將計算此功能的覆蓋範圍為10 + 5 + 2 = 17個觀測值。這將針對所有4項功能進行計算,並將以17個百分比表示所有功能的覆蓋指標。
③freq 頻率(頻率)是表示特定特徵在模型樹中發生的相對次數的百分比。在上面的例子中,如果feature1發生在2個分裂中,1個分裂和3個分裂在每個樹1,樹2和樹3中;那麼特徵1的權重將是2 + 1 + 3 = 6。特徵1的頻率被計算為其在所有特徵的權重上的百分比權重。
增益是解釋每個特徵的相對重要性的最相關屬性。
至於gain的演算法,可以回顧下cart或者xgboost相關內容:
繼續點選進入get_score函式。可以看到,原始碼中,就是用gain來做重要性判斷的。
這麼說顯得稍微抽象一點,我們畫樹圖,或者直接把trees列印出來:
可以看到,每顆tree都有對應的fid、gain、cover、leaf,只需要把對應的gain提取出來即可。
回到get_score函式,可以看到,大致思路如我所想:
①for tree in trees
②for line in tree.split
③get gain
這裡需要注意的是:特徵gain的疊加性,判斷一個特徵的gain,需要把其在每棵樹對應的gain分別得到,然後求平均,這樣比較靠譜。
一頓操作之後,可以看到,每個特徵對應的average gain就得到了:
再根據之前所說的求重要性佔比,即可得到一個特徵就增益係數gain而言,對整個模型的重要性程度
對資料分析、機器學習、資料科學、金融風控等感興趣的小夥伴,需要資料集、程式碼、行業報告等各類學習資料,可新增微信:wu805686220(記得要備註喔!),也可關注微信公眾號:風控圏子(別打錯字,是圏子,不是圈子,算了直接複製吧!)
關注公眾號後,可聯絡圈子助手加入如下社群:
- 機器學習風控討論群(微信群)
- 反欺詐討論群(微信群)
- python學習交流群(微信群)
- 研習社資料(qq群:102755159)(乾貨、資料、專案、程式碼、報告、課件)
相互學習,共同成長。
相關文章
- xgboost特徵重要性特徵
- xgboost 特徵重要性計算特徵
- 特徵重要性評估的隨機森林演算法與Python實現(三)特徵隨機森林演算法Python
- XGBoost 輸出特徵重要性以及篩選特徵特徵
- 【特徵工程】(資料)使用Xgboost篩選特徵重要性特徵工程
- xgboost模型特徵重要性的不同計算方式模型特徵
- xgboost 特徵重要性選擇 / 看所有特徵哪個重要特徵
- XGBoost學習(六):輸出特徵重要性以及篩選特徵特徵
- 用xgboost模型對特徵重要性進行排序模型特徵排序
- 用xgboost獲取特徵重要性及應用特徵
- 用xgboost獲取特徵重要性原理及實踐特徵
- xgboost輸出特徵重要性排名和權重值特徵
- 使用XGboost模組XGBClassifier、plot_importance來做特徵重要性排序Import特徵排序
- 有效供應商評估流程的重要性
- xgboost 特徵選擇,篩選特徵的正要性特徵
- 機器學習之 基於xgboost的特徵篩選機器學習特徵
- RF、GBDT、XGboost特徵選擇方法特徵
- 分類演算法的評估指標演算法指標
- xgboost 設定每條資料的重要性
- Python中XGBoost的特性重要性和特性選擇Python
- 分別利用xgbboost和catboost演算法做特徵重要性排序演算法特徵排序
- 【推薦演算法】推薦系統的評估演算法
- 關於資料安全風險評估,你不知道的這些事!
- 關於特徵值和特徵向量的幾何直覺意義特徵
- OCR演算法識別率怎麼評估?演算法
- sklearn與XGBoost庫xgboost演算法引數總結演算法
- 說說xgboost演算法演算法
- 大資料測試 - 相關性評估大資料
- 自我評估
- xgboost get_fscore 判斷特徵重要程度的三種指標特徵指標
- 六種GAN評估指標的綜合評估實驗,邁向定量評估GAN的重要一步指標
- 可用於資料庫對比評估的FURPS+模型資料庫模型
- XGBoost演算法原理小結演算法
- 演算法金 | 必會的機器學習評估指標演算法機器學習指標
- 基於Python的Xgboost模型實現Python模型
- kafka容量評估Kafka
- 精讀《12 個評估 JS 庫你需要關心的事》JS
- 評估Kubernetes中的Serverless框架Server框架