又一機器學(xué)習(xí)模型解釋神器:Shapash
什么是 Shapash
模型可解釋性和可理解性一直是許多研究論文和開源項目的關(guān)注的重點。并且很多項目中都配備了數(shù)據(jù)專家和訓(xùn)練有素的專業(yè)人員。
Shapash 適用于大多數(shù) sklearn、lightgbm、xgboost、catboost 模型,并可用于分類和回歸任務(wù)。它利用 Shap 后端來計算特征的局部貢獻度,但是,這可以用其他一些計算局部貢獻度的策略代替。數(shù)據(jù)科學(xué)家可以利用 Shapash 解釋器對他們的模型進行調(diào)查和故障排除,或者部署以提供每個推測的可視化。并且它還可以用于制作可以為最終客戶和企業(yè)家?guī)砭薮髢r值的 Web 應(yīng)用程序。
shabash 庫
Shapash的目標
1. 顯示清晰合理的結(jié)果
繪圖和輸出使用每個組件及其模式的標簽:
2. Web 應(yīng)用程序
數(shù)據(jù)科學(xué)家可以通過使用 Web 應(yīng)用程序輕松探索全局和局部鄰域之間的邏輯,從而快速理解他們的模型,并了解各種關(guān)鍵點如何發(fā)揮作用:
shapash 庫 webapp
3. 總結(jié)并導(dǎo)出解釋
Shapash 提出了一個簡短而清晰的解釋。它允許每個客戶(無論他們的背景是什么),都能理解對托管模型清晰的解釋,因為對 Shapash 特征進行了總結(jié)和清晰的說明。
4. 完整的數(shù)據(jù)科學(xué)報告
這里有完整的數(shù)據(jù)報告可以查看:https://shapash-demo.ossbymaif.fr/
Shapash 功能
Shapash 的一些功能如下所示:
1.機器學(xué)習(xí)模型:它適用于分類(二元或多類問題)和回歸問題。它支持多種模型,如 Catboost、Xgboost、LightGBM、Sklearn Ensemble、線性模型和 SVM。
2.特征編碼:它支持大量的編碼技術(shù)來處理我們數(shù)據(jù)集中的分類特征,如單熱編碼、序數(shù)編碼、Base N 編碼、目標編碼或二進制編碼等。
3.SklearnColumnTransformer: OneHotEncoder、OrdinalEncoder、StandardScaler、QuantileTransformer 或 PowerTransformer
4.可視化: 提供一組視覺效果以輕松解釋你的結(jié)果,并顯示可理解和清晰的結(jié)果。
5.它與 Lime 和 Shap 兼容。它使用 Shap 后端只需幾行代碼即可顯示結(jié)果。
6.它為參數(shù)提供了許多選項,以簡潔地獲得結(jié)果。
7.Shapash 安裝簡單和使用方便: 它提供了一個 SmartExplainer 類來理解你的模型并用簡單的語法總結(jié)澄清。
8.部署: 對于操作使用的調(diào)查和部署(通過 API 或批處理模式)很重要。輕松創(chuàng)建 Web 應(yīng)用程序以從全局導(dǎo)航到本地。
9.高度通用性: 要顯示結(jié)果,需要進行非常多次的爭論。但如果你在清理和歸檔數(shù)據(jù)方面做得越多,最終客戶得到的結(jié)果就越清楚。
Shapash 如何工作
Shapash 是一個使機器學(xué)習(xí)易于理解和解釋的Python庫。數(shù)據(jù)愛好者可以輕松理解并分享他們的模型。Shapash 使用 Lime 和 Shap 作為后端,只需幾行代碼即可顯示結(jié)果。Shapash 依賴于構(gòu)建機器學(xué)習(xí)模型以使結(jié)果合理的各種重要進展。下圖顯示了 shapash 包的工作流程:
Shapash 是如何工作的
工作原理
- 首先,它編譯每個步驟的元素,如數(shù)據(jù)準備、特征工程、模型擬合、模型評估和模型理解。
- 其次,它提供了一個 WebApp 和圖表來更好地理解模型。可以與客戶分享和討論模型的結(jié)果。
- 最后,它為您提供了可解釋性的摘要。
安裝
可以使用以下代碼安裝 Shapash:
pip install shapash
對于 Jupyter Notebook: 如果你正在使用 jupyter notebook 并且想要查看內(nèi)聯(lián)圖,那么你需要使用另一個命令:
pip install ipywidgets
入門
在這里我們將使用數(shù)據(jù)集房價預(yù)測來探索 Shapash 。這是一個回歸問題,我們必須預(yù)測房價。首先我們分析數(shù)據(jù)集,包括單變量和雙變量分析,然后使用特征重要性、特征貢獻、局部和比較圖對可解釋性建模,然后是模型性能,最后是 WebApp。
分析數(shù)據(jù)集
單變量分析
使用可以查看下圖,了解名為First Floor Square Feet的要素。我們可以看到一個表格,其中顯示了我們的訓(xùn)練和測試數(shù)據(jù)集的多種統(tǒng)計數(shù)據(jù),例如平均值、最大值、最小值、標準偏差、中位數(shù)等等。在右側(cè)圖中可以看到訓(xùn)練和測試數(shù)據(jù)集的分布圖。Shapash 還提到了我們的特征是分類的還是數(shù)字的,它還提供了下拉選項,在下拉菜單中所有功能都可用。
單變量分析
對于分類特征,訓(xùn)練和測試數(shù)據(jù)集顯示了非重復(fù)值和缺失值。在右側(cè),顯示了一個條形圖,其中顯示了各要素中相應(yīng)類別的百分比。
特征中的類別
目標分析
還可以看到對名為 Sales Price 的目標變量的詳細分析。在左側(cè),顯示了所有統(tǒng)計數(shù)據(jù),如計數(shù)、平均值、標準差、最小值、最大值、中位數(shù)等,用于訓(xùn)練和預(yù)測數(shù)據(jù)集。在右側(cè),顯示了訓(xùn)練和預(yù)測數(shù)據(jù)集的分布。
目標分析
多元變量分析
上面我們 詳細討論了單變量分析。在本節(jié)中,我們將看到多元分析。下圖顯示了訓(xùn)練和測試數(shù)據(jù)集的前 20 個特征的相關(guān)矩陣。還根據(jù)不同的顏色顯示了相關(guān)性標度。這就是我們?nèi)绾问褂?Shapash 可視化特征之間的關(guān)系。
多元分析
模型可解釋性
特征重要性圖
通過使用這個庫,我們可以看到該特征的重要性。特征重要性是一種尋找輸入特征在預(yù)測輸出值中的重要性的方法。下圖顯示了特征重要性曲線:
特征重要性圖
特征貢獻圖
這些曲線幫助我們回答諸如特征如何影響我的預(yù)測、它的貢獻是積極的還是消極的等等。這個圖完成了模型的可解釋性的重要性,模型的整體一致性更有可能理解特征對模型的影響。
我們可以看到數(shù)值和分類特征的貢獻圖。
對于數(shù)值特征
征貢獻圖
對于分類特征
對于分類特征
局部圖
我們可以繪制局部圖。下圖顯示了局部圖:
局部圖
比較圖
我們可以繪制比較圖。下圖顯示了比較圖:
比較圖
模型性能
在數(shù)據(jù)分析之后,我們正在訓(xùn)練機器學(xué)習(xí)模型。下圖顯示了我們預(yù)測的輸出。在左側(cè),顯示了真實值和預(yù)測值的統(tǒng)計數(shù)據(jù),如計數(shù)、最小值、最大值、中值、標準偏差等。在右側(cè),顯示了預(yù)測值和實際值的分布。
模型性能
WebApp
經(jīng)過模型訓(xùn)練后,我們也可以構(gòu)建一個WebApp。這個網(wǎng)絡(luò)應(yīng)用程序顯示了我們數(shù)據(jù)的完整儀表板,包括我們迄今為止所涵蓋的內(nèi)容。下圖顯示了儀表板。
WebApp
項目地址:https://github.com/MAIF/shapash
寫在最后
本篇文章簡單介紹了shapash 的基本功能及繪圖展示,相信大家對該python庫有一定的認識。