شعار زيفيرنت

قم ببناء نماذج XGBoost باستخدام Amazon Redshift ML

التاريخ:

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

في هذا المنشور ، نوضح كيف يمكن لعلماء البيانات تدريب النماذج باستخدام خوارزمية XGBoost. على وجه التحديد ، نناقش كيف يمكنك استخدام Redshift ML لتدريب نماذج ML باستخدام CREATE MODEL الأمر من خلال توفير معلمات متقدمة مثل المعالجات الأولية ونوع المشكلة والمعلمات الفائقة.

في هذا المنصب قم بإنشاء نماذج التعلم الآلي وتدريبها ونشرها في Amazon Redshift باستخدام SQL مع Amazon Redshift ML، قمنا بمراجعة فوائد Redshift ML وكيف تبسط خط أنابيب ML الخاص بك دون تعقيد تصدير بياناتك من مستودع البيانات لاستخدامها مع ML. لا داعي للقلق بشأن حوكمة البيانات التي تقوم بتصديرها من مستودع البيانات الخاص بك.

المتطلبات الأساسية المسبقة

للبدء ، نحتاج إلى مجموعة Amazon Redshift مع تمكين ميزة ML. يتوفر Redshift ML بشكل عام ، ويمكنك استخدامه في مجموعة مع أحدث إصدار للصيانة. للحصول على مقدمة حول Redshift ML وإرشادات حول إعداده ، انظر قم بإنشاء نماذج التعلم الآلي وتدريبها ونشرها في Amazon Redshift باستخدام SQL مع Amazon Redshift ML.

تقديم XGBoost

تعد خوارزمية XGBoost (eXtreme Gradient Boosting) تطبيقًا مفتوح المصدر محسنًا لخوارزمية الأشجار المعززة بالتدرج. تم تصميم XGBoost من الألف إلى الياء للتعامل مع العديد من مشاكل علوم البيانات بطريقة عالية الكفاءة ومرنة ومحمولة ودقيقة. يمكن استخدام XGBoost لمشاكل الانحدار والتصنيف الثنائي والتصنيف متعدد الفئات والتصنيف. للحصول على تفاصيل حول XGBoost و SageMaker ، راجع نقدم لكم حاوية خوارزمية Amazon SageMaker XGBoost مفتوحة المصدر.

الانزياح الأحمر ML CREATE MODEL مع AUTO OFF يدعم الخيار حاليًا XGBoost فقط باعتباره ملف MODEL_TYPE. بصفتك عالم بيانات أو خبيرًا في تعلم الآلة ، يمكنك تقديم المعلومات ذات الصلة مثل الهدف والمعالجات الأولية والمعلمات الفائقة كجزء من CREATE MODEL الأمر بناءً على حالة الاستخدام الخاصة بك.

حالة الاستخدام

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

تُظهر لقطة الشاشة التالية عينة مجموعة بيانات لحالة الاستخدام هذه. العمود الأخير ، class، هو الذي سنتوقعه. يشير الصفر (0) إلى ورقة نقدية أصلية وواحدة (1) مزيفة.

الإعداد وإعداد البيانات

قمنا بتقسيم مجموعة البيانات إلى مجموعتين (80٪ و 20٪) لاستخدامها لأغراض التدريب والاختبار. للحصول على التعسف في مجموعة البيانات ، نستخدم رقمًا عشوائيًا عند تقسيم البيانات. بيانات الاختبار متاحة للجمهور خدمة تخزين أمازون البسيطة (Amazon S3) دلو s3://redshiftbucket-ml-sagemaker/banknote_authentication.

فيما يلي أمرا DDL و COPY لكل من مجموعات بيانات التدريب والاختبار. إذا كنت تفضل ذلك ، يمكنك أيضًا الاحتفاظ بمجموعة البيانات في جدول واحد واستخدام شرط where في عبارة SQL لتقسيم بيانات التدريب والاختبار. لأغراض التوضيح البسيط ، نقسم مجموعة البيانات لاستخدامها في جدولين مختلفين. يمكنك استخدام محرر استعلام Amazon Redshift أو محرر SQL المفضل لديك لتشغيل عبارات SQL هذه.

لتحميل البيانات ، استخدم ملف إدارة الهوية والوصول AWS (IAM) لمجموعة Amazon Redshift الخاصة بك.

--train table CREATE TABLE banknoteauthentication_train(
variance FLOAT,
skewness FLOAT,
curtosis FLOAT,
entrophy FLOAT,
class INT); --Load COPY banknoteauthentication_train FROM 's3://redshiftbucket-ml-sagemaker/banknote_authentication/train_data/' IAM_ROLE '<<your-amazon-redshift-sagemaker-iam-role-arn>>' REGION 'us-west-2' IGNOREHEADER 1 CSV;
--test table CREATE TABLE banknoteauthentication_test(
variance FLOAT,
skewness FLOAT,
curtosis FLOAT,
entrophy FLOAT,
class INT); --Load COPY banknoteauthentication_test FROM 's3://redshiftbucket-ml-sagemaker/banknote_authentication/test_data/' IAM_ROLE '<<your-amazon-redshift-sagemaker-iam-role-arn>>' REGION 'us-west-2' IGNOREHEADER 1 CSV;

قم بإنشاء نموذج ML

الآن بعد أن قمنا بإعداد البيانات ، فلنقم بإنشاء النموذج في Redshift ML باستخدام AUTO OFF و XGBoost كنوع النموذج باستخدام CREATE MODEL أمر:

--Create a model CREATE MODEL model_banknoteauthentication_xgboost_binary FROM banknoteauthentication_train TARGET class FUNCTION func_model_banknoteauthentication_xgboost_binary IAM_ROLE 'arn:aws:iam::<replace-with-your-account-number>:role/Redshift-ML' AUTO OFF MODEL_TYPE xgboost OBJECTIVE 'binary:logistic' PREPROCESSORS 'none' HYPERPARAMETERS DEFAULT EXCEPT(NUM_ROUND '100') SETTINGS(S3_BUCKET '<< replace with your S3 bucket>>');

حددنا ال class العمود باعتباره الهدف (التسمية) الذي نريد توقعه وتحديده func_model_banknoteauthentication_xgboost_binary كوظيفة.

قم بإجراء التغييرات المناسبة في CREATE MODEL أمر لتحديد IAM_ROLE و S3_BUCKET . الرجوع إلى المنشورات السابقة أو الوثائق الخاصة بمتطلبات دور IAM. يتم استخدام دلو S3 المحدد لتصدير مجموعة بيانات التدريب وتخزين الأدوات الأخرى المتعلقة بـ ML.

نستخدم الجدول banknoteauthentication_train لبيانات التدريب ، و MODEL_TYPE ومن المقرر أن xgboost مع AUTO OFF.

CREATE MODEL الأمر غير متزامن ، ويتم إنشاء النموذج في الخلفية بعد تشغيل الأمر. قد يستغرق الأمر من 8 إلى 10 دقائق حتى يتم تدريب النموذج وجاهزيته ؛ ويمكنك مراقبة التقدم باستخدام SHOW MODEL model_name; أمر:

SHOW MODEL model_banknoteauthentication_xgboost_binary;

الأهداف والمعلمات الفائقة

بصفتك عالم بيانات ، قد ترغب في تحديد أهداف التدريب والمعلمات الفائقة لضبط نموذجك. دعونا نناقش بإيجاز كيف يمكنك استخدامها OBJECTIVE و HYPERPARAMETERS خيارات في CREATE MODEL مع AUTO OFF.

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

يدعم Redshift ML حاليًا ما يلي OBJECTIVE الخيارات التي تتوافق مع XGBoost: reg:squarederror, reg:squaredlogerror, reg:logistic, reg:pseudohubererror, reg:tweedie, binary:logistic, binary:hingeو multi:softmax. لمزيد من المعلومات، راجع معلمات مهمة التعلم في وثائق XGBoost.

المعلمات الفائقة هي خصائص خاصة بالمشكلة والخوارزمية تتحكم في سلوك التدريب وتتحكم فيه ويمكن أن يكون لها تأثير مباشر على كفاءة النموذج. إذا لم يتم تحديد معلمات تشعبية ، فسيتم استخدام الإعدادات الافتراضية لـ XGBoost. يجب وضع القيم بين علامتي اقتباس مفردتين. لمعلماتنا الفائقة ، NUM_ROUND (عدد الجولات لتشغيل التدريب) مضبوط على 100. للحصول على قائمة كاملة بالمعلمات التشعبية المدعومة ، راجع إنشاء نماذج XGBoost مع إيقاف التشغيل التلقائي.

الكود التالي هو إخراج تمثيلي من show model بعد create model يبدأ الأمر. يعكس المدخلات المقدمة في create model الأمر والمزيد من المعلومات مثل حالة النموذج (TRAINING, READY, FAILED) ووقت التشغيل الأقصى حتى النهاية. يتيح لك ترك النموذج ليعمل حتى الاكتمال مع الوقت الافتراضي ضبط النموذج لتحقيق دقة أفضل.

dev=# show model model_banknoteauthentication_xgboost_binary; Key | Value
--------------------------+---------------------------------------------------- Model Name | model_banknoteauthentication_xgboost_binary Schema Name | public Owner | rdsdb Creation Time | Wed, 03.03.2021 20:08:07 Model State | TRAINING | TRAINING DATA: | Query | SELECT * | FROM "BANKNOTEAUTHENTICATION_TRAIN" Target Column | CLASS | PARAMETERS: | Model Type | xgboost Function Name | func_model_banknoteauthentication_xgboost_binary Function Parameters | variance skewness curtosis entrophy Function Parameter Types | float8 float8 float8 float8 IAM Role | arn:aws:iam::XXXXXXXXX988:role/Redshift-ML S3 Bucket | redshift-ml-sagemaker Max Runtime | 5400 | HYPERPARAMETERS: | num_round | 100 objective | binary:logistic
(23 rows)

بعد create model الأمر كامل ، فإن show model يبدو إخراج الأمر مثل الكود التالي. حالة النموذج الآن READY ولديه معلومات إضافية مثل Estimated Cost و train:error. للنماذج التي تم إنشاؤها باستخدام Amazon SageMaker الطيار الآلي (AUTO ON)، نحن نرى validation كمقياس يعطي دقة النموذج ، بينما AUTO OFF مع يوفر XGBoost train:error، وهو مقياس الدقة. في الكود التالي ، القيمة 0.000000 يشير إلى أن النموذج قريب من الدقة بنسبة 100٪.

dev=# show model model_banknoteauthentication_xgboost_binary; Key | Value
-------------------------+--------------------------------------------
Model Name | model_banknoteauthentication_xgboost_binary Schema Name | public Owner | rdsdb Creation Time | Wed, 03.03.2021 20:08:07 Model State | READY train:error | 0.000000 Estimated Cost | 0.005455 |
TRAINING DATA: |
Query | SELECT * | FROM "BANKNOTEAUTHENTICATION_TRAIN" Target Column | CLASS |
PARAMETERS: |
Model Type | xgboost Function Name | func_model_banknoteauthentication_xgboost_binary Function Parameters | variance skewness curtosis entrophy Function Parameter Types | float8 float8 float8 float8 IAM Role | arn:aws:iam::XXXXXXXXX988:role/Redshift-ML S3 Bucket | redshift-ml-sagemaker Max Runtime | 5400 |
HYPERPARAMETERS: |
num_round | 100 objective | binary:logistic
(25 rows)

الإستنباط

بالنسبة لمشاكل التصنيف الثنائية ومتعددة الفئات ، نحسب الدقة كمقياس للنموذج. يمكن حساب الدقة بناءً على ما يلي:

accuracy = (sum (actual == predicted)/total) *100

دعنا نطبق الكود السابق على حالة الاستخدام الخاصة بنا لمعرفة دقة النموذج. نحن نستخدم ال banknoteauthentication_test الجدول لاختبار الدقة ، واستخدام الوظيفة التي تم إنشاؤها حديثًا func_model_banknoteauthentication_xgboost_binary للتنبؤ وأخذ أعمدة أخرى غير الهدف والتسمية كمدخلات.

-- check accuracy WITH infer_data AS (
SELECT class AS label,
func_model_banknoteauthentication_xgboost_binary (variance, skewness, curtosis, entrophy) AS predicted,
CASE WHEN label IS NULL THEN 0 ELSE label END AS actual,
CASE WHEN actual = predicted THEN 1::INT ELSE 0::INT END AS correct
FROM banknoteauthentication_test),
aggr_data AS (
SELECT SUM(correct) AS num_correct,
COUNT(*) AS total
FROM infer_data) SELECT (num_correct::FLOAT / total::FLOAT) AS accuracy FROM aggr_data; --output of the above query accuracy
------------------- 0.992351816443595
(1 row)

إخراج استعلام الاستدلال (0.9923 * 100 = 99.23٪) يطابق الإخراج من ملف show model أمر.

لنقم بتشغيل استعلام التنبؤ على banknoteauthentication_test للحصول على عدد الأوراق النقدية الأصلية مقابل الأوراق النقدية المزيفة:

--check the prediction WITH infer_data AS ( SELECT func_model_banknoteauthentication_xgboost_binary(variance, skewness, curtosis, entrophy) AS predicted FROM banknoteauthentication_test )SELECT CASE WHEN predicted = '0' THEN 'Original banknote' WHEN predicted = '1' THEN 'Counterfeit banknote' ELSE 'NA' END AS banknote_authentication ,COUNT(1) AS count FROM infer_data GROUP BY 1; --output of the above query banknote_authentication | count
-------------------------+------- Original banknote | 310 Counterfeit banknote | 213
(2 rows)

استكشاف الأخطاء:

برجاء مراجعة وثيقة مدونة الانحدار الأحمر ML للحصول على نصائح حول استكشاف الأخطاء وإصلاحها.

وفي الختام

يوفر Redshift ML نظامًا أساسيًا سهلًا وسلسًا لمستخدمي قواعد البيانات لإنشاء النماذج وتدريبها وضبطها باستخدام واجهة SQL. أظهر هذا المنشور كيف يمكن لعلماء البيانات تدريب نموذج XGBoost باستخدام Redshift ML مع  CREATE MODEL أمر واستخدام النموذج للاستدلال باستخدام SQL.


حول المؤلف

ساتيش ساتيا هو كبير مهندسي المنتجات في Amazon Redshift. إنه متحمس للبيانات الضخمة ويتعاون مع العملاء في جميع أنحاء العالم لتحقيق النجاح وتلبية احتياجات تخزين البيانات واحتياجات بنية بحيرة البيانات.

ديبو باندا، مدير المنتج الرئيسي في AWS ، هي شركة رائدة في مجال التحليلات ومنصة التطبيقات وتقنيات قواعد البيانات ولديها أكثر من 25 عامًا من الخبرة في عالم تكنولوجيا المعلومات.

جيايوان تشين هو مهندس تطوير برمجيات في AWS. إنه متحمس لتصميم وبناء تطبيقات كثيفة البيانات ، وعمل في مجالات بحيرة البيانات ، ومحرك الاستعلام ، والابتلاع ، والتحليلات. يواكب أحدث التقنيات ويبتكر أشياء تثير الفرح.

لوكيش جوبتا هو مدير تطوير البرامج في AWS ويدير فريق Machine Learning Compiler Technologies. يقود الجهود المبذولة لتحسين نماذج ML للحصول على أفضل أداء للاستدلال على أهداف Cloud و Edge.

كوينسمارت. Beste Bitcoin-Börse في أوروبا
المصدر: https://aws.amazon.com/blogs/machine-learning/build-xgboost-models-with-amazon-redshift-ml/

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة