自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何解決機(jī)器學(xué)習(xí)樹集成模型的解釋性問題

人工智能 機(jī)器學(xué)習(xí)
前些天在同行交流群里,有個(gè)話題一直在群里熱烈地討論,那就是 如何解釋機(jī)器學(xué)習(xí)模型 ,因?yàn)樵陲L(fēng)控領(lǐng)域,一個(gè)模型如果不能得到很好的解釋一般都不會(huì)被通過的,在銀行里會(huì)特別的常見,所以大多數(shù)同行都是會(huì)用 LR 來建模。

01 機(jī)器學(xué)習(xí)模型不可解釋的原因

前些天在同行交流群里,有個(gè)話題一直在群里熱烈地討論,那就是 如何解釋機(jī)器學(xué)習(xí)模型 ,因?yàn)樵陲L(fēng)控領(lǐng)域,一個(gè)模型如果不能得到很好的解釋一般都不會(huì)被通過的,在銀行里會(huì)特別的常見,所以大多數(shù)同行都是會(huì)用 LR 來建模。但是,機(jī)器學(xué)習(xí)的模型算法這么多,不用豈不是很浪費(fèi)?而且有些算法還十分好用的,至少在效果上,如XGBoost、GBDT、Adaboost。

那么,有同學(xué)就會(huì)問了,為什么這些算法會(huì)沒有解釋性呢?其實(shí)是這樣子的,剛剛所說的那些模型都是一些集成模型,都是由復(fù)雜的樹結(jié)構(gòu)去組成的模型,對(duì)于人類來說我們很難直觀地去解釋為什么這個(gè)客戶就是爛,到底是什么特征導(dǎo)致他爛?

02 特征重要度方法盤點(diǎn)

其實(shí)像XGBoost之類的模型還算是有解釋性的了,我們常常都會(huì)看到有人用信息增益、節(jié)點(diǎn)分裂數(shù)來衡量特征的重要度,但是這真的是合理的嗎?

在解釋是否合理前,有2個(gè)概念需要先給大家普及一下:

1)一致性

指的是一個(gè)模型的特征重要度,不會(huì)因?yàn)槲覀兏牧四硞€(gè)特征,而改變其重要度。比如A模型的特征X1的重要度是10,那么如果我們?cè)谀P屠锝o特征X2加些權(quán)重以增大其重要度,重新計(jì)算重要度后,特征X1的重要度仍是10。不一致性可能會(huì)導(dǎo)致具有重要度較大的特征比具有重要度較小的特征更不重要。

2)個(gè)體化

指的是重要度的計(jì)算是可以針對(duì)個(gè)體,而不需要整個(gè)數(shù)據(jù)集一起計(jì)算。

好了,有了上面的認(rèn)識(shí),下面就來盤點(diǎn)一下目前常見的特征重要度計(jì)算的方法:

1)Tree SHAP:即 shapley加法解釋,基于博弈論和局部解釋的統(tǒng)一思想,通過樹集成和加法方法激活shap值用于特征歸因。

2)Saabas:一種個(gè)性化啟發(fā)式特征歸因方法。

3)mean(| Tree SHAP |):基于個(gè)性化的啟發(fā)式SHAP平均的全局屬性方法。

4)Gain:即增益,由Breiman等人提出的一種全局的特征重要度計(jì)算方法,在XGBoost、scikit learn等包中都可以調(diào)用,它是給定特征在分裂中所帶來的不純度的減少值,經(jīng)常會(huì)被用來做特征選擇。

5)Split Count:即分裂次數(shù)統(tǒng)計(jì),指的是給定特征被用于分裂的次數(shù)(因?yàn)樵街匾脑饺菀妆灰茫驼撐囊貌畈欢嘁粋€(gè)道理吧)。

6)Permutation:即排序置換,指的是隨機(jī)排列某個(gè)特征,看下模型效果誤差的變化,如果特征重要的話,模型誤差會(huì)變化得特別大。

其中,屬于個(gè)體化的僅有1-2,3-6均屬于全局性統(tǒng)計(jì),也就是說需要整個(gè)數(shù)據(jù)集進(jìn)去計(jì)算的。

而對(duì)于一致性情況,我們有一個(gè)例子來證明:

有2個(gè)模型,Model A 和 Model B,其中A和B完全一致,但是我們?cè)谟?jì)算預(yù)測(cè)值的時(shí)候,強(qiáng)行給 Model B 的 特征 Cough 加上 10分。如下圖所示(點(diǎn)擊看大圖):

從實(shí)驗(yàn)結(jié)果可以看出以上6種方法的差別:

1)Saabas、Gain、Split Count均不滿足 一致性 的要求,在改變了某個(gè)特征的權(quán)重之后,原先的特征重要度發(fā)生了改變,也直接導(dǎo)致重要度排序的改變。

2)而滿足一致性要求的方法只有 Tree SHAP 和 Permutation了,而Permutation又是全局的方法,因此就只剩下了 Tree SHAP了。

03 SHAP可能是出路,SHAP到底是什么

SHAP(Shapley Additive exPlanation)是解釋任何機(jī)器學(xué)習(xí)模型輸出的統(tǒng)一方法。SHAP將博弈論與局部解釋聯(lián)系起來,根據(jù)期望表示唯一可能的一致和局部精確的加性特征歸屬方法。

以上是官方的定義,乍一看不知所云,可能還是要結(jié)合論文(Consistent Individualized Feature Attribution for Tree Ensembles)來看了。

Definition 2.1. Additive feature attribution methods have an explanation model g that is a linear function of binary variables

M是輸入特征的個(gè)數(shù), ϕi’ 就是特征的貢獻(xiàn)度。ϕ0 是一個(gè)常數(shù)(指的是所有樣本的預(yù)測(cè)均值)。SHAP 值有唯一的解,也具有3個(gè)特性:Local Accuracy、Missingness、Consistency。

1)Local Accuracy:即局部準(zhǔn)確性,表示每個(gè)特征的重要度之和等于整個(gè)Function的重要度

2)Missingness:即缺失性,表示缺失值對(duì)于特征的重要度沒有貢獻(xiàn)。

3)Consistency:即一致性,表示改變模型不會(huì)對(duì)特征的重要度造成改變。

簡單來說,SHAP值可能是唯一能夠滿足我們要求的方法,而我們上面講到的XGBoost、GBDT等都是樹模型,所以這里會(huì)用到 TREE SHAP。

04 SHAP的案例展示

0401 SHAP的安裝

安裝還是蠻簡單的,可以通過終端的pip安裝或者conda安裝 

  1. pip install shap  
  2. or  
  3. conda install -c conda-forge shap 

0402 對(duì)樹集成模型進(jìn)行解釋性展示

目前TREE SHAP可以支持的樹集成模型有XGBoost, LightGBM, CatBoost, and scikit-learn tree models,可以看看下面的demo: 

  1. import xgboost  
  2. import shap  
  3. # load JS visualization code to notebook  
  4. shap.initjs()  
  5. """訓(xùn)練 XGBoost 模型,SHAP里提供了相關(guān)數(shù)據(jù)集"""  
  6. X,y = shap.datasets.boston()  
  7. model = xgboost.train({"learning_rate": 0.01}, xgboost.DMatrix(X, label=y), 100)  
  8. """  
  9. 通過SHAP值來解釋預(yù)測(cè)值  
  10. (同樣的方法也適用于 LightGBM, CatBoost, and scikit-learn models)  
  11. """  
  12. explainer = shap.TreeExplainer(model)  
  13. shap_values = explainer.shap_values(X)  
  14. # 可視化解釋性 (use matplotlib=True to avoid Javascript)  
  15. shap.force_plot(explainer.expected_value, shap_values[0,:], X.iloc[0,:]) 

output:

上面的圖展示了每個(gè)特征的重要度,會(huì)預(yù)先計(jì)算好一個(gè)均值,將預(yù)測(cè)值變得更高的偏向于紅色這邊,反之藍(lán)色。

這個(gè)數(shù)據(jù)集有這些特征:'CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT' 

  1. # visualize the training set predictions  
  2. shap.force_plot(explainer.expected_value, shap_values, X) 

output:

上圖可以看出每個(gè)特征之間的相互作用(輸出圖是可以交互的)。

但是為了理解單個(gè)特性如何影響模型的輸出,我們可以將該特性的SHAP值與數(shù)據(jù)集中所有示例的特性值進(jìn)行比較。由于SHAP值代表了模型輸出中的一個(gè)特性的變化,下面的圖代表了預(yù)測(cè)的房價(jià)隨著RM(一個(gè)區(qū)域中每棟房子的平均房間數(shù))的變化而變化的情況。

單一RM值的垂直色散表示與其他特征的相互作用。要幫助揭示這些交互依賴關(guān)系,dependence_plot 自動(dòng)選擇 另一個(gè)特征來著色。比如使用RAD著色,突顯了RM(每戶平均房數(shù))對(duì)RAD的值較高地區(qū)的房價(jià)影響較小。 

  1. """創(chuàng)建一個(gè)SHAP圖用于展示 單一特征在整個(gè)數(shù)據(jù)集的表現(xiàn)情況,每個(gè)點(diǎn)代表一個(gè)樣本"""  
  2. shap.dependence_plot("RM", shap_values, X) 

output:

為了得到整體水平上每個(gè)特征的重要度情況,我們可以畫出所有特征對(duì)于所有sample的SHAP值,然后根據(jù)SHAP值之和來降序排序,顏色代表特征重要度(紅色代表高,藍(lán)色代表低),每個(gè)點(diǎn)代表一個(gè)樣本。 

  1. """畫出所有特征的重要度排序圖"""  
  2. shap.summary_plot(shap_values, X) 

output:

我們也可以只是顯示SHAP值的所有樣本的均值,畫出bar圖。 

  1. shap.summary_plot(shap_values, X, plot_type="bar"

output:

References

[1] A Unified Approach to Interpreting Model Predictions

http://papers.nips.cc/paper/7...

[2] Consistent Individualized Feature Attribution for Tree Ensembles

https://arxiv.org/pdf/1802.03...

[3] Interpretable Machine Learning

https://christophm.github.io/...

[4] shap 官方文檔

https://github.com/slundberg/...

本文由博客一文多發(fā)平臺(tái) OpenWrite 發(fā)布! 

 

責(zé)任編輯:龐桂玉 來源: segmentfault
相關(guān)推薦

2019-08-29 18:07:51

機(jī)器學(xué)習(xí)人工智能

2021-01-08 10:47:07

機(jī)器學(xué)習(xí)模型算法

2023-02-09 16:32:16

混合精度深度學(xué)習(xí)

2017-06-16 22:14:45

機(jī)器學(xué)習(xí)數(shù)據(jù)不平衡

2017-03-28 09:40:23

機(jī)器學(xué)習(xí)數(shù)據(jù)不平衡

2017-09-28 10:40:10

深度學(xué)習(xí)多體問題多代理系統(tǒng)

2017-09-23 22:07:24

深度學(xué)習(xí)N 體問題GAN

2019-07-29 08:22:48

SIEM安全信息和事件管理系統(tǒng)應(yīng)用安全

2012-09-05 11:09:15

SELinux操作系統(tǒng)

2016-12-09 09:21:45

分布式系統(tǒng)大數(shù)據(jù)

2024-05-28 08:00:00

人工智能機(jī)器學(xué)習(xí)

2022-10-08 23:50:04

機(jī)器學(xué)習(xí)樹模型神經(jīng)網(wǎng)絡(luò)

2017-10-17 09:21:06

2022-06-07 10:25:45

機(jī)器學(xué)習(xí)Shapash

2021-03-18 14:03:11

人工智能機(jī)器學(xué)習(xí)

2024-11-04 14:33:04

機(jī)器學(xué)習(xí)SHAP黑盒模型

2010-09-30 14:29:14

IE7.JS

2025-01-23 08:23:12

2019-12-09 16:08:19

區(qū)塊鏈分片分布式

2021-12-30 20:20:46

機(jī)器學(xué)習(xí)銷售語言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)