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
Hanki Microsoft Fabric -tilaus. Voit myös rekisteröityä ilmaiseen Microsoft Fabric -kokeiluversioon.
Vaihda Fabriciin aloitussivun vasemmassa alakulmassa olevan käyttökokemuksen vaihtajan avulla.
- 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.
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)
Jaa tietojoukko junaan ja testijoukkoihin.
train, test = df.randomSplit([0.85, 0.15], seed=1)
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"]
Tarkista, ovatko tiedot epätasapainossa.
display(train_data.groupBy("Bankrupt?").count())
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)
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()
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.
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))
Jaa tietojoukko junaan ja testijoukkoihin.
train, test = triazines.randomSplit([0.85, 0.15], seed=1)
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())
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.
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))
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)
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()