Amazon SageMaker'ın yerleşik tablo algoritmaları LightGBM, CatBoost, TabTransformer ve AutoGluon-Tabular PlatoBlockchain Veri Zekasını kullanarak kayıp tahmini. Dikey Arama. Ai.

Amazon SageMaker yerleşik tablo algoritmaları LightGBM, CatBoost, TabTransformer ve AutoGluon-Tabular'ı kullanarak kayıp tahmini

Amazon Adaçayı Yapıcı bir süit sağlar yerleşik algoritmalar, önceden eğitilmiş modeller, ve önceden oluşturulmuş çözüm şablonları veri bilimcilerin ve makine öğrenimi (ML) pratisyenlerinin makine öğrenimi modellerini hızla eğitmeye ve dağıtmaya başlamalarına yardımcı olmak. Bu algoritmalar ve modeller hem denetimli hem de denetimsiz öğrenme için kullanılabilir. Tablo, resim ve metin dahil olmak üzere çeşitli girdi verilerini işleyebilirler.

Müşteri kaybı, telekomünikasyondan bankacılığa kadar çok çeşitli şirketlerin karşılaştığı ve müşterilerin tipik olarak rakiplerine kaptırıldığı bir sorundur. Yeni müşteriler kazanmak yerine mevcut müşterileri elde tutmak şirketin çıkarınadır çünkü genellikle yeni müşterileri çekmek çok daha maliyetlidir. Mobil operatörler, müşterilerin hizmeti kullanmaya devam ettiği veya nihayetinde çalkalandığına dair geçmiş kayıtlara sahiptir. Bir ML modelini eğitmek için bir mobil operatörün abone kaybıyla ilgili bu tarihsel bilgiyi kullanabiliriz. Bu modeli eğittikten sonra, isteğe bağlı bir müşterinin profil bilgilerini (modeli eğitmek için kullandığımız profil bilgilerinin aynısı) modele geçirebilir ve bu müşterinin vazgeçip ayrılmayacağını tahmin etmesini sağlayabiliriz.

Bu yazıda, eğitiyor ve dağıtıyoruz yakın zamanda piyasaya sürülen dört SageMaker algoritması-LightGBM, CatBoost, TabTransformer ve AutoGluon-Tabular—bir kayıp tahmini veri kümesinde. Kullanırız SageMaker Otomatik Model Ayarlama (hiperparametre optimizasyonu için bir araç) her model için en iyi hiperparametreleri bulmak ve en uygun olanı seçmek için bir bekleme testi veri kümesindeki performanslarını karşılaştırmak.

Bu çözümü aynı zamanda en gelişmiş tablo algoritmaları koleksiyonunda arama yapmak için bir şablon olarak kullanabilir ve en iyi genel modeli bulmak için hiper parametre optimizasyonunu kullanabilirsiniz. İlgilendiğiniz gerçek iş sorunlarını çözmek için örnek veri setini kolayca kendinizle değiştirebilirsiniz. Bu gönderide incelediğimiz SageMaker SDK koduna doğrudan geçmek istiyorsanız, aşağıdakilere başvurabilirsiniz. örnek Jupyter not defteri.

SageMaker yerleşik algoritmalarının faydaları

Sorununuz ve verileriniz için bir algoritma seçerken, yerleşik bir SageMaker algoritması kullanmak en kolay seçenektir çünkü bunu yapmak aşağıdaki başlıca faydaları sağlar:

  • Düşük kodlama – Yerleşik algoritmalar, deneyleri çalıştırmaya başlamak için çok az kodlama gerektirir. Sağlamanız gereken girdiler yalnızca veriler, hiperparametreler ve işlem kaynaklarıdır. Bu, sonuçları ve kod değişikliklerini izlemek için daha az ek yük ile deneyleri daha hızlı çalıştırmanıza olanak tanır.
  • Verimli ve ölçeklenebilir algoritma uygulamaları – Yerleşik algoritmalar, birden fazla hesaplama örneği arasında paralelleştirme ve tüm geçerli algoritmalar için kutudan çıktığı anda GPU desteği ile birlikte gelir. Modelinizi eğitmek için çok fazla veriye sahipseniz, çoğu yerleşik algoritma talebi karşılamak için kolayca ölçeklenebilir. Halihazırda önceden eğitilmiş bir modeliniz olsa bile, onun sonucunu SageMaker'da kullanmak ve onu taşımak ve kendiniz bir eğitim komut dosyası yazmak yerine zaten bildiğiniz hiper parametreleri girmek daha kolay olabilir.
  • Şeffaflık – Ortaya çıkan model eserlerin sahibi sizsiniz. Bu modeli alabilir ve birkaç farklı çıkarım modeli için SageMaker'da dağıtabilirsiniz (tüm kullanılabilir dağıtım türleri) ve kolay uç nokta ölçeklendirme ve yönetimine sahiptir ya da ihtiyaç duyduğunuz her yerde dağıtabilirsiniz.

Veri görselleştirme ve ön işleme

İlk olarak müşteri kaybı veri setimizi topluyoruz. Bu, her kaydın bilinmeyen bir ABD mobil operatörünün bir müşterisinin profilini tanımlamak için 5,000 özniteliği kullandığı 21 kayıt içeren nispeten küçük bir veri kümesidir. Nitelikler, müşterinin ikamet ettiği ABD eyaletinden müşteri hizmetlerine yaptıkları aramaların sayısına ve gündüz aramaları için faturalandırılan ücrete kadar değişir. Bir ikili sınıflandırma problemi olan müşterinin çalkalayıp bırakmayacağını tahmin etmeye çalışıyoruz. Aşağıdaki, etiketin son sütun olduğu gibi görünen bu özelliklerin bir alt kümesidir.

Aşağıda, her bir sütun için bazı bilgiler, özellikle de seçilen özelliklerin özet istatistikleri ve histogramı yer almaktadır.

Amazon SageMaker'ın yerleşik tablo algoritmaları LightGBM, CatBoost, TabTransformer ve AutoGluon-Tabular PlatoBlockchain Veri Zekasını kullanarak kayıp tahmini. Dikey Arama. Ai.

Daha sonra verileri önceden işler, eğitim, doğrulama ve test kümelerine böler ve verileri şuraya yükleriz: Amazon Basit Depolama Hizmeti (Amazon S3).

Tablo algoritmalarının otomatik model ayarı

Hiperparametreler, temel algoritmalarımızın nasıl çalıştığını kontrol eder ve modelin performansını etkiler. Bu hiperparametreler, sinir ağı tabanlı modeller için katman sayısı, öğrenme oranı, ağırlık azalma oranı ve bırakma veya ağaç topluluğu modelleri için yaprak sayısı, yinelemeler ve maksimum ağaç derinliği olabilir. En iyi modeli seçmek için, eğitilmiş dört SageMaker tablo algoritmasının her birine SageMaker otomatik model ayarlamasını uygularız. Yalnızca ayarlanacak hiperparametreleri ve keşfedilecek her parametre için bir aralık seçmeniz gerekir. Otomatik model ayarlama hakkında daha fazla bilgi için, bkz. Amazon SageMaker Otomatik Model Ayarı: Makine Öğrenmesi için Makine Öğrenmeyi Kullanma or Amazon SageMaker otomatik model ayarlama: Ölçeklenebilir gradyansız optimizasyon.

Bunun pratikte nasıl çalıştığını görelim.

LightGBM

LightGBM ile otomatik model ayarlamayı çalıştırarak başlıyoruz ve bu süreci diğer algoritmalara uyarlıyoruz. Yazıda açıklandığı gibi Amazon SageMaker JumpStart modelleri ve algoritmaları artık API aracılığıyla kullanılabilir, SageMaker SDK aracılığıyla önceden oluşturulmuş bir algoritmayı eğitmek için aşağıdaki yapılar gereklidir:

  • Eğitim ve çıkarım için gerekli tüm bağımlılıkları içeren çerçeveye özel kapsayıcı görüntüsü
  • Seçilen model veya algoritma için eğitim ve çıkarım komut dosyaları

İlk önce, aşağıdakilere bağlı olan bu eserleri alırız. model_id (lightgbm-classification-model bu durumda) ve sürüm:

from sagemaker import image_uris, model_uris, script_uris
train_model_id, train_model_version, train_scope = "lightgbm-classification-model", "*", "training"
training_instance_type = "ml.m5.4xlarge"

# Retrieve the docker image
train_image_uri = image_uris.retrieve(region=None,
                                      framework=None,
                                      model_id=train_model_id,
                                      model_version=train_model_version,
                                      image_scope=train_scope,
                                      instance_type=training_instance_type,
                                      )                                      
# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=train_model_id,
                                        model_version=train_model_version,
                                        script_scope=train_scope
                                        )
# Retrieve the pre-trained model tarball (in the case of tabular modeling, it is a dummy file)
train_model_uri = model_uris.retrieve(model_id=train_model_id,
                                      model_version=train_model_version,
                                      model_scope=train_scope)

Daha sonra LightGBM için varsayılan hiperparametreleri alırız, bunlardan bazılarını yükseltme turlarının sayısı ve doğrulama verileri üzerindeki değerlendirme metriği gibi seçili sabit değerlere ayarlar ve diğerleri için aramak istediğimiz değer aralıklarını tanımlarız. SageMaker parametrelerini kullanıyoruz ContinuousParameter ve IntegerParameter bunun için:

from sagemaker import hyperparameters
from sagemaker.tuner import ContinuousParameter, IntegerParameter, HyperparameterTuner

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=train_model_id,
                                                   model_version=train_model_version
                                                   )
# [Optional] Override default hyperparameters with custom values
hyperparameters["num_boost_round"] = "500"
hyperparameters["metric"] = "auc"

# Define search ranges for other hyperparameters
hyperparameter_ranges_lgb = {
    "learning_rate": ContinuousParameter(1e-4, 1, scaling_type="Logarithmic"),
    "num_boost_round": IntegerParameter(2, 30),
    "num_leaves": IntegerParameter(10, 50),
    "feature_fraction": ContinuousParameter(0, 1),
    "bagging_fraction": ContinuousParameter(0, 1),
    "bagging_freq": IntegerParameter(1, 10),
    "max_depth": IntegerParameter(5, 30),
    "min_data_in_leaf": IntegerParameter(5, 50),
}

Son olarak, bir SageMaker Tahmincisi, içine besleyin Hiperarametre Ayarlayıcıile hiperparametre ayarlama işini başlatın. tuner.fit():

from sagemaker.estimator import Estimator
from sagemaker.tuner import HyperParameterTuner

# Create SageMaker Estimator instance
tabular_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
)

tuner = HyperparameterTuner(
            tabular_estimator,
            "auc",
            hyperparameter_ranges_lgb,
            [{"Name": "auc", "Regex": "auc: ([0-9.]+)"}],
            max_jobs=10,
            max_parallel_jobs=5,
            objective_type="Maximize",
            base_tuning_job_name="some_name",
        )

tuner.fit({"training": training_dataset_s3_path}, logs=True)

The max_jobs parametre, otomatik model ayarlama işinde toplam kaç işin çalıştırılacağını tanımlar ve max_parallel_jobs kaç tane eş zamanlı eğitim işinin başlatılması gerektiğini tanımlar. Hedefi de tanımlıyoruz “Maximize” modelin AUC'si (eğrinin altındaki alan). tarafından maruz kalan mevcut parametrelere daha derine dalmak için HyperParameterTunerbakın HiperparametreTuner.

Check out örnek dizüstü Bu modeli test setinde nasıl dağıtacağımızı ve değerlendireceğimizi görmek için.

Kedi Takviyesi

CatBoost algoritmasında hiperparametre ayarlama işlemi, ID altında model yapılarını almamız gerekse de, öncekiyle aynıdır. catboost-classification-model ve hiperparametrelerin aralık seçimini değiştirin:

from sagemaker import hyperparameters

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values
hyperparameters["iterations"] = "500"
hyperparameters["eval_metric"] = "AUC"

# Define search ranges for other hyperparameters
hyperparameter_ranges_cat = {
    "learning_rate": ContinuousParameter(0.00001, 0.1, scaling_type="Logarithmic"),
    "iterations": IntegerParameter(50, 1000),
    "depth": IntegerParameter(1, 10),
    "l2_leaf_reg": IntegerParameter(1, 10),
    "random_strength": ContinuousParameter(0.01, 10, scaling_type="Logarithmic"),
}

Sekme Dönüştürücü

TabTransformer modelinde hiperparametre ayarlama işlemi, ID altında model yapılarını almamız gerekse de, öncekiyle aynıdır. pytorch-tabtransformerclassification-model ve hiperparametrelerin aralık seçimini değiştirin.

Eğitimi de değiştiriyoruz instance_type için ml.p3.2xlarge. TabTransformer, Amazon araştırmalarından yakın zamanda türetilen ve derin öğrenmenin gücünü Transformer modellerini kullanarak tablo halindeki verilere getiren bir modeldir. Bu modeli verimli bir şekilde eğitmek için GPU destekli bir örneğe ihtiyacımız var. Daha fazla bilgi için bkz. Derin öğrenmenin gücünü tablolardaki verilere getirme.

from sagemaker import hyperparameters
from sagemaker.tuner import CategoricalParameter

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values
hyperparameters["n_epochs"] = 40  # The same hyperparameter is named as "iterations" for CatBoost
hyperparameters["patience"] = 10

# Define search ranges for other hyperparameters
hyperparameter_ranges_tab = {
    "learning_rate": ContinuousParameter(0.001, 0.01, scaling_type="Auto"),
    "batch_size": CategoricalParameter([64, 128, 256, 512]),
    "attn_dropout": ContinuousParameter(0.0, 0.8, scaling_type="Auto"),
    "mlp_dropout": ContinuousParameter(0.0, 0.8, scaling_type="Auto"),
    "input_dim": CategoricalParameter(["16", "32", "64", "128", "256"]),
    "frac_shared_embed": ContinuousParameter(0.0, 0.5, scaling_type="Auto"),
}

AutoGluon-Tabular

AutoGluon durumunda, hiperparametre ayarlaması yapmıyoruz. Bu, tasarım gereğidir, çünkü AutoGluon, birden fazla modeli makul hiperparametre seçenekleriyle birleştirmeye ve bunları birden çok katmanda istiflemeye odaklanır. Bu, mükemmel hiperparametre seçimiyle bir modeli eğitmekten daha performanslıdır ve ayrıca hesaplama açısından daha ucuzdur. Ayrıntılar için, kontrol edin AutoGluon-Tabular: Yapılandırılmış Veriler için Sağlam ve Doğru AutoML.

Bu nedenle, değiştiriyoruz model_id için autogluon-classification-ensembleve yalnızca değerlendirme metrik hiperparametresini istediğimiz AUC puanımıza sabitleyin:

from sagemaker import hyperparameters

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)

hyperparameters["eval_metric"] = "roc_auc"

aramak yerine tuner.fit(), Biz ararız estimator.fit() tek bir eğitim işine başlamak için.

Eğitilmiş modelleri kıyaslama

Dört modeli de dağıttıktan sonra, tahmin ve hesaplama doğruluğu, F1 ve AUC metrikleri için her uç noktaya tam test setini göndeririz (bkz. örnek dizüstü). Sonuçları aşağıdaki tabloda önemli bir sorumluluk reddi ile birlikte sunuyoruz: sonuçlar ve bu modeller arasındaki göreli performans, eğitim için kullandığınız veri kümesine bağlı olacaktır. Bu sonuçlar temsilidir ve belirli algoritmaların daha iyi performans gösterme eğilimi ilgili faktörlere dayansa da (örneğin, AutoGluon, hem LightGBM hem de CatBoost modellerinin tahminlerini sahne arkasında akıllı bir şekilde bir araya getirir), performans dengesi değişebilir veri dağıtımı.

. Otomatik Model Ayarlamalı LightGBM Otomatik Model Ayarlamalı CatBoost Otomatik Model Ayarlamalı TabTransformer AutoGluon-Tabular
doğruluk 0.8977 0.9622 0.9511 0.98
F1 0.8986 0.9624 0.9517 0.98
AUC 0.9629 0.9907 0.989 0.9979

Sonuç

Bu yazıda, müşteri kayıp tahmini problemini düşük kodlama çabasıyla çözmek için dört farklı SageMaker yerleşik algoritmasını eğittik. Bu algoritmaları eğitmek için en iyi hiperparametreleri bulmak için SageMaker otomatik model ayarlamasını kullandık ve seçilen bir kayıp tahmini veri kümesindeki performanslarını karşılaştırdık. ilgili kullanabilirsiniz örnek dizüstü bir şablon olarak, istediğiniz tablosal veri tabanlı sorunu çözmek için veri kümesini kendinizinkiyle değiştirin.

Bu algoritmaları SageMaker'da denediğinizden emin olun ve diğer yerleşik algoritmaların nasıl kullanılacağına ilişkin örnek not defterlerine göz atın. GitHub.


yazarlar hakkında

Amazon SageMaker'ın yerleşik tablo algoritmaları LightGBM, CatBoost, TabTransformer ve AutoGluon-Tabular PlatoBlockchain Veri Zekasını kullanarak kayıp tahmini. Dikey Arama. Ai.Doktor Xin Huang Amazon SageMaker JumpStart ve Amazon SageMaker yerleşik algoritmaları için Uygulamalı Bilim Adamıdır. Ölçeklenebilir makine öğrenimi algoritmaları geliştirmeye odaklanmaktadır. Araştırma ilgi alanları, doğal dil işleme, tablo verileri üzerinde açıklanabilir derin öğrenme ve parametrik olmayan uzay-zaman kümelemesinin sağlam analizidir. ACL, ICDM, KDD konferansları ve Royal Statistical Society: Series A dergisinde birçok makalesi yayınlanmıştır.

Amazon SageMaker'ın yerleşik tablo algoritmaları LightGBM, CatBoost, TabTransformer ve AutoGluon-Tabular PlatoBlockchain Veri Zekasını kullanarak kayıp tahmini. Dikey Arama. Ai.Joao Moura Amazon Web Services'de AI/ML Uzman Çözüm Mimarıdır. Çoğunlukla NLP kullanım örneklerine odaklanıyor ve müşterilerin Derin Öğrenme modeli eğitimini ve dağıtımını optimize etmesine yardımcı oluyor. Ayrıca, düşük kodlu ML çözümlerinin ve ML'ye özel donanımın aktif bir savunucusudur.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi