Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Denne artikkelen forklarer hvordan du bruker explainable boosting-maskiner (EBM) i Microsoft Fabric til å lære opp regresjonsmodeller. En EBM er en maskinlæringsteknikk som kombinerer kraften i graderingsøkning med vekt på modelltolkning. En EBM skaper en blanding av beslutningstrær, lik graderingsøkning, men med et unikt fokus på generering av menneskelesbare modeller. EBMs gir både nøyaktige prognoser og klare, intuitive forklaringer for disse prognosene. EBMs er godt egnet for programmer som involverer helsetjenester, finans og forskriftssamsvar, der det er viktig å forstå de underliggende faktorene som driver modellbeslutninger.
I SynapseML kan du bruke en skalerbar implementering av forklarende forsterkende maskiner – drevet av Apache Spark – til å lære opp nye modeller. Denne opplæringen beskriver hvordan du bruker Apache Spar til å bruke skalerbarheten og tolkeligheten til forklarende maskiner i Microsoft Fabric. Bruk av forklarende maskiner med Microsoft Fabric er for øyeblikket i forhåndsversjon.
Viktig
Denne funksjonen er i forhåndsversjon.
Fordelene ved å forklare maskiner som kan økes
En EBM tilbyr en unik blanding av tolkelighet og prediktiv kraft, noe som gjør det til et ideelt valg når gjennomsiktighet og forståelse av maskinlæringsmodeller er avgjørende. Med EBM-er kan brukere bygge verdifull innsikt i de underliggende faktorene som driver prognoser, og de kan deretter forstå hvorfor en modell tar bestemte beslutninger eller prognoser. Dette er viktig for å bygge tillit til AI-systemer.
Deres evne til å avdekke komplekse relasjoner i dataene, samtidig som de gir klare og tolkelige resultater, gjør EBMs svært nyttige innen finans, helsetjenester, svindelgjenkjenning osv. På disse områdene er modellklarbarhet ikke bare nyttig, men ofte et forskriftsmessig krav. Til syvende og sist kan en EBM balansere mellom modellytelse og gjennomsiktighet, noe som sikrer nøyaktige, forståelige og ansvarlige AI-løsninger.
Forutsetninger
Få et Microsoft Fabric-abonnement. Eller registrer deg for en gratis Prøveversjon av Microsoft Fabric.
Logg på Microsoft Fabric.
Bruk opplevelsesbryteren nederst til venstre på hjemmesiden for å bytte til Fabric.
- Velg + og deretter Notatblokk for å opprette en ny notatblokk i arbeidsområdet.
Importer MLflow
Med MLflow kan du spore parameterne og resultatene av modellen. Kodesnutten nedenfor viser hvordan du bruker MLflow til eksperimentering og sporing. Verdien ebm-wine-quality er navnet på eksperimentet som logger informasjonen.
# Import MLflow
import mlflow
# Create a new experiment for EBM Wine Quality
mlflow.set_experiment("ebm-wine-quality")
Laste inn data
Kodesnutten nedenfor lastes inn og klargjør standard datasett for vinkvalitet, som fungerer som et nyttig datasett for regresjonsoppgaver. Den viser hvordan du laster inn, manipulerer og konverterer datasettet for bruk med Spark-baserte maskinlæringsoppgaver. Konverteringsprosessen innebærer konvertering av en Pandas-dataramme (returnert av Sklearn når du bruker argumentet as_frame) til en Spark-dataramme, som Spark ML-stiltrenere krever:
import sklearn
# Load the Wine Quality Data Set using the as_frame argument for Pandas compatibility.
bunch = sklearn.datasets.load_wine(as_frame=True)
# Extract the data into a Pandas dataframe.
pandas_df = bunch['data']
# Add the target variable to the Pandas dataframe.
pandas_df['target'] = bunch['target']
# Convert the Pandas dataframe to a Spark dataframe.
df = spark.createDataFrame(pandas_df)
# Display the resulting Spark dataframe.
display(df)
Klargjøre data
For elever i Spark ML-stil er det viktig å organisere funksjonene i en vektorverdikolonne. I vårt tilfelle her kan du se denne kolonnen som «funksjoner». Denne kolonnen omfatter alle kolonnene fra den innlastede datarammen, bortsett fra målvariabelen. Denne kodesnutten viser hvordan du bruker VectorAssembler-ressursen til å strukturere funksjonene riktig for påfølgende Spark ML-basert modellering:
from pyspark.ml.feature import VectorAssembler
# Define the name of the target variable column.
labelColumnName = 'target'
# Create a VectorAssembler to consolidate features.
assembler = VectorAssembler(outputCol='features')
# Specify the input columns, excluding the target column.
assembler.setInputCols([c for c in df.columns if c != labelColumnName])
# Transform the dataframe to include the 'features' column.
df_with_features = assembler.transform(df)
Kalibrer modellen
Kodesnutten nedenfor bruker Synapse ML-biblioteket til å starte opprettingsprosessen for EBM-regresjonsmodellen. Den initialiserer først EBM-regresjonsestimatoren, og angir at en regresjonsaktivitet trenger den. Den angir deretter navnet på etikettkolonnen for å sikre at modellen vet hvilken kolonne som skal forutsis. Til slutt passer den modellen til det forhåndsbearbeidede datasettet:
# Import the EBMRegression estimator from Synapse ML.
from synapse.ml.ebm import EbmRegression
# Create an instance of the EBMRegression estimator.
estimator = EbmRegression()
# Set the label column for the regression task.
estimator.setLabelCol(labelColumnName)
# Fit the EBM regression model to the prepared dataset.
model = estimator.fit(df_with_features)
Vis globale forklaringer
Du kan hente visualiseringspakkeren og bruke interpret bibliotekets show metode til å visualisere den generelle forklaringen av modellen. Visualiseringsinnpakningen fungerer som en bro for å forenkle visualiseringsopplevelsen til modellen. Følgende kodesnutt viser hvordan du gjør det:
# Get the visualization wrapper for the model.
wrap = model.getVizWrapper()
# Generate the global explanation.
explanation = wrap.explain_global()
Deretter importerer du interpret biblioteket og bruker show metoden til å vise forklaringen:
import interpret
interpret.show(explanation)
Begrepet "viktigheter" som vises i illustrasjonen nedenfor representerer gjennomsnittlig absolutt bidrag (poengsum) for hver term (funksjon eller samhandling) mot prognoser. Disse bidragene er i gjennomsnitt på tvers av opplæringsdatasettet, for å ta hensyn til antall eksempler i hver hylle og utvalgstykkelsene (hvis aktuelt). Forklaringen viser de 15 viktigste termene.
Vis lokale forklaringer
De angitte forklaringene opererer på globalt nivå, men i noen scenarier er også per funksjonsutdata verdifulle. Både treneren og modellen tilbyr muligheten til å angi FeaturesScoresCol kolonnen, som introduserer en annen vektorverdikolonne når den fylles ut. Hver vektor i denne kolonnen samsvarer med lengden på funksjonskolonnen, og hver verdi tilsvarer funksjonen ved samme indeks. Disse verdiene representerer bidraget fra hver funksjonsverdi til den endelige utdataene for modellen.
I motsetning til globale forklaringer er det for øyeblikket ingen direkte integrasjon med interpret visualisering for per funksjon-utdata. Dette skyldes at globale visualiseringer skaleres hovedsakelig med antall funksjoner (en typisk liten verdi), mens lokale forklaringer skaleres med radantallet (som for en Spark-dataramme kan være betydelig).
Følgende kodesnutt viser hvordan du konfigurerer og bruker FeaturesScoresCol kolonnen:
# Set the FeaturesScoresCol to include per-feature outputs.
prediction = model.setFeatureScoresCol("featurescores").transform(df_with_features)
# For small datasets, you can collect the results to a single machine without issues.
# However, for larger datasets, caution should be exercised when collecting all rows locally.
# In this example, we convert to Pandas for easy local inspection.
predictions_pandas = prediction.toPandas()
predictions_list = prediction.collect()
Skriv ut de første eksempeldetaljene:
# Extract the first example from the collected predictions.
first = predictions_list[0]
# Print the lengths of the features and feature scores.
print('Length of the features is', len(first['features']), 'while the feature scores have length', len(first['featurescores']))
# Print the values of the features and feature scores.
print('Features are', first['features'])
print('Feature scores are', first['featurescores'])
Kodesnutten viste hvordan du får tilgang til og skriver ut funksjonen , og tilsvarende funksjonsresultater, for det første eksemplet i prognosene. Denne koden produserer følgende utdata:
Length of the features is 13 while the feature scores have length 13
Features are [14.23, 1.71, 2.43, 15.6, 127.0, 2.8, 3.06, 0.28, 2.29, 5.64, 1.04, 3.92, 1065.0]
Feature scores are [-0.05929027436479602,-0.06788488062509922,-0.0385850430666259,-0.2761907140329337,-0.0423377816119861,0.03582834632321236,0.07759833436021146,-0.08428610897153033,-0.01322508472067107,-0.05477604157900576,0.08087667928468423,0.09010794901713073,-0.09521961842295387]