تنبؤ متضخم باستخدام خوارزميات جدولة مدمجة من Amazon SageMaker LightGBM و CatBoost و TabTransformer و AutoGluon-Tabular PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

التنبؤ المتضخم باستخدام خوارزميات جدولة مدمجة من Amazon SageMaker LightGBM و CatBoost و TabTransformer و AutoGluon-Tabular

الأمازون SageMaker يوفر مجموعة من خوارزميات مدمجة, نماذج مدربة مسبقًاو قوالب الحلول الجاهزة لمساعدة علماء البيانات وممارسي التعلم الآلي (ML) على البدء في التدريب ونشر نماذج التعلم الآلي بسرعة. يمكن استخدام هذه الخوارزميات والنماذج للتعلم الخاضع للإشراف وغير الخاضع للإشراف. يمكنهم معالجة أنواع مختلفة من بيانات الإدخال ، بما في ذلك الجدول والصورة والنص.

يعتبر اضطراب العملاء مشكلة تواجهها مجموعة واسعة من الشركات ، من الاتصالات السلكية واللاسلكية إلى الخدمات المصرفية ، حيث يُفقد العملاء عادة أمام المنافسين. من مصلحة الشركة أن تحتفظ بالعملاء الحاليين بدلاً من اكتساب عملاء جدد لأن جذب عملاء جدد يكلف عادةً أكثر بكثير. لدى مشغلي الهاتف المحمول سجلات تاريخية استمر فيها العملاء في استخدام الخدمة أو انتهى بهم الأمر في النهاية إلى الاضطراب. يمكننا استخدام هذه المعلومات التاريخية الخاصة بمخضخ مشغل الهاتف المحمول لتدريب نموذج ML. بعد تدريب هذا النموذج ، يمكننا تمرير معلومات الملف الشخصي للعميل التعسفي (نفس معلومات الملف الشخصي التي استخدمناها لتدريب النموذج) إلى النموذج ، وجعله يتنبأ بما إذا كان هذا العميل سوف يتخبط أم لا.

في هذا المنشور ، نتدرب وننتشر أربعة خوارزميات SageMaker تم إصدارها مؤخرًا—LightGBM ، و CatBoost ، و TabTransformer ، و AutoGluon-Tabular— على مجموعة بيانات التنبؤ بالتخبط. نحن نستخدم الضبط التلقائي لنموذج SageMaker (أداة لتحسين المعلمات الفائقة) للعثور على أفضل المعلمات الفائقة لكل نموذج ، ومقارنة أدائها في مجموعة بيانات اختبار الانتظار لتحديد الأفضل.

يمكنك أيضًا استخدام هذا الحل كقالب للبحث في مجموعة من أحدث الخوارزميات الجدولية واستخدام تحسين المعلمة الفائقة للعثور على أفضل نموذج شامل. يمكنك بسهولة استبدال مجموعة البيانات النموذجية بمجموعة البيانات الخاصة بك لحل مشاكل العمل الحقيقية التي تهتم بها. إذا كنت تريد القفز مباشرة إلى كود SageMaker SDK الذي نمر عليه في هذا المنشور ، يمكنك الرجوع إلى ما يلي عينة دفتر Jupyter.

فوائد خوارزميات SageMaker المضمنة

عند تحديد خوارزمية لنوع معين من المشاكل والبيانات ، فإن استخدام خوارزمية SageMaker المدمجة هو الخيار الأسهل ، لأن القيام بذلك يأتي مع الفوائد الرئيسية التالية:

  • ترميز منخفض - تتطلب الخوارزميات المدمجة القليل من الترميز لبدء إجراء التجارب. المدخلات الوحيدة التي تحتاج إلى توفيرها هي البيانات والمعلمات الفائقة وموارد الحساب. يتيح لك ذلك إجراء التجارب بسرعة أكبر ، مع تقليل النفقات الإضافية لتتبع النتائج وتغييرات الشفرة.
  • تطبيقات خوارزمية فعالة وقابلة للتطوير - تأتي الخوارزميات المدمجة مع موازاة عبر مثيلات حوسبة متعددة ودعم GPU فور إخراجها من منطقة الجزاء لجميع الخوارزميات القابلة للتطبيق. إذا كان لديك الكثير من البيانات التي يمكنك من خلالها تدريب نموذجك ، يمكن لمعظم الخوارزميات المضمنة توسيع نطاقها بسهولة لتلبية الطلب. حتى إذا كان لديك بالفعل نموذج مدرب مسبقًا ، فقد يكون من الأسهل استخدام النتيجة الطبيعية في SageMaker وإدخال المعلمات الفائقة التي تعرفها بالفعل بدلاً من نقلها وكتابة نص تدريب بنفسك.
  • الشفافية - أنت مالك المشغولات النموذجية الناتجة. يمكنك أخذ هذا النموذج ونشره على SageMaker للعديد من أنماط الاستدلال المختلفة (تحقق من جميع ملفات أنواع النشر المتوفرة) وقياس وإدارة نقطة النهاية بسهولة ، أو يمكنك نشرها في أي مكان تريده.

تصور البيانات والمعالجة المسبقة

أولاً ، نجمع مجموعة بيانات عملائنا. إنها مجموعة بيانات صغيرة نسبيًا تحتوي على 5,000 سجل ، حيث يستخدم كل سجل 21 سمة لوصف ملف تعريف عميل لشركة اتصالات جوال أمريكية غير معروفة. تتراوح السمات من الولاية الأمريكية التي يقيم فيها العميل ، إلى عدد المكالمات التي أجروها لخدمة العملاء ، إلى التكلفة التي يتم محاسبتها على مكالمات النهار. نحاول أن نتنبأ بما إذا كان العميل سيتخبط أم لا ، وهي مشكلة تصنيف ثنائي. فيما يلي مجموعة فرعية من هذه الميزات تبدو مثل ، مع تسمية العمود الأخير.

فيما يلي بعض الرؤى لكل عمود ، وتحديداً ملخص الإحصائيات والمدرج التكراري للمعالم المحددة.

تنبؤ متضخم باستخدام خوارزميات جدولة مدمجة من Amazon SageMaker LightGBM و CatBoost و TabTransformer و AutoGluon-Tabular PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

ثم نقوم بمعالجة البيانات مسبقًا ، وتقسيمها إلى مجموعات تدريب والتحقق والاختبار ، وتحميل البيانات إلى خدمة تخزين أمازون البسيطة (أمازون S3).

ضبط تلقائي لنموذج الخوارزميات الجدولية

تتحكم المعلمات الفائقة في كيفية عمل الخوارزميات الأساسية لدينا والتأثير على أداء النموذج. يمكن أن تكون هذه المعلمات الفائقة عدد الطبقات ومعدل التعلم ومعدل تناقص الوزن والتسرب للنماذج القائمة على الشبكة العصبية أو عدد الأوراق والتكرارات والحد الأقصى لعمق الشجرة لنماذج مجموعات الأشجار. لتحديد أفضل نموذج ، نقوم بتطبيق الضبط التلقائي لنموذج SageMaker على كل من خوارزميات SageMaker المجدولة الأربعة المدربة. ما عليك سوى تحديد المعلمات التشعبية لضبطها ونطاق لاستكشاف كل معلمة. لمزيد من المعلومات حول الضبط التلقائي للطراز ، ارجع إلى Amazon SageMaker الضبط التلقائي للنموذج: استخدام التعلم الآلي لتعلم الآلة or الضبط التلقائي للنموذج Amazon SageMaker: تحسين قابل للتطوير بدون تدرج.

دعونا نرى كيف يعمل هذا في الممارسة.

LightGBM

نبدأ بتشغيل ضبط تلقائي للنموذج باستخدام LightGBM ، وتكييف هذه العملية مع الخوارزميات الأخرى. كما هو موضح في المنشور تتوفر الآن نماذج وخوارزميات Amazon SageMaker JumpStart عبر واجهة برمجة التطبيقات، الأدوات التالية مطلوبة لتدريب خوارزمية مسبقة الصنع عبر SageMaker SDK:

  • صورة الحاوية الخاصة به ، والتي تحتوي على جميع التبعيات المطلوبة للتدريب والاستدلال
  • نصوص التدريب والاستدلال للنموذج أو الخوارزمية المختارة

نقوم أولاً باسترداد هذه القطع الأثرية ، والتي تعتمد على 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),
}

أخيرًا ، نقوم بإنشاء ملف مقدر SageMaker، وإطعامه في ملف موالف، وابدأ وظيفة ضبط المعامل التشعبي باستخدام 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-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 هي نفسها كما كانت من قبل ، على الرغم من أننا بحاجة إلى استرداد عناصر النموذج تحت المعرف 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 ، لا نقوم بتشغيل ضبط hyperparameter. هذا حسب التصميم ، لأن 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 مع ضبط تلقائي للطراز AutoGluon- جدولي
دقة 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. البحث العمودي. عاي.الدكتور شين هوانغ هو عالم تطبيقي في Amazon SageMaker JumpStart وخوارزميات Amazon SageMaker المدمجة. يركز على تطوير خوارزميات التعلم الآلي القابلة للتطوير. تتركز اهتماماته البحثية في مجال معالجة اللغة الطبيعية ، والتعلم العميق القابل للتفسير على البيانات المجدولة ، والتحليل القوي لتجميع الزمكان غير المعياري. وقد نشر العديد من الأوراق البحثية في ACL و ICDM ومؤتمرات KDD والجمعية الملكية للإحصاء: مجلة Series A.

تنبؤ متضخم باستخدام خوارزميات جدولة مدمجة من Amazon SageMaker LightGBM و CatBoost و TabTransformer و AutoGluon-Tabular PlatoBlockchain Data Intelligence. البحث العمودي. عاي.جواو مورا هو مهندس حلول متخصص في AI / ML في Amazon Web Services. يركز في الغالب على حالات استخدام البرمجة اللغوية العصبية ومساعدة العملاء على تحسين تدريب ونشر نموذج التعلم العميق. وهو أيضًا مؤيد نشط لحلول ML ذات التعليمات البرمجية المنخفضة والأجهزة المتخصصة في ML.

الطابع الزمني:

اكثر من التعلم الآلي من AWS