【機器學(xué)習(xí)】樹模型決策的可解釋性與微調(diào)(Python)(1)
本文示例項目沿用之前文章的數(shù)據(jù):一文梳理金融風(fēng)控建模全流程(Python))。
一、樹模型的解釋性
集成學(xué)習(xí)樹模型因為其強大的非線性能力及解釋性,在表格類數(shù)據(jù)挖掘等任務(wù)中應(yīng)用頻繁且表現(xiàn)優(yōu)異。
模型解釋性對于某些領(lǐng)域(如金融風(fēng)控)是極為看重的,對于樹模型的解釋性,我們常常可以通過輸出樹模型的結(jié)構(gòu)或使用shap等解釋性框架的方法:
graphviz 輸出樹結(jié)構(gòu)
# 需要先安裝https://graphviz.org/download/import osos.environ["PATH"] += os.pathsep + 'D:/Program Files/Graphviz/bin/' # 安裝路徑
for k in range(n_estimators): #遍歷n_estimators棵樹的結(jié)構(gòu) ax = lightgbm.plot_tree(lgb, tree_index=k, figsize=(30,20), show_info=['split_gain','internal_value','internal_count','internal_weight','leaf_count','leaf_weight','data_percentage'])
plt.show()
輸出樹的決策路徑是很直接的方法,但對于大規(guī)模(樹的數(shù)目>3基本就比較繞了)的集成樹模型來說,決策就太過于復(fù)雜了,最終決策要每棵樹累加起來,很難理解。。(相關(guān)樹的可解釋工作,可參考如下論文:https://www.cs.sjtu.edu.cn/~kzhu/papers/kzhu-infocode.pdf)
接下介紹下常用的幾種框架的方法輔助去解釋模型:
shap框架解釋性
SHAP基于Shapley值,Shapley值是經(jīng)濟學(xué)家Lloyd Shapley提出的博弈論概念。它的核心思想是計算特征對模型輸出的邊際貢獻(xiàn),再從全局和局部兩個層面對“黑盒模型”進(jìn)行解釋。如下幾行代碼就可以展示該模型的變量對于決策的影響,以Insterest歷史利率為例,利率特征值越高(藍(lán)色為低,紅色為高),對應(yīng)shap值越高,說明決策結(jié)果越趨近1(在本例金融風(fēng)控項目里面也就是數(shù)值越大,越容易違約)
## 本文代碼請見 https://github.com/aialgorithm/Blog/tree/master/projects/%E6%B5%B7%E5%A4%96%E9%87%91%E8%9E%8D%E9%A3%8E%E6%8E%A7%E5%AE%9E%E8%B7%B5
### 需要先pip install shapimport shap
explainer = shap.TreeExplainer(lgb)shap_values = explainer.shap_values(pd.concat([train_x,test_x]))shap.summary_plot(shap_values[1], pd.concat([train_x,test_x]),max_display=5,plot_size=(5,5)) #特征重要性可視化
其他模型可解釋性框架
LIME
在可解釋性領(lǐng)域,最早出名的方法之一是LIME。它可以幫助解釋機器學(xué)習(xí)模型正在學(xué)習(xí)什么以及為什么他們以某種方式預(yù)測。Lime目前支持對表格的數(shù)據(jù),文本分類器和圖像分類器的解釋。
知道為什么模型會以這種方式進(jìn)行預(yù)測對于調(diào)整算法是至關(guān)重要的。借助LIME的解釋,能夠理解為什么模型以這種方式運行。如果模型沒有按照計劃運行,那么很可能在數(shù)據(jù)準(zhǔn)備階段就犯了錯誤。
Shapash
“ Shapash是一個使機器學(xué)習(xí)對每個人都可以進(jìn)行解釋和理解Python庫。Shapash提供了幾種類型的可視化,顯示了每個人都能理解的明確標(biāo)簽。數(shù)據(jù)科學(xué)家可以更輕松地理解他們的模型并分享結(jié)果。最終用戶可以使用最標(biāo)準(zhǔn)的摘要來理解模型是如何做出判斷的。”
Shapash庫可以生成交互式儀表盤,并收集了許多可視化圖表。與外形/石灰解釋性有關(guān)。它可以使用SHAP/Lime作為后端,也就是說它只提供了更好看的圖表。
使用Shapash構(gòu)建特征貢獻(xiàn)圖
InterpretML
InterpretML是一個開源的Python包,它向研究人員提供機器學(xué)習(xí)可解釋性算法。InterpretML支持訓(xùn)練可解釋模型(glassbox),以及解釋現(xiàn)有的ML管道(blackbox)。
ELI5
ELI5是一個可以幫助調(diào)試機器學(xué)習(xí)分類器并解釋它們的預(yù)測的Python庫。目前支持以下機器學(xué)習(xí)框架:scikit-learn、XGBoost、LightGBM CatBoost、Keras。
ELI5有兩種主要的方法來解釋分類或回歸模型:檢查模型參數(shù)并說明模型是如何全局工作的;檢查模型的單個預(yù)測并說明什么模型會做出這樣的決定。
OmniXAI
OmniXAI (Omni explained AI的簡稱),是Salesforce最近開發(fā)并開源的Python庫。它提供全方位可解釋的人工智能和可解釋的機器學(xué)習(xí)能力來解決實踐中機器學(xué)習(xí)模型在產(chǎn)生中需要判斷的幾個問題。對于需要在ML過程的各個階段解釋各種類型的數(shù)據(jù)、模型和解釋技術(shù)的數(shù)據(jù)科學(xué)家、ML研究人員,OmniXAI希望提供一個一站式的綜合庫,使可解釋的AI變得簡單。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。
攝像頭相關(guān)文章:攝像頭原理