Öğretici: Uplift modeli oluşturma, eğitme ve değerlendirme
Bu öğretici, Microsoft Fabric'te Synapse Veri Bilimi iş akışının uçtan uca bir örneğini sunar. Uplift modellerini oluşturmayı, eğitmeyi ve değerlendirmeyi ve uplift modelleme tekniklerini uygulamayı öğrenirsiniz.
Önkoşullar
- Microsoft Fabric not defterleri hakkında bilgi
- Bu not defteri için, bu örnekteki verileri depolamak için bir lakehouse. Daha fazla bilgi için Not defterinize göl evi ekleme adresini ziyaret edin
Not defterinde birlikte izleme
Not defterindeki adımları iki yoldan biriyle izleyebilirsiniz:
- Synapse Veri Bilimi deneyiminde yerleşik not defterini açma ve çalıştırma
- Not defterinizi GitHub'dan Synapse Veri Bilimi deneyimine yükleme
Yerleşik not defterini açma
Örnek Uplift modelleme not defteri bu öğreticiye eşlik eder. Synapse Veri Bilimi deneyiminde öğreticinin yerleşik örnek not defterini açmak için:1 adresini ziyaret edin. Synapse Veri Bilimi giriş sayfasına gidin. 1. Örnek kullan'ı seçin. 1. Örnek bir Python öğreticisi içinse, varsayılan uçtan uca iş akışları (Python) sekmesinden ilgili örneği seçin:* . * Örnek bir R öğreticisi içinse Uçtan uca iş akışları (R) sekmesinden. * Hızlı öğreticiler sekmesinde, örnek hızlı bir öğretici içinse.1. Kod çalıştırmaya başlamadan önce not defterine bir lakehouse ekleyin. öğreticiler için yerleşik örnek not defterlerine erişme hakkında daha fazla bilgi için.
Synapse Veri Bilimi deneyiminde öğreticinin yerleşik örnek not defterini açmak için:
Synapse Veri Bilimi giriş sayfasına gidin
Örnek kullan'ı seçin
İlgili örneği seçin:
- Örnek bir Python öğreticisi içinse varsayılan uçtan uca iş akışları (Python) sekmesinden
- Örnek bir R öğreticisi içinse Uçtan uca iş akışları (R) sekmesinden
- Örnek hızlı bir öğretici içinse Hızlı öğreticiler sekmesinden
Kod çalıştırmaya başlamadan önce not defterine bir lakehouse ekleme
Not defterini GitHub'dan içeri aktarma
Bu öğreticiye AIsample - Uplift Modeling.ipynb not defteri eşlik eder.
Bu öğreticide eşlik eden not defterini açmak için, not defterini çalışma alanınıza aktarmak üzere Sisteminizi veri bilimi öğreticilerine hazırlama başlığındaki yönergeleri izleyin.
Bu sayfadan kodu kopyalayıp yapıştırmak isterseniz yeni bir not defteri oluşturabilirsiniz.
Kod çalıştırmaya başlamadan önce not defterine bir göl evi eklediğinizden emin olun.
1. Adım: Verileri yükleme
Veri kümesi
Criteo AI Lab veri kümesini oluşturmuştur. Bu veri kümesinin 13M satırı vardır. Her satır bir kullanıcıyı temsil eder. Her satırda 12 özellik, bir işlem göstergesi ve ziyaret ve dönüştürme içeren iki ikili etiket vardır.
f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 tedavi dönüştürme
- f0 - f11: özellik değerleri (yoğun, kayan değerler)
- tedavi: Bir kullanıcının tedavi için rastgele hedeflenip hedeflenmediği (örneğin reklam) (1 = tedavi, 0 = kontrol)
- dönüştürme: Bir kullanıcı (ikili, etiket) için dönüştürme yapılıp yapılmadığı (örneğin, satın alma işlemi yapılmış)
- visit: bir kullanıcı (ikili, etiket) için dönüştürme yapılıp yapılmadığı (örneğin, satın alma)
Alıntı
- Veri kümesi giriş sayfası: https://ailab.criteo.com/criteo-uplift-prediction-dataset/
Bu not defteri için kullanılan veri kümesi için şu BibTex alıntısı gerekir:
@inproceedings{Diemert2018,
author = {{Diemert Eustache, Betlei Artem} and Renaudin, Christophe and Massih-Reza, Amini},
title={A Large Scale Benchmark for Uplift Modeling},
publisher = {ACM},
booktitle = {Proceedings of the AdKDD and TargetAd Workshop, KDD, London,United Kingdom, August, 20, 2018},
year = {2018}
}
İpucu
Aşağıdaki parametreleri tanımlayarak bu not defterini farklı veri kümelerine kolayca uygulayabilirsiniz.
IS_CUSTOM_DATA = False # If True, the user must upload the dataset manually
DATA_FOLDER = "Files/uplift-modelling"
DATA_FILE = "criteo-research-uplift-v2.1.csv"
# Data schema
FEATURE_COLUMNS = [f"f{i}" for i in range(12)]
TREATMENT_COLUMN = "treatment"
LABEL_COLUMN = "visit"
EXPERIMENT_NAME = "aisample-upliftmodelling" # MLflow experiment name
Kitaplıkları içeri aktarma
İşlemeden önce gerekli Spark ve SynapseML kitaplıklarını içeri aktarmanız gerekir. Veri görselleştirme kitaplığını da içeri aktarmanız gerekir; örneğin, Python veri görselleştirme kitaplığı Seaborn. Veri görselleştirme kitaplığı, DataFrame'ler ve diziler üzerinde görsel kaynaklar oluşturmak için üst düzey bir arabirim sağlar. Spark, SynapseML ve Seaborn hakkında daha fazla bilgi edinin.
import os
import gzip
import pyspark.sql.functions as F
from pyspark.sql.window import Window
from pyspark.sql.types import *
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.style as style
import seaborn as sns
%matplotlib inline
from synapse.ml.featurize import Featurize
from synapse.ml.core.spark import FluentAPI
from synapse.ml.lightgbm import *
from synapse.ml.train import ComputeModelStatistics
import mlflow
Veri kümesini indirme ve lakehouse'a yükleme
Bu kod, veri kümesinin genel kullanıma açık bir sürümünü indirir ve ardından bu veri kaynağını bir Fabric lakehouse'ta depolar.
Önemli
Çalıştırmadan önce not defterine göl evi eklediğinizden emin olun. Bunun yapılmaması hataya neden olur.
if not IS_CUSTOM_DATA:
# Download demo data files into lakehouse if not exist
import os, requests
remote_url = "http://go.criteo.net/criteo-research-uplift-v2.1.csv.gz"
download_file = "criteo-research-uplift-v2.1.csv.gz"
download_path = f"/lakehouse/default/{DATA_FOLDER}/raw"
if not os.path.exists("/lakehouse/default"):
raise FileNotFoundError("Default lakehouse not found, please add a lakehouse and restart the session.")
os.makedirs(download_path, exist_ok=True)
if not os.path.exists(f"{download_path}/{DATA_FILE}"):
r = requests.get(f"{remote_url}", timeout=30)
with open(f"{download_path}/{download_file}", "wb") as f:
f.write(r.content)
with gzip.open(f"{download_path}/{download_file}", "rb") as fin:
with open(f"{download_path}/{DATA_FILE}", "wb") as fout:
fout.write(fin.read())
print("Downloaded demo data files into lakehouse.")
Bu not defterinin çalışma zamanını kaydetmeye başlayın.
# Record the notebook running time
import time
ts = time.time()
MLflow deneme izlemesini ayarlama
MLflow günlük özelliklerini genişletmek için otomatik kaydetme, eğitim sırasında bir makine öğrenmesi modelinin giriş parametrelerinin ve çıkış ölçümlerinin değerlerini otomatik olarak yakalar. Bu bilgiler, MLflow API'lerinin veya çalışma alanında karşılık gelen denemenin erişebildiği ve görselleştirebildiği çalışma alanına kaydedilir. Otomatik dağıtma hakkında daha fazla bilgi için bu kaynağı ziyaret edin.
# Set up the MLflow experiment
import mlflow
mlflow.set_experiment(EXPERIMENT_NAME)
mlflow.autolog(disable=True) # Disable MLflow autologging
Not
Not defteri oturumunda Microsoft Fabric otomatik kaydetmeyi devre dışı bırakmak için öğesini çağırın mlflow.autolog()
ve ayarlayın disable=True
.
Göl evinden veri okuma
Lakehouse Files bölümünden ham verileri okuyun ve farklı tarih bölümleri için daha fazla sütun ekleyin. Bölümlenmiş delta tablosu oluşturmak için de aynı bilgiler kullanılır.
raw_df = spark.read.csv(f"{DATA_FOLDER}/raw/{DATA_FILE}", header=True, inferSchema=True).cache()
2. Adım: Keşif veri analizi
Veri kümesiyle display
ilgili üst düzey istatistikleri görüntülemek için komutunu kullanın. Veri kümesinin alt kümelerini kolayca görselleştirmek için Grafik görünümlerini de gösterebilirsiniz.
display(raw_df.limit(20))
Ziyaret eden kullanıcıların yüzdesini, dönüştüren kullanıcıların yüzdesini ve dönüştüren ziyaretçilerin yüzdesini inceleyin.
raw_df.select(
F.mean("visit").alias("Percentage of users that visit"),
F.mean("conversion").alias("Percentage of users that convert"),
(F.sum("conversion") / F.sum("visit")).alias("Percentage of visitors that convert"),
).show()
Analiz, işlem grubundaki kullanıcıların %4,9'unun (tedaviyi alan veya reklam veren kullanıcılar) çevrimiçi mağazayı ziyaret ettiğini gösterir. Kontrol grubundaki kullanıcıların yalnızca % 3,8'i ( hiç işlem almamış veya hiçbir zaman teklif sunulmamış veya reklama açık olmayan kullanıcılar) aynı işlemi yapmıştır. Buna ek olarak, işlem grubundaki tüm kullanıcıların % 0,31'i dönüştürme veya satın alma işlemi yaparken, denetim grubundaki kullanıcıların yalnızca % 0,19'unu dönüştürmüştür. Sonuç olarak, aynı zamanda tedavi grubunun üyesi olan satın alma işlemini gerçekleştiren ziyaretçilerin dönüşüm oranı %6,36'dır ve bu oran denetim grubu kullanıcıları için yalnızca %5,07**'dir. Bu sonuçlara bağlı olarak, işlem potansiyel olarak ziyaret oranını yaklaşık %1 ve ziyaretçilerin dönüşüm oranını yaklaşık %1,3 artırabilir. Tedavi önemli bir gelişmeye yol açar.
3. Adım: Eğitim için modeli tanımlama
Eğitimi hazırlama ve veri kümelerini test edin
Burada, belirtilen giriş sütunlarından özellikleri ayıklamak raw_df
ve bu özellikleri adlı features
yeni bir sütuna çıkarmak için Bir Featurize dönüştürücüsü DataFrame'e sığdırırsınız.
Sonuçta elde edilen DataFrame adlı df
yeni bir DataFrame'de depolanır.
transformer = Featurize().setOutputCol("features").setInputCols(FEATURE_COLUMNS).fit(raw_df)
df = transformer.transform(raw_df)
# Split the DataFrame into training and test sets, with a 80/20 ratio and a seed of 42
train_df, test_df = df.randomSplit([0.8, 0.2], seed=42)
# Print the training and test dataset sizes
print("Size of train dataset: %d" % train_df.count())
print("Size of test dataset: %d" % test_df.count())
# Group the training dataset by the treatment column, and count the number of occurrences of each value
train_df.groupby(TREATMENT_COLUMN).count().show()
İşlem ve denetim veri kümelerini hazırlama
Eğitim ve test veri kümelerini oluşturduktan sonra, makine öğrenmesi modellerini yükseltmeyi ölçecek şekilde eğitmek için işleme ve denetim veri kümelerini de oluşturmanız gerekir.
# Extract the treatment and control DataFrames
treatment_train_df = train_df.where(f"{TREATMENT_COLUMN} > 0")
control_train_df = train_df.where(f"{TREATMENT_COLUMN} = 0")
Verilerinizi hazırladığınıza göre, LightGBM ile bir modeli eğitmeye devam edebilirsiniz.
Uplift modelleme: LightGBM ile T-Learner
Meta öğrenenler, LightGBM, Xgboost vb. makine öğrenmesi algoritmalarının üzerine kurulmuş bir dizi algoritmadır. Koşullu ortalama işlem etkisini veya CATE'yi tahmin etmede yardımcı olur. T-learner, tek bir model kullanmayan bir meta öğrencidir. Bunun yerine, T-learner işlem değişkeni başına bir model kullanır. Bu nedenle iki model geliştirilir ve meta-öğrenene T-learner olarak atıfta bulunuruz. T-learner, tedaviyi tamamen atma sorununun üstesinden gelmek için birden çok makine öğrenmesi modeli kullanır ve bunu öğreneni ilk olarak bölmeye zorlar.
mlflow.autolog(exclusive=False)
classifier = (
LightGBMClassifier()
.setFeaturesCol("features") # Set the column name for features
.setNumLeaves(10) # Set the number of leaves in each decision tree
.setNumIterations(100) # Set the number of boosting iterations
.setObjective("binary") # Set the objective function for binary classification
.setLabelCol(LABEL_COLUMN) # Set the column name for the label
)
# Start a new MLflow run with the name "uplift"
active_run = mlflow.start_run(run_name="uplift")
# Start a new nested MLflow run with the name "treatment"
with mlflow.start_run(run_name="treatment", nested=True) as treatment_run:
treatment_run_id = treatment_run.info.run_id # Get the ID of the treatment run
treatment_model = classifier.fit(treatment_train_df) # Fit the classifier on the treatment training data
# Start a new nested MLflow run with the name "control"
with mlflow.start_run(run_name="control", nested=True) as control_run:
control_run_id = control_run.info.run_id # Get the ID of the control run
control_model = classifier.fit(control_train_df) # Fit the classifier on the control training data
Tahmin için test veri kümesini kullanma
Burada, treatment_model
test veri kümesini dönüştürmek test_df
için daha önce tanımlanan ve control_model
kullanın. Ardından tahmin edilen yukarı kaldırmayı hesaplarsınız. Tahmin edilen yukarı kaldırmayı, tahmin edilen tedavi sonucu ile tahmin edilen kontrol sonucu arasındaki fark olarak tanımlarsınız. Bu tahmin edilen yükseltme farkı ne kadar büyük olursa, bir birey veya alt grup üzerinde tedavinin (örneğin reklam) etkinliği de o kadar fazla olur.
getPred = F.udf(lambda v: float(v[1]), FloatType())
# Cache the resulting DataFrame for easier access
test_pred_df = (
test_df.mlTransform(treatment_model)
.withColumn("treatment_pred", getPred("probability"))
.drop("rawPrediction", "probability", "prediction")
.mlTransform(control_model)
.withColumn("control_pred", getPred("probability"))
.drop("rawPrediction", "probability", "prediction")
.withColumn("pred_uplift", F.col("treatment_pred") - F.col("control_pred"))
.select(TREATMENT_COLUMN, LABEL_COLUMN, "treatment_pred", "control_pred", "pred_uplift")
.cache()
)
# Display the first twenty rows of the resulting DataFrame
display(test_pred_df.limit(20))
Model değerlendirmesi gerçekleştirme
Her birey için gerçek bir yukarı kaldırma gözlemlenmediğinden, bir grup birey üzerinde yukarı kaldırmayı ölçmeniz gerekir. Popülasyon genelinde gerçek, kümülatif yukarı kaldırmayı çizen bir Uplift Eğrisi kullanırsınız.
x ekseni, işlem için seçilen popülasyonun oranını temsil eder. 0 değeri hiçbir tedavi grubu önermez - kimse tedaviye maruz kalmaz veya sunulmaz. 1 değeri tam bir tedavi grubu önerir- herkes tedaviye maruz kalıyor veya tedavi sunuluyor. y ekseni, yukarı kaldırma ölçüsünü gösterir. Amaç, tedavi grubunun boyutunu veya tedavinin sunulacağı veya kullanıma sunulacağı popülasyonun yüzdesini bulmaktır (örneğin, reklam). Bu yaklaşım, sonucu iyileştirmek için hedef seçimi iyileştirir.
İlk olarak, test DataFrame sırasını tahmin edilen yukarı kaldırmaya göre derecelendirin. Tahmin edilen yukarı kaldırma, tahmin edilen tedavi sonucu ile tahmin edilen kontrol sonucu arasındaki farktır.
# Compute the percentage rank of the predicted uplift values in descending order, and display the top twenty rows
test_ranked_df = test_pred_df.withColumn("percent_rank", F.percent_rank().over(Window.orderBy(F.desc("pred_uplift"))))
display(test_ranked_df.limit(20))
Ardından, hem tedavi hem de kontrol gruplarındaki ziyaretlerin kümülatif yüzdesini hesaplayın.
# Calculate the number of control and treatment samples
C = test_ranked_df.where(f"{TREATMENT_COLUMN} == 0").count()
T = test_ranked_df.where(f"{TREATMENT_COLUMN} != 0").count()
# Add columns to the DataFrame to calculate the control and treatment cumulative sum
test_ranked_df = (
test_ranked_df.withColumn(
"control_label",
F.when(F.col(TREATMENT_COLUMN) == 0, F.col(LABEL_COLUMN)).otherwise(0),
)
.withColumn(
"treatment_label",
F.when(F.col(TREATMENT_COLUMN) != 0, F.col(LABEL_COLUMN)).otherwise(0),
)
.withColumn(
"control_cumsum",
F.sum("control_label").over(Window.orderBy("percent_rank")) / C,
)
.withColumn(
"treatment_cumsum",
F.sum("treatment_label").over(Window.orderBy("percent_rank")) / T,
)
)
# Display the first 20 rows of the dataframe
display(test_ranked_df.limit(20))
Son olarak, her yüzdede, tedavi ve kontrol grupları arasındaki ziyaretlerin kümülatif yüzdesi arasındaki fark olarak grubun yukarı yukarı doğru değerini hesaplayın.
test_ranked_df = test_ranked_df.withColumn("group_uplift", F.col("treatment_cumsum") - F.col("control_cumsum")).cache()
display(test_ranked_df.limit(20))
Şimdi test veri kümesi tahmini için yükseltme eğrisini çizin. Çizimden önce PySpark DataFrame'i Pandas DataFrame'e dönüştürmeniz gerekir.
def uplift_plot(uplift_df):
"""
Plot the uplift curve
"""
gain_x = uplift_df.percent_rank
gain_y = uplift_df.group_uplift
# Plot the data
fig = plt.figure(figsize=(10, 6))
mpl.rcParams["font.size"] = 8
ax = plt.plot(gain_x, gain_y, color="#2077B4", label="Normalized Uplift Model")
plt.plot(
[0, gain_x.max()],
[0, gain_y.max()],
"--",
color="tab:orange",
label="Random Treatment",
)
plt.legend()
plt.xlabel("Porportion Targeted")
plt.ylabel("Uplift")
plt.grid()
return fig, ax
test_ranked_pd_df = test_ranked_df.select(["pred_uplift", "percent_rank", "group_uplift"]).toPandas()
fig, ax = uplift_plot(test_ranked_pd_df)
mlflow.log_figure(fig, "UpliftCurve.png")
x ekseni, işlem için seçilen popülasyonun oranını temsil eder. 0 değeri hiçbir tedavi grubu önermez - kimse tedaviye maruz kalmaz veya sunulmaz. 1 değeri tam bir tedavi grubu önerir- herkes tedaviye maruz kalıyor veya tedavi sunuluyor. y ekseni, yukarı kaldırma ölçüsünü gösterir. Amaç, tedavi grubunun boyutunu veya tedavinin sunulacağı veya kullanıma sunulacağı popülasyonun yüzdesini bulmaktır (örneğin, reklam). Bu yaklaşım, sonucu iyileştirmek için hedef seçimi iyileştirir.
İlk olarak, test DataFrame sırasını tahmin edilen yukarı kaldırmaya göre derecelendirin. Tahmin edilen yukarı kaldırma, tahmin edilen tedavi sonucu ile tahmin edilen kontrol sonucu arasındaki farktır.
# Compute the percentage rank of the predicted uplift values in descending order, and display the top twenty rows
test_ranked_df = test_pred_df.withColumn("percent_rank", F.percent_rank().over(Window.orderBy(F.desc("pred_uplift"))))
display(test_ranked_df.limit(20))
Ardından, hem tedavi hem de kontrol gruplarındaki ziyaretlerin kümülatif yüzdesini hesaplayın.
# Calculate the number of control and treatment samples
C = test_ranked_df.where(f"{TREATMENT_COLUMN} == 0").count()
T = test_ranked_df.where(f"{TREATMENT_COLUMN} != 0").count()
# Add columns to the DataFrame to calculate the control and treatment cumulative sum
test_ranked_df = (
test_ranked_df.withColumn(
"control_label",
F.when(F.col(TREATMENT_COLUMN) == 0, F.col(LABEL_COLUMN)).otherwise(0),
)
.withColumn(
"treatment_label",
F.when(F.col(TREATMENT_COLUMN) != 0, F.col(LABEL_COLUMN)).otherwise(0),
)
.withColumn(
"control_cumsum",
F.sum("control_label").over(Window.orderBy("percent_rank")) / C,
)
.withColumn(
"treatment_cumsum",
F.sum("treatment_label").over(Window.orderBy("percent_rank")) / T,
)
)
# Display the first 20 rows of the dataframe
display(test_ranked_df.limit(20))
Son olarak, her yüzdede, tedavi ve kontrol grupları arasındaki ziyaretlerin kümülatif yüzdesi arasındaki fark olarak grubun yukarı yukarı doğru değerini hesaplayın.
test_ranked_df = test_ranked_df.withColumn("group_uplift", F.col("treatment_cumsum") - F.col("control_cumsum")).cache()
display(test_ranked_df.limit(20))
Şimdi test veri kümesi tahmini için yükseltme eğrisini çizin. Çizimden önce PySpark DataFrame'i Pandas DataFrame'e dönüştürmeniz gerekir.
def uplift_plot(uplift_df):
"""
Plot the uplift curve
"""
gain_x = uplift_df.percent_rank
gain_y = uplift_df.group_uplift
# Plot the data
fig = plt.figure(figsize=(10, 6))
mpl.rcParams["font.size"] = 8
ax = plt.plot(gain_x, gain_y, color="#2077B4", label="Normalized Uplift Model")
plt.plot(
[0, gain_x.max()],
[0, gain_y.max()],
"--",
color="tab:orange",
label="Random Treatment",
)
plt.legend()
plt.xlabel("Porportion Targeted")
plt.ylabel("Uplift")
plt.grid()
return fig, ax
test_ranked_pd_df = test_ranked_df.select(["pred_uplift", "percent_rank", "group_uplift"]).toPandas()
fig, ax = uplift_plot(test_ranked_pd_df)
mlflow.log_figure(fig, "UpliftCurve.png")
Hem analiz hem de yukarı kaldırma eğrisi, tahmine göre sıralanan ilk %20 popülasyonunun, tedaviyi alması durumunda büyük bir kazanç elde edeceğini göstermektedir. Bu, popülasyonun ilk %20'sinin ikna edilebilirler grubunu temsil ettiği anlamına gelir. Bu nedenle, en büyük etkiyi elde etmek için hedef seçim müşterilerini belirlemek üzere istenen işlem grubu boyutu için kesme puanını %20 olarak ayarlayabilirsiniz.
cutoff_percentage = 0.2
cutoff_score = test_ranked_pd_df.iloc[int(len(test_ranked_pd_df) * cutoff_percentage)][
"pred_uplift"
]
print("Uplift scores that exceed {:.4f} map to Persuadables.".format(cutoff_score))
mlflow.log_metrics(
{"cutoff_score": cutoff_score, "cutoff_percentage": cutoff_percentage}
)
4. Adım: Son ML Modelini kaydetme
Hem işlem hem de denetim grupları için tüm denemeleri izlemek ve günlüğe kaydetmek için MLflow kullanırsınız. Bu izleme ve günlüğe kaydetme işlemine karşılık gelen parametreler, ölçümler ve modeller dahildir. Bu bilgiler, daha sonra kullanmak üzere çalışma alanında deneme adı altında günlüğe kaydedilir.
# Register the model
treatment_model_uri = "runs:/{}/model".format(treatment_run_id)
mlflow.register_model(treatment_model_uri, f"{EXPERIMENT_NAME}-treatmentmodel")
control_model_uri = "runs:/{}/model".format(control_run_id)
mlflow.register_model(control_model_uri, f"{EXPERIMENT_NAME}-controlmodel")
mlflow.end_run()
Denemelerinizi görüntülemek için:
- Sol panelde çalışma alanınızı seçin.
- Bu örnekte aisample-upliftmodelling deneme adını bulun ve seçin.
5. Adım: Tahmin sonuçlarını kaydetme
Microsoft Fabric, herhangi bir işlem altyapısında toplu puanlama desteği sunan ölçeklenebilir bir işlev olan PREDICT sunar. Müşterilerin makine öğrenmesi modellerini kullanıma hazır hale getirmesini sağlar. Kullanıcılar, belirli bir model için doğrudan bir not defterinden veya öğe sayfasından toplu tahminler oluşturabilir. PREDICT hakkında daha fazla bilgi edinmek ve Microsoft Fabric'te PREDICT kullanmayı öğrenmek için bu kaynağı ziyaret edin.
# Load the model back
loaded_treatmentmodel = mlflow.spark.load_model(treatment_model_uri, dfs_tmpdir="Files/spark")
loaded_controlmodel = mlflow.spark.load_model(control_model_uri, dfs_tmpdir="Files/spark")
# Make predictions
batch_predictions_treatment = loaded_treatmentmodel.transform(test_df)
batch_predictions_control = loaded_controlmodel.transform(test_df)
batch_predictions_treatment.show(5)
# Save the predictions in the lakehouse
batch_predictions_treatment.write.format("delta").mode("overwrite").save(
f"{DATA_FOLDER}/predictions/batch_predictions_treatment"
)
batch_predictions_control.write.format("delta").mode("overwrite").save(
f"{DATA_FOLDER}/predictions/batch_predictions_control"
)
# Determine the entire runtime
print(f"Full run cost {int(time.time() - ts)} seconds.")
İlgili içerik
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin