Прогнозування відтоку за допомогою вбудованих табличних алгоритмів Amazon SageMaker LightGBM, CatBoost, TabTransformer і AutoGluon-Tabular PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Прогнозування відтоку за допомогою вбудованих табличних алгоритмів Amazon SageMaker LightGBM, CatBoost, TabTransformer і AutoGluon-Tabular

Amazon SageMaker надає набір з вбудовані алгоритми, попередньо навчені моделі та попередньо створені шаблони рішень щоб допомогти фахівцям із обробки даних і машинам навчання (ML) швидко розпочати навчання та розгортати моделі ML. Ці алгоритми та моделі можна використовувати як для навчання під наглядом, так і для неконтрольованого. Вони можуть обробляти різні типи вхідних даних, включаючи табличні, графічні та текстові.

Відтік клієнтів — це проблема, з якою стикається широкий спектр компаній, від телекомунікаційних до банківських, де клієнтів зазвичай втрачають конкуренти. В інтересах компанії – утримувати існуючих клієнтів, а не залучати нових, оскільки залучення нових клієнтів зазвичай коштує значно дорожче. Оператори мобільного зв’язку мають історичні записи, в яких клієнти продовжували користуватися послугою або зрештою припинили роботу. Ми можемо використати цю історичну інформацію про відтік оператора мобільного зв’язку для навчання моделі ML. Після навчання цієї моделі ми можемо передати інформацію про профіль довільного клієнта (ту саму інформацію про профіль, яку ми використовували для навчання моделі) до моделі, щоб вона передбачила, чи збирається цей клієнт відтікати чи ні.

На цій посаді ми навчаємо та розгортаємо чотири нещодавно випущені алгоритми SageMaker—LightGBM, CatBoost, TabTransformer і AutoGluon-Tabular—на наборі даних прогнозування відтоку. Ми використовуємо Автоматичне налаштування моделі SageMaker (інструмент для оптимізації гіперпараметрів), щоб знайти найкращі гіперпараметри для кожної моделі та порівняти їхню продуктивність на тестовому наборі даних, щоб вибрати оптимальний.

Ви також можете використовувати це рішення як шаблон для пошуку в колекції найсучасніших табличних алгоритмів і використовувати оптимізацію за гіперпараметрами, щоб знайти найкращу загальну модель. Ви можете легко замінити приклад набору даних своїм власним, щоб вирішити реальні бізнес-проблеми, які вас цікавлять. Якщо ви хочете відразу перейти до коду SDK SageMaker, який ми розглядаємо в цій публікації, ви можете звернутися до наступного зразок блокнота Юпітер.

Переваги вбудованих алгоритмів SageMaker

Під час вибору алгоритму для вашого конкретного типу проблеми та даних використання вбудованого алгоритму SageMaker є найпростішим варіантом, оскільки це має такі основні переваги:

  • Низьке кодування – Вбудовані алгоритми вимагають невеликого програмування, щоб розпочати експерименти. Єдині вхідні дані, які вам потрібно надати, це дані, гіперпараметри та обчислювальні ресурси. Це дозволяє проводити експерименти швидше, з меншими витратами на відстеження результатів і зміни коду.
  • Ефективні та масштабовані реалізації алгоритмів – Вбудовані алгоритми забезпечують розпаралелювання кількох обчислювальних екземплярів і підтримку графічного процесора для всіх застосовних алгоритмів. Якщо у вас є багато даних для навчання моделі, більшість вбудованих алгоритмів можна легко масштабувати відповідно до попиту. Навіть якщо у вас уже є попередньо навчена модель, можливо, буде легше використати її наслідок у SageMaker і ввести гіперпараметри, які ви вже знаєте, а не переносити її та писати навчальний сценарій самостійно.
  • прозорість – Ви є власником отриманих артефактів моделі. Ви можете взяти цю модель і розгорнути її на SageMaker для кількох різних шаблонів висновку (перегляньте всі доступні типи розгортання) і просте масштабування кінцевих точок і керування ними, або ви можете розгорнути його там, де вам це потрібно.

Візуалізація та попередня обробка даних

Спочатку ми збираємо набір даних про відтік клієнтів. Це відносно невеликий набір даних із 5,000 записів, де кожен запис використовує 21 атрибут для опису профілю клієнта невідомого мобільного оператора США. Атрибути варіюються від штату США, де проживає клієнт, до кількості дзвінків, здійснених ним у службу підтримки, до вартості, яку йому виставляють за денні дзвінки. Ми намагаємося передбачити, чи відійде клієнт, чи ні, що є проблемою двійкової класифікації. Нижче наведено підмножину цих функцій, як вони виглядають, з міткою в останньому стовпчику.

Нижче наведено деякі статистичні дані для кожного стовпця, зокрема підсумкову статистику та гістограму вибраних функцій.

Прогнозування відтоку за допомогою вбудованих табличних алгоритмів Amazon SageMaker LightGBM, CatBoost, TabTransformer і AutoGluon-Tabular PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Потім ми попередньо обробляємо дані, розділяємо їх на набори для навчання, перевірки та тестування та завантажуємо дані в Служба простого зберігання Amazon (Amazon S3).

Автоматичне налаштування моделі табличних алгоритмів

Гіперпараметри контролюють роботу наших базових алгоритмів і впливають на продуктивність моделі. Ці гіперпараметри можуть бути кількістю шарів, швидкістю навчання, швидкістю спаду ваги та випаданням для моделей на основі нейронних мереж або кількістю листків, ітерацій і максимальною глибиною дерева для моделей ансамблю дерев. Щоб вибрати найкращу модель, ми застосовуємо автоматичне налаштування моделі SageMaker до кожного з чотирьох навчених табличних алгоритмів SageMaker. Вам потрібно лише вибрати гіперпараметри для налаштування та діапазон для кожного параметра для дослідження. Додаткову інформацію про автоматичне налаштування моделі див Автоматичне налаштування моделі Amazon SageMaker: використання машинного навчання для машинного навчання or Автоматичне налаштування моделі Amazon SageMaker: масштабована безградієнтна оптимізація.

Давайте подивимося, як це працює на практиці.

LightGBM

Ми починаємо з автоматичного налаштування моделі за допомогою LightGBM і адаптуємо цей процес до інших алгоритмів. Як пояснюється в дописі Моделі й алгоритми Amazon SageMaker JumpStart тепер доступні через API, для навчання попередньо створеного алгоритму за допомогою SDK SageMaker потрібні такі артефакти:

  • Зображення контейнера для певної структури, що містить усі необхідні залежності для навчання та висновків
  • Сценарії навчання та висновку для вибраної моделі чи алгоритму

Спочатку ми отримуємо ці артефакти, які залежать від model_id (lightgbm-classification-model у цьому випадку) і версія:

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)

Потім ми отримуємо гіперпараметри за замовчуванням для LightGBM, встановлюємо для деяких із них вибрані фіксовані значення, такі як кількість раундів посилення та показник оцінки даних перевірки, і визначаємо діапазони значень, у яких ми хочемо шукати інші. Ми використовуємо параметри SageMaker ContinuousParameter та IntegerParameter для цього:

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),
}

Нарешті ми створюємо a Оцінювач SageMaker, подайте його в a HyperarameterTunerі розпочніть роботу з налаштування гіперпараметрів за допомогою 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)

Команда max_jobs Параметр визначає, скільки всього завдань буде запущено в завданні автоматичного налаштування моделі, і max_parallel_jobs визначає, скільки одночасних завдань навчання має бути розпочато. Також визначаємо мету “Maximize” AUC моделі (площа під кривою). Щоб глибше зануритися в доступні параметри, які відкриває HyperParameterTuner, відноситься до HyperparameterTuner.

Від'їзд зразок зошита щоб побачити, як ми продовжимо розгортати та оцінити цю модель на тестовому наборі.

CatBoost

Процес налаштування гіперпараметрів в алгоритмі CatBoost такий самий, як і раніше, хоча нам потрібно отримати артефакти моделі під ідентифікатором catboost-classification-model і змінити вибір діапазону гіперпараметрів:

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"),
}

TabTransformer

Процес налаштування гіперпараметрів у моделі TabTransformer такий самий, як і раніше, хоча нам потрібно отримати артефакти моделі під ідентифікатором pytorch-tabtransformerclassification-model і змінити вибір діапазону гіперпараметрів.

Ми також змінюємо навчання instance_type до ml.p3.2xlarge. TabTransformer — це модель, нещодавно створена за результатами досліджень Amazon, яка дає можливість глибокого навчання табличним даним за допомогою моделей Transformer. Щоб навчити цю модель ефективним чином, нам потрібен екземпляр із підтримкою GPU. Для отримання додаткової інформації див Потужність глибокого навчання даних у таблицях.

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 ми не виконуємо налаштування гіперпараметрів. Це задумом, тому що AutoGluon зосереджується на об’єднанні кількох моделей із розумним вибором гіперпараметрів і укладання їх у кілька шарів. Зрештою, це ефективніше, ніж навчання однієї моделі з ідеальним вибором гіперпараметрів, а також обчислювально дешевше. Щоб дізнатися більше, перевірте AutoGluon-Tabular: надійний і точний AutoML для структурованих даних.

Тому ми перемикаємо model_id до autogluon-classification-ensemble, і лише виправте гіперпараметр метрики оцінки до бажаного показника AUC:

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"

Замість дзвінка tuner.fit(), ми називаємо estimator.fit() почати одну навчальну роботу.

Бенчмаркінг навчених моделей

Після розгортання всіх чотирьох моделей ми надсилаємо повний набір тестів до кожної кінцевої точки для прогнозування та обчислення показників точності, F1 і AUC для кожної (див. код у зразок зошита). Ми подаємо результати в наведеній нижче таблиці з важливим застереженням: результати та відносна продуктивність цих моделей залежатимуть від набору даних, який ви використовуєте для навчання. Ці результати є репрезентативними, і навіть незважаючи на те, що тенденція до кращої роботи певних алгоритмів ґрунтується на відповідних факторах (наприклад, AutoGluon інтелектуально об’єднує прогнози моделей LightGBM і CatBoost за лаштунками), баланс у продуктивності може змінитися з огляду на іншу розподіл даних.

. LightGBM з автоматичним налаштуванням моделі CatBoost з автоматичним налаштуванням моделі TabTransformer з автоматичним налаштуванням моделі Автоглюонно-табличний
Точність 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

Висновок

У цьому дописі ми навчили чотири різні вбудовані алгоритми SageMaker, щоб вирішити проблему прогнозування відтоку клієнтів із низьким зусиллям на кодування. Ми використали автоматичне налаштування моделі SageMaker, щоб знайти найкращі гіперпараметри для навчання цих алгоритмів, і порівняли їх продуктивність на вибраному наборі даних прогнозування відтоку. Ви можете використовувати пов'язані зразок зошита як шаблон, замінюючи набір даних вашим власним, щоб вирішити бажану проблему на основі табличних даних.

Обов’язково спробуйте ці алгоритми на SageMaker і перегляньте зразки блокнотів, щоб дізнатися, як використовувати інші вбудовані алгоритми, доступні на GitHub.


Про авторів

Прогнозування відтоку за допомогою вбудованих табличних алгоритмів Amazon SageMaker LightGBM, CatBoost, TabTransformer і AutoGluon-Tabular PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Доктор Синь Хуан є прикладним науковцем для вбудованих алгоритмів Amazon SageMaker JumpStart і Amazon SageMaker. Він зосереджується на розробці масштабованих алгоритмів машинного навчання. Його наукові інтереси пов’язані з обробкою природної мови, глибоким вивченням табличних даних та надійним аналізом непараметричної просторово-часової кластеризації. Він опублікував багато робіт у конференціях ACL, ICDM, KDD та журналі Royal Statistical Society: Series A.

Прогнозування відтоку за допомогою вбудованих табличних алгоритмів Amazon SageMaker LightGBM, CatBoost, TabTransformer і AutoGluon-Tabular PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Жоао Моура є архітектором-спеціалістом з рішень AI/ML у Amazon Web Services. Він переважно зосереджений на сценаріях використання НЛП і допомагає клієнтам оптимізувати навчання та розгортання моделі глибокого навчання. Він також є активним прихильником рішень ML з низьким кодом і спеціалізованого обладнання для ML.

Часова мітка:

Більше від AWS Машинне навчання