Κοινή χρήση μέσω


Εκμάθηση: Δημιουργία, αξιολόγηση και βαθμολογία ενός μοντέλου ταξινόμησης κειμένου

Αυτό το εκπαιδευτικό βοήθημα παρουσιάζει ένα τελικό παράδειγμα μιας ροής εργασιών Synapse Data Science για ένα μοντέλο ταξινόμησης κειμένου, στο Microsoft Fabric. Το σενάριο χρησιμοποιεί word2vec και λογιστική παλινδρόμηση, στο Spark, για να καθορίσει το είδος ενός βιβλίου από το σύνολο δεδομένων βιβλίων της Βρετανικής Βιβλιοθήκης, αποκλειστικά με βάση τον τίτλο του βιβλίου.

Αυτό το εκπαιδευτικό βοήθημα καλύπτει τα εξής βήματα:

  • Εγκατάσταση προσαρμοσμένων βιβλιοθηκών
  • Φόρτωση των δεδομένων
  • Κατανόηση και επεξεργασία των δεδομένων με διερευνητική ανάλυση δεδομένων
  • Εκπαιδεύστε ένα μοντέλο εκμάθησης μηχανής με word2vec και λογιστική παλινδρόμηση και παρακολουθήστε πειράματα με το MLflow και τη δυνατότητα αυτόματης καταχώρησης fabric
  • Φόρτωση του μοντέλου εκμάθησης μηχανής για βαθμολόγηση και προβλέψεις

Προϋποθέσεις

  • Λάβετε μια συνδρομής Microsoft Fabric . Εναλλακτικά, εγγραφείτε για μια δωρεάν δοκιμαστική έκδοση microsoft Fabric.

  • Εισέλθετε για να το Microsoft Fabric.

  • Χρησιμοποιήστε την εναλλαγή εμπειρίας στην κάτω αριστερή πλευρά της αρχικής σελίδας σας για να μεταβείτε σε Fabric.

    Στιγμιότυπο οθόνης του μενού εναλλαγής εμπειρίας, που εμφανίζει πού μπορείτε να επιλέξετε Επιστήμη δεδομένων.

Παρακολούθηση σε σημειωματάριο

Μπορείτε να κάνετε μία από αυτές τις επιλογές για να ακολουθήσετε τις οδηγίες σε ένα σημειωματάριο:

  • Ανοίξτε και εκτελέστε το ενσωματωμένο σημειωματάριο.
  • Αποστείλετε το σημειωματάριό σας από το GitHub.

Άνοιγμα του ενσωματωμένου σημειωματάριου

Το δείγμα σημειωματάριο ταξινόμησης στο είδος τίτλου συνοδεύει αυτό το εκπαιδευτικό βοήθημα.

  1. Για να ανοίξετε το δείγμα σημειωματάριου για αυτό το εκπαιδευτικό βοήθημα, ακολουθήστε τις οδηγίες στο Προετοιμασία του συστήματός σας για εκπαιδευτικά βοηθήματα επιστήμης δεδομένων.

  2. Βεβαιωθείτε ότι επισυνάψετε μια λίμνη στο σημειωματάριο προτού ξεκινήσετε την εκτέλεση κώδικα.

Εισαγωγή του σημειωματάριου από το GitHub

AIsample - Title Genre Classification.ipynb είναι το σημειωματάριο που συνοδεύει αυτό το πρόγραμμα εκμάθησης.

Βήμα 1: Εγκατάσταση προσαρμοσμένων βιβλιοθηκών

Για την ανάπτυξη μοντέλου εκμάθησης μηχανής ή την ανάλυση δεδομένων ad-hoc, ίσως χρειαστεί να εγκαταστήσετε γρήγορα μια προσαρμοσμένη βιβλιοθήκη για την περίοδο λειτουργίας Apache Spark. Έχετε δύο επιλογές για την εγκατάσταση βιβλιοθηκών.

  • Χρησιμοποιήστε τις δυνατότητες ενσωματωμένης εγκατάστασης (%pip ή %conda) του σημειωματάριού σας για να εγκαταστήσετε μια βιβλιοθήκη, μόνο στο τρέχον σημειωματάριό σας.
  • Εναλλακτικά, μπορείτε να δημιουργήσετε ένα περιβάλλον Fabric, να εγκαταστήσετε βιβλιοθήκες από δημόσιες προελεύσεις ή να αποστείλετε προσαρμοσμένες βιβλιοθήκες σε αυτό και, στη συνέχεια, ο διαχειριστής του χώρου εργασίας σας μπορεί να συνδέσει το περιβάλλον ως προεπιλογή για τον χώρο εργασίας. Στη συνέχεια, όλες οι βιβλιοθήκες στο περιβάλλον θα γίνουν διαθέσιμες για χρήση σε οποιαδήποτε σημειωματάρια και ορισμούς εργασίας Spark στον χώρο εργασίας. Για περισσότερες πληροφορίες σχετικά με τα περιβάλλοντα, ανατρέξτε στο θέμα δημιουργία, ρύθμιση παραμέτρων και χρήση περιβάλλοντος στο Microsoft Fabric.

Για το μοντέλο ταξινόμησης, χρησιμοποιήστε τη βιβλιοθήκη wordcloud για να αναπαραστήσει τη συχνότητα των λέξεων στο κείμενο, όπου το μέγεθος μιας λέξης αντιπροσωπεύει τη συχνότητά της. Για αυτή την εκμάθηση, χρησιμοποιήστε %pip install για να εγκαταστήσετε wordcloud στο σημειωματάριό σας.

Σημείωση

Ο πυρήνας του PySpark επανεκκινείται μετά την %pip install εκτελέσεων. Εγκαταστήστε τις απαραίτητες βιβλιοθήκες πριν εκτελέσετε οποιαδήποτε άλλα κελιά.

# Install wordcloud for text visualization by using pip
%pip install wordcloud

Βήμα 2: Φόρτωση των δεδομένων

Το σύνολο δεδομένων έχει μετα-δεδομένα σχετικά με βιβλία από τη Βρετανική Βιβλιοθήκη τα οποία έχει ψηφιοποιήσει μια συνεργασία μεταξύ της βιβλιοθήκης και της Microsoft. Τα μετα-δεδομένα είναι πληροφορίες ταξινόμησης που υποδεικνύουν εάν ένα βιβλίο είναι μυθοπλασία ή μη φαντασία. Με αυτό το σύνολο δεδομένων, ο στόχος είναι να εκπαιδεύσετε ένα μοντέλο ταξινόμησης που καθορίζει το είδος ενός βιβλίου, μόνο με βάση τον τίτλο του.

Αναγνωριστικό εγγραφής BL Τύπος πόρου Όνομα Ημερομηνίες που σχετίζονται με το όνομα Τύπος ονόματος Ρόλος Όλα τα ονόματα Τίτλος Τίτλοι παραλλαγών Τίτλος σειράς Αριθμός εντός σειράς Χώρα δημοσίευσης Τόπος δημοσίευσης Εκδότης Ημερομηνία δημοσίευσης Έκδοση Φυσική περιγραφή Ταξινόμηση dewey Ραφιού BL Θέματα Είδος Γλώσσες Σημειώσεις Αναγνωριστικό εγγραφής BL για φυσικό πόρο classification_id user_id created_at subject_ids annotator_date_pub annotator_normalised_date_pub annotator_edition_statement annotator_genre annotator_FAST_genre_terms annotator_FAST_subject_terms annotator_comments annotator_main_language annotator_other_languages_summaries annotator_summaries_language annotator_translation annotator_original_language annotator_publisher annotator_place_pub annotator_country annotator_title Σύνδεση προς ψηφιοποιημένο βιβλίο Σχολιασμένη
014602826 Μονογραφία Yearsley, Ann 1753-1806 άτομο Περισσότερα, Χάνα, 1745-1833 [άτομο]; Yearsley, Ann, 1753-1806 [πρόσωπο] Ποιήματα σε διάφορες περιπτώσεις [Με μια εξωφρενική επιστολή από Χάνα Περισσότερα.] Αγγλία Λονδίνο 1786 Σημείωση χειρόγραφης τέταρτης έκδοσης Digital Store 11644.d.32 Αγγλικά 003996603 Ψεύτικος
014602830 Μονογραφία Α, Τ. άτομο Όλνταμ, Τζον, 1653-1683 [πρόσωπο]; A, T. [άτομο] Ένας Σάτυρ εναντίον του Vertue. (Ένα ποίημα: υποτίθεται ότι εκφωνείται από μια Town-Hector [από τον John Oldham. Το πρόλογο με το σύμβολο: T. A.]) Αγγλία Λονδίνο 1679 15 σελίδες (4°) Digital Store 11602.ee.10. (2.) Αγγλικά 000001143 Ψεύτικος

Καθορίστε τις παρακάτω παραμέτρους, ώστε να μπορείτε να εφαρμόσετε αυτό το σημειωματάριο σε διαφορετικά σύνολα δεδομένων:

IS_CUSTOM_DATA = False  # If True, the user must manually upload the dataset
DATA_FOLDER = "Files/title-genre-classification"
DATA_FILE = "blbooksgenre.csv"

# Data schema
TEXT_COL = "Title"
LABEL_COL = "annotator_genre"
LABELS = ["Fiction", "Non-fiction"]

EXPERIMENT_NAME = "sample-aisample-textclassification"  # MLflow experiment name

Λήψη του συνόλου δεδομένων και αποστολή στο lakehouse

Αυτός ο κώδικας κάνει λήψη μιας δημόσια διαθέσιμης έκδοσης του συνόλου δεδομένων και, στη συνέχεια, τον αποθηκεύει σε μια λίμνη Fabric.

Σημαντικός

Προσθέστε ένα lakehouse στο σημειωματάριο πριν το εκτελέσετε. Εάν δεν το κάνετε αυτό, θα παρουσιαστεί σφάλμα.

if not IS_CUSTOM_DATA:
    # Download demo data files into the lakehouse, if they don't exist
    import os, requests

    remote_url = "https://synapseaisolutionsa.blob.core.windows.net/public/Title_Genre_Classification"
    fname = "blbooksgenre.csv"
    download_path = f"/lakehouse/default/{DATA_FOLDER}/raw"

    if not os.path.exists("/lakehouse/default"):
        # Add a lakehouse, if no default lakehouse was added to the notebook
        # A new notebook won't link to any lakehouse by default
        raise FileNotFoundError(
            "Default lakehouse not found, please add a lakehouse and restart the session."
        )
    os.makedirs(download_path, exist_ok=True)
    if not os.path.exists(f"{download_path}/{fname}"):
        r = requests.get(f"{remote_url}/{fname}", timeout=30)
        with open(f"{download_path}/{fname}", "wb") as f:
            f.write(r.content)
    print("Downloaded demo data files into lakehouse.")

Εισαγωγή απαιτούμενων βιβλιοθηκών

Πριν από οποιαδήποτε επεξεργασία, πρέπει να εισαγάγετε τις απαιτούμενες βιβλιοθήκες, συμπεριλαμβανομένων των βιβλιοθηκών για το Spark και το SynapseML:

import numpy as np
from itertools import chain

from wordcloud import WordCloud
import matplotlib.pyplot as plt
import seaborn as sns

import pyspark.sql.functions as F

from pyspark.ml import Pipeline
from pyspark.ml.feature import *
from pyspark.ml.tuning import CrossValidator, ParamGridBuilder
from pyspark.ml.classification import LogisticRegression
from pyspark.ml.evaluation import (
    BinaryClassificationEvaluator,
    MulticlassClassificationEvaluator,
)

from synapse.ml.stages import ClassBalancer
from synapse.ml.train import ComputeModelStatistics

import mlflow

Ορισμός υπερπαραμετών

Καθορίστε ορισμένα hyperparameters για την εκπαίδευση μοντέλου.

Σημαντικός

Τροποποιήστε αυτά τα hyperparameters μόνο εάν κατανοείτε κάθε παράμετρο.

# Hyperparameters 
word2vec_size = 128  # The length of the vector for each word
min_word_count = 3  # The minimum number of times that a word must appear to be considered
max_iter = 10  # The maximum number of training iterations
k_folds = 3  # The number of folds for cross-validation

Ξεκινήστε την εγγραφή του χρόνου που απαιτείται για την εκτέλεση αυτού του σημειωματάριου:

# Record the notebook running time
import time

ts = time.time()

Ρύθμιση παρακολούθησης πειραμάτων MLflow

Η αυτόματη καταχώρηση επεκτείνει τις δυνατότητες καταγραφής ροής ML. Η αυτόματη καταγραφή καταγράφει αυτόματα τις τιμές παραμέτρων εισόδου και τα μετρικά εξόδου ενός μοντέλου εκμάθησης μηχανής καθώς τα εκπαιδεύετε. Στη συνέχεια, καταγράψτε αυτές τις πληροφορίες στον χώρο εργασίας. Στον χώρο εργασίας, μπορείτε να αποκτήσετε πρόσβαση και να απεικονίσετε τις πληροφορίες με τα API MLflow ή το αντίστοιχο πείραμα στον χώρο εργασίας. Για να μάθετε περισσότερα σχετικά με την αυτόματη καταχώρηση, ανατρέξτε στο θέμα Αυτόματη καταχώρηση στο Microsoft Fabric.

# Set up Mlflow for experiment tracking

mlflow.set_experiment(EXPERIMENT_NAME)
mlflow.autolog(disable=True)  # Disable Mlflow autologging

Για να απενεργοποιήσετε την αυτόματη καταχώρηση σε σημειωματάριο του Microsoft Fabric σε μια περίοδο λειτουργίας σημειωματάριου, καλέστε mlflow.autolog() και ορίστε disable=True:

Ανάγνωση ανεπεξέργαστων δεδομένων ημερομηνίας από το lakehouse

raw_df = spark.read.csv(f"{DATA_FOLDER}/raw/{DATA_FILE}", header=True, inferSchema=True)

Βήμα 3: Εκτέλεση διερευνητικής ανάλυσης δεδομένων

Εξερευνήστε το σύνολο δεδομένων με την εντολή display, για να προβάλετε στατιστικά στοιχεία υψηλού επιπέδου για το σύνολο δεδομένων και να εμφανίσετε τις προβολές γραφήματος:

display(raw_df.limit(20))

Προετοιμασία των δεδομένων

Καταργήστε τα διπλότυπα για να καθαρίσετε τα δεδομένα:

df = (
    raw_df.select([TEXT_COL, LABEL_COL])
    .where(F.col(LABEL_COL).isin(LABELS))
    .dropDuplicates([TEXT_COL])
    .cache()
)

display(df.limit(20))

Εφαρμογή εξισορρόπησης κλάσης για την αντιμετώπιση οποιασδήποτε μεροληψίας:

# Create a ClassBalancer instance, and set the input column to LABEL_COL
cb = ClassBalancer().setInputCol(LABEL_COL)

# Fit the ClassBalancer instance to the input DataFrame, and transform the DataFrame
df = cb.fit(df).transform(df)

# Display the first 20 rows of the transformed DataFrame
display(df.limit(20))

Διαιρέστε τις παραγράφους και τις προτάσεις σε μικρότερες μονάδες, για να διακριτικοποιήσετε το σύνολο δεδομένων. Με αυτόν τον τρόπο, γίνεται ευκολότερο να εκχωρήσετε σημασία. Στη συνέχεια, καταργήστε τις λέξεις-κλειδιά διακοπής για να βελτιώσετε τις επιδόσεις. Η κατάργηση του stopword περιλαμβάνει την κατάργηση λέξεων που εμφανίζονται συνήθως σε όλα τα έγγραφα στο corpus. Η κατάργηση του stopword είναι ένα από τα πιο συχνά χρησιμοποιούμενα βήματα προεπεξεργασίας σε εφαρμογές επεξεργασίας φυσικής γλώσσας (NLP).

# Text transformer
tokenizer = Tokenizer(inputCol=TEXT_COL, outputCol="tokens")
stopwords_remover = StopWordsRemover(inputCol="tokens", outputCol="filtered_tokens")

# Build the pipeline
pipeline = Pipeline(stages=[tokenizer, stopwords_remover])

token_df = pipeline.fit(df).transform(df)

display(token_df.limit(20))

Εμφανίστε τη βιβλιοθήκη cloud λέξεων για κάθε κλάση. Μια βιβλιοθήκη cloud λέξεων είναι μια οπτική παρουσίαση λέξεων-κλειδιών που εμφανίζονται συχνά σε δεδομένα κειμένου. Η βιβλιοθήκη wordcloud είναι αποτελεσματική, επειδή η απόδοση λέξεων-κλειδιών σχηματίζει μια εικόνα χρώματος cloud, για την καλύτερη καταγραφή των κύριων δεδομένων κειμένου με μια ματιά. Μάθετε περισσότερα σχετικά με τοτου wordcloud .

# WordCloud
for label in LABELS:
    tokens = (
        token_df.where(F.col(LABEL_COL) == label)
        .select(F.explode("filtered_tokens").alias("token"))
        .where(F.col("token").rlike(r"^\w+$"))
    )

    top50_tokens = (
        tokens.groupBy("token").count().orderBy(F.desc("count")).limit(50).collect()
    )

    # Generate a wordcloud image
    wordcloud = WordCloud(
        scale=10,
        background_color="white",
        random_state=42,  # Make sure the output is always the same for the same input
    ).generate_from_frequencies(dict(top50_tokens))

    # Display the generated image by using matplotlib
    plt.figure(figsize=(10, 10))
    plt.title(label, fontsize=20)
    plt.axis("off")
    plt.imshow(wordcloud, interpolation="bilinear")

Τέλος, χρησιμοποιήστε το word2vec για να διανυσματικά το κείμενο. Η τεχνική word2vec δημιουργεί μια διανυσματική αναπαράσταση κάθε λέξης στο κείμενο. Οι λέξεις που χρησιμοποιούνται σε παρόμοια περιβάλλοντα ή που έχουν σημασιολογικές σχέσεις, καταγράφονται αποτελεσματικά μέσω της εγγύτητάς τους στον διανυσματικό χώρο. Αυτή η εγγύτητα υποδεικνύει ότι παρόμοιες λέξεις έχουν παρόμοια διανύσματα λέξεων.

# Label transformer
label_indexer = StringIndexer(inputCol=LABEL_COL, outputCol="labelIdx")
vectorizer = Word2Vec(
    vectorSize=word2vec_size,
    minCount=min_word_count,
    inputCol="filtered_tokens",
    outputCol="features",
)

# Build the pipeline
pipeline = Pipeline(stages=[label_indexer, vectorizer])
vec_df = (
    pipeline.fit(token_df)
    .transform(token_df)
    .select([TEXT_COL, LABEL_COL, "features", "labelIdx", "weight"])
)

display(vec_df.limit(20))

Βήμα 4: Εκπαίδευση και αξιολόγηση του μοντέλου

Με τα δεδομένα έτοιμα, ορίστε το μοντέλο. Σε αυτήν την ενότητα, εκπαιδεύετε ένα μοντέλο λογιστικής παλινδρόμησης για να ταξινομήσετε το διανυσματικό κείμενο.

Προετοιμασία συνόλων δεδομένων εκπαίδευσης και δοκιμής

# Split the dataset into training and testing
(train_df, test_df) = vec_df.randomSplit((0.8, 0.2), seed=42)

Παρακολούθηση πειραμάτων εκμάθησης μηχανής

Ένα πείραμα εκμάθησης μηχανής είναι η κύρια μονάδα οργανισμού και ελέγχου για όλες τις σχετικές εκτελέσεις εκμάθησης μηχανής. Μια εκτέλεση αντιστοιχεί σε μία μόνο εκτέλεση κώδικα μοντέλου.

Η παρακολούθηση πειραμάτων εκμάθησης μηχανής διαχειρίζεται όλα τα πειράματα και τα στοιχεία τους, για παράδειγμα παραμέτρους, μετρικά, μοντέλα και άλλα αντικείμενα σχεδίασης. Η παρακολούθηση επιτρέπει την οργάνωση όλων των απαιτούμενων στοιχείων ενός συγκεκριμένου πειράματος εκμάθησης μηχανής. Επιτρέπει επίσης την εύκολη αναπαραγωγή προηγούμενων αποτελεσμάτων με αποθηκευμένα πειράματα. Μάθετε περισσότερα σχετικά με τα πειράματα εκμάθησης μηχανής στο Microsoft Fabric.

# Build the logistic regression classifier
lr = (
    LogisticRegression()
    .setMaxIter(max_iter)
    .setFeaturesCol("features")
    .setLabelCol("labelIdx")
    .setWeightCol("weight")
)

Ρύθμιση υπερπαραμετών

Δημιουργήστε ένα πλέγμα παραμέτρων για αναζήτηση μέσω των υπερπαραμετών. Στη συνέχεια, δημιουργήστε έναν εκτιμητή διασταυρούμενης αξιολόγησης, για να δημιουργήσετε ένα CrossValidator μοντέλο:

# Build a grid search to select the best values for the training parameters
param_grid = (
    ParamGridBuilder()
    .addGrid(lr.regParam, [0.03, 0.1])
    .addGrid(lr.elasticNetParam, [0.0, 0.1])
    .build()
)

if len(LABELS) > 2:
    evaluator_cls = MulticlassClassificationEvaluator
    evaluator_metrics = ["f1", "accuracy"]
else:
    evaluator_cls = BinaryClassificationEvaluator
    evaluator_metrics = ["areaUnderROC", "areaUnderPR"]
evaluator = evaluator_cls(labelCol="labelIdx", weightCol="weight")

# Build a cross-evaluator estimator
crossval = CrossValidator(
    estimator=lr,
    estimatorParamMaps=param_grid,
    evaluator=evaluator,
    numFolds=k_folds,
    collectSubModels=True,
)

Αξιολόγηση του μοντέλου

Μπορούμε να αξιολογήσουμε τα μοντέλα στο σύνολο δεδομένων δοκιμής, για να τα συγκρίνουμε. Ένα καλά εκπαιδευμένο μοντέλο θα πρέπει να επιδεικνύει υψηλές επιδόσεις, στα σχετικά μετρικά, όταν εκτελείται σε σχέση με τα σύνολα δεδομένων επικύρωσης και δοκιμής.

def evaluate(model, df):
    log_metric = {}
    prediction = model.transform(df)
    for metric in evaluator_metrics:
        value = evaluator.evaluate(prediction, {evaluator.metricName: metric})
        log_metric[metric] = value
        print(f"{metric}: {value:.4f}")
    return prediction, log_metric

Παρακολούθηση πειραμάτων με χρήση MLflow

Ξεκινήστε τη διαδικασία εκπαίδευσης και αξιολόγησης. Χρησιμοποιήστε τη ροή ML για να παρακολουθείτε όλα τα πειράματα και τις παραμέτρους καταγραφής, τα μετρικά και τα μοντέλα. Όλες αυτές οι πληροφορίες καταγράφονται με το όνομα του πειράματος στον χώρο εργασίας.

with mlflow.start_run(run_name="lr"):
    models = crossval.fit(train_df)
    best_metrics = {k: 0 for k in evaluator_metrics}
    best_index = 0
    for idx, model in enumerate(models.subModels[0]):
        with mlflow.start_run(nested=True, run_name=f"lr_{idx}") as run:
            print("\nEvaluating on test data:")
            print(f"subModel No. {idx + 1}")
            prediction, log_metric = evaluate(model, test_df)

            if log_metric[evaluator_metrics[0]] > best_metrics[evaluator_metrics[0]]:
                best_metrics = log_metric
                best_index = idx

            print("log model")
            mlflow.spark.log_model(
                model,
                f"{EXPERIMENT_NAME}-lrmodel",
                registered_model_name=f"{EXPERIMENT_NAME}-lrmodel",
                dfs_tmpdir="Files/spark",
            )

            print("log metrics")
            mlflow.log_metrics(log_metric)

            print("log parameters")
            mlflow.log_params(
                {
                    "word2vec_size": word2vec_size,
                    "min_word_count": min_word_count,
                    "max_iter": max_iter,
                    "k_folds": k_folds,
                    "DATA_FILE": DATA_FILE,
                }
            )

    # Log the best model and its relevant metrics and parameters to the parent run
    mlflow.spark.log_model(
        models.subModels[0][best_index],
        f"{EXPERIMENT_NAME}-lrmodel",
        registered_model_name=f"{EXPERIMENT_NAME}-lrmodel",
        dfs_tmpdir="Files/spark",
    )
    mlflow.log_metrics(best_metrics)
    mlflow.log_params(
        {
            "word2vec_size": word2vec_size,
            "min_word_count": min_word_count,
            "max_iter": max_iter,
            "k_folds": k_folds,
            "DATA_FILE": DATA_FILE,
        }
    )

Για να δείτε τα πειράματά σας:

  1. Επιλέξτε τον χώρο εργασίας σας στο αριστερό παράθυρο περιήγησης
  2. Εύρεση και επιλογή του ονόματος του πειράματος - σε αυτή την περίπτωση, sample_aisample-textclassification

Στιγμιότυπο οθόνης ενός πειράματος.

Βήμα 5: Βαθμολογία και αποθήκευση αποτελεσμάτων πρόβλεψης

Το Microsoft Fabric επιτρέπει στους χρήστες να λειτουργικοποιούν μοντέλα εκμάθησης μηχανής με τη PREDICT δυνατότητα κλιμάκωσης. Αυτή η συνάρτηση υποστηρίζει βαθμολόγηση δέσμης (ή συμπερίφραση δέσμης) σε οποιαδήποτε μηχανή υπολογιστικής λειτουργίας. Μπορείτε να δημιουργήσετε προβλέψεις δέσμης απευθείας από ένα σημειωματάριο ή τη σελίδα στοιχείου για ένα συγκεκριμένο μοντέλο. Για να μάθετε περισσότερα σχετικά με την PREDICT και τον τρόπο χρήσης της στο Fabric, ανατρέξτε στο θέμα Βαθμολόγηση μοντέλου εκμάθησης μηχανής με την PREDICT στο Microsoft Fabric.

Από τα προηγούμενα αποτελέσματα αξιολόγησης, το μοντέλο 1 έχει τα μεγαλύτερα μετρικά για το Area Under the Precision-Recall Curve (AUPRC) και για το Area Under the Curve Receiver Operating Characteristic (AUC-ROC). Επομένως, θα πρέπει να χρησιμοποιήσετε το μοντέλο 1 για πρόβλεψη.

Η AUC-ROC μέτρηση χρησιμοποιείται ευρέως για τη μέτρηση της απόδοσης δυαδικών ταξινομητών. Ωστόσο, μερικές φορές γίνεται πιο κατάλληλο να αξιολογηθεί ο αλγόριθμος ταξινόμησης με βάση τις μετρήσεις AUPRC. Το AUC-ROC γράφημα απεικονίζει την ανταλλαγή μεταξύ του αληθώς θετικού ρυθμού (TPR) και του ψευδώς θετικού ρυθμού (FPR). Η καμπύλη AUPRC συνδυάζει ακρίβεια (θετική προγνωστική τιμή ή PPV) και ανάκληση (αληθώς θετικός ρυθμός ή TPR) σε μία μόνο απεικόνιση.

# Load the best model
model_uri = f"models:/{EXPERIMENT_NAME}-lrmodel/1"
loaded_model = mlflow.spark.load_model(model_uri, dfs_tmpdir="Files/spark")

# Verify the loaded model
batch_predictions = loaded_model.transform(test_df)
batch_predictions.show(5)
# Code to save userRecs in the lakehouse
batch_predictions.write.format("delta").mode("overwrite").save(
    f"{DATA_FOLDER}/predictions/batch_predictions"
)
# Determine the entire runtime
print(f"Full run cost {int(time.time() - ts)} seconds.")