最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

機(jī)器學(xué)習(xí)黑盒?SHAP(SHapley Additive exPlanations)Python的可解釋機(jī)器學(xué)習(xí)庫

2022-01-06 14:02 作者:python風(fēng)控模型  | 我要投稿

在公眾號「python風(fēng)控模型」里回復(fù)關(guān)鍵字:學(xué)習(xí)資料

QQ學(xué)習(xí)群:1026993837 領(lǐng)學(xué)習(xí)資料

圖片


模型可解釋性

這是一個(gè)關(guān)于錯(cuò)誤解釋機(jī)器學(xué)習(xí)模型的危險(xiǎn)以及正確解釋它的價(jià)值的故事。如果您發(fā)現(xiàn)諸如梯度提升機(jī)或隨機(jī)森林之類的集成樹模型的魯棒準(zhǔn)確性很有吸引力,但也需要解釋它們,那么我希望您發(fā)現(xiàn)這些信息有用且有幫助。

試想一下,我們的任務(wù)是預(yù)測個(gè)人?為n行的財(cái)務(wù)狀況。我們的模型越準(zhǔn)確,銀行賺的錢就越多,但由于此預(yù)測用于貸款申請,因此法律上也要求我們解釋為什么做出預(yù)測。在對多種模型類型進(jìn)行試驗(yàn)后,我們發(fā)現(xiàn) XGBoost 中實(shí)現(xiàn)的梯度提升樹提供了最佳準(zhǔn)確度。不幸的是,解釋 XGBoost 做出預(yù)測的原因似乎很難,所以我們只能選擇退回到線性模型,或者弄清楚如何解釋我們的 XGBoost 模型。沒有數(shù)據(jù)科學(xué)家愿意放棄準(zhǔn)確性……所以我們決定嘗試后者,并解釋復(fù)雜的 XGBoost 模型(它恰好有 1,247 個(gè)深度為 6 的樹)。

圖片

經(jīng)典的全局特征重要性度量

第一個(gè)明顯的選擇是使用 Python XGBoost 接口中的 plot_importance() 方法。它提供了一個(gè)非常吸引人的簡單條形圖,表示我們數(shù)據(jù)集中每個(gè)特征的重要性:(重現(xiàn)本文的代碼在Jupyter notebook 中)


圖片



如果我們查看 XGBoost 返回的特征重要性,我們會(huì)發(fā)現(xiàn)年齡在其他特征中占主導(dǎo)地位,顯然是最重要的收入預(yù)測指標(biāo)。我們可以停在這里,向我們的經(jīng)理報(bào)告直觀令人滿意的答案,即年齡是最重要的特征,其次是每周工作時(shí)間和教育水平。但是作為優(yōu)秀的數(shù)據(jù)科學(xué)家……我們查看了文檔,發(fā)現(xiàn)在 XGBoost 中測量特征重要性有三個(gè)選項(xiàng):

  1. 重量。使用特征在所有樹中拆分?jǐn)?shù)據(jù)的次數(shù)。

  2. 覆蓋。使用特征在所有樹中拆分?jǐn)?shù)據(jù)的次數(shù),權(quán)重由經(jīng)過這些拆分的訓(xùn)練數(shù)據(jù)點(diǎn)的數(shù)量決定。

  3. 獲得。?使用特征進(jìn)行拆分時(shí)獲得的平均訓(xùn)練損失減少量。

這些是我們可以在任何基于樹的建模包中找到的典型重要性度量。權(quán)重是默認(rèn)選項(xiàng),因此我們決定嘗試其他兩種方法,看看它們是否有所不同:


圖片



令我們沮喪的是,我們看到 XGBoost 提供的三個(gè)選項(xiàng)中的每一個(gè)的特征重要性排序都非常不同!對于cover方法,似乎資本收益特征最能預(yù)測收入,而對于收益方法,關(guān)系狀態(tài)特征主導(dǎo)所有其他特征。這應(yīng)該讓我們在不知道哪種方法最好的情況下,依賴這些度量來報(bào)告特征重要性會(huì)非常不舒服。

是什么讓衡量特征重要性的好壞?

如何將一種特征歸因方法與另一種進(jìn)行比較并不明顯。我們可以衡量每種方法在數(shù)據(jù)清理、偏差檢測等任務(wù)上的最終用戶性能。但這些任務(wù)只是對特征歸因方法質(zhì)量的間接衡量。在這里,我們將改為定義我們認(rèn)為任何好的特征歸因方法都應(yīng)該遵循的兩個(gè)屬性:

  1. 一致性。每當(dāng)我們更改模型以使其更多地依賴于某個(gè)特征時(shí),該特征的歸因重要性不應(yīng)降低。

  2. 準(zhǔn)確性。所有特征重要性的總和應(yīng)該等于模型的總重要性。(例如,如果重要性是由 R2 值衡量的,那么每個(gè)特征的屬性應(yīng)與完整模型的 R2 相加)

如果一致性不成立,那么我們不能比較任意兩個(gè)模型之間的歸因功能重要性有關(guān),因?yàn)槟敲?具有較高分配的歸屬并不意味著模型實(shí)際上更多地依賴于該功能。

如果準(zhǔn)確性無法保持,那么我們不知道每個(gè)特征的屬性如何結(jié)合起來代表整個(gè)模型的輸出。我們不能在方法完成后對屬性進(jìn)行標(biāo)準(zhǔn)化,因?yàn)檫@可能會(huì)破壞方法的一致性。

當(dāng)前的歸因方法是否一致且準(zhǔn)確?

回到我們作為銀行數(shù)據(jù)科學(xué)家的工作……我們意識到一致性和準(zhǔn)確性對我們很重要。事實(shí)上,如果一個(gè)方法不一致,我們不能保證具有最高屬性的特征實(shí)際上是最重要的。因此,我們決定使用兩個(gè)與我們在銀行的任務(wù)無關(guān)的非常簡單的樹模型來檢查每種方法的一致性:


圖片



模型的輸出是基于人的癥狀的風(fēng)險(xiǎn)評分。模型 A 只是一個(gè)簡單的“與”函數(shù),用于發(fā)燒和咳嗽的二元特征。模型 B 具有相同的功能,但只要咳嗽是肯定的,就 +10 。為了檢查一致性,我們必須定義“重要性”。在這里,我們將通過兩種方式定義重要性:1)作為我們刪除一組特征時(shí)模型預(yù)期準(zhǔn)確率的變化。2)作為我們刪除一組特征時(shí)模型預(yù)期輸出的變化。

重要性的第一個(gè)定義衡量特征對模型的全局影響。而第二個(gè)定義衡量特征對單個(gè)預(yù)測的個(gè)性化影響。在我們的簡單樹模型中,咳嗽特征在模型 B 中顯然更重要,無論是對于全局重要性還是對于發(fā)燒和咳嗽都是肯定的個(gè)體預(yù)測的重要性。

上面的weight、cover和gain方法都是全局特征歸因方法。但是當(dāng)我們在銀行中部署我們的模型時(shí),我們還需要為每個(gè)客戶提供個(gè)性化的解釋。為了檢查一致性,我們在簡單的樹模型上運(yùn)行了五種不同的特征歸因方法:

  1. 樹形狀。我們提出了一種新的個(gè)性化方法。

  2. 薩巴斯。一種個(gè)性化的啟發(fā)式特征歸因方法。

  3. 平均值(|樹形狀|)?;趥€(gè)性化 Tree SHAP 歸因的平均幅度的全局歸因方法。

  4. 獲得。與上面 XGBoost 中使用的方法相同,也等效于 scikit-learn 樹模型中使用的 Gini 重要性度量。

  5. 拆分計(jì)數(shù)。代表 XGBoost 中密切相關(guān)的“權(quán)重”和“覆蓋”方法,但使用“權(quán)重”方法計(jì)算。

  6. 排列。當(dāng)在測試數(shù)據(jù)集中隨機(jī)排列單個(gè)特征時(shí),導(dǎo)致模型準(zhǔn)確度下降。


圖片



之前除了特征排列以外的所有方法都是不一致的!這是因?yàn)樗鼈冊谀P?B 中對咳嗽的重要性低于模型 A。不能相信不一致的方法可以正確地為最有影響的特征分配更多的重要性。精明的讀者會(huì)注意到,當(dāng)我們研究的經(jīng)典特征歸因方法在同一模型上相互矛盾時(shí),這種不一致就已經(jīng)在早些時(shí)候表現(xiàn)出來了。那么精度屬性呢?事實(shí)證明,Tree SHAP、Sabaas 和 Gain 都如之前定義的那樣準(zhǔn)確,而特征排列和拆分計(jì)數(shù)則不然。

也許令人驚訝的是,像增益(基尼重要性)這樣廣泛使用的方法會(huì)導(dǎo)致如此明顯的不一致結(jié)果。為了更好地理解為什么會(huì)發(fā)生這種情況,讓我們檢查一下模型 A 和模型 B 的增益是如何計(jì)算的。為了簡單起見,我們假設(shè)我們的數(shù)據(jù)集的 25% 落在每個(gè)葉子上,并且每個(gè)模型的數(shù)據(jù)集都有完全匹配的標(biāo)簽?zāi)P偷妮敵觥?/p>

如果我們將均方誤差 (MSE) 視為我們的損失函數(shù),那么在對模型 A 進(jìn)行任何拆分之前,我們從 1200 的 MSE 開始。這是來自 20 的常數(shù)平均預(yù)測的誤差。在模型 A 中對發(fā)燒進(jìn)行拆分后, MSE 下降到 800,因此增益方法將 400 的下降歸因于發(fā)燒特征。然后在咳嗽特征上再次拆分導(dǎo)致 MSE 為 0,并且增益方法將這個(gè) 800 的下降歸因于咳嗽特征。在模型 B 中,相同的過程導(dǎo)致分配給發(fā)燒特征的重要性為 800,分配給咳嗽特征的重要性為 625 :

圖片



通常我們期望樹根附近的特征比葉子附近分裂的特征更重要(因?yàn)闃涫秦澙返貥?gòu)造的)。然而,增益方法傾向于將更多的重要性歸因于較低的分裂。這種偏見會(huì)導(dǎo)致不一致,當(dāng)咳嗽變得更加重要時(shí)(因此從根本上分開),其歸因重要性實(shí)際上下降了。個(gè)性化的 Saabas 方法(由treeinterpreter 使用package) 在我們下降樹時(shí)計(jì)算預(yù)測的差異,因此它也遭受相同的偏向于樹中較低的分裂。隨著樹變得更深,這種偏差只會(huì)增加。相比之下,Tree SHAP 方法在數(shù)學(xué)上等效于對特征的所有可能排序的預(yù)測差異進(jìn)行平均,而不僅僅是由它們在樹中的位置指定的排序。

只有 Tree SHAP 既一致又準(zhǔn)確,這并非巧合。鑒于我們想要一種既一致又準(zhǔn)確的方法,結(jié)果證明只有一種方法可以分配特征重要性。詳細(xì)信息在我們最近的NIPS 論文中,但總結(jié)是博弈論關(guān)于利潤公平分配的證明導(dǎo)致機(jī)器學(xué)習(xí)中特征歸因方法的唯一性結(jié)果。這些獨(dú)特的值被稱為 Shapley 值,以 1950 年代導(dǎo)出它們的 Lloyd Shapley 的名字命名。我們在此使用的 SHAP 值來自與 Shapley 值相關(guān)的幾種個(gè)性化模型解釋方法的統(tǒng)一。Tree SHAP 是一種快速算法,可以在多項(xiàng)式時(shí)間內(nèi)準(zhǔn)確計(jì)算樹的 SHAP 值,而不是經(jīng)典的指數(shù)運(yùn)行時(shí)(參見arXiv)。

自信地解釋我們的模型

堅(jiān)實(shí)的理論論證和快速實(shí)用的算法相結(jié)合,使 SHAP 值成為自信地解釋樹模型(例如 XGBoost 的梯度提升機(jī))的強(qiáng)大工具。有了這種新方法,我們又回到了解釋銀行 XGBoost 模型的任務(wù)上:

圖片



我們可以看到,關(guān)系特征實(shí)際上是最重要的,其次是年齡特征。由于 SHAP 值保證了一致性,因此我們無需擔(dān)心在使用增益或拆分計(jì)數(shù)方法之前發(fā)現(xiàn)的各種矛盾。但是,由于我們現(xiàn)在對每個(gè)人都有個(gè)性化的解釋,因此我們可以做的不僅僅是制作條形圖。我們可以繪制數(shù)據(jù)集中每個(gè)客戶的特征重要性。在十八Python包讓一切變得簡單。我們首先調(diào)用 shap.TreeExplainer(model).shap_values(X) 來解釋每個(gè)預(yù)測,然后調(diào)用 shap.summary_plot(shap_values, X) 來繪制這些解釋:

圖片



這些特征按均值(|Tree SHAP|)排序,因此我們再次將關(guān)系特征視為年收入超過 5 萬美元的最強(qiáng)預(yù)測因子。通過繪制特征對每個(gè)樣本的影響,我們還可以看到重要的異常值效應(yīng)。例如,雖然資本收益在全球范圍內(nèi)并不是最重要的特征,但對于部分客戶而言,這是迄今為止最重要的特征。按特征值著色的模式向我們展示了諸如年輕如何降低您賺取超過 5 萬美元的機(jī)會(huì),而高等教育增加您賺取超過 5 萬美元的機(jī)會(huì)。

我們可以停在這里向我們的老板展示這個(gè)情節(jié),但讓我們更深入地研究其中的一些功能。我們可以通過繪制年齡 SHAP 值(對數(shù)幾率的變化)與年齡特征值來為年齡特征做到這一點(diǎn):

圖片



在這里,我們看到了 XGBoost 模型捕捉到的年齡對收入潛力的明顯影響。請注意,與傳統(tǒng)的部分依賴圖(顯示更改特征值時(shí)的平均模型輸出)不同,這些 SHAP 依賴圖顯示交互效應(yīng)。盡管數(shù)據(jù)集中的許多人都 20 歲,但他們的年齡對他們的預(yù)測的影響程度有所不同,如 20 歲點(diǎn)的垂直離散所示。這意味著其他特征正在影響年齡的重要性。為了了解哪些特征可能是這種效應(yīng)的一部分,我們根據(jù)受教育年限對點(diǎn)進(jìn)行著色,并看到高水平的教育在 20 多歲時(shí)降低了年齡的影響,但在 30 多歲時(shí)提高了它:


圖片



如果我們?yōu)槊恐芄ぷ鞯男r(shí)數(shù)制作另一個(gè)依賴圖,我們會(huì)看到工作更多的好處在大約 50 小時(shí)/周時(shí)穩(wěn)定下來,如果您已婚,額外工作不太可能表明高收入:

圖片



解釋你自己的模型

這個(gè)簡單的演練旨在反映您在設(shè)計(jì)和部署自己的模型時(shí)可能經(jīng)歷的過程。在十八包很容易通過PIP安裝,我們希望它可以幫助你有信心開拓您的模型。它包含的不僅僅是本文所涉及的內(nèi)容,包括 SHAP 交互值、模型不可知的 SHAP 值估計(jì)和其他可視化。筆記本可以在各種有趣的數(shù)據(jù)集上說明所有這些功能。例如,您可以在解釋 XGBoost 死亡率模型的筆記本中根據(jù)您的健康檢查查看您死亡的主要原因。對于 Python 以外的語言,Tree SHAP 也已直接合并到核心 XGBoost 和 LightGBM 包中。


歡迎關(guān)注《python金融風(fēng)控評分卡模型和數(shù)據(jù)分析(加強(qiáng)版)》,學(xué)習(xí)shap,集成樹算法feature importance相關(guān)知識和系統(tǒng)化風(fēng)控建模內(nèi)容

地址1

https://ke.qq.com/course/package/43071

地址2

https://study.163.com/series/1202915601.htm?share=2&shareId=400000000398149








機(jī)器學(xué)習(xí)黑盒?SHAP(SHapley Additive exPlanations)Python的可解釋機(jī)器學(xué)習(xí)庫的評論 (共 條)

分享到微博請遵守國家法律
石家庄市| 定结县| 包头市| 通州区| 革吉县| 项城市| 女性| 南阳市| 金昌市| 汉沽区| 南陵县| 进贤县| 嘉禾县| 运城市| 丹巴县| 鹰潭市| 凤台县| 娄烦县| 溆浦县| 广河县| 马鞍山市| 田林县| 冀州市| 原平市| 鄯善县| 禄丰县| 台州市| 白朗县| 沈丘县| 桂平市| 汉中市| 微山县| 洛宁县| 安化县| 江源县| 黎平县| 通许县| 罗田县| 建阳市| 集安市| 登封市|