Coursera Learner working on a presentation with Coursera logo and
Coursera Learner working on a presentation with Coursera logo and

Wanneer u de output van voorspellende gegevens interpreteert, moet u ervoor zorgen dat u elke stap zorgvuldig uitvoert. Om gebruikers tevreden te stellen, moet u eenvoudig te begrijpen inzichten bieden. Dat kunt u doen door het proces van uw model te verbeteren. Het is goed om je te concentreren op eenvoudige modellen in plaats van complexe. Lineaire modellen helpen u bijvoorbeeld bij een eenvoudige interpretatie. Maar bij buitensporige hoeveelheden gegevens biedt het gebruik van complexe modellen tal van voordelen. Met zo’n model kunt u uw voorhoede afruilen tegen nauwkeurige en interpreteerbare output. U kunt kiezen uit tal van verschillende methoden om complexe vraagstukken op te lossen. Deze oplossingen impliceren echter niet hoe deze methoden zich tot elkaar verhouden. Bovendien zijn er geen gegevens om te onderbouwen waarom de ene methode beter is dan de andere.
De SHAP-constructie is geïnspireerd op het vorige uniforme kader. Deze nieuwe benadering van het SHAP-kader maakt gebruik van Shapely-waarden. Hieronder vindt u de definitie van SHAP en hoe u het concept kunt implementeren met het Python-pakket.

Wat is SHAP?

Shapley Additive exPlanations of SHAP is een benadering die gebruikt wordt in de speltheorie. Met SHAP kunt u de output van uw machine learning model verklaren. Dit model verbindt de lokale verklaring van de optimale krediettoewijzing met behulp van Shapely-waarden. Deze aanpak is zeer effectief met speltheorie.

Hoe kunt u de Shapely-waarden berekenen

SHAP is een kenmerkende waarde van de gemiddelde marginale bijdrage onder alle combinaties van het kenmerk die mogelijk zijn. Hieronder bespreken we hoe SHAP of Shapely Additive exPlanations een populaire techniek wordt in machinaal leren. We kunnen het concept begrijpen met het volgende voorbeeld:
We kunnen de punten beschouwen die een team scoort in elke wedstrijd van een seizoen. Stel dat we de gemiddelde score van Speler A willen vinden en zijn bijdrage als teamscore in een wedstrijd. Daarvoor moeten we de bijdrage van Speler A vinden in het partnerschap van Speler B en Speler C.

OPMERKING

Terwijl je het experiment uitvoert, moet je zorgen voor de volgende voorwaarden over de wedstrijden:
1. 1. Voordat je het experiment uitvoert, moet je ervan uitgaan dat de proef met de spelers al is afgerond
2. 2. U moet ook aannemen dat elke speler in ten minste één wedstrijd kan spelen, zodat we het resultaat kunnen baseren op relevante gegevens.
3. Er moet een wedstrijd zijn waarin één speler niet beschikbaar is terwijl de andere twee wel beschikbaar zijn.
4. Hieronder vindt u slechts een voorbeeld. U kunt om het even welke metriek nemen volgens de rangschikking van het toernooi. Hieronder vindt u het puntentotaal als metriek:
Stap 1: Wanneer Speler A niet speelt, maar Speler B en C spelen in een combinatie.
In deze situatie moeten we de gemiddelde punten van de wedstrijden nemen. Je moet onthouden dat Speler A niet speelt, dus het gemiddelde zal alleen de punten van Speler B, en C omvatten. In dit voorbeeld ga je uit van een gemiddelde totaalscore gelijk aan 60 punten.
Stap 2: Wanneer Speler C niet speelt maar Speler A en B spelen in een combinatie.
Nu bekijken we het gemiddelde van Speler A en B, terwijl Speler C niet speelt. Stel dat de totale score van het team 90 punten is.
Aangezien alle spelers in een van de wedstrijden hebben gespeeld, kunnen we nu het puntentotaal van Speler A vinden door 85 van 65 af te trekken. Het antwoord zou 30 punten zijn. U kunt het experiment ook uitvoeren door het gemiddelde van het experiment meerdere keren te berekenen en het verschil te vinden.

Uitvoering van de codes

Eerst moet je alle nodige bibliotheken importeren met behulp van de volgende codes:
importeer pandas als pd
importeer numpy als np
importeer shap
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble importeren RandomForestRegressor
from xgboost.sklearn importeren XGBRegressor
from sklearn.preprocessing import OneHotEncoder, LabelEncoder
from sklearn import boom

importeren matplotlib.pyplot als plt
%matplotlib inline
importeren waarschuwingen
warnings.filterwarnings(‘ignore’)

De gegevens voorbewerken na het lezen

Het volgende voorbeeld gaat over Onroerend Goed. Je kunt echter elke dataset gebruiken om de output te vinden met deze methode. Dit is slechts een voorbeeld, dus imputatie en pre-processing zijn niet belangrijk. Maar als je een originele test doorloopt, moet je de volledige procedure volgen:
# Lees de gegevens
data = pd.read_csv(‘data.csv’)# Verwijder kenmerken met hoge null-waarden
data.drop([‘PoolQC’, ‘MiscFeature’, ‘Fence’, ‘FireplaceQu’,
‘LotFrontage’], inplace=True, axis=1)# Verwijder nulwaarden
data.dropna(inplace=True)# Bereid X en Y voor
X = pd.get_dummies(data)
X.drop([‘Verkoopprijs’], inplace=True, as=1)
y = data[‘Verkoopprijs’]

Pas uw model aan

In deze stap moet je het model passen met de dataset:
model = XGBRegressor(n_estimators=1000, max_depth=10, learning_rate=0.001)# Pas het model aan
model.fit(X, y)

Belangrijke kenmerken van Shap-waarden

Nu moet je de SHAP bibliotheek gebruiken. Dit is de meest krachtige bibliotheek die beschikbaar is. Bekijk de plots die ze aanbieden.
– Eerst moet je een JS visualisatie code starten in je bibliotheek.
# JS visualisatie code laden naar notebook
shap.initjs()
– Nu kun je de voorspelling van je model uitleggen.
– Je kunt beginnen met het verzamelen van de SHAP-waarden en de uitleg
shap_values.
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)

Plot de resultaten

Forceer Plotten
i = 5
shap.force_plot(explainer.expected_value, shap_values[i], features=X.iloc[i], feature_names=X.columns)

Conclusie

Met behulp van de bovenstaande uitleg kan je features bekijken die bijdragen tot het vinden van de output van je model en de basiswaarde pushen. De basiswaarde is de gemiddelde output van het model dat we krijgen met behulp van de trainingsgegevens.