Jaa


LightGBM-mallien käyttäminen SynapseML:n kanssa Microsoft Fabricissa

LightGBM-sovelluskehys on erikoistunut laadukkaiden ja suoritinta käyttävien päätöspuu-algoritmien luomiseen luokittelua, luokittelua ja monia muita koneoppimistehtäviä varten. Tässä artikkelissa käytetään LightGBM:a luokitus-, regressio- ja luokittelumallien luomiseen.

LightGBM on avoimen lähdekoodin hajautettu, suorituskykyinen liukuvärin tehoste (GBDT, GBRT, GBM tai MART) -kehys. LightGBM on osa Microsoftin DMTK-projektia. Voit käyttää LightGBM:tä käyttämällä parametria LightGBMClassifier, LightGBMRegressor ja LightGBMRanker. LightGBM:n mukana toimitetaan etuja siitä, että se sisällytetään olemassa oleviin SparkML-putkiin ja että sitä käytetään erän, suoratoiston ja kuormitusten palvelemiseen. Se tarjoaa myös laajan valikoiman säädettävissä olevia parametreja, joiden avulla voidaan mukauttaa päätöspuujärjestelmää. LightGBM on Spark tukee myös uudenlaisia ongelmia, kuten määrällista regressiota.

Edellytykset

  • Siirry Microsoft Fabricin datatieteen kokemukseen.
  • Luo uusi muistikirja.
  • Liitä muistikirjasi Lakehouseen. Valitse muistikirjasi vasemmasta reunasta Lisää , jos haluat lisätä aiemmin luodun lakehousen tai luoda uuden.

Käytä LightGBMClassifier luokitusmallin harjoittamiseen

Tässä osiossa luot LightGBM:llä luokitusmallin konkurssin ennakoimiseksi.

  1. Lue tietojoukko.

    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. Jaa tietojoukko junaan ja testijoukkoihin.

    train, test = df.randomSplit([0.85, 0.15], seed=1)
    
  3. Lisää esiversio ominaisuuksien muuntamiseksi vektoreiksi.

    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. Tarkista, ovatko tiedot epätasapainossa.

    display(train_data.groupBy("Bankrupt?").count())
    
  5. Harjoita mallia :n avulla 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. Visualisoi ominaisuuden tärkeys

    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. Ennusteiden luominen mallin avulla

    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)
    

Käytä LightGBMRegressor tätä kvantti regressiomallin harjoittamiseen

Tässä osiossa luot LightGBM:n avulla regressiomallin huumeiden etsimistä varten.

  1. Lue tietojoukko.

    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. Jaa tietojoukko junaan ja testijoukkoihin.

    train, test = triazines.randomSplit([0.85, 0.15], seed=1)
    
  3. Harjoita mallia :n avulla 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. Luo ennusteita mallin avulla.

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

Käytä LightGBMRanker luokittelumallin harjoittamiseen

Tässä osiossa luot luokittelumallin LightGBM:n avulla.

  1. Lue tietojoukko.

    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. Harjoita sijoitusmalli käyttämällä .-toimintoa 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. Luo ennusteita mallin avulla.

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