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


Χρήση μοντέλων LightGBM με το SynapseML στο Microsoft Fabric

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

Το LightGBM είναι ένα πλαίσιο ενίσχυσης διαβάθμισης υψηλής απόδοσης (GBDT, GBRT, GBM ή MART) ανοιχτού κώδικα. Το LightGBM είναι μέρος του έργου DMTK της Microsoft. Μπορείτε να χρησιμοποιήσετε το LightGBM χρησιμοποιώντας τα LightGBMClassifier, LightGBMRegressor και LightGBMRanker. Το LightGBM παρέχεται με τα πλεονεκτήματα της ενσωμάτωσης σε υπάρχουσες διοχετεύσεις SparkML και της χρήσης για φόρτους εργασίας δέσμης, ροής και εξυπηρέτησης. Προσφέρει επίσης μια μεγάλη γκάμα παραμέτρων με δυνατότητα ρύθμισης, τις οποία μπορεί κανείς να χρησιμοποιήσει για να προσαρμόσει το σύστημα δέντρου αποφάσεων. Το LightGBM στο Spark υποστηρίζει επίσης νέους τύπους προβλημάτων, όπως ποσοτική παλινδρόμηση.

Προαπαιτούμενα στοιχεία

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

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

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

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

  • Μεταβείτε στην εμπειρία επιστήμης δεδομένων στο Microsoft Fabric.
  • Δημιουργήστε ένα νέο σημειωματάριο.
  • Επισυνάψτε το σημειωματάριό σας σε ένα lakehouse. Στην αριστερή πλευρά του σημειωματάριού σας, επιλέξτε Προσθήκη για να προσθέσετε μια υπάρχουσα λίμνη ή να δημιουργήσετε μια νέα.

Χρήση LightGBMClassifier για την εκπαίδευση ενός μοντέλου ταξινόμησης

Σε αυτή την ενότητα, χρησιμοποιείτε την LightGBM για να δημιουργήσετε ένα μοντέλο ταξινόμησης για την πρόβλεψη πτώχευσης.

  1. Διαβάστε το σύνολο δεδομένων.

    from pyspark.sql import SparkSession
    
    # Bootstrap Spark Session
    spark = SparkSession.builder.getOrCreate()
    
    from synapse.ml.core.platform import *
    
    df = (
        spark.read.format("csv")
        .option("header", True)
        .option("inferSchema", True)
        .load(
            "wasbs://publicwasb@mmlspark.blob.core.windows.net/company_bankruptcy_prediction_data.csv"
        )
    )
    # print dataset size
    print("records read: " + str(df.count()))
    print("Schema: ")
    df.printSchema()
    
    display(df)
    
  2. Διαιρέστε το σύνολο δεδομένων σε σύνολα εκπαίδευσης και δοκιμών.

    train, test = df.randomSplit([0.85, 0.15], seed=1)
    
  3. Προσθέστε ένα πρόσθετο για να μετατρέψετε δυνατότητες σε διανυσματικά.

    from pyspark.ml.feature import VectorAssembler
    
    feature_cols = df.columns[1:]
    featurizer = VectorAssembler(inputCols=feature_cols, outputCol="features")
    train_data = featurizer.transform(train)["Bankrupt?", "features"]
    test_data = featurizer.transform(test)["Bankrupt?", "features"]
    
  4. Ελέγξτε εάν τα δεδομένα δεν έχουν εξισορροπηθεί.

    display(train_data.groupBy("Bankrupt?").count())
    
  5. Εκπαιδεύστε το μοντέλο χρησιμοποιώντας LightGBMClassifierτο .

    from synapse.ml.lightgbm import LightGBMClassifier
    
    model = LightGBMClassifier(
        objective="binary", featuresCol="features", labelCol="Bankrupt?", isUnbalance=True, dataTransferMode="bulk"
    )
    
    model = model.fit(train_data)
    
  6. Απεικόνιση σπουδαιότητας δυνατότητας

    import pandas as pd
    import matplotlib.pyplot as plt
    
    feature_importances = model.getFeatureImportances()
    fi = pd.Series(feature_importances, index=feature_cols)
    fi = fi.sort_values(ascending=True)
    f_index = fi.index
    f_values = fi.values
    
    # print feature importances
    print("f_index:", f_index)
    print("f_values:", f_values)
    
    # plot
    x_index = list(range(len(fi)))
    x_index = [x / len(fi) for x in x_index]
    plt.rcParams["figure.figsize"] = (20, 20)
    plt.barh(
        x_index, f_values, height=0.028, align="center", color="tan", tick_label=f_index
    )
    plt.xlabel("importances")
    plt.ylabel("features")
    plt.show()
    
  7. Δημιουργία προβλέψεων με το μοντέλο

    predictions = model.transform(test_data)
    predictions.limit(10).toPandas()
    
    from synapse.ml.train import ComputeModelStatistics
    
    metrics = ComputeModelStatistics(
        evaluationMetric="classification",
        labelCol="Bankrupt?",
        scoredLabelsCol="prediction",
    ).transform(predictions)
    display(metrics)
    

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

Σε αυτή την ενότητα, θα χρησιμοποιήσετε το LightGBM για να δημιουργήσετε ένα μοντέλο παλινδρόμησης για τον εντοπισμό φαρμάκων.

  1. Διαβάστε το σύνολο δεδομένων.

    triazines = spark.read.format("libsvm").load(
        "wasbs://publicwasb@mmlspark.blob.core.windows.net/triazines.scale.svmlight"
    )
    
    # print some basic info
    print("records read: " + str(triazines.count()))
    print("Schema: ")
    triazines.printSchema()
    display(triazines.limit(10))
    
  2. Διαιρέστε το σύνολο δεδομένων σε σύνολα εκπαίδευσης και δοκιμών.

    train, test = triazines.randomSplit([0.85, 0.15], seed=1)
    
  3. Εκπαιδεύστε το μοντέλο χρησιμοποιώντας LightGBMRegressorτο .

    from synapse.ml.lightgbm import LightGBMRegressor
    
    model = LightGBMRegressor(
        objective="quantile", alpha=0.2, learningRate=0.3, numLeaves=31, dataTransferMode="bulk"
    ).fit(train)
    
    print(model.getFeatureImportances())
    
  4. Δημιουργία προβλέψεων με το μοντέλο.

    scoredData = model.transform(test)
    display(scoredData)
    
    from synapse.ml.train import ComputeModelStatistics
    
    metrics = ComputeModelStatistics(
        evaluationMetric="regression", labelCol="label", scoresCol="prediction"
    ).transform(scoredData)
    display(metrics)
    

Χρήση LightGBMRanker για την εκπαίδευση ενός μοντέλου κατάταξης

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

  1. Διαβάστε το σύνολο δεδομένων.

    df = spark.read.format("parquet").load(
        "wasbs://publicwasb@mmlspark.blob.core.windows.net/lightGBMRanker_train.parquet"
    )
    # print some basic info
    print("records read: " + str(df.count()))
    print("Schema: ")
    df.printSchema()
    display(df.limit(10))
    
  2. Εκπαιδεύστε το μοντέλο κατάταξης χρησιμοποιώντας το LightGBMRanker.

    from synapse.ml.lightgbm import LightGBMRanker
    
    features_col = "features"
    query_col = "query"
    label_col = "labels"
    lgbm_ranker = LightGBMRanker(
        labelCol=label_col,
        featuresCol=features_col,
        groupCol=query_col,
        predictionCol="preds",
        leafPredictionCol="leafPreds",
        featuresShapCol="importances",
        repartitionByGroupingColumn=True,
        numLeaves=32,
        numIterations=200,
        evalAt=[1, 3, 5],
        metric="ndcg",
        dataTransferMode="bulk"
    )
    
    lgbm_ranker_model = lgbm_ranker.fit(df)
    
  3. Δημιουργία προβλέψεων με το μοντέλο.

    dt = spark.read.format("parquet").load(
        "wasbs://publicwasb@mmlspark.blob.core.windows.net/lightGBMRanker_test.parquet"
    )
    predictions = lgbm_ranker_model.transform(dt)
    predictions.limit(10).toPandas()