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