可解釋人工智能XAI

可解釋人工智能(XAI)方法(例如常見的XGBoost-SHAP方法)可以捕捉到非線性的關系,但這種方法忽略了地理單元之間的空間效應;而傳統的空間模型(例如常見的GWR)雖然考慮了空間效應,卻仍然是基于線性的假設。因此,為了兼顧空間效應與非線性,一種可解釋的地理人工智能(GeoXAI)方法,即顧及地理位置的機器學習回歸(GeoMLR)與GeoShapley的聯合框架,被用于探索這種復雜的關系之中。


一、Shapley類方法基本知識
想必大家對Shapley類方法(例如SHAP)有一定的興趣。在地學/空間領域,基于SHAP的研究從2022年開始暴增。
*然而,絕大多數研究仍然把它作為一個普通的全局解釋方法用于特征重要性排序和分析非線性的關系。其實,這些技術在SHAP之前就已經存在了。*
本Workshop將補充更多的Shapley相關的知識,并闡述這種局部解釋方法在地學/空間研究上的潛力。

Shapley值(Shapley Value)是合作博弈論中的核心概念,由諾貝爾經濟學獎得主Lloyd Shapley于1953年提出,用于解決多人合作博弈中公平分配聯盟總收益的問題。其核心思想是根據每個參與者對聯盟的邊際貢獻(Marginal Contribution)加權平均來確定分配方案,滿足公平性、對稱性和效率性等公理化性質。

一直以來,機器學習的可解釋性都受到廣泛關注。 現在的解釋方法分為兩類:全局解釋和局部解釋。特征重要性和偏依賴圖是一種傳統的全局解釋方法,但它并不完全利于決策支持,因為特征的影響并非是處處同質的。Shapley值的引入使得特征在*局部樣本個體和全局上的影響*都可以被量化,從而可以提供更深層次的見解。

這種局部解釋方法與地學/空間研究更加契合。

本項目來源于和鯨社區,使用轉載需要標注來源
作者: 和鯨社區
來源: 和鯨社區
0.機器學習中的Shapley值
在機器學習中,預測值??可以被以下公式描述:


眾所周知,Shapley值還包含了交互值,Shapley交互值又是什么呢?


特征m全局的影響就是所有樣本個體上Shapley值的平均值。

1.不同機器模型的Shapley值的計算方法
也許你已經發現,用Python中的SHAP庫解釋XGBoost、隨機森林很快,但是解釋SVM卻很慢,這是為什么呢?
事實上,Shapley類方法分了很多種,這些不同的解釋器都被集成進了SHAP庫中。你在調用SHAP庫解釋模型時,它使用的是不同解釋器。

Kernel SHAP (解釋一切模型)

Kernel SHAP方法由Lundberg和Lee(2017)引入進機器學習的解釋,它本質上是一種模型無關的解釋方法,也就是說,它可以解釋任何模型。但是,它的時間復雜度極大,運行時間非常緩慢,這與特征數量有關。

前面提及的解釋SVM非常慢,就是因為SVM是用Kernel SHAP進行解釋的。

Lundberg S, Lee S. A unified approach to interpreting model predictions[J]. arXiv preprint arXiv:1705.07874, 2017.

Tree SHAP (解釋基于樹的模型)

基于樹的模型(如隨機森林、XGBoost)具有的特殊結構,因此,Lundberg(2020)等提出Tree SHAP,用于近似估測基于樹的模型中特征的Shapley值。

與Kernel SHAP相比,Tree SHAP是一種模型有關的解釋方法,它只能用于基于樹的模型。但Tree SHAP的時間復雜度被大大優化,因此“基于樹的模型 + Tree SHAP”的聯合方法得到了廣泛的應用。

Lundberg S, Erion G, Chen H, et al. From local explanations to global understanding with explainable AI for trees[J]. Nature machine intelligence, 2020, 2(1): 56-67.

此外,SHAP庫中還針對其他不同的模型結構集成了DeepExplainer、GradientExplainer等解釋器


2.局部解釋方法在地學/空間研究的潛力
盡管目前許多地學/空間研究應用了機器學習+Shapley類的方法,但這些研究仍然停留在特征全局重要性和非線性偏依賴圖的全局解釋階段。事實上,這種結果不依賴Shapley值和博弈論也可以實現,這些方法在Python的SHAP庫出現之前就存在。

Shapley類方法的重點在于它的局部解釋能力,偏偏這樣的能力能很好的與地學/空間研究結合起來。

Shapley類方法可以解釋某個個體樣本中,該個體的特征是如何對該個體的預測值產生影響的。在地學/空間研究中,“個體”就是一個個“地理單元”,因此,每一個地理單元中的每一個特征發揮的作用,都可以被繪制于地圖之上,發現特征影響的空間異質性,從而為決策支持提供因地制宜的見解。 再結合非線性的偏依賴圖,就可以發現特征“非線性”且“空間非平穩性”的影響,從而提供“定量化”且“因地制宜”的決策支持。

這種局部解釋的能力使Shapley類方法在地學/空間的分析研究中產生更有意義的研究結果。

目前,已經有少部分研究已在行業頂刊上應用了這種Shapley類方法的局部解釋能力:

Ke E, Zhao J, Zhao Y. Investigating the influence of nonlinear spatial heterogeneity in urban flooding factors using geographic explainable artificial intelligence[J]. Journal of Hydrology, 2025, 648: 132398.

Luo P, Chen C, Gao S, et al. Understanding of the predictability and uncertainty in population distributions empowered by visual analytics[J]. International Journal of Geographical Information Science, 2024: 1-31.

An R, Tong Z, Tan B, et al. Revealing the relationship between 2D/3D built environment and jobs-housing separation coupling nonlinearity and spatial nonstationarity[J]. Journal of Transport Geography, 2025, 123: 104112.


3.GeoShapley方法
顧及地理空間的機器學習回歸(GeoMLR)+ GeoShapley更適用于專門的空間研究。前文提到,機器學習中的“個體”就是一個個“地理單元”,在生物或是醫學的研究中,樣本個體通常是獨立的,然而在空間研究中,地理單元間卻是存在空間關系的。

Li(2022)使用GeoMLR(在傳統特征中加入了表征空間的坐標X和Y)探索了機器學習捕捉空間關系的能力,隨后他于2024年提出了GeoShapley方法。GeoShapley方法源自Joint Shapley方法,它可以發現兩種特征的聯合貢獻。因此,GeoShapley方法用其量化特征X和Y的聯合貢獻,用于表征空間位置特征的影響。

GeoShapley方法可以量化空間位置的影響,并量化出自變量中的空間效應,這也是傳統的地理加權機器學習(GWML)+SHAP所做不到的。

另外,GeoMLR可以作為一種新方法被納入空間建模,它克服了傳統空間模型線性的假設 實現了非線性的建模,也超越了傳統的機器學習建模 顧及了地理空間在其中發揮的作用。GeoShapley的解釋也提升了其實用性。

因此,在空間自相關性較高的地學/空間研究中,可以嘗試使用GeoMLR+GeoShapley方法進行分析,它可以比傳統的ML+Shapley方法提供更多在空間上的見解。

誠然,GeoShapley方法也存在缺陷。GeoShapley方法是一種模型無關的方法,它是基于Kernel SHAP開發的,因此它的時間復雜度極高,運行時間非常久。

Li Z. Extracting spatial effects from machine learning model using local interpretation method: An example of SHAP and XGBoost[J]. Computers, Environment and Urban Systems, 2022, 96: 101845.

Li Z. GeoShapley: A Game Theory Approach to Measuring Spatial Effects in Machine Learning Models[J]. Annals of the American Association of Geographers, 2024: 1-21.


二、Workshop實驗框架與數據
本次Workshop的內容分為三部分(計算UFS-用因素擬合UFS-解釋擬合結果):

基于機器學習分類器計算城市內澇易發性(UFS)。使用內澇相關的變量道路密度(RD)、人口數量(POP)、興趣點(POI)、不透水面密度(ISD)與內澇點訓練XGBoost分類器,從而預測所有地理單元內澇發生的概率(即城市內澇易發性UFS)。

使用內澇因素和GeoMLR擬合UFS。使用內澇因素高程(DEM)、ISD、RD、到達水體距離(Dis2water)、地理坐標特征X、Y,和分類器輸出的UFS,基于XGBoost進行回歸。

使用GeoShapley解釋分析。使用Shapley值解釋內澇因素、地理空間變量的影響,繪制內澇因素全局影響圖、內澇因素空間異質的影響圖、非線性依賴圖、內澇因素的空間交互圖、柵格尺度上內澇的主導因素圖。


廣州市主城區的漁網數據,Shp格式。網格為500*500m。數據包含了['Shape_Leng', 'Shape_Area', 'DEM', 'Dis2water', 'ISD', 'POI', 'RD', 'POP', 'X', 'Y']字段。數據時間為2020年,數據全部提取自公開的數據。其中,'Shape_Leng'代表網格的周長;'Shape_Area'代表網格的面積;'X'和'Y'分別代表WGS 1984 UTM Zone 49N下每個網格的橫縱坐標。

內澇數據集,csv格式。里面包含75個正樣本和75個負樣本。數據集包含['ID','Flood','POI','POP','RD','ISD']字段。數據時間為2020年,數據全部提取自公開的數據。其中,'ID'代表樣本ID;'Flood'代表是否發生過內澇,1為是,0為否。

為什么不在訓練分類器的時候就把坐標X和Y作為特征輸入進去呢?

把X和Y作為特征輸入進去,那么訓練得到的模型泛化能力豈不是很弱?

內澇相關變量和內澇因素有什么區別?

這個UFS到底是什么?為什么用了兩個機器學習模型?

在計算UFS的機器學習分類器和回歸分析的GeoMLR中,都使用了不透水面密度(ISD)和道路密度(RD)這兩個變量,這沒有問題嗎?

為什么Workshop中的內澇因素那么少?


其中,GEO代表著地理位置特征X和Y共同做出的影響,即空間位置對UFS的影響。

內澇因素xGEO則代表了內澇因素的空間效應

geomlr_rslt.partial_dependence_plots(figsize=(10,6),max_cols=2,gam_curve=True)


解釋分為全局解釋和局部解釋兩種。
接下來,我們首先從全局的視角對解釋結果進行分析

3.全局重要性
繪制全局重要性的箱線圖。

某一特征的 所有shapley值的絕對值的平均值(Mean(|Shapley Value|)) 就是該特征的全局重要性。

在橫軸上,從左到右排列全局重要性從高到低的特征。


箱線圖則展現了Shapley值的數據分布。也可以看出對UFS影響最大的因素是ISD和RD。


4.非線性偏依賴圖
這一步的目的是繪制偏依賴圖,發現內澇因素與UFS之間的非線性關系。

本質上,偏依賴圖也還是是一種全局解釋方法。


fig, axes = plt.subplots(2, 2, figsize=(10, 8), dpi=100)
plt.subplots_adjust(wspace=0.4, hspace=0.3)  # 調整子圖間隙units_list = [' (m)', '', ' (m/m2)', ' (m)']for i, name in enumerate(['DEM', 'ISD', 'RD', 'Dis2water']):row = i // 2col = i % 2# 基礎設置axes[row, col].set_xlabel(name + units_list[i])axes[row, col].set_ylabel(f'Shapley value for {name}')axes[row, col].axhline(y=0, color='black', linestyle='--', linewidth=2)# 擬合GAM模型lam = np.logspace(2, 7, 5).reshape(-1, 1)gam = pygam.LinearGAM(pygam.s(0), fit_intercept=False).gridsearch(var.loc[:, name].values.reshape(-1, 1), shapley.loc[:, name].values.reshape(-1, 1), lam=lam)# 繪制偏依賴圖for term in gam.terms:XX = gam.generate_X_grid(term=0)pdep, confi = gam.partial_dependence(term=0, X=XX, width=0.95) #95%的置信區間# 繪制曲線和置信區間axes[row, col].plot(XX, pdep, color="red", lw=2)axes[row, col].fill_between(XX[:, 0], confi[:, 0], confi[:, 1], color="red", alpha=0.2)# 找交點邏輯# 1. 找到與y=0的交點sign_changes = np.where(np.diff(np.sign(pdep).flatten()))[0]x0_list = []# 遍歷所有符號變化點for idx in sign_changes:# 跳過區間端點if idx == 0 or idx == len(XX)-1:continue# 線性插值求精確交點x1, x2 = XX[idx][0], XX[idx+1][0]y1, y2 = pdep[idx], pdep[idx+1]x0 = x1 - y1*(x2-x1)/(y2-y1)x0_list.append(x0)# 判斷填充顏色if y1 > 0:  # 左側高于0left_color = "blue"right_color = "green"else:       # 左側低于0left_color = "green"right_color = "blue"xmin, xmax = XX[:,0].min(), XX[:,0].max()axes[row, col].axvspan(xmin, x0, alpha=0.2, color=left_color)axes[row, col].axvspan(x0, xmax, alpha=0.2, color=right_color)axes[row, col].scatter(x0, 0, s=50, color='black', zorder=5)# 圖例設置(只在第一個子圖添加)if i == 0:legend_elements = [Line2D([0], [0], color='red', lw=2, label='GeoMLR'),Patch(facecolor='blue', alpha=0.2, label='Positive'),Patch(facecolor='green', alpha=0.2, label='Negative'),]axes[row, col].legend(handles=legend_elements, loc='upper right')plt.show()

從依賴圖中可以看出,將ISD控制在0.5以下,將RD控制在2.5m/m2以下有助于控制廣州主城區的UFS。


關于Shapley類方法

Shapley類方法的局部解釋能力,有助于理解自變量x對因變量y的影響,尤其是理解影響的空間異質性;
GeoMLR+GeoShapley不僅仍然有這種局部解釋能力,它還考慮了空間的貢獻,并且能揭示出空間效應。這是現今的地理加權機器學習(GWML)+SHAP方法做不到的。它更適用于空間建模,更適用于研究空間效應;
GeoShapley也存在缺陷,它是基于Kernel SHAP開發的,它的時間復雜度高,運行時間久。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/97245.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/97245.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/97245.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Pycharm打包PaddleOCR過程及問題解決方法

python實現提取圖片中的文字,使用PaddleOCR識別最精準,因為只需要識別小尺寸圖片,速度在一秒鐘左右,對于要應用的項目可以接受。缺點是項目打包有將近600M,壓縮后也有將近200M。Tesseract雖然速度快,占用空…

Nginx的主要配置文件nginx.conf詳細解讀——及其不間斷重啟nginx服務等操作

一、Nginx的配置文件nginx.conf解析 1.1、查看現有已安裝的Nginx版本及其編譯配置參數等信息 查看現在已有使用的Nginx版本及其編譯配置參數等信息序號安裝編譯Nginx的方式查看現在已有的Nginx版本及其編譯配置參數信息方法1使用【yum install nginx -y】命令安裝的Nginx #查看…

可改善能源利用水平、削減碳排放總量,并為可再生能源規模化發展提供有力支撐的智慧能源開源了

一、平臺簡介 AI 視頻監控平臺是一款功能強大且操作便捷的實時算法視頻監控系統。其核心愿景在于打破各大芯片廠商間的技術壁壘,省去繁瑣重復的適配流程,實現芯片、算法與應用的全流程協同組合 —— 這一創新可幫助企業級應用降低約 95% 的開發成本。同…

“上門做飯”平臺的核心技術棧與運營壁壘是什么?

上門做飯會徹底顛覆外賣行業,成為下一個萬億級風口嗎?答案可能出乎你的意料——不會。但這背后,藏著一個更值得關注的真相。前段時間,杭州上門做飯姑娘的新聞刷屏全網:一天接5-6單,每單最低88元。很多人第一…

企業內網與互聯網網絡安全改造升級深度解析

在信息化時代,企業內網和互聯網的安全性直接影響著業務的穩定性和數據的保密性。然而,隨著網絡威脅的不斷升級,傳統的網絡安全防護手段已難以滿足現代企業的需求。為了應對復雜多變的安全挑戰,構建“邊界清晰、可管可控、多層防御…

參數模板優化配置指南:從基礎到進階的完整解決方案

在數字化運營時代,參數模板優化配置已成為提升系統性能的關鍵環節。本文將深入解析參數配置的核心邏輯,從基礎概念到高級調優技巧,幫助技術人員構建高效穩定的運行環境。我們將重點探討參數模板的標準化管理方法,以及如何通過精細…

Ubuntu 22.04 中安裝 ROS2 Humble

1.4.1前置配置 語言環境支持 UTF-8: sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 export LANG=en_US.UTF-8 啟用 Universe 倉庫: sudo apt install software-properti…

Python學習-day1

Python學習網站 廖雪峰的官方網站 Python教程 菜鳥教程 Phtyon3教程 W3school Python教程 簡明教程 Python教程 牛客網 Python3教程 Python學習網 Python123 Python官網 Python官方教程中文版 Python在線工具 菜鳥工具 Python3在線運行 W3chool在線編譯 Python3在線…

為什么外貿企業管理需要外貿CRM系統

CRM(Customer Relationship Management)系統,即客戶關系管理軟件,是指利用軟件、硬件和網絡技術,為企業建立一個客戶信息收集、管理、分析和利用的信息系統。為什么外貿企業需要外貿CRM管理系統?傳統的客戶…

Qt基礎_xiaozuo

1.Qt基礎Qt三大機制&#xff1a;對象樹&#xff0c;信號和槽&#xff0c;事件 特殊類的名詞&#xff1a;窗口&#xff0c;組件&#xff0c;控件 2.標準IO #include <QDebug>int main(int argc, char *argv[]) {qDebug() << "字符串&#xff1a;" <&l…

解密PCI Express:現代計算機的“高速公路“是如何設計的?

解密PCI Express&#xff1a;現代計算機的"高速公路"是如何設計的&#xff1f; 當你點擊鼠標打開一個大型游戲時&#xff0c;數據是如何從固態硬盤飛速傳輸到顯卡的&#xff1f;這背后離不開一個關鍵技術的支持——PCI Express。 在現代計算機系統中&#xff0c;各種…

軟件安裝教程(二):Pycharm安裝與配置(Windows)

文章目錄前言一、準備工作&#xff08;安裝前要求&#xff09;二、下載與安裝 PyCharm步驟 1&#xff1a;訪問 PyCharm 官網步驟 2&#xff1a;運行安裝程序步驟 3&#xff1a;完成安裝并啟動三、首次啟動與配置四、創建項目與配置虛擬環境創建新項目配置虛擬環境五、安裝必要的…

Java全棧開發實戰:從基礎到微服務的深度探索

Java全棧開發實戰&#xff1a;從基礎到微服務的深度探索 一、面試開場 面試官&#xff08;專業且親切&#xff09;&#xff1a; 你好&#xff0c;很高興見到你。我是這次面試的負責人&#xff0c;接下來我們會圍繞你的技術背景和項目經驗進行一些深入的交流。我們希望了解你在實…

Redis搭建哨兵模式一主兩從三哨兵

Redis搭建哨兵模式一主兩從三哨兵 目錄 Redis搭建哨兵模式一主兩從三哨兵 一、Redis哨兵模式 1. 哨兵模式原理&#xff1a; 2. 哨兵的作用&#xff1a; 3.哨兵的結構 4.故障轉移機制 故障轉移過程如下&#xff1a; 主節點的選舉條件&#xff1a; 二、節點規劃 三、實…

用 C++ 創建單向鏈表 forward list

文章目錄前言1. 源碼 forward_list.hpp2. 使用示例前言 用 C 創建了一個單向鏈表&#xff0c;用于練習使用現代 C 的特性&#xff0c;包括 3 點&#xff1a; 對于容器&#xff0c;使用 std::initializer_list 作為參數創建構造函數。 C Core Guidelines 中&#xff0c;推薦使…

[肥用云計算] Serverless 多環境配置

前言 在 Serverless 應用開發中&#xff0c;多環境配置是一個繞不開的話題。從開發、測試到生產&#xff0c;每個環境都有其特定的配置需求。阿里云 Serverless Devs 雖然提供了官方的 env 命令來管理多環境&#xff0c;但在實際使用中&#xff0c;我發現官方方案存在一些局限…

LeetCode算法日記 - Day 25: 數組中的第K個最大元素、庫存管理III

目錄 1 數組中的第K個最大元素 1.1 題目解析 1.2 解法 1.3 代碼實現 2. 庫存管理III 2.1 題目解析 2.2 解法 2.3 代碼實現 1 數組中的第K個最大元素 215. 數組中的第K個最大元素 - 力扣&#xff08;LeetCode&#xff09; 給定整數數組 nums 和整數 k&#xff0c;請返…

10分鐘快速搭建 SkyWalking 服務

從 0 開始入門 SkyWalking&#xff0c;搭建 SkyWalking 服務&#xff0c;并接入 Java 項目中實現分布式鏈路追蹤。 Tags 目錄&#xff1a; 1. 概述2. 搭建 SkyWalking 單機環境3. 搭建 SkyWalking 集群環境4. 告警5. 注意事項6. Spring Boot 使用示例 1. 概述 1.1 概念 …

IDEA之GO語言開發

最近因為接到了需求&#xff0c;說是先把目前公司的JAVA服務慢慢替換成GO語言&#xff0c;于是去了解了一下。 但在開發之前&#xff0c;因為用習慣了IDEA&#xff0c;就想著能不能在IDEA上進行開發&#xff0c;結果真讓我找到了。 作為學習記錄一下 注意&#xff1a;基于IDEA…

rapid_table v3.0.0發布了

更新日志 rapid_table v3.0.0 主要更新是支持 batch 推理&#xff0c;模型并沒有升級哈&#xff01; 因為版本號是根據語義化版本號來走的&#xff0c;這次更改了接口的返回值。因此從 v2.0.3 升級到了 v3.0.0。 返回值具體變化如下&#xff1a; # v2.0.3 class RapidTableO…