Data-Visualization

我如何可視化不同輸入對黑盒非線性模型預測的重要性?

  • February 14, 2013

我正在構建一個交互式預測工具(在 python 中),以幫助在我的組織中進行預測。迄今為止,預測過程在很大程度上是由人為驅動的,預測者在他們的自然神經網絡中吸收數據,並利用他們學到的直覺來做出預測。從我所做的長期預測驗證和預測建模研究中,我發現了您可能期望的結果;不同的預測者表現出不同的偏差,某些預測者的影響似乎被誇大了,而其他重要的預測者似乎被忽略了,與相對簡單的經驗模型相比,總體預測表現平平。

預測將繼續是手動的,但我正在嘗試構建一個有用的工具,為預測者提供更好地量化預測變量的相對影響。還有一些重要的影響,例如經常被忽視的季節性影響,我希望該工具向用戶突出顯示。我預計一些“經驗豐富”的預測者(其中許多人幾乎沒有正式的統計知識)會對建模過程產生一定程度的強烈反對和懷疑,因此溝通至少與模型性能本身一樣重要實現預測準確性的顯著提高。

我正在開發的模型有一個強大的自回歸分量,有時會被事件顯著修改,這些事件在一些預測變量中顯示為測量值,在非事件時間,接近於零。這符合預測者使用的心理模型。關鍵部分是能夠證明哪些“事件”測量在推動預測遠離任何給定預測的自回歸值方面最具影響力。我以這種方式對過程進行成像;預測者猜出他們的最佳猜測值,模型建議一個不同的值,預測者問為什麼。模型回复類似“看這裡,這個預測變量的這個值增加了夏季的預測值。如果是冬天,它會向另一個方向移動。我知道還有這些其他測量值,

現在,想像模型是一個簡單的線性回歸。可以想像通過將值乘以模型係數並顯示為簡單的條形圖來顯示基於事件的預測變量的相對“效果”。來自不同預測變量的所有條形加起來就是與 AR 值的總偏差,這簡潔而清晰地顯示了在這種情況下具有強烈影響的條形。

問題在於,被預測的過程在預測變量中顯示出高度的非線性,或者至少,我在黑盒非線性機器學習算法(隨機森林和 GBM)方面比在 GLM 方面取得了更大的成功這個數據集。理想情況下,我希望能夠在不改變用戶體驗的情況下無縫地更改“引擎蓋下”工作的模型,因此我需要一些通用的方法來以簡單的方式展示不同測量的重要性,而不使用某些算法特定的方法。我目前的方法是通過將除一個預測變量之外的所有值設置為零來準線性化效果,記錄預測偏差,然後對所有預測變量重複,在上面提到的條形圖中顯示結果。在存在強非線性的情況下,這可能效果不佳。

評估預測變量對預測的影響的一種方法是估計輸出相對於預測變量的梯度。這可以通過通過有限差分估計非線性預測函數關於每個預測變量的偏導數來完成。

理想情況下,您將在實際觀察到的測試輸入上執行此操作。例如,您可以平均前 2 天所有測試輸入處估計梯度的絕對值。該平均梯度的大小可用於對預測變量的重要性進行排序。(您需要小心梯度估計,以通過 z 評分或某種此類方法使用適當的單位。)您可以按季節保存這些估計的梯度以進行比較分析。

請參閱David Baehrens 等人的“如何解釋個體分類決策”。人。在 JMLR 中了解更多關於這個想法的信息。該論文處理分類,但也很容易推廣到回歸。

引用自:https://stats.stackexchange.com/questions/49959

comments powered by Disqus