Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule wyjaśniono, jak używać wyjaśnialnych maszyn zwiększających (EBM) w usłudze Microsoft Fabric do trenowania modeli regresji. EBM to technika uczenia maszynowego, która łączy możliwości zwiększania gradientu z naciskiem na możliwość interpretacji modelu. EbM tworzy mieszankę drzew decyzyjnych, podobnie jak zwiększenie gradientu, ale z unikatowym naciskiem na generowanie modeli czytelnych dla człowieka. EbMs zapewniają zarówno dokładne przewidywania, jak i jasne, intuicyjne wyjaśnienia dla tych przewidywań. EbMs są odpowiednie dla aplikacji obejmujących opiekę zdrowotną, finanse i zgodność z przepisami, gdzie zrozumienie podstawowych czynników, które napędzają decyzje dotyczące modelu, jest niezbędne.
W usłudze SynapseML można użyć skalowalnej implementacji wyjaśnialnych maszyn zwiększających możliwości — obsługiwanych przez platformę Apache Spark — do trenowania nowych modeli. W tym samouczku opisano, jak za pomocą narzędzia Apache Spar zastosować skalowalność i możliwość interpretowania możliwych do wyjaśnienia maszyn zwiększających możliwości w usłudze Microsoft Fabric. Korzystanie z możliwych do wyjaśnienia zwiększania wydajności maszyn z usługą Microsoft Fabric jest obecnie dostępne w wersji zapoznawczej.
Zalety wyjaśnialnych algorytmów boostingowych
EbM oferuje unikalną mieszankę możliwości interpretacji i mocy predykcyjnej, co sprawia, że jest to idealny wybór, gdy przejrzystość i zrozumienie modeli uczenia maszynowego mają kluczowe znaczenie. Dzięki ebms użytkownicy mogą tworzyć cenne informacje na temat podstawowych czynników, które napędzają przewidywania, a następnie zrozumieć, dlaczego model podejmuje określone decyzje lub przewidywania. Jest to niezbędne do budowania zaufania do systemów sztucznej inteligencji.
Ich zdolność do odkrywania złożonych relacji w danych, zapewniając jasne i czytelne wyniki, sprawia, że EBMs są bardzo przydatne w finansach, opiece zdrowotnej, wykrywaniu oszustw itp. W tych obszarach wyjaśnienie modelu jest nie tylko przydatne, ale często wymaganie prawne. Ostatecznie EBM może równoważyć wydajność i przejrzystość modelu, zapewniając dokładne, zrozumiałe i godne odpowiedzialności rozwiązania sztucznej inteligencji.
Warunki wstępne
Pobierz subskrypcję usługi Microsoft Fabric . Możesz też utworzyć bezpłatne konto wersji próbnej usługi Microsoft Fabric.
Zaloguj się do usługi Microsoft Fabric.
Użyj przełącznika doświadczeń w lewej dolnej części strony głównej, aby przełączyć się na Fabric.
- Wybierz +, a następnie Notes, aby utworzyć nowy notes w obszarze roboczym.
Importowanie biblioteki MLflow
Rozwiązanie MLflow umożliwia śledzenie parametrów i wyników modelu. Poniższy fragment kodu pokazuje, jak używać biblioteki MLflow do eksperymentowania i śledzenia. Wartość ebm-wine-quality
to nazwa eksperymentu, który rejestruje informacje.
# Import MLflow
import mlflow
# Create a new experiment for EBM Wine Quality
mlflow.set_experiment("ebm-wine-quality")
Ładowanie danych
Poniższy fragment kodu ładuje i przygotowuje standardowy zestaw danych jakości wina, który służy jako przydatny zestaw danych zadania regresji. Przedstawia on sposób ładowania, manipulowania i konwertowania zestawu danych do użycia z zadaniami uczenia maszynowego opartego na platformie Spark. Proces konwersji obejmuje zmianę ramki danych Pandas (zwracanej przez Sklearn podczas używania argumentu as_frame) na ramkę danych Spark, ponieważ trenerzy Spark ML tego wymagają.
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)
Przygotowywanie danych
W przypadku uczniów w stylu uczenia maszynowego platformy Spark ważne jest organizowanie funkcji w kolumnie wektorowej. W tym przypadku należy odwołać się do tej kolumny jako "funkcje". Ta kolumna obejmuje wszystkie kolumny z załadowanej ramki danych, z wyjątkiem zmiennej docelowej. W tym fragmencie kodu pokazano, jak za pomocą zasobu VectorAssembler prawidłowo utworzyć strukturę funkcji w celu późniejszego modelowania opartego na usłudze Spark ML:
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)
Trenowanie modelu
Poniższy fragment kodu używa biblioteki synapse ML do rozpoczęcia procesu tworzenia modelu regresji EBM. Najpierw inicjuje estymator regresji EBM, określając, że jest on potrzebny do zadania regresji. Następnie ustala nazwę kolumny etykiety, aby model wiedział, którą kolumnę przewidywać. Na koniec model dopasowuje się do wstępnie przetworzonego zestawu danych.
# 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)
Wyświetlanie globalnych wyjaśnień
Możesz uzyskać interfejs wizualizacji i użyć metody z biblioteki interpret
, aby zwizualizować ogólne wyjaśnienie modelu. Opakowanie wizualizacji działa jako pomost, aby ułatwić doświadczenie wizualizacji modelu. Poniższy fragment kodu pokazuje, jak to zrobić:
# Get the visualization wrapper for the model.
wrap = model.getVizWrapper()
# Generate the global explanation.
explanation = wrap.explain_global()
Następnie zaimportuj bibliotekę interpret
i użyj show
metody , aby wyświetlić wyjaśnienie:
import interpret
interpret.show(explanation)
Termin "ważności" pokazany na poniższym obrazie reprezentuje średni wkład bezwzględny (wynik) każdego terminu (cecha lub interakcja) do przewidywań. Te wkłady są uśrednione w ramach zbioru danych szkoleniowych, aby uwzględnić liczbę próbek w każdej kategorii i wagi próbek (jeśli dotyczy). Wyjaśnienie zawiera 15 najważniejszych terminów.
Wyświetlanie lokalnych wyjaśnień
Podane wyjaśnienia działają na poziomie globalnym, ale w niektórych scenariuszach dane wyjściowe poszczególnych funkcji są również cenne. Zarówno trener, jak i model oferują możliwość ustawienia FeaturesScoresCol
kolumny, co, gdy jest wypełnione, wprowadza kolejną kolumnę o wartościach wektorowych. Każdy wektor w tej kolumnie odpowiada długości kolumny funkcji, a każda wartość odpowiada funkcji w tym samym indeksie. Te wartości reprezentują wkład każdej wartości funkcji do końcowych danych wyjściowych modelu.
W przeciwieństwie do globalnych wyjaśnień obecnie nie ma bezpośredniej integracji z wizualizacją interpret
dla danych wyjściowych poszczególnych funkcji. Dzieje się tak dlatego, że wizualizacje globalne są skalowane głównie z liczbą funkcji (zazwyczaj małą wartością), podczas gdy lokalne wyjaśnienia są skalowane przy użyciu liczby wierszy (co dla ramki danych platformy Spark może być istotne).
Poniższy fragment kodu przedstawia sposób konfigurowania i używania kolumny 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()
Wydrukuj pierwsze przykładowe szczegóły:
# 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'])
W fragmencie kodu pokazano, jak uzyskać dostęp do cechy i wydrukować jej wartość oraz odpowiednie oceny cech dla pierwszego przykładu w przewidywaniach modelu. Ten kod generuje następujące dane wyjściowe:
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]