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