點擊上方關注,All in AI中國

作者——Karl Weinmeister

介紹

我們不難發現機器學習可以比以往更快、更準確地回答問題。它在更多的關鍵任務中得到應用,因此瞭解如何推進行預測變得越來越重要。

在這篇文章中,我們將使用開源機器學習框架TensorFlow的Keras API構建一個神經網絡模型。模型經過訓練,我們讓它與可解釋性庫SHAP集成在一起。這裏將使用SHAP來瞭解哪些因素與模型預測相關。

模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第1張

關於模型

我們的模型將預測大學畢業生的債務問題。這種貸款收益率旨在粗略的反映大學的投資回報率(ROI)。這些數據來自美國教育部的"大學記分卡",這是一個將數據公開的互動網站(https://collegescorecard.ed.gov/)。

模型中的特性列於下表中。有關數據集的更多詳細信息,請參閱數據文檔。(https://collegescorecard.ed.gov/data/documentation/)

模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第2張

我們根據數據集中可用的貸款額度和收益數據得出目標變量(貸款額度與收益比)。具體而言,它是畢業時累積的債務中位數(MD_INC_DEBT_MDN)除以畢業後6年的平均收入(MN_EARN_WNE_INC2_P6)。

創建散點圖以顯示每個特性與目標變量的相關性。

模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第3張

我們將使用具有2個密集連接的隱藏層和一個ReLU激活函數的Sequential模型:

模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第4張

下面我們看一下訓練過程。訓練誤差和驗證誤差之間的差距越來越大,這表明存在過度擬合現象。過度擬合很可能是由於數據集中具有所有必需特性的樣本數量(1,117)有限。盡管如此,鑒於平均債務收益率約為0.45,平均絕對誤差為0.1的數據,表明這還是一個有意義的預測。

模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第5張

要在瀏覽器中直接運行筆記本,你可以使用(https://colab.research.google.com/github/kweinmeister/keras-interpretability-college-debt/blob/master/tensorflow-shap-college-debt.ipynb)。它也可以在Github上找到(https://github.com/kweinmeister/notebooks/blob/master/tensorflow-shap-college-debt.ipynb)。

關於ML公平性

我們在這篇文章中研究的大學債務問題與很多更廣泛的社會經濟問題有密切的聯系。任何模型及其訓練數據都應仔細評估,以確保其公平地為所有用戶服務。例如,如果我們的訓練數據主要包括來自高收入家庭的學生就讀的學校,那麼該模型的預測將會對那些有很多背負大量貸款學生所在的學校造成誤導。

在可能的情況下,把中等收入的學生數值進行過濾,以便為不同家庭收入水平的學生提供一致的大學分析。"大學記分卡"數據將中等收入羣體定義為家庭收入在30,000美元至75,000美元之間的學生。但顯然,並非所有可用數據都提供此過濾器。但它可用於關鍵特性,如凈價、收益、債務和完成率。

考慮到這一過程,我們的分析可以進一步擴展到數據集中的其他方面。值得注意的是,可解釋性揭示了哪些特性對模型的預測貢獻最大。它並不表示特性和預測之間是否存在因果關系。

SHAP簡介

可解釋性本質上是理解模型中發生的事情的能力。我們在模型的準確性和可解釋性之間經常需要權衡。簡單的線性模型可以直接理解,因為它們直接暴露變量和係數。非線性模型,包括由神經網絡或梯度增強樹衍生的模型,可能更難以解釋。

SHAP(SHapley Additive exPlanations)是由Scott Lundberg創建的Python庫,可以解釋許多機器學習框架的輸出。它可以幫助解釋個體預測或更大範圍內的總結預測。

SHAP通過調整輸入數據來評估每個特性的影響。所有可能的特性對每個特性的貢獻進行平均。這種方法基於博弈論中的Shapley值的概念。它提供了一個強大的近似值,與LIME等其他方法相比,它的計算成本更高。關於SHAP理論的更多細節可以在2017 NeurIPS論文中找到(http://papers.nips.cc/paper/7062-a-unified-approach-to-interpreting-model-predictions)。

將SHAP與TensorFlow Keras模型一起使用

SHAP提供了幾個使用不同實現的解釋器類,但都使用了基於Shapley值的方法。在這篇博文中,我們將演示如何使用KernelExplainer和DeepExplainer類。 KernelExplainer與模型無關,因為它將模型預測和訓練數據作為輸入。 DeepExplainer針對深度學習框架(TensorFlow / Keras)進行了優化。

SHAP DeepExplainer當前不支持立即執行模式或TensorFlow 2.0。然而,KernelExplainer可以正常工作,但速度要慢得多。

讓我們首先使用KernelExplainer來繪制模型的摘要圖。我們首先將訓練數據匯總為n個集羣。這是一個可選但有用的步驟,因為生成Shapley值的時間會隨着數據集的大小呈指數增長。

模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第6張

摘要圖顯示了每個特性的Shapley值的分佈。每個點的顏色都在一個光譜上,該特性的最大值為紅色,最小值為藍色。這些特性按Shapley值的絕對值之和進行排序。

讓我們看看情節中的一些關系。貢獻最高的前三個特性是average SAT score, % of first-generation students, and % part-time enrollment。請注意,這些特性中的每一個都在具有正SHAP值的右側,以藍點為主(低特性值)。這告訴我們,這些特性值越低,我們模型預測的DTE比率就越高。列表中的第四個特性,即凈價格,具有相反的關系,其中較高的凈價格與較高的DTE比相關聯。

模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第7張

使用force_plot()函數也可以解釋一個特定的實例:

模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第8張

模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第9張

在這個特殊的例子中,該大學的SAT平均值對DTE預測的貢獻最大,為0.53。完成率(MD_INC_COMP_ORIG_YR4_RT)是第二個最重要的特性,降低了預測。所示的SHAP值序列也可以在整個數據集或n個實例的一小部分中查看,如下所示:

模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第10張

模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第11張

注意相關特性

SHAP將分割相關變量的特性貢獻。在為模型選擇特性時以及分析特性重要性時,請務必牢記這一點。讓我們計算相關矩陣,看看我們發現了什麼:

模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第12張

模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第13張

讓我們將摘要圖中的前三個特性與相關矩陣交叉引用,以查看哪些特性可能被拆分:

SAT average與完成率相關,與admission rate 和first-generation ratio呈負相關。First-generation ratio與part-time ratio相關,與完成率呈負相關。

幾個相關的特性被分組在摘要圖列表的頂部。值得關注的是完成率和錄取率,這兩個指標在列表中較低。

SHAP有一個dependency_plot()函數,可以幫助揭示更多細節。例如,讓我們看看第一代比率和兼職比率之間的相互作用。正如我們在摘要圖中觀察到的那樣,我們可以看到first-generation ratio與其Shapley值成反比。摘要圖也向我們表明,當大學的兼職學生比例較低時,相關性更強。

模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第14張

模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第15張

結論

在這篇博客文章中,我們演示瞭如何使用SHAP解釋tf.keras模型。 我們還回顧瞭如何使用SHAP API和幾種SHAP繪圖類型。 最後,為了獲得完整和準確的圖片,我們討論了公平性和相關變量等考慮因素。你現在可以使用工具更好地瞭解TensorFlow Keras模型中正在發生的事情!

有關我在此處介紹的更多信息,請查看以下資源:

Colab筆記本從你的瀏覽器運行模型(https://colab.research.google.com/github/kweinmeister/notebooks/blob/master/tensorflow-shap-college-debt.ipynb)GitHub存儲庫與筆記本(https://github.com/kweinmeister/notebooks/blob/master/tensorflow-shap-college-debt.ipynb)從tf.keras開始(https://www.tensorflow.org/guide/keras)SHAPGitHub存儲庫(https://github.com/slundberg/shap)模型預測不在行?別慌,收下這篇TensorFlow指南 新聞 第16張

編譯出品
相关文章