性的模型可解釋性利器)
1. 項(xiàng)目概述為什么我們需要ALE在機(jī)器學(xué)習(xí)項(xiàng)目里尤其是涉及金融風(fēng)控、醫(yī)療診斷或者自動(dòng)駕駛這些高風(fēng)險(xiǎn)領(lǐng)域模型預(yù)測的準(zhǔn)確性只是及格線真正的挑戰(zhàn)在于“信任”。你訓(xùn)練出一個(gè)在測試集上AUC高達(dá)0.95的模型興沖沖地拿去給業(yè)務(wù)方或者決策者看。他們問的第一個(gè)問題往往不是“它有多準(zhǔn)”而是“它為什么這么預(yù)測”或者“這個(gè)特征到底是怎么影響結(jié)果的”。如果你回答不上來或者只能含糊地說“模型內(nèi)部很復(fù)雜但結(jié)果是對的”那么這個(gè)模型大概率會(huì)被束之高閣。這就是模型可解釋性Interpretability要解決的核心問題建立人與模型之間的信任橋梁。我們需要把黑盒模型比如深度神經(jīng)網(wǎng)絡(luò)、復(fù)雜的集成樹模型的決策邏輯以一種人類能夠理解的方式“翻譯”出來。累積局部效應(yīng)圖Accumulated Local Effects, ALE正是在這個(gè)背景下近年來備受關(guān)注的一種強(qiáng)大的可解釋性工具。它要解決的是另一個(gè)經(jīng)典工具——部分依賴圖Partial Dependence Plot, PDP——的致命缺陷。PDP假設(shè)所有特征都是獨(dú)立的這在現(xiàn)實(shí)數(shù)據(jù)中幾乎不成立。當(dāng)特征之間存在相關(guān)性時(shí)PDP會(huì)計(jì)算并展示一些在現(xiàn)實(shí)中根本不可能出現(xiàn)的樣本組合例如一個(gè)“年齡10歲”且“工作年限20年”的虛擬樣本導(dǎo)致其給出的效應(yīng)估計(jì)嚴(yán)重失真具有誤導(dǎo)性。ALE圖聰明地避開了這個(gè)陷阱。它不再計(jì)算某個(gè)特征在所有數(shù)據(jù)點(diǎn)上的平均預(yù)測變化而是計(jì)算該特征在局部區(qū)間內(nèi)的條件分布下的預(yù)測差異然后再累積起來。簡單來說ALE圖回答的問題是“當(dāng)我們把某個(gè)特征的值在其鄰居的小范圍內(nèi)‘輕輕’推高一點(diǎn)模型的預(yù)測輸出會(huì)如何‘局部地’、‘有條件地’變化” 這種方法天然地考慮了特征間的相關(guān)性得出的結(jié)論更加可靠。對于數(shù)據(jù)科學(xué)家和算法工程師而言掌握ALE不僅意味著你能更負(fù)責(zé)任地交付模型更意味著你能深入洞察數(shù)據(jù)與模型之間的關(guān)系指導(dǎo)特征工程甚至發(fā)現(xiàn)潛在的邏輯錯(cuò)誤或數(shù)據(jù)偏見。接下來我們就深入拆解ALE的原理與實(shí)現(xiàn)。2. ALE的核心原理與數(shù)學(xué)直覺要真正用好ALE不能只停留在調(diào)包畫圖理解其背后的數(shù)學(xué)直覺至關(guān)重要。這能幫助你在結(jié)果出現(xiàn)反直覺時(shí)知道問題可能出在哪里。2.1 從PDP的缺陷說起部分依賴圖PDP的定義是對于特征 (x_S)其部分依賴函數(shù)為 [ \hat{f}{S, PDP}(x_S) E{X_C}[\hat{f}(x_S, X_C)] \int \hat{f}(x_S, x_C) dP(x_C) ] 實(shí)踐中我們用訓(xùn)練數(shù)據(jù)的經(jīng)驗(yàn)分布來近似 [ \hat{f}{S, PDP}(x_S) \frac{1}{n} \sum{i1}^{n} \hat{f}(x_S, x_{C}^{(i)}) ] 這里(x_S) 是我們關(guān)心的特征(X_C) 是其他所有特征。問題就在于(dP(x_C)) 或求平均的過程。當(dāng)我們把 (x_S) 固定為某個(gè)特定值比如“年齡50歲”時(shí)我們遍歷數(shù)據(jù)集中所有樣本的其他特征 (x_C^{(i)})比如“收入”、“職業(yè)”而不論這些 (x_C^{(i)}) 在現(xiàn)實(shí)中是否可能與“年齡50歲”同時(shí)出現(xiàn)。如果“年齡”和“收入”強(qiáng)相關(guān)那么“年齡50歲”搭配一個(gè)“收入極低”的樣本可能就是一個(gè)人為制造的、概率極低的“虛擬樣本”。用這些虛擬樣本的預(yù)測來平均得到的效應(yīng)自然不可信。2.2 ALE的解決思路局部條件差異ALE的創(chuàng)始人Apley教授的思路非常巧妙我們不去計(jì)算“當(dāng) (x_S) 固定為某個(gè)值時(shí)的平均預(yù)測”而是去計(jì)算“當(dāng) (x_S) 在其局部鄰域內(nèi)發(fā)生微小變化時(shí)預(yù)測值變化的條件期望”。具體步驟如下分區(qū)將特征 (x_S) 的值域劃分為多個(gè)區(qū)間分箱記分界點(diǎn)為 (z_{0}, z_{1}, ..., z_{k})。第 (k) 個(gè)區(qū)間為 ((z_{k-1}, z_{k}])。計(jì)算局部效應(yīng)對于第 (k) 個(gè)區(qū)間我們不是用固定的 (x_S) 值而是考慮在這個(gè)區(qū)間內(nèi)的一個(gè)“移動(dòng)”。我們計(jì)算對于所有實(shí)際落在該區(qū)間或其附近的樣本當(dāng)它們的 (x_S) 值從區(qū)間的左端點(diǎn) (z_{k-1}) “變化”到右端點(diǎn) (z_{k}) 時(shí)模型預(yù)測的差值。關(guān)鍵來了計(jì)算這個(gè)差值時(shí)對于每個(gè)樣本我們只改變 (x_S)而保持該樣本原有的其他特征 (x_C) 完全不變。這樣就保證了我們始終在“條件分布”下操作避免了PDP創(chuàng)造虛擬樣本的問題。在區(qū)間 (k) 內(nèi)的未中心化的局部效應(yīng)定義為 [ \hat{\tilde{f}}{j, ALE}(x) \sum{k1}^{k_j(x)} \frac{1}{n_j(k)} \sum_{i: x_{j}^{(i)} \in N_j(k)} [\hat{f}(z_{k,j}, x_{-j}^{(i)}) - \hat{f}(z_{k-1,j}, x_{-j}^{(i)})] ] 其中(N_j(k)) 是第 (k) 個(gè)區(qū)間(n_j(k)) 是該區(qū)間內(nèi)的樣本數(shù)求和操作是在該區(qū)間內(nèi)所有樣本上計(jì)算預(yù)測值在區(qū)間兩端點(diǎn)的差然后取平均。你可以把它理解為在這個(gè)小區(qū)間內(nèi)預(yù)測值隨 (x_S) 變化的“平均斜率”。累積與中心化將每個(gè)區(qū)間的局部效應(yīng)平均差值累加起來就得到了累積效應(yīng)。最后對這個(gè)累積效應(yīng)進(jìn)行中心化減去其均值使得ALE圖的縱坐標(biāo)解釋為相對于平均預(yù)測值該特征在某個(gè)取值點(diǎn)對預(yù)測的貢獻(xiàn)或效應(yīng)。中心化后的ALE值在0上下波動(dòng)其公式為 [ \hat{f}{j, ALE}(x) \hat{\tilde{f}}{j, ALE}(x) - \frac{1}{n} \sum_{i1}^{n} \hat{\tilde{f}}{j, ALE}(x{j}^{(i)}) ]2.3 一個(gè)生活化的類比想象你在分析房價(jià)模型特征之一是“房間數(shù)量”。PDP的做法是固定“房間數(shù)量5”然后不管樣本本身是市中心公寓還是郊區(qū)別墅都把它們的“房間數(shù)量”強(qiáng)行改成5再計(jì)算平均預(yù)測房價(jià)。這會(huì)產(chǎn)生“5個(gè)房間的市中心頂級公寓”這種不切實(shí)際的組合。ALE的做法則是找到所有“房間數(shù)量”在4.5到5.5之間的真實(shí)房子比如一些4居室、5居室、6居室的房子。對于每一棟這樣的房子我們計(jì)算一個(gè)思想實(shí)驗(yàn)“如果這棟房子從4.5個(gè)房間區(qū)間左端變成5.5個(gè)房間區(qū)間右端房價(jià)會(huì)差多少” 我們保持這棟房子的其他所有屬性地段、面積、房齡等完全不變。然后我們把這些“房價(jià)差值”在這個(gè)區(qū)間內(nèi)平均得到“房間數(shù)”從4.5增到5.5時(shí)對房價(jià)的局部平均效應(yīng)。最后我們把所有區(qū)間的局部效應(yīng)像搭積木一樣累加起來就得到了完整的“房間數(shù)量”對房價(jià)的效應(yīng)圖。這個(gè)圖只基于真實(shí)存在的房子組合進(jìn)行計(jì)算因此更可靠。3. ALE圖的生成、解讀與實(shí)戰(zhàn)要點(diǎn)理解了原理我們進(jìn)入實(shí)戰(zhàn)環(huán)節(jié)。我將以Python的alibi和PDPBox庫為例展示完整的ALE圖生成流程并深入每一個(gè)參數(shù)和細(xì)節(jié)。3.1 環(huán)境準(zhǔn)備與數(shù)據(jù)模擬為了演示特征相關(guān)性的影響我們故意構(gòu)造一個(gè)包含兩個(gè)強(qiáng)相關(guān)特征的數(shù)據(jù)集。import numpy as np import pandas as pd from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt # 1. 構(gòu)造數(shù)據(jù)特征X1和X2強(qiáng)相關(guān) np.random.seed(42) n_samples 1000 X1 np.random.normal(5, 2, n_samples) # 特征1 X2 X1 np.random.normal(0, 0.5, n_samples) # 特征2與X1強(qiáng)相關(guān)加入少量噪聲 X3 np.random.uniform(0, 10, n_samples) # 特征3與X1、X2獨(dú)立 # 2. 構(gòu)造一個(gè)非線性響應(yīng)使得效應(yīng)更明顯 # Y 同時(shí)依賴于 X1非線性和 X3線性X2通過X1產(chǎn)生間接影響 Y 2 * np.sin(X1) 0.5 * X3 np.random.normal(0, 0.3, n_samples) # 3. 組合成DataFrame data pd.DataFrame({X1: X1, X2: X2, X3: X3, Y: Y}) # 4. 劃分訓(xùn)練集和測試集 X data[[X1, X2, X3]] y data[Y] X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42) # 5. 訓(xùn)練一個(gè)黑盒模型隨機(jī)森林 model RandomForestRegressor(n_estimators100, random_state42, n_jobs-1) model.fit(X_train, y_train) print(f模型在測試集上的R^2分?jǐn)?shù): {model.score(X_test, y_test):.3f})注意這里我們故意讓X2 X1 noise制造了強(qiáng)相關(guān)性。在真實(shí)場景中這種多重共線性Multicollinearity非常普遍比如“收入”和“消費(fèi)水平”“房屋面積”和“房間數(shù)”。這是PDP會(huì)失真的典型場景。3.2 使用alibi生成并解讀ALE圖alibi是一個(gè)專門用于模型可解釋性的優(yōu)秀庫其ALE實(shí)現(xiàn)非常穩(wěn)健。from alibi.explainers import ALE # 1. 初始化ALE解釋器 ale ALE(predictormodel.predict, feature_names[X1, X2, X3]) # 2. 在訓(xùn)練數(shù)據(jù)上計(jì)算ALE這是標(biāo)準(zhǔn)做法確保分箱基于數(shù)據(jù)分布 exp ale.explain(X_train.values) # 3. 繪制ALE圖 fig, axes plt.subplots(1, 3, figsize(15, 4)) for idx, feature in enumerate([X1, X2, X3]): ax axes[idx] # 獲取該特征的ALE值和分位數(shù)點(diǎn) ale_values exp.ale_values[idx] ale_quantiles exp.ale_quantiles[idx] # 分位數(shù)點(diǎn)作為x軸 # 繪制ALE曲線 ax.plot(ale_quantiles, ale_values, o-, linewidth2) # 填充置信區(qū)間如果計(jì)算了的話這里需要bootstrap示例暫略 # ax.fill_between(ale_quantiles, exp.ale_low[idx], exp.ale_high[idx], alpha0.3) ax.axhline(y0, colorgrey, linestyle--, linewidth0.8) # 零效應(yīng)線 ax.set_xlabel(feature) ax.set_ylabel(ALE Effect on Prediction) ax.set_title(fALE Plot for {feature}) ax.grid(True, alpha0.3) plt.tight_layout() plt.show()生成圖的解讀要點(diǎn)縱坐標(biāo)ALE Effect表示該特征在特定取值下對最終預(yù)測值相對于全局平均預(yù)測的貢獻(xiàn)。正值表示將預(yù)測值推高負(fù)值表示拉低。它不再是預(yù)測值本身而是特征的“凈效應(yīng)”。橫坐標(biāo)是特征的實(shí)際取值。alibi默認(rèn)使用分位數(shù)點(diǎn)這能保證每個(gè)區(qū)間內(nèi)有大致相等的樣本量避免在數(shù)據(jù)稀疏區(qū)域圖形劇烈波動(dòng)。曲線形態(tài)X1的圖應(yīng)該能看到一個(gè)類似正弦波的形態(tài)這與我們生成數(shù)據(jù)時(shí)用的2 * np.sin(X1)相符。當(dāng)X1在~3和~7時(shí)效應(yīng)為正峰值在~5時(shí)效應(yīng)為負(fù)谷值。這完美捕捉了真實(shí)的數(shù)據(jù)生成過程。X2的圖由于X2與X1強(qiáng)相關(guān)X2 ≈ X1它的ALE圖形態(tài)應(yīng)該與X1高度相似。這正是ALE考慮條件分布的結(jié)果在給定X2的某個(gè)值時(shí)與之強(qiáng)相關(guān)的X1也大致被確定了因此X2表現(xiàn)出的效應(yīng)實(shí)際上是它和X1共同作用的“混合”效應(yīng)。但請注意ALE圖顯示的是X2的邊際效應(yīng)它仍然是有意義的因?yàn)樗嬖V我們“在現(xiàn)實(shí)的數(shù)據(jù)分布下改變X2會(huì)如何影響預(yù)測”。X3的圖應(yīng)該是一條明顯的上升直線這與我們0.5 * X3的線性關(guān)系一致。斜率約為0.5。與PDP的對比關(guān)鍵讓我們用PDPBox快速生成PDP圖做個(gè)對比你會(huì)立刻看出問題。from pdpbox import pdp # 對于特征X1 pdp_iso_X1 pdp.pdp_isolate(modelmodel, datasetX_train, model_features[X1, X2, X3], featureX1) pdp.pdp_plot(pdp_iso_X1, X1) plt.show()在特征強(qiáng)相關(guān)的情況下PDP圖可能會(huì)顯示出被嚴(yán)重削弱或扭曲的效應(yīng)。因?yàn)镻DP在計(jì)算“X1某值”時(shí)會(huì)強(qiáng)行將數(shù)據(jù)中所有樣本的X1都替換為該值而不管它們原本的X2是多少。這打破了X1和X2之間的真實(shí)關(guān)聯(lián)導(dǎo)致計(jì)算出的平均效應(yīng)無法反映真實(shí)世界中X1變化的影響。ALE圖則沒有這個(gè)問題它忠實(shí)地反映了在現(xiàn)有數(shù)據(jù)關(guān)聯(lián)下特征的真實(shí)邊際效應(yīng)。3.3 核心參數(shù)解析與調(diào)優(yōu)生成ALE圖不是簡單地調(diào)用函數(shù)參數(shù)的選擇直接影響結(jié)果的穩(wěn)定性和可解釋性。grid_size/bins(網(wǎng)格大小/分箱數(shù))作用決定將特征值域分成多少段來計(jì)算局部效應(yīng)。如何選擇默認(rèn)值通常為10或20是一個(gè)不錯(cuò)的起點(diǎn)。數(shù)據(jù)量數(shù)據(jù)量越大10k可以適當(dāng)增加分箱數(shù)如30-50以捕捉更精細(xì)的非線性模式。特征類型對于連續(xù)特征分箱是必要的。對于分類特征ALE有天然優(yōu)勢每個(gè)類別就是一個(gè)“分箱”計(jì)算該類別相對于參考類別的平均預(yù)測差異即可結(jié)果非常直觀。權(quán)衡分箱太少圖形過于粗糙可能掩蓋重要模式分箱太多每個(gè)區(qū)間內(nèi)樣本數(shù)減少估計(jì)的方差會(huì)增大圖形抖動(dòng)劇烈。務(wù)必觀察圖形是否平滑穩(wěn)定。center(中心化)作用是否將ALE值中心化使其均值為0。alibi默認(rèn)是True這也是推薦做法。為什么重要中心化后ALE值的零點(diǎn)對應(yīng)“平均預(yù)測水平”。一個(gè)特征在某個(gè)點(diǎn)的ALE值為0.5意味著當(dāng)該特征取此值時(shí)會(huì)將模型的預(yù)測值抬高0.5個(gè)單位相對于所有樣本的平均預(yù)測。這個(gè)解釋非常直觀。如果不中心化縱坐標(biāo)的零點(diǎn)沒有明確的現(xiàn)實(shí)意義。include_CI(置信區(qū)間)作用是否通過自助法Bootstrap計(jì)算置信區(qū)間。強(qiáng)烈建議開啟置信區(qū)間是判斷效應(yīng)是否顯著的關(guān)鍵。如果一條ALE曲線在0線附近波動(dòng)且其置信區(qū)間完全包含0線那么我們不能斷言該特征在該區(qū)域有明確的正面或負(fù)面效應(yīng)。這可能只是噪聲。計(jì)算置信區(qū)間會(huì)增加計(jì)算成本但對于得出可靠結(jié)論至關(guān)重要。# 在alibi中計(jì)算置信區(qū)間通常通過bootstrap參數(shù)或后續(xù)計(jì)算實(shí)現(xiàn) # 以下是一個(gè)概念性示例實(shí)際API可能略有不同 ale_with_ci ALE(predictormodel.predict, feature_names[X1], include_CITrue, CI_level0.95, n_bootstrap100) exp_ci ale_with_ci.explain(X_train.values) # 繪圖時(shí)可以畫出 exp_ci.ale_low 和 exp_ci.ale_high 作為陰影區(qū)extrapolate(外推)作用是否對特征值范圍之外的點(diǎn)進(jìn)行估計(jì)。默認(rèn)應(yīng)為False機(jī)器學(xué)習(xí)模型在訓(xùn)練數(shù)據(jù)范圍之外的行為是未定義的也是不可信的。ALE圖應(yīng)該只展示在觀測數(shù)據(jù)支持范圍內(nèi)的效應(yīng)。將曲線延伸到數(shù)據(jù)范圍之外具有高度誤導(dǎo)性。4. ALE在特征工程與模型調(diào)試中的高級應(yīng)用ALE圖不僅僅是一張“解釋圖”更是我們深入理解模型、改進(jìn)模型的診斷工具。4.1 檢測特征交互效應(yīng)ALE圖本身是一階的即它描述單個(gè)特征的邊際效應(yīng)。但我們可以通過觀察ALE圖的形態(tài)間接推測是否存在強(qiáng)烈的交互作用。方法如果兩個(gè)特征存在交互作用那么其中一個(gè)特征的ALE圖形態(tài)可能會(huì)隨著另一個(gè)特征取值區(qū)間的不同而發(fā)生變化。更嚴(yán)謹(jǐn)?shù)淖龇ㄊ抢L制二階ALE圖2D ALE Plot它直接可視化兩個(gè)特征共同變化對預(yù)測的影響。# 使用alibi計(jì)算二階ALE (X1和X3) # 注意二階ALE計(jì)算量較大尤其在大網(wǎng)格下 ale_2d ALE(predictormodel.predict, feature_names[X1, X3], grid_size[15, 15]) exp_2d ale_2d.explain(X_train.values) # alibi目前對2D ALE的可視化支持可能需要手動(dòng)處理數(shù)據(jù) # 概念上你會(huì)得到一個(gè)網(wǎng)格每個(gè)點(diǎn)是一個(gè)(X1, X3)組合對應(yīng)的值是它們的聯(lián)合ALE效應(yīng)。 # 可以通過等高線圖或熱圖展示。如果二階ALE圖表面不是平坦的而是有起伏的“山丘”或“山谷”就說明這兩個(gè)特征存在交互效應(yīng)。例如在房價(jià)模型中“地理位置”和“房屋面積”可能存在交互在市中心面積效應(yīng)可能被削弱單價(jià)高總價(jià)受面積影響相對小在郊區(qū)面積效應(yīng)可能被增強(qiáng)。4.2 識別模型偏差與數(shù)據(jù)問題ALE圖可以成為模型審計(jì)的利器。發(fā)現(xiàn)非單調(diào)性如果一個(gè)業(yè)務(wù)邏輯上應(yīng)該嚴(yán)格正相關(guān)如“信用歷史長度”對“信用評分”但ALE圖卻在某個(gè)區(qū)間出現(xiàn)下降這就是一個(gè)紅色警報(bào)??赡艿脑蛴?數(shù)據(jù)在該區(qū)間有噪聲或采樣偏差2模型過擬合了局部噪聲3存在未被考慮的強(qiáng)交互特征。檢查邊界行為觀察特征在最小值最大值附近的ALE曲線。如果曲線在邊界處出現(xiàn)急劇的、不穩(wěn)定的變化可能意味著數(shù)據(jù)在邊界處稀疏模型的外推行為不可信。這提示我們需要更多邊界數(shù)據(jù)或者對模型進(jìn)行正則化約束。對比不同子群體你可以分別為男性/女性用戶、不同地區(qū)的客戶分別繪制ALE圖。如果同一個(gè)特征如“收入”在兩個(gè)群體中的ALE曲線形態(tài)差異巨大可能揭示了模型偏見Model Bias。例如模型可能過度依賴某個(gè)特征在某一群體中的模式導(dǎo)致對另一群體不公平。4.3 指導(dǎo)特征工程通過ALE圖你可以判斷當(dāng)前特征的表征是否合理。線性 vs 非線性如果ALE圖是一條直線說明模型以線性方式使用該特征。你可以考慮是否需要對它進(jìn)行分箱離散化以引入非線性或者相反如果業(yè)務(wù)需要強(qiáng)線性解釋可以使用線性模型或?qū)μ卣髯鲎儞Q。特征重要性再評估傳統(tǒng)的特征重要性如基于基尼不純度或置換重要性只給出一個(gè)全局分?jǐn)?shù)。ALE圖展示了效應(yīng)大小隨特征值的變化。一個(gè)全局重要性不高的特征可能在某個(gè)特定取值范圍內(nèi)如異常值區(qū)間有極強(qiáng)的效應(yīng)。這對于風(fēng)險(xiǎn)控制場景識別極端壞用戶至關(guān)重要。創(chuàng)造交互特征如果通過二階ALE圖或業(yè)務(wù)知識發(fā)現(xiàn)了強(qiáng)烈的交互效應(yīng)你可以顯式地將這兩個(gè)特征相乘或組合創(chuàng)建新的交互特征放入模型這有時(shí)能提升模型性能并使其更易解釋。5. 常見陷阱、疑難解答與性能優(yōu)化在實(shí)際操作中你會(huì)遇到各種問題。以下是我踩過坑后總結(jié)的經(jīng)驗(yàn)。5.1 ALE圖解讀的常見誤區(qū)誤區(qū)一將ALE值誤認(rèn)為預(yù)測值。正解ALE值是“效應(yīng)值”或“貢獻(xiàn)值”是預(yù)測值的一個(gè)加性組成部分。你不能直接從一個(gè)特征的ALE值讀出預(yù)測值。模型的最終預(yù)測是截距項(xiàng)全局平均預(yù)測加上所有特征的ALE貢獻(xiàn)在加性模型假設(shè)下再加上交互效應(yīng)如果存在且未被ALE捕獲。誤區(qū)二認(rèn)為ALE圖顯示了因果關(guān)系。正解不ALE圖和所有基于觀測數(shù)據(jù)的模型解釋方法一樣顯示的是統(tǒng)計(jì)關(guān)聯(lián)而非因果關(guān)系。X1的ALE效應(yīng)為正只意味著在模型看來X1和預(yù)測Y正相關(guān)。這可能是X1直接導(dǎo)致Y也可能是存在一個(gè)混淆變量同時(shí)影響X1和Y。誤區(qū)三忽略置信區(qū)間。正解一條上下起伏的ALE曲線如果其置信區(qū)間非常寬尤其在數(shù)據(jù)少的區(qū)域那么這些起伏很可能沒有統(tǒng)計(jì)意義。永遠(yuǎn)結(jié)合置信區(qū)間做判斷。5.2 計(jì)算性能與大數(shù)據(jù)集處理ALE需要對每個(gè)特征、每個(gè)網(wǎng)格點(diǎn)進(jìn)行多次預(yù)測。對于大型數(shù)據(jù)集百萬級樣本和復(fù)雜模型如深度網(wǎng)絡(luò)計(jì)算成本可能很高。優(yōu)化策略減少grid_size這是最直接的方法。先從較小的網(wǎng)格如10開始如果圖形模式清晰則無需增加。子采樣計(jì)算ALE時(shí)不需要使用全部訓(xùn)練數(shù)據(jù)。一個(gè)隨機(jī)抽取的、有代表性的子集如1萬或5萬樣本通常就能給出非常穩(wěn)定的ALE估計(jì)。使用alibi.explain(X_train.sample(n10000, random_state42).values)。并行計(jì)算alibi的ALE類支持通過n_jobs參數(shù)進(jìn)行并行計(jì)算可以顯著加速。針對樹模型的優(yōu)化對于像隨機(jī)森林、XGBoost這類樹模型有更快的、基于樹結(jié)構(gòu)的特定算法來計(jì)算類似ALE的效應(yīng)如treeinterpreter庫或shap.TreeExplainer。雖然SHAPSHapley Additive exPlanations是另一種解釋框架但其提供的shap.dependence_plot在考慮特征相關(guān)性的效果上與ALE類似且對于樹模型有極快的計(jì)算速度可以作為備選。5.3 與SHAP值的比較與選擇SHAP是另一個(gè)主流解釋框架。SHAP值旨在將一個(gè)樣本的預(yù)測值公平地分配給每個(gè)特征。全局SHAP摘要圖shap.summary_plot和SHAP依賴圖shap.dependence_plot也非常強(qiáng)大。ALE vs SHAP Dependence Plot目標(biāo)不同ALE描述特征的邊際平均效應(yīng)SHAP依賴圖描述單個(gè)特征的SHAP值如何隨該特征值變化它混合了該特征的主效應(yīng)和與其他特征的交互效應(yīng)。相關(guān)性處理兩者都較好地處理了特征相關(guān)性。SHAP依賴圖通過著色用另一個(gè)特征來展示交互效應(yīng)非常直觀。計(jì)算成本SHAP特別是KernelSHAP計(jì)算成本通常遠(yuǎn)高于ALE。但針對樹模型的TreeSHAP速度極快。選擇建議如果你想回答“這個(gè)特征平均來看是如何影響預(yù)測的” 選擇ALE。如果你想分析“這個(gè)特征與其它特征的交互作用如何”或者“對于單個(gè)預(yù)測每個(gè)特征貢獻(xiàn)了多少” 選擇SHAP。在實(shí)踐中我常常兩者結(jié)合使用用ALE看整體邊際趨勢用SHAP分析具體樣本和交互作用。5.4 當(dāng)ALE圖“不好看”時(shí)怎么辦圖形劇烈抖動(dòng)首先檢查分箱數(shù)是否過多或該特征的數(shù)據(jù)是否過于稀疏。嘗試減少grid_size。其次計(jì)算置信區(qū)間可能抖動(dòng)區(qū)域的置信區(qū)間很寬說明結(jié)論不確定。效應(yīng)幾乎為0的直線這可能有幾種情況1該特征確實(shí)對模型預(yù)測沒有貢獻(xiàn)被特征重要性驗(yàn)證2該特征與其他特征完全共線性其效應(yīng)被其他特征完全“代理”了3該特征與目標(biāo)的關(guān)系被模型以非常復(fù)雜、非加性的方式編碼例如只在特定的多維交互中起作用一階ALE無法捕捉。此時(shí)需要檢查二階ALE或SHAP交互值。與業(yè)務(wù)直覺完全相反這是最有價(jià)值的時(shí)刻不要立刻懷疑模型。逐步排查1檢查數(shù)據(jù)質(zhì)量該特征是否存在大量缺失或錯(cuò)誤編碼2檢查是否存在數(shù)據(jù)泄露Data Leakage該特征是否包含了未來信息3用簡單的線性模型或決策樹擬合一下看是否也有同樣現(xiàn)象如果簡單模型沒有而復(fù)雜模型有可能是復(fù)雜模型過擬合了噪聲。如果簡單模型也有那很可能數(shù)據(jù)中就有這種反直覺的關(guān)系需要和業(yè)務(wù)方深入探討。最后記住ALE圖是你的探索工具和溝通工具。它的價(jià)值在于將模型的復(fù)雜行為轉(zhuǎn)化為人類可理解的圖形從而引發(fā)更深度的思考、討論和驗(yàn)證。把它作為你模型開發(fā)流程中的標(biāo)準(zhǔn)環(huán)節(jié)無論是用于自我驗(yàn)證還是向非技術(shù)利益相關(guān)者解釋模型決策都能極大地提升工作的嚴(yán)謹(jǐn)性和價(jià)值。