Brug LightGBM-modeller med SynapseML i Microsoft Fabric
LightGBM-strukturen specialiserer sig i at skabe algoritmer i høj kvalitet og GPU-aktiverede algoritmer til rangering, klassificering og mange andre opgaver i forbindelse med maskinel indlæring. I denne artikel skal du bruge LightGBM til at oprette klassificerings-, regressions- og rangeringsmodeller.
LightGBM er en struktur med åben kildekode, distribueret graduering med høj ydeevne (GBDT, GBRT, GBM eller MART). LightGBM er en del af Microsofts DMTK-projekt . Du kan bruge LightGBM ved hjælp af LightGBMClassifier, LightGBMRegressor og LightGBMRanker. LightGBM leveres med fordelene ved at blive integreret i eksisterende SparkML-pipelines og bruges til batch-, streaming- og serveringsarbejdsbelastninger. Det tilbyder også en bred vifte af justerbare parametre, som man kan bruge til at tilpasse deres beslutning træsystem. LightGBM on Spark understøtter også nye typer problemer, f.eks. kvantilregression.
Forudsætninger
Få et Microsoft Fabric-abonnement. Du kan også tilmelde dig en gratis Prøveversion af Microsoft Fabric.
Brug oplevelsesskifteren nederst til venstre på startsiden til at skifte til Fabric.
- Gå til datavidenskabsoplevelsen i Microsoft Fabric.
- Opret en ny notesbog.
- Vedhæft din notesbog til et lakehouse. I venstre side af notesbogen skal du vælge Tilføj for at tilføje et eksisterende lakehouse eller oprette et nyt.
Bruges LightGBMClassifier
til at oplære en klassificeringsmodel
I dette afsnit skal du bruge LightGBM til at oprette en klassificeringsmodel til forudsigelse af konkurs.
Læs datasættet.
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)
Opdel datasættet i tog- og testsæt.
train, test = df.randomSplit([0.85, 0.15], seed=1)
Tilføj en featurizer for at konvertere funktioner til vektorer.
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"]
Kontrollér, om dataene er ubalancerede.
display(train_data.groupBy("Bankrupt?").count())
Oplær modellen ved hjælp af
LightGBMClassifier
.from synapse.ml.lightgbm import LightGBMClassifier model = LightGBMClassifier( objective="binary", featuresCol="features", labelCol="Bankrupt?", isUnbalance=True, dataTransferMode="bulk" )
model = model.fit(train_data)
Visualiser funktionsprioritet
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()
Generér forudsigelser med modellen
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)
Bruges LightGBMRegressor
til at oplære en kvantil regressionsmodel
I dette afsnit bruger du LightGBM til at bygge en regressionsmodel til lægemiddelregistrering.
Læs datasættet.
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))
Opdel datasættet i tog- og testsæt.
train, test = triazines.randomSplit([0.85, 0.15], seed=1)
Oplær modellen ved hjælp af
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())
Generér forudsigelser med modellen.
scoredData = model.transform(test) display(scoredData)
from synapse.ml.train import ComputeModelStatistics metrics = ComputeModelStatistics( evaluationMetric="regression", labelCol="label", scoresCol="prediction" ).transform(scoredData) display(metrics)
Bruges LightGBMRanker
til at oplære en rangeringsmodel
I dette afsnit skal du bruge LightGBM til at oprette en rangeringsmodel.
Læs datasættet.
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))
Oplær rangeringsmodellen ved hjælp af
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)
Generér forudsigelser med modellen.
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()