自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用H統(tǒng)計(jì)量分析機(jī)器學(xué)習(xí)模型特征相關(guān)性

人工智能 機(jī)器學(xué)習(xí)
盡管存在多重共線性,該方法仍然產(chǎn)生了一些有價(jià)值的結(jié)果。這是一個(gè)教訓(xùn),雖然你應(yīng)該避免在模型中包含高度相關(guān)的特征,但它們不一定是模型無關(guān)方法的終點(diǎn)。你只需使用其他方法驗(yàn)證結(jié)果即可。

Friedman 的 h 統(tǒng)計(jì)量 (h-stat) 為復(fù)雜的機(jī)器學(xué)習(xí)模型提供了一個(gè)強(qiáng)大的窗口。具體來說,它可以幫助我們了解它們是否使用交互來進(jìn)行預(yù)測。我們將看到,這種XAI(可解釋性機(jī)器學(xué)習(xí))方法可以告訴我們一個(gè)特征是否與任何其他特征或一個(gè)特定特征交互。為此,我們將:

  • 使用 Python 包 artemis 應(yīng)用 h-stat 。
  • 解釋輸出,包括交互熱圖和條形圖。

H-stat 是什么?

相互作用是指特征與目標(biāo)變量之間的關(guān)系取決于另一個(gè)特征的值。h-stat 通過將兩個(gè)或多個(gè)特征的聯(lián)合部分依賴 (PD) 函數(shù)與假設(shè)特征不相互作用的聯(lián)合 PD 進(jìn)行比較來量化此相互作用。

重要的一點(diǎn)是,該指標(biāo)有兩個(gè)版本:

  • 成對(duì) h-stat — 給出一個(gè)特征通過與另一個(gè)特征的交互產(chǎn)生的效果的百分比
  • 總體 h-stat — 給出某個(gè)特征與所有其他特征相互作用所產(chǎn)生的效果的百分比

為了能夠根據(jù)特征效果的百分比來解釋指標(biāo),我們對(duì)它們進(jìn)行了歸一化。然而,這個(gè)過程有時(shí)會(huì)夸大交互效應(yīng)。這種情況可能發(fā)生在盡管特征的大部分效果來自交互,但整體效果很小的情況下。這就是為什么我們也有這兩個(gè)指標(biāo)的非歸一化版本。當(dāng)應(yīng)用該方法時(shí),我們會(huì)看到所有這些版本相互補(bǔ)充。

artemis 使用

要應(yīng)用 H-stat,我們將使用artemis包。這是一個(gè)用于分析機(jī)器學(xué)習(xí)模型中交互的有用包。它提供了其他方法,包括 Greenwell 方法和一些特定于模型的方法。

import pandas as pd 
import matplotlib.pyplot as plt 
import random 

from sklearn.ensemble import RandomForestRegressor 
from artemis.interactions_methods.model_agnostic import FriedmanHStatisticMethod

數(shù)據(jù)和模型

我們將使用鮑魚數(shù)據(jù)集(https://archive.ics.uci.edu/dataset/1/abalone)來了解 ALE 的工作原理。鮑魚是一種美味的貝類。我們希望使用殼重和去殼重量(肉的重量)等特征來預(yù)測其殼中的環(huán)數(shù)。圖 1顯示了此數(shù)據(jù)集中所有數(shù)值特征的相關(guān)性熱圖。你可以看到我們正在處理一些高度相關(guān)的特征。

這是一個(gè)重要的問題。H -stat 的局限性之一是,當(dāng)特征實(shí)際上高度相關(guān)時(shí),它可以識(shí)別交互作用。這些被稱為虛假交互作用。隨后我們可以通過使用散點(diǎn)圖確認(rèn) h-stat 的結(jié)果。

圖 1:鮑魚數(shù)據(jù)集中數(shù)值特征的相關(guān)性熱圖圖 1:鮑魚數(shù)據(jù)集中數(shù)值特征的相關(guān)性熱圖

我們加載數(shù)據(jù)集并選擇目標(biāo)變量。我們還進(jìn)行了一些特征工程。首先,我們排除一些高度相關(guān)的特征。這是因?yàn)樵趫D 1中我們看到它們與其他特征的相關(guān)性為 1。最后,我們?yōu)樾詣e特征創(chuàng)建獨(dú)熱編碼。

#導(dǎo)入數(shù)據(jù)集
data = pd.read_csv("../../data/abalone.data",
                  names=["sex","length","diameter","height","whole weight",
                         "shucked weight","viscera weight","shell weight","rings"])

y = data["rings"]
X = data[["sex", "length", "height", "shucked weight", "viscera weight", "shell weight"]]

# 創(chuàng)建虛擬變量
X['sex.M'] = [1 if s == 'M' else 0 for s in X['sex']] 
X['sex.F'] = [1 if s == 'F' else 0 for s in X['sex']] 
X['sex.I'] = [1 if s == 'I' else 0 for s in X['sex']]
X = X.drop('sex', axis=1)

X.head()

圖 2:鮑魚數(shù)據(jù)集特征

我們使用這些特征來訓(xùn)練模型來預(yù)測環(huán)的數(shù)量。在本例中,我們使用了隨機(jī)森林模型(h-stat 與模型無關(guān),因此這應(yīng)該能夠?qū)⑵鋺?yīng)用于大多數(shù)建模包)。

# 訓(xùn)練模型
model = RandomForestRegressor() 
model.fit(X, y)

總體H-stat

H-stat 的計(jì)算成本很高,很多場景不太適合高維數(shù)據(jù)集。這里我們首先從特征矩陣中隨機(jī)選擇一組 100 個(gè)實(shí)例,以獲得穩(wěn)定的指標(biāo)估計(jì)值。

# 隨機(jī)選擇 100 個(gè)觀測值
random.seed(8) 
X_exp = random.choices(X.to_numpy(), k=100) 
X_exp = pd.DataFrame(X_exp, columns=X.columns)

創(chuàng)建一個(gè) H-stat 對(duì)象。然后使用 100 個(gè)實(shí)例來計(jì)算模型的 H-stats。

# 計(jì)算 H 統(tǒng)計(jì)量
h_stat = FriedmanHStatisticMethod() 
h_stat.fit(model, X_exp)

直接將指標(biāo)可視化為整體交互的圖。

# 整體交互圖
fig, ax = plt.subplots(figsize=(10 , 5)) 
h_stat.plot(vis_type='bar_chart_ova', ax=ax)

從該圖表中,我們可以看出,殼重和去殼重量的相互作用似乎很顯著(或至少比其他特征更顯著)。殼重對(duì)預(yù)測環(huán)數(shù)的影響中約有35% 來自與其他特征的相互作用。對(duì)于去殼重量,該值約為27% ,而對(duì)于其他特征,該值不到10% 。

圖 3:H 統(tǒng)計(jì)量顯示與所有其他特征的相互作用圖 3:H 統(tǒng)計(jì)量顯示與所有其他特征的相互作用

成對(duì) H-stat

問題是殼重和去殼重量與哪些特征有相互作用?。為此可以使用下面的代碼繪制成對(duì)的 H-stat。

# 成對(duì) h-stat
fig, ax = plt.subplots(figsize=( 10 , 4 )) 
h_stat.plot(vis_type='bar_chart', ax=ax)

該圖表明這些特征相互作用。它們的聯(lián)合 PDP 中約 24% 的變化來自兩個(gè)特征之間的相互作用。長度和內(nèi)臟重量(length:viscera weigh)之間的相互作用可能也不太顯著。

圖 4:顯示成對(duì)相互作用的 H 統(tǒng)計(jì)量的條形圖圖 4:顯示成對(duì)相互作用的 H 統(tǒng)計(jì)量的條形圖

更直觀的可視化此信息的方法是使用熱圖(直接設(shè)置參數(shù)即可)。對(duì)角線給出了每個(gè)特征的排列特征重要性分?jǐn)?shù)。我們可以看到,不僅這兩個(gè)特征(shell weight:shucked weight)的相互作用顯著,而且它們的自身作用也顯著。

# 交互熱圖
h_stat.plot()

圖 5:H-stat 熱圖顯示成對(duì)相互作用圖 5:H-stat 熱圖顯示成對(duì)相互作用

非標(biāo)準(zhǔn)化H-stat

如上所述,通過標(biāo)準(zhǔn)化 H-stat,我們可以夸大一些相互作用。artimise 包可以計(jì)算未標(biāo)準(zhǔn)化的值。為此,我們使用與之前相同的代碼,只是我們將 normalized 參數(shù)設(shè)置為 False。

h_stat_unnormalized = FriedmanHStatisticMethod(normalized= False ) 
h_stat_unnormalized.fit(model, X_exp) 

# 繪制熱圖
h_stat_unnormalized.plot()

交互值不再全部介于 0 和 1 之間。內(nèi)臟重量和長度( viscera weight: length)之間的交互似乎不再顯著。所以也許它在之前的圖中被夸大了。

圖 6:H 統(tǒng)計(jì)量熱圖顯示未標(biāo)準(zhǔn)化的成對(duì)相互作用圖 6:H 統(tǒng)計(jì)量熱圖顯示未標(biāo)準(zhǔn)化的成對(duì)相互作用

此時(shí),我們應(yīng)該考慮H-stat 的另一個(gè)弱點(diǎn)——虛假相互作用。在圖 1中,我們看到模型特征都高度相關(guān)。因此,我們需要確保 H-stat 不會(huì)將多重共線性與相互作用混淆。

一種方法是將底層數(shù)據(jù)集中的交互可視化。為此,我們創(chuàng)建了殼重與去殼重的散點(diǎn)圖。我們根據(jù)環(huán)數(shù)對(duì)點(diǎn)進(jìn)行著色,并添加顏色條。現(xiàn)在可以清楚地看到這種相互作用的性質(zhì)。

# 殼重量和去殼重量之間的相互作用
plt.scatter(X["shell weight"], X["shucked weight"], c=y, cmap="bwr")
plt.colorbar(label="Number of Rings", orientatinotallow="vertical")
plt.xlabel("shucked weight", size=15)
plt.ylabel("shell weight", size=15)

我們可以看到,環(huán)的數(shù)量會(huì)隨著去殼重量的增加而增加。同時(shí),當(dāng)去殼重量(鮑魚肉的重量)相對(duì)于鮑魚殼較大時(shí),環(huán)的數(shù)量也會(huì)更多??赡馨l(fā)生的情況是,鮑魚的殼會(huì)隨著年齡的增長而增長,在某個(gè)時(shí)候,它會(huì)停止增長。然而,鮑魚肉會(huì)繼續(xù)增長。這就是為什么我們看到最老的鮑魚肉比鮑魚殼更多。

圖 7:散點(diǎn)圖顯示殼重和去殼重量之間的相互作用圖 7:散點(diǎn)圖顯示殼重和去殼重量之間的相互作用

因此,盡管存在多重共線性,該方法仍然產(chǎn)生了一些有價(jià)值的結(jié)果。這是一個(gè)教訓(xùn),雖然你應(yīng)該避免在模型中包含高度相關(guān)的特征,但它們不一定是模型無關(guān)方法的終點(diǎn)。你只需使用其他方法驗(yàn)證結(jié)果即可。

我們看到了整體、成對(duì)和非標(biāo)準(zhǔn)化 h-stat 如何協(xié)同工作,以提供模型中交互的清晰視圖。但是,與所有方法一樣,它們也有其局限性。為了抵消這些局限性,值得應(yīng)用其他XAI]方法來分析交互。

責(zé)任編輯:武曉燕 來源: 數(shù)據(jù)STUDIO
相關(guān)推薦

2025-02-11 08:11:56

大型語言模型神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)

2020-07-08 15:10:11

Python數(shù)據(jù)分析代碼

2020-10-26 15:48:32

NLP自然語言處理數(shù)據(jù)

2013-05-22 14:02:34

2019-10-11 08:46:45

Python數(shù)據(jù)Numpy

2024-09-20 15:44:45

2022-04-14 08:21:48

微服務(wù)項(xiàng)目多模塊

2024-09-09 11:45:15

ONNX部署模型

2022-05-12 15:54:43

機(jī)器學(xué)習(xí)加密流量分析安全

2017-11-21 08:42:23

災(zāi)難恢復(fù)計(jì)劃

2019-08-29 18:07:51

機(jī)器學(xué)習(xí)人工智能

2009-07-17 16:21:26

社交相關(guān)性排序算法

2014-05-29 17:11:59

優(yōu)化鏈接

2021-07-16 14:24:08

網(wǎng)絡(luò)犯罪加密貨幣網(wǎng)絡(luò)攻擊

2017-07-07 14:41:13

機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)JavaScript

2021-11-02 09:40:50

TensorFlow機(jī)器學(xué)習(xí)人工智能

2022-08-16 15:17:37

機(jī)器學(xué)習(xí)算法模型

2021-10-19 15:11:33

網(wǎng)絡(luò)數(shù)據(jù)技術(shù)

2022-02-13 00:27:34

機(jī)器學(xué)習(xí)數(shù)字隱私技術(shù)

2013-03-13 10:19:24

Windows SerWindows 8
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)