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