ใช้แบบจําลอง 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
- สร้าง สมุดบันทึกใหม่
- แนบสมุดบันทึกของคุณเข้ากับเลคเฮ้าส์ ทางด้านซ้ายของสมุดบันทึกของคุณ ให้เลือก เพิ่ม เพื่อเพิ่มเลคเฮ้าส์ที่มีอยู่แล้ว หรือสร้างขึ้นใหม่
ใช้ LightGBMClassifier
เพื่อฝึกแบบจําลองการจัดประเภท
ในส่วนนี้คุณใช้ LightGBM เพื่อสร้างแบบจําลองการจําแนกประเภทสําหรับการคาดการณ์การล้มละลาย
อ่านชุดข้อมูล
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)
แยกชุดข้อมูลลงในการฝึกและชุดการทดสอบ
train, test = df.randomSplit([0.85, 0.15], seed=1)
เพิ่มกระโปรงคุณสมบัติเพื่อแปลงคุณสมบัติเป็นเวกเตอร์
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"]
ตรวจสอบว่าข้อมูลไม่สมดุลหรือไม่
display(train_data.groupBy("Bankrupt?").count())
ฝึกแบบจําลองโดยใช้
LightGBMClassifier
from synapse.ml.lightgbm import LightGBMClassifier model = LightGBMClassifier( objective="binary", featuresCol="features", labelCol="Bankrupt?", isUnbalance=True, dataTransferMode="bulk" )
model = model.fit(train_data)
แสดงภาพความสําคัญของคุณลักษณะ
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()
สร้างการคาดการณ์ด้วยแบบจําลอง
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 เพื่อสร้างแบบจําลองการถดถอยสําหรับการค้นพบยา
อ่านชุดข้อมูล
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))
แยกชุดข้อมูลลงในการฝึกและชุดการทดสอบ
train, test = triazines.randomSplit([0.85, 0.15], seed=1)
ฝึกแบบจําลองโดยใช้
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())
สร้างการคาดการณ์ด้วยแบบจําลอง
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 เพื่อสร้างแบบจําลองการจัดอันดับ
อ่านชุดข้อมูล
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))
ฝึกแบบจําลองการจัดอันดับโดยใช้
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)
สร้างการคาดการณ์ด้วยแบบจําลอง
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()