Vertex AI: إنشاء نموذج لرصد الاحتيال باستخدام AutoML

1. نظرة عامة

ستستخدم في هذا التمرين المعملي Vertex AI لتدريب نموذج بالبيانات الجدولي وعرضه. هذا هو أحدث عرض منتج للذكاء الاصطناعي على Google Cloud، وهو حاليًا في مرحلة المعاينة.

المعلومات التي تطّلع عليها

وستتعرّف على كيفية:

  • تحميل مجموعة بيانات مُدارة إلى Vertex AI
  • تدريب نموذج باستخدام AutoML
  • نشر نموذج AutoML المدرَّب في نقطة نهاية واستخدام نقطة النهاية هذه للحصول على توقّعات

تبلغ التكلفة الإجمالية لتشغيل هذا التمرين على Google Cloud حوالي $22.

2. مقدّمة عن Vertex AI

يستخدم هذا البرنامج أحدث منتجات الذكاء الاصطناعي المتوفّرة على Google Cloud. تدمج Vertex AI حلول تعلُّم الآلة في Google Cloud ضمن تجربة تطوير سلسة. في السابق، كان الوصول إلى النماذج المدرَّبة باستخدام AutoML والنماذج المخصّصة ممكنًا من خلال خدمات منفصلة. ويدمج العرض الجديد كلاً من واجهة برمجة تطبيقات واحدة مع منتجات جديدة أخرى. يمكنك أيضًا نقل المشاريع الحالية إلى Vertex AI. إذا كان لديك أي ملاحظات، يُرجى الاطّلاع على صفحة الدعم.

يتضمّن Vertex AI العديد من المنتجات المختلفة لدعم سير العمل الشامل لتعلُّم الآلة. سيركّز هذا التمرين المعملي على المنتجات الموضحة أدناه: AutoML للبيانات الجدولية والتوقعات ومنصة العمل.

نظرة عامة على منتج Vertex

3- إعداد البيئة

ستحتاج إلى مشروع Google Cloud Platform مع تفعيل الفوترة لتشغيل هذا الدرس التطبيقي حول الترميز. لإنشاء مشروع، يُرجى اتّباع التعليمات هنا.

الخطوة 1: تفعيل واجهة برمجة تطبيقات Compute Engine

انتقِل إلى Compute Engine واختَر تفعيل إذا لم يسبق لك تفعيله. ستحتاج إلى هذا لإنشاء مثيل دفتر الملاحظات.

الخطوة 2: تفعيل Vertex AI API

انتقِل إلى قسم Vertex AI في Cloud Console وانقر على تفعيل Vertex AI API.

لوحة بيانات Vertex

الخطوة 3: إنشاء مثيل Vertex AI Workbench

من قسم Vertex AI في Cloud Console، انقر على Workbench:

قائمة Vertex AI

من هناك، ضمن دفاتر الملاحظات التي يديرها المستخدم، انقر على دفتر ملاحظات جديد:

إنشاء ورقة ملاحظات جديدة

بعد ذلك، اختَر أحدث إصدار من نوع المثيل TensorFlow Enterprise (مع قناة الدعم الطويل الأمد (LTS) بدون وحدات معالجة الرسومات:

مثيل TFE

استخدِم الخيارات التلقائية، ثم انقر على إنشاء.

الخطوة 5: فتح دفتر ملاحظاتك

بعد إنشاء المثيل، اختَر فتح JupyterLab:

فتح ورقة الملاحظات

تستند البيانات التي سنستخدمها لتدريب نموذجنا إلى مجموعة بيانات رصد عمليات الاحتيال المرتبطة ببطاقات الائتمان هذه. سنستخدم نسخة من مجموعة البيانات هذه تكون متاحة للجميع في BigQuery.

4. إنشاء مجموعة بيانات مُدارة

في Vertex AI، يمكنك إنشاء مجموعات بيانات مُدارة لمجموعة متنوعة من أنواع البيانات. ويمكنك بعد ذلك إنشاء إحصاءات عن مجموعات البيانات هذه واستخدامها لتدريب النماذج باستخدام AutoML أو رمز النموذج المخصّص.

الخطوة 1: إنشاء مجموعة بيانات

في قائمة Vertex على وحدة التحكّم، اختَر مجموعات البيانات:

اختيار مجموعات البيانات

وسنضع في هذا التمرين المعملي نموذجًا للكشف عن الاحتيال لتحديد ما إذا كان ينبغي تصنيف معاملة معينة ببطاقة ائتمان على أنها احتيالية أم لا.

من صفحة "مجموعات البيانات"، أدخِل اسمًا لمجموعة البيانات، ثم اختَر جدولي ثم الانحدار/التصنيف. بعد ذلك، يمكنك إنشاء مجموعة البيانات:

إنشاء مجموعة بيانات

تتوفّر بضعة خيارات لاستيراد البيانات إلى مجموعات البيانات المُدارة في Vertex:

  • تحميل ملف محلي من جهاز الكمبيوتر
  • اختيار الملفات من Cloud Storage
  • اختيار البيانات من BigQuery

سنقوم هنا بتحميل البيانات من جدول BigQuery عام.

الخطوة 2: استيراد البيانات من BigQuery

اختَر "اختيار جدول أو طريقة عرض من BigQuery" كطريقة الاستيراد، ثم انسخ ما يلي في مربّع جدول BigQuery: bigquery-public-data.ml_datasets.ulb_fraud_detection. بعد ذلك، انقر على متابعة:

استيراد بيانات BQ

يُفترض أن ترى شيئًا مثل ما يلي بعد استيراد مجموعة البيانات الخاصة بك:

البيانات المستورَدة

يمكنك النقر على إنشاء إحصاءات لعرض معلومات إضافية عن مجموعة البيانات هذه، ولكن هذا الإجراء غير مطلوب قبل المتابعة إلى الخطوة التالية. تحتوي مجموعة البيانات هذه على معاملات بطاقات الائتمان الحقيقية. تم إخفاء معظم أسماء الأعمدة، ولهذا السبب يطلق عليها V1، V2، وما إلى ذلك.

5- تدريب نموذج باستخدام AutoML

بعد تحميل مجموعة بيانات مُدارة، نكون جاهزين لتطبيق نموذج بهذه البيانات. سندرّب نموذج التصنيف للتنبؤ بما إذا كانت معاملة معيّنة احتيالية أم لا. يمنحك Vertex AI خيارَين لنماذج التدريب:

  • AutoML: يمكنك تدريب نماذج عالية الجودة بأقل جهد وخبرة في تعلُّم الآلة.
  • تدريب مخصّص: يمكنك تشغيل تطبيقات التدريب المخصّصة في السحابة الإلكترونية باستخدام إحدى حاويات Google Cloud المنشأة مسبقًا أو استخدام حاويات خاصة بك.

في هذا التمرين المعملي، سنستخدم AutoML للتدريب.

الخطوة 1: بدء مهمة التدريب

من صفحة تفاصيل مجموعة البيانات من حيث توقفت في الخطوة السابقة، اختَر تدريب نموذج جديد في أعلى يسار الصفحة. اختَر التصنيف كهدف، واترك AutoML محدّدًا لتدريب النموذج، ثم انقر على متابعة:

الخطوة 1 لتدريب النموذج

أدخِل اسمًا للنموذج، أو يمكنك استخدام الاسم التلقائي. ضمن عمود الاستهداف، اختَر الصف. هذا عدد صحيح يشير إلى ما إذا كانت معاملة معيّنة احتيالية أم لا (0 للإشارة إلى عدم الاحتيال، و1 للاحتيال).

بعد ذلك، انقر على متابعة:

الخطوة 2 لتدريب النموذج

في هذه الخطوة، انتقِل للأسفل وانقر لتوسيع الخيارات المتقدّمة. بما أنّ مجموعة البيانات هذه غير متوازنة إلى حدّ كبير (لأنّ أقل من% 1 من البيانات تحتوي على معاملات احتيالية)، اختر خيار AUC PRC الذي سيؤدي إلى زيادة دقة الاستدعاء للفئة الأقل شيوعًا:

خيارات التدريب المتقدّمة

اختَر متابعة ثم تابِع إلى الخطوة الأخيرة (الحوسبة والأسعار). أدخِل هنا 1 كعدد ساعات العُقد لميزانيتك، واترك ميزة الإيقاف المبكر مفعَّلة. يُعتبر تدريب نموذج AutoML لمدة ساعة حوسبة واحدة بداية جيدة لفهم ما إذا كانت هناك علاقة بين الميزات والتصنيف الذي اخترته. ومن ثمّ، يمكنك تعديل الميزات والتدريب لمزيد من الوقت لتحسين أداء النموذج. بعد ذلك، اختَر بدء التدريب.

ستصلك رسالة إلكترونية عند اكتمال مهمة التدريب. سيستغرق التدريب وقتًا أطول قليلاً من ساعة لحساب الوقت لتدوير الموارد وإتلافها.

6- استكشاف مقاييس تقييم النماذج

في هذه الخطوة، سنرى مستوى أداء النموذج.

بعد اكتمال مهمة تدريب النموذج، انتقِل إلى علامة التبويب النماذج في Vertex. انقر على النموذج الذي درّبته للتو وألق نظرة على علامة التبويب تقييم. هناك العديد من مقاييس التقييم هنا - سنركز على اثنين: مصفوفة الالتباس وأهمية الميزة.

الخطوة 1: فهم مصفوفة التشويش

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

تذكر أن أقل من 1% من الأمثلة في مجموعة البيانات كانت معاملات احتيالية، لذلك إذا كانت دقة نموذجنا 99%، فهناك احتمالٌ كبير أن يتم تخمين الفئة غير الاحتيالية عشوائيًا بنسبة 99% من الوقت. وهذا هو السبب في أن النظر إلى دقة نموذجنا لكل فئة هو مقياس أفضل هنا.

عند التمرير لأسفل في علامة التبويب تقييم، من المفترض أن تظهر مصفوفة تشويش تشبه ما يلي (قد تختلف النسب المئوية الدقيقة):

مصفوفة نجاح التوقّعات

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

الخطوة 2: التركيز على أهمية الميزة

أسفل مصفوفة التشويش، من المفترض أن يظهر لك مخطط أهمية الميزة على النحو التالي:

أهمية الميزة

يوضح لنا ذلك الميزات التي قدّمت أكبر إشارة لنموذجنا عند إجراء التوقّعات. تُعدّ أهمية الميزة أحد أنواع الذكاء الاصطناعي الموضَّح، وهي مجال يتضمّن طرقًا مختلفة للحصول على مزيد من الإحصاءات حول نموذج تعلُّم الآلة، وهو مجال يتم فيه إجراء التوقّعات. يتم حساب مخطط أهمية الميزة الموضح هنا كحساب إجمالي من خلال النظر إلى جميع تنبؤات النموذج في مجموعة الاختبار. فهو يعرض لنا أهم الميزات عبر مجموعة من الأمثلة.

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

في سيناريو واقعي، يمكن استخدام قيم أهمية الميزة هذه لمساعدتنا على تحسين نموذجنا واكتساب المزيد من الثقة في توقّعات الميزة. قد نقرّر إزالة الميزات الأقل أهمية في المرة القادمة التي يتم فيها تدريب أحد النماذج، أو دمج اثنين من الميزات الأكثر أهمية في تداخل الميزات لمعرفة ما إذا كان ذلك سيحسّن أداء النموذج أم لا.

نبحث عن أهمية الميزة ضمن مجموعة هنا، ولكن يمكننا أيضًا معرفة أهمية الميزة لتوقّعات فردية في Vertex AI. سنرى كيفية القيام بذلك بمجرد نشر النموذج.

7. نشر النموذج في نقطة نهاية

الآن بعد أن أصبح لدينا نموذج مدرَّب، فإن الخطوة التالية هي إنشاء نقطة نهاية في Vertex. يمكن أن يحتوي مورد النموذج في Vertex على نقاط نهاية متعددة مرتبطة به، ويمكنك تقسيم عدد الزيارات بين نقاط النهاية.

الخطوة 1: إنشاء نقطة نهاية

في صفحة النموذج، انتقِل إلى علامة التبويب النشر والاختبار وانقر على نشر إلى نقطة النهاية:

النشر والاختبار

أدخِل اسمًا لنقطة النهاية، مثل fraud_v1، واترك إذن الوصول معيّنًا على عادي، ثم انقر على متابعة.

اترك تقسيم عدد الزيارات ونوع الجهاز كإعدادات تلقائية، وانقر على تم ثم على متابعة.

لن نستخدم ميزة مراقبة النماذج لنقطة النهاية هذه، لذا يمكنك عدم اختيار ذلك والنقر على نشر. ستستغرق نقطة النهاية بضع دقائق للنشر. عند اكتمال هذه العملية، ستظهر علامة اختيار خضراء بجانبها:

نقطة نهاية تم نشرها

اقتربت من الإجابة الصحيحة! أصبحت الآن جاهزًا لتلقّي توقّعات بشأن النموذج المنشور.

8. الحصول على توقّعات بشأن النموذج المنشور

هناك بضعة خيارات للحصول على توقعات النماذج:

  • واجهة مستخدم Vertex AI
  • واجهة برمجة تطبيقات Vertex AI

سنعرض كليهما هنا.

الخطوة 1: الحصول على توقّعات النماذج في واجهة المستخدِم

في صفحة النموذج التي تظهر فيها نقطة النهاية (من حيث توقفنا في الخطوة الأخيرة)، انتقِل للأسفل إلى قسم اختبار النموذج:

نموذج تجريبي

اختارت Vertex AI هنا قيمًا عشوائية لكل ميزة من ميزات نموذجنا التي يمكننا استخدامها للحصول على توقّع تجريبي. يمكنك تغيير هذه القيم إذا أردت. انتقِل إلى أسفل الصفحة واختَر توقّع.

في قسم نتيجة التوقّع من الصفحة، من المفترض أن ترى النسبة المئوية المتوقعة لنموذجك لكل فئة. على سبيل المثال، تعني نتيجة الثقة (0.99) للفئة "0" أنّ النموذج الخاص بك يعتقد أنّ هذا المثال غير احتيالي بنسبة% 99.

الخطوة 2: الحصول على توقّعات النماذج باستخدام Vertex AI API

واجهة المستخدم هي طريقة رائعة للتأكّد من أنّ نقطة النهاية التي تم نشرها تعمل على النحو المتوقّع، ولكن من المحتمل أنّك ستحتاج إلى تلقّي توقّعات ديناميكيًا من خلال طلب بيانات من واجهة برمجة التطبيقات REST. لنوضح لك كيفية الحصول على تنبؤات النماذج هنا، سنستخدم مثيل Vertex Workbench الذي أنشأته في بداية هذا التمرين المعملي.

بعد ذلك، افتح مثيل دفتر الملاحظات الذي أنشأته، وافتح دفتر ملاحظات Python 3 من "مشغّل التطبيقات":

فتح ورقة ملاحظات

في دفتر ملاحظاتك، شغِّل ما يلي في خلية لتثبيت حزمة تطوير البرامج Vertex SDK:

!pip3 install google-cloud-aiplatform --upgrade --user

بعد ذلك، أضِف خلية في دفتر الملاحظات لاستيراد حزمة تطوير البرامج (SDK) وإنشاء مرجع إلى نقطة النهاية التي نشرتها للتو:

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

عليك استبدال قيمتَين في سلسلة endpoint_name أعلاه برقم المشروع ونقطة النهاية. يمكنك العثور على رقم مشروعك من خلال الانتقال إلى لوحة بيانات المشروع والحصول على قيمة "رقم المشروع".

يمكنك العثور على رقم تعريف نقطة النهاية في قسم نقاط النهاية بوحدة التحكم هنا:

البحث عن رقم تعريف نقطة النهاية

أخيرًا، قم بتوقع لنقطة النهاية لديك عن طريق نسخ وتشغيل التعليمة البرمجية أدناه في خلية جديدة:

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

من المفترض أن تظهر لك توقّعات حول .67 للفئة 0، ما يعني أنّ النموذج يعتقد أنّ هناك احتمالاً بنسبة% 67 أن تكون هذه المعاملة غير احتيالية.

🎉 تهانينا. 🎉

لقد تعلمت كيفية استخدام Vertex AI لإجراء ما يلي:

  • تحميل مجموعة بيانات مُدارة
  • تدريب نموذج على البيانات المجدولة وتقييمه باستخدام AutoML
  • نشر النموذج في نقطة نهاية
  • الحصول على توقّعات بشأن نقطة نهاية النموذج باستخدام حزمة تطوير البرامج (SDK) الخاصة بـ Vertex

لمزيد من المعلومات حول الأجزاء المختلفة من Vertex AI، يمكنك الاطّلاع على المستندات.

9. تنظيف

إذا أردت مواصلة استخدام الدفتر الذي أنشأته في هذا التمرين المعملي، ننصحك بإيقافه عندما لا يكون قيد الاستخدام. من واجهة مستخدم Workbench في Cloud Console، اختَر ورقة الملاحظات ثم اختَر إيقاف.

إذا كنت ترغب في حذف الدفتر بالكامل، فانقر فوق الزر "Delete" (حذف) في أعلى الجانب الأيمن.

لحذف نقطة النهاية التي نشرتها، انتقِل إلى قسم نقاط النهاية في وحدة تحكُّم Vertex AI وإلغاء نشر النموذج من نقطة النهاية:

حذف نقطة النهاية

لحذف "حزمة التخزين"، باستخدام قائمة التنقّل في Cloud Console، انتقِل إلى "مساحة التخزين" واختَر الحزمة وانقر على "حذف":

حذف مساحة التخزين