Interpretare il vostro modello di apprendimento profondo con SHAP

Quando interpretate l’output dei dati predittivi, assicuratevi di eseguire ogni passo con attenzione. Per soddisfare gli utenti, è necessario fornire intuizioni facili da capire. Potete farlo migliorando il processo del vostro modello. Va bene concentrarsi su modelli semplici piuttosto che su quelli complessi. Per esempio, i modelli lineari vi aiuteranno con una facile interpretazione. Tuttavia, con una quantità eccessiva di dati, l’uso di modelli complessi comporta numerosi vantaggi. Con un modello di questo tipo, potete portare il vostro trade-off in prima linea per un output accurato e interpretabile. È possibile scegliere tra numerosi metodi diversi per risolvere problemi complessi. Tuttavia, queste soluzioni non implicano come questi metodi si relazionano tra loro. Inoltre, non ci sono dati a sostegno del perché un metodo sia migliore dell’altro.
La costruzione di SHAP trae ispirazione dal precedente quadro unificato. Questo nuovo approccio al quadro SHAP utilizza i valori Shapely. Di seguito, puoi capire la definizione di SHAP e come puoi implementare il concetto con il pacchetto Python.
Shapley Additive exPlanations o SHAP è un approccio usato nella teoria dei giochi. Con SHAP, puoi spiegare l’output del tuo modello di apprendimento automatico. Questo modello collega la spiegazione locale dell’allocazione ottimale del credito con l’aiuto dei valori Shapely. Questo approccio è molto efficace con la teoria dei giochi.
SHAP è un valore di contributo marginale medio tra tutte le combinazioni della caratteristica che sono possibili. Di seguito, discuteremo come SHAP o Shapely Additive exPlanations stia diventando una tecnica popolare nel machine learning. Possiamo capire il concetto con il seguente esempio:
Possiamo considerare i punti che una squadra segna in ogni partita di una stagione. Supponiamo di voler trovare il punteggio medio del giocatore A e il suo contributo come punteggio di squadra in una partita. Per questo, abbiamo bisogno di trovare il contributo del giocatore A nella partnership del giocatore B e del giocatore C.
Mentre si esegue l’esperimento, è necessario assicurarsi delle seguenti condizioni sulle partite:
Per prima cosa, è necessario importare tutte le librerie necessarie con l’aiuto dei seguenti codici:
importa pandas come pd
importare numpy come np
importare shap
da sklearn.model_selection importare train_test_split
da sklearn.metrics importare mean_squared_error
da sklearn.linear_model importare LinearRegression
da sklearn.tree importare DecisionTreeRegressor
da sklearn.ensemble importare RandomForestRegressor
da xgboost.sklearn importare XGBRegressor
da sklearn.preprocessing importa OneHotEncoder, LabelEncoder
da sklearn importare albero
importare matplotlib.pyplot come plt
%matplotlib inline
importare avvertimenti
warnings.filterwarnings(‘ignore’)
Il seguente esempio riguarda il settore immobiliare. Tuttavia, è possibile utilizzare qualsiasi set di dati per trovare l’output con questo metodo. Questo è solo un esempio, quindi l’imputazione e la pre-elaborazione non sono importanti. Ma quando si tratta di un test originale, è necessario seguire la procedura completa:
data = pd.read_csv(‘data.csv’)# Rimuovere le caratteristiche con alti valori nulli
data.drop([‘PoolQC’, ‘MiscFeature’, ‘Fence’, ‘FireplaceQu’,
‘LotFrontage’], inplace=True, axis=1)# Elimina i valori nulli
data.dropna(inplace=True)# Prepara X e Y
X = pd.get_dummies(data)
X.drop([‘SalePrice’], inplace=True, axis=1)
y = data[‘SalePrice’]
In questo passo è necessario adattare il modello con il set di dati:
model = XGBRegressor(n_estimators=1000, max_depth=10, learning_rate=0.001)# Adatta il modello
model.fit(X, y)
Caratteristiche importanti dei valori Shap
Ora è necessario utilizzare la libreria SHAP. Questa è la libreria più potente disponibile. Controllate le trame che offrono.
caricare il codice di visualizzazione JS nel notebook
shap.initjs()
Forzare il plottaggio
i = 5
shap.force_plot(explainer.expected_value, shap_values[i], features=X.iloc[i], feature_names=X.columns)
Con l’aiuto della spiegazione di cui sopra, è possibile visualizzare le caratteristiche che contribuiscono a trovare l’output del vostro modello e spingere il valore di base. Il valore base è l’output medio del modello che riceviamo con l’aiuto dei dati di allenamento.