Del via


Oplær forklarende styrkemaskiner – regression (prøveversion)

I denne artikel lærer du, hvordan du oplærer regressionsmodeller ved hjælp af EBM (Explainable Boost Machines) i Microsoft Fabric. En EBM er en maskinel indlæringsteknik, der kombinerer styrken ved gradueringsforøgelse med fokus på modelfortolkning. Det skaber et ensemble af beslutningstræer, der ligner gradueringsforøgelse, men med et unikt fokus på at generere modeller, der kan læses af mennesker. EBMs giver ikke kun præcise forudsigelser, men giver også klare og intuitive forklaringer på disse forudsigelser. De er velegnede til programmer, hvor det er vigtigt at forstå de underliggende faktorer, der styrer modelbeslutninger, f.eks. sundhedspleje, økonomi og overholdelse af regler og standarder.

I SynapseML kan du bruge en skalerbar implementering af forklarende boostere, der drives af Apache Spark, til oplæring af nye modeller. Dette selvstudium hjælper dig gennem processen med at anvende skalerbarheden og fortolkningsbarheden af forklarende boostere i Microsoft Fabric ved at bruge Apache Spark. Brug af forklarende boostere med Microsoft Fabric er i øjeblikket en prøveversion.

Vigtig

Denne funktion er i prøveversion.

Fordele ved forklarende styrkemaskiner

EBMs tilbyder en unik blanding af fortolknings- og forudsigelseskraft, hvilket gør dem til et ideelt valg, når gennemsigtighed og forståelse af modeller til maskinel indlæring er afgørende. Med EBM'er kan brugerne få værdifuld indsigt i de underliggende faktorer, der driver forudsigelser, så de kan forstå, hvorfor en model træffer specifikke beslutninger eller forudsigelser, hvilket er afgørende for at opbygge tillid til AI-systemer.

Deres evne til at afdække komplekse relationer i dataene, samtidig med at de giver tydelige og fortolkelige resultater, gør dem uvurderlige på områder som økonomi, sundhedspleje og registrering af svindel. I disse felter er forklaring af modeller ikke kun ønskelig, men ofte et lovmæssigt krav. I sidste ende kan valget af EBMs skabe en balance mellem modellens ydeevne og gennemsigtighed og sikre, at AI-løsninger er nøjagtige, letforståelige og ansvarlige.

Forudsætninger

  • Opret en ny notesbog i arbejdsområdet ved at vælge + og derefter Notesbog.

Importér MLflow

Med MLflow kan du spore modellens parametre og resultater. Følgende kodestykke viser, hvordan du bruger MLflow til eksperimenterings- og sporingsformål. Den ebm-wine-quality værdi er navnet på det eksperiment, hvor oplysningerne logføres.

# Import MLflow
import mlflow

# Create a new experiment for EBM Wine Quality
mlflow.set_experiment("ebm-wine-quality")

Indlæs data

Følgende kodestykke indlæser og forbereder standarddatasættet Vinkvalitet, der fungerer som et kompakt, men værdifuldt datasæt til regressionsopgaver. Det er vigtigt at fremhæve, at konverteringsprocessen omfatter konvertering af en Pandas-dataramme (returneret af Sklearn, når du bruger argumentet as_frame) til en Spark-dataramme, som kræves af Spark ML-typografitrænere:

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)

Dette kodestykke viser, hvordan du indlæser, manipulerer og konverterer datasættet til brug sammen med Spark-baserede opgaver til maskinel indlæring.

Forbered data

Som det er almindeligt med elever i Spark ML-stil, er det vigtigt at organisere funktionerne i en kolonne med vektorværdier. I dette tilfælde skal du referere til denne kolonne som "funktioner", der omfatter alle kolonner fra den indlæste dataramme med undtagelse af målvariablen:

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)

Dette kodestykke illustrerer, hvordan du bruger VectorAssembler til at strukturere funktionerne korrekt til efterfølgende Spark ML-baseret modellering.

Oplær modellen

Følgende kode starter processen med at oprette en EBM-regressionsmodel ved hjælp af Synapse ML-biblioteket. Først skal du initialisere EBM-regressionsestimatet og angive, at det er beregnet til en regressionsopgave. Angiv derefter navnet på navnekolonnen for at sikre, at modellen ved, hvilken kolonne der skal forudsiges. Til sidst skal du tilpasse modellen til det forbehandlede datasæt:

# 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)

Få vist globale forklaringer

Hvis du vil visualisere modellens overordnede forklaring, kan du hente visualiseringsombrydningen og bruge interpret bibliotekets show-metode. Visualiseringsombrydning fungerer som en bro for at lette modellens visualiseringsoplevelse. Sådan gør du:

# Get the visualization wrapper for the model.
wrap = model.getVizWrapper()

# Generate the global explanation.
explanation = wrap.explain_global()

Importér derefter biblioteket interpret, og brug metoden show til at få vist forklaringen:

import interpret
interpret.show(explanation)

Udtrykket "vigtigheder" repræsenterer det gennemsnitlige absolutte bidrag (score) for hvert ord (funktion eller interaktion) til forudsigelser. Disse bidrag beregnes i gennemsnit på tværs af træningsdatasættet under hensyntagen til antallet af eksempler i hver beholder og prøvevægte (hvis det er relevant). De øverste 15 vigtigste ord vises i forklaringen.

Skærmbillede af globale forklaringer.

Få vist lokale forklaringer

De angivne forklaringer er på globalt plan, men der er scenarier, hvor output pr. funktion også er værdifulde. Både træneren og modellen giver mulighed for at angive FeaturesScoresCol, som introducerer en anden kolonne med vektorværdier, når den udfyldes. Hver vektor i denne kolonne svarer til længden af funktionskolonnen, hvor hver værdi svarer til funktionen ved det samme indeks. Disse værdier repræsenterer bidraget fra hver funktions værdi til det endelige output af modellen.

I modsætning til globale forklaringer er der i øjeblikket ingen direkte integration med den interpret visualisering for output pr. funktion. Dette skyldes, at globale visualiseringer primært skaleres med antallet af funktioner (som typisk er små), mens lokale forklaringer skaleres med antallet af rækker (hvilket, hvis en Spark-dataramme, kan være betydelig).

Sådan konfigurerer og bruger du FeaturesScoresCol:

# 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()

Lad os udskrive detaljerne i det første eksempel til illustrationsformål:

# 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'])

Dette kodestykke viser, hvordan du får adgang til og udskriver funktionsværdierne og de tilsvarende funktionsscores for det første eksempel i forudsigelserne. Denne kode producerer følgende output:

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.06610139373422304, -0.06386890875478829, 0.006784629513340544, -0.27503132406909486, -0.017971992178296585, 0.027848245358365248, 0.08691003021839885, -0.09550122309042419, -0.0068259112648438175, -0.04053278237133137, 0.07148173894260551, 0.07739120309898403, -0.0867647572984993]