الكشف عن انحراف البيانات (إصدار أولي) على مجموعات البيانات

ينطبق على: Python SDK azureml v1

تعرف على كيفية مراقبة انحراف البيانات وتعيين التنبيهات عندما يكون الانحراف مرتفعًا.

إشعار

توفر مراقبة نموذج Azure التعلم الآلي (v2) قدرات محسنة لجرف البيانات جنبا إلى جنب مع وظائف إضافية لمراقبة الإشارات والمقاييس. لمعرفة المزيد حول قدرات مراقبة النموذج في Azure التعلم الآلي (v2)، راجع مراقبة النموذج باستخدام Azure التعلم الآلي.

باستخدام أجهزة عرض مجموعة بيانات التعلم الآلي من Microsoft Azure (إصدار أولي)، يمكنك:

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

يتم استخدام مجموعة بيانات Azure التعلم الآلي لإنشاء جهاز العرض. ينبغي أن تتضمن مجموعة البيانات عمود طابع زمني.

بإمكانك عرض مقاييس انحراف البيانات باستخدام Python SDK أو في استوديو التعلم الآلي من Microsoft Azure. تتوفر المقاييس والرؤى الأخرى من خلال مورد Azure Application Insights المرتبط بمساحة عمل التعلم الآلي من Microsoft Azure.

هام

اكشف عن انحراف البيانات لمجموعات البيانات قيد المعاينة العامة حاليا. تتوفر نسخة الإصدار الأولي دون اتفاقية مستوى الخدمة، ولا يوصى به لأحمال عمل الإنتاج. بعض الميزات ربما لا تكون مدعمة أو بها بعض القدرات المقيدة. لمزيد من المعلومات، راجع ⁧⁩شروط الاستخدام التكميلية لمعاينات Microsoft Azure⁧⁩.

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

لإنشاء أجهزة مراقبة مجموعة البيانات والعمل معها، تحتاج إلى:

ما المقصود بانحراف البيانات؟

تتدهور دقة النموذج بمرور الوقت، ويرجع ذلك إلى حد كبير إلى انحراف البيانات. بالنسبة لنماذج التعلم الآلي، فإن انحراف البيانات هو التغيير في بيانات إدخال النموذج والذي يؤدي إلى تدهور أداء النموذج. تساعد مراقبة انحراف البيانات في اكتشاف مشاكل أداء النموذج هذه.

وتتضمن أسباب انحراف البيانات ما يلي:

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

يبسط التعلم الآلي من Microsoft Azure الكشف عن الانحراف عن طريق حساب مقياس واحد يجرد تعقيد مجموعات البيانات التي تتم مقارنتها. وقد تحتوي مجموعات البيانات هذه على مئات الميزات وعشرات الآلاف من الصفوف. بمجرد اكتشاف الانحراف، بإمكانك التنقل لأسفل في الميزات التي تسبب الانحراف. ثم افحص مقاييس مستوى الميزة لتصحيح وعزل السبب الجذري للانحراف.

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

في التعلم الآلي من Microsoft Azure، بإمكانك استخدام أجهزة عرض مجموعة البيانات للكشف عن انحراف البيانات والتنبيه إليه.

أجهزة مراقبة مجموعة البيانات

باستخدام جهاز مراقبة مجموعة البيانات، بإمكانك:

  • الكشف عن انحراف البيانات والتنبه إلى انحراف البيانات على البيانات الجديدة في مجموعة بيانات.
  • تحليل البيانات التاريخية للانحراف.
  • ملف تعريف البيانات الجديدة بمرور الزمن.

توفر خوارزمية انحراف البيانات مقياسًا شاملًا للتغيير في البيانات والإشارة إلى الميزات المسؤولة عن مزيد من التحقيق. تنتج أجهزة عرض مجموعة البيانات العديد من المقاييس الأخرى عن طريق جمع البيانات الجديدة في timeseries مجموعة البيانات.

يمكن إعداد التنبيه المخصص على جميع المقاييس التي تم إنشاؤها بواسطة جهاز العرض بواسطة Azure Application Insights. يمكن استخدام أجهزة مراقبة مجموعة البيانات لالتقاط مشكلات البيانات بسرعة وتقليل الوقت لتصحيح المشكلة عن طريق تحديد الأسباب المحتملة.

من الناحية المفاهيمية، هناك ثلاثة سيناريوهات أساسية لإعداد أجهزة عرض مجموعة البيانات في التعلم الآلي من Microsoft Azure.

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

تعتمد أجهزة مراقبة مجموعة البيانات على خدمات Azure التالية.

خدمة Azure ‏‏الوصف
مجموعة البيانات يستخدم الانحراف مجموعات بيانات التعلم الآلي من Microsoft Azure لاسترداد بيانات التدريب ومقارنة البيانات لتدريب النموذج. يُستخدم إنشاء ملف تعريف البيانات لإنشاء بعض التقارير المبلغ عنها مثل الحد الأدنى والحد الأقصى والقيم المميزة وعدد القيم المميزة.
البنية الأساسية لبرنامج ربط العمليات التجارية والحوسبة في Azure التعلم الآلي تتم استضافة مهمة حساب الانجراف في البنية الأساسية لبرنامج ربط العمليات التجارية التعلم الآلي Azure. تُشغل المهمة عند الطلب أو حسب الجدول الزمني للتشغيل على حساب تم تكوينه في وقت إنشاء مراقبة الانحراف.
Application Insights تنبعث من الانحراف قياسات إلى Application Insights تنتمي إلى مساحة عمل التعلم الآلي.
تخزين البيانات الثنائية الكبيرة في Azure تنبعث من الانحراف قياسات بتنسيق json إلى تخزين نقطة Azure.

مجموعات بيانات الخط الأساسي والهدف

يمكنك مراقبة مجموعات بيانات Azure التعلم الآلي من أجل انحراف البيانات. عند إنشاء جهاز عرض مجموعة بيانات، يمكنك الرجوع إلى:

  • مجموعة بيانات الخط الأساسي - عادة ما تكون مجموعة بيانات التدريب لنموذج.
  • مجموعة بيانات الهدف - عادة بيانات إدخال النموذج - بمرور الوقت مع مجموعة بيانات الخط الأساسي الخاصة بك. تعني هذه المقارنة أن مجموعة بيانات الهدف يجب أن يكون لها عمود طابع زمني محدد.

يقارن جهاز العرض بين مجموعات البيانات الأساسية والهدف.

إنشاء مجموعة بيانات الهدف

تحتاج مجموعة بيانات الهدف إلى مجموعة السمات timeseries عليها عن طريق تحديد عمود الطابع الزمني إما من عمود في البيانات أو عمود ظاهري مشتق من نمط مسار الملفات. أنشئ مجموعة البيانات باستخدام طابع زمني من خلال Python SDK أو استوديو التعلم الآلي من Microsoft Azure. يجب تحديد عمود يمثل «الطابع الزمني» لإضافة سمة timeseries إلى مجموعة البيانات. إذا تم تقسيم بياناتك إلى بنية مجلد مع معلومات الوقت، مثل '{yyyy/MM/dd}'، فقم بإنشاء عمود ظاهري من خلال إعداد نمط المسار وتعيينه على أنه «الطابع الزمني للقسم» لتمكين وظيفة واجهة برمجة تطبيقات السلسلة الزمنية.

ينطبق على: Python SDK azureml v1

يحدد أسلوب Dataset الفئة with_timestamp_columns() عمود الطابع الزمني لمجموعة البيانات.

from azureml.core import Workspace, Dataset, Datastore

# get workspace object
ws = Workspace.from_config()

# get datastore object
dstore = Datastore.get(ws, 'your datastore name')

# specify datastore paths
dstore_paths = [(dstore, 'weather/*/*/*/*/data.parquet')]

# specify partition format
partition_format = 'weather/{state}/{date:yyyy/MM/dd}/data.parquet'

# create the Tabular dataset with 'state' and 'date' as virtual columns
dset = Dataset.Tabular.from_parquet_files(path=dstore_paths, partition_format=partition_format)

# assign the timestamp attribute to a real or virtual column in the dataset
dset = dset.with_timestamp_columns('date')

# register the dataset as the target dataset
dset = dset.register(ws, 'target')

تلميح

لتحصل على مثال كامل لاستخدام سمة timeseries مجموعات البيانات، راجع دفتر ملاحظات الأمثلة أو وثائق SDK لمجموعات البيانات.

إنشاء جهاز مراقبة مجموعة البيانات

إنشاء جهاز مراقبة مجموعة بيانات للكشف عن انحراف البيانات والتنبيه إليه على مجموعة بيانات جديدة. استخدم إما Python SDK أو استوديو التعلم الآلي من Microsoft Azure.

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

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

تقوم دالة backfill بتشغيل مهمة backfill، لنطاق تاريخ بدء وانتهاء محدد. تملأ مهمة إعادة التعبئة نقاط البيانات المفقودة المتوقعة في مجموعة بيانات، كطريقة لضمان دقة البيانات واكتمالها.

ينطبق على: Python SDK azureml v1

راجع الوثائق المرجعية لـPython SDK حول انحراف البيانات للحصول على التفاصيل الكاملة.

يوضح المثال التالي كيفية إنشاء جهاز مراقبة مجموعة بيانات باستخدام PYTHON SDK

from azureml.core import Workspace, Dataset
from azureml.datadrift import DataDriftDetector
from datetime import datetime

# get the workspace object
ws = Workspace.from_config()

# get the target dataset
target = Dataset.get_by_name(ws, 'target')

# set the baseline dataset
baseline = target.time_before(datetime(2019, 2, 1))

# set up feature list
features = ['latitude', 'longitude', 'elevation', 'windAngle', 'windSpeed', 'temperature', 'snowDepth', 'stationName', 'countryOrRegion']

# set up data drift detector
monitor = DataDriftDetector.create_from_datasets(ws, 'drift-monitor', baseline, target,
                                                      compute_target='cpu-cluster',
                                                      frequency='Week',
                                                      feature_list=None,
                                                      drift_threshold=.6,
                                                      latency=24)

# get data drift detector by name
monitor = DataDriftDetector.get_by_name(ws, 'drift-monitor')

# update data drift detector
monitor = monitor.update(feature_list=features)

# run a backfill for January through May
backfill1 = monitor.backfill(datetime(2019, 1, 1), datetime(2019, 5, 1))

# run a backfill for May through today
backfill1 = monitor.backfill(datetime(2019, 5, 1), datetime.today())

# disable the pipeline schedule for the data drift detector
monitor = monitor.disable_schedule()

# enable the pipeline schedule for the data drift detector
monitor = monitor.enable_schedule()

تلميح

للحصول على مثال كامل لإعداد مجموعة بيانات timeseries وكاشف انحراف البيانات، راجع دفتر ملاحظات الأمثلة.

افهم نتائج انحراف البيانات

يوضح لك هذا القسم نتائج مراقبة مجموعة بيانات، الموجودة في صفحة Datasets / Dataset monitors في استوديو Azure. يمكنك تحديث الإعدادات وتحليل البيانات الموجودة لفترة زمنية محددة على هذه الصفحة.

ابدأ بالرؤى صاحبة المستوى الأعلى في حجم انحراف البيانات وتسليط الضوء على الميزات التي سيتم التحقيق فيها بشكل أكبر.

نظرة عامة على الانحراف

مقياس ‏‏الوصف
حجم انحراف البيانات نسبة مئوية من الانحراف بين مجموعة البيانات الأساسية والهدف بمرور الزمن. تتراوح هذه النسبة المئوية من 0 إلى 100، وتشير 0 إلى مجموعات بيانات متطابقة، وتشير 100 إلى أن نموذج انحراف البيانات في Azure التعلم الآلي يمكن أن يخبر مجموعتي البيانات بشكل كامل عن بعضهما البعض. ومن المتوقع وجود تشويش في النسبة المئوية الدقيقة التي تم قياسها بسبب استخدام تقنيات التعلم الآلي لتوليد هذا الحجم.
أهم ميزات الانحراف يظهر الميزات من مجموعة البيانات التي انحرفت أكثر وبالتالي تساهم أكثر في مقياس حجم الانحراف. نظرا للتحول المشترك، لا يحتاج التوزيع الأساسي للميزة بالضرورة إلى التغيير ليكون له أهمية عالية نسبيا للميزة.
الحد يؤدي حجم انحراف البيانات خارج الحد المحدد إلى تشغيل التنبيهات. تكوين قيمة الحد في إعدادات جهاز العرض.

اتجاه حجم الانحراف

قم بمراجعة كيف تختلف مجموعة البيانات عن مجموعة البيانات الهدف في الفترة الزمنية المحددة. كلما اقتربت من 100%، زادت اختلاف مجموعتي البيانات.

اتجاه حجم الانحراف

حجم الانحراف حسب الميزات

يحتوي هذا القسم على رؤى على مستوى الميزات حول التغيير في توزيع الميزة المحددة، والإحصائيات الأخرى، بمرور الوقت.

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

في استوديو Azure التعلم الآلي، حدد شريطا في الرسم البياني للاطلاع على تفاصيل مستوى الميزة لهذا التاريخ. بشكل افتراضي، ترى أمامك توزيع مجموعة البيانات الأساسية وتوزيع الوظيفة الأحدث لنفس الميزة.

حجم الانحراف حسب الميزات

يمكن أيضا استرداد هذه المقاييس في Python SDK من خلال get_metrics() الأسلوب علىDataDriftDetector عنصر.

تفاصيل الميزة

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

رسم بياني ومقارنة للميزة العددية

تعتمد المقاييس في المخطط البياني على نوع الميزة.

  • الميزات الرقمية

    مقياس ‏‏الوصف
    مسافة Wasserstein الحد الأدنى من العمل لتحويل توزيع الأساس إلى توزيع الهدف.
    متوسط القيمة متوسط قيمة الميزة.
    أدنى قيمة الحد الأدنى لقيمة الميزة.
    أقصى قيمة الحد الأقصى لقيمة الميزة.
  • الميزات الفئوية

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

في هذا المخطط البياني، حدد تاريخًا واحدًا لمقارنة توزيع الميزة بين الهدف وهذا التاريخ للميزة المعروضة. فيما يتعلق بالميزات الرقمية، يعرض هذا توزيعين للاحتمالات. في حال كانت الميزة رقمية، يتم عرض مخطط الشريط.

تحديد تاريخ للمقارنة بهدف

القياسات والتنبيهات والأحداث

يمكن الاستعلام عن القياسات في مورد Azure Application Insights المرتبط بمساحة عمل التعلم الآلي. لديك حق الوصول إلى جميع ميزات Application Insights بما في ذلك إعداد لقواعد التنبيه المخصصة ومجموعات الإجراءات لتشغيل إجراء مثل، عنوان بريد إلكتروني/ SMS/ دفع/ صوت أو وظيفة Azure. راجع وثائق Application Insights الكاملة للحصول على التفاصيل.

للبدء، انتقل إلى مدخل Microsoft Azure وحدد صفحة Overview على مساحة العمل الخاصة بك. مورد Application Insights المقترن موجود في أقصى اليمين:

نظرة عامة على مدخل Microsoft Azure

قم بتحديد Logs (Analytics) ضمن Monitoring في الجزء الأيمن:

نظرة عامة على Application Insights

يتم تخزين مقاييس مراقبة مجموعة البيانات كـ customMetrics. يمكنك كتابة استعلام وتشغيله بعد إعداد جهاز مراقبة مجموعة بيانات لعرضه:

استعلام Log Analytics

بعد تحديد المقاييس لإعداد قواعد التنبيه، أنشئ قاعدة تنبيه جديدة:

قاعدة تنبيه جديدة

ويمكنك استخدام مجموعة إجراءات موجودة، أو إنشاء مجموعة جديدة لتحديد الإجراء الذي سيتم اتخاذه عند استيفاء شروط المجموعة:

إضافة مجموعة إجراءات

استكشاف الأخطاء وإصلاحها

القيود والمشاكل المعروفة لمراقبة انحراف البيانات:

  • يقتصر النطاق الزمني عند تحليل البيانات التاريخية على 31 فاصلًا زمنيًا لإعداد تردد جهاز المراقبة.

  • تقييد 200 ميزة، ما لم يتم تحديد قائمة ميزات (جميع الميزات المستخدمة).

  • يجب أن يكون حجم الحساب كبيرًا بما يكفي للتعامل مع البيانات.

  • تأكد من أن مجموعة البيانات خاصتك تحتوي على بيانات ضمن تاريخ البدء والانتهاء لوظيفة مراقبة معينة.

  • تعمل شاشات مجموعة البيانات فقط على مجموعات البيانات التي تحتوي على 50 صفا أو أكثر.

  • يتم تصنيف الأعمدة أو الميزات في مجموعة البيانات على أنها فئوية أو رقمية استنادًا إلى الشروط الموجودة في الجدول التالي. إذا كانت الميزة لا تفي بهذه الشروط - على سبيل المثال، عمود من سلسلة النوع مع >100 قيمة فريدة - يتم إسقاط الميزة من خوارزمية انحراف البيانات الخاصة بنا، ولكن لا يزال يتم تعريفها.

    نوع الميزة نوع البيانات الشرط القيود
    Categorical سلسلة عدد القيم الفريدة في الميزة أقل من 100 وأقل من 5% من عدد الصفوف. يتم التعامل مع «خال»ٍ كفئة خاصة بها.
    عددي int، float القيم الموجودة في الميزة هي من نوع بيانات عددي، ولا تفي بشرط ميزة فئوية. تم إسقاط الميزة إذا كانت 15% > من القيم خالية.
  • عند إنشاء مراقب انحراف البيانات ولكن لا يمكنك رؤية البيانات على صفحة Dataset monitors في Azure التعلم الآلي studio، جرب ما يلي.

    1. تحقق ما إذا كنت قد حددت نطاق التاريخ الصحيح في أعلى الصفحة.
    2. في علامة التبويب أجهزة مراقبة مجموعة البيانات، حدد رابط التجربة للتحقق من حالة التشغيل. يوجد هذا الارتباط في أقصى يسار الجدول.
    3. إذا اكتملت الوظيفة بنجاح، فتحقق من سجلات برنامج التشغيل لمعرفة عدد المقاييس التي تم إنشاؤها أو إذا كانت هناك أي رسائل تحذير. ابحث عن سجلات برامج التشغيل في علامة التبويب Output + logs بعد تحديد تجربة.
  • إذا لم تنشئ الدالة SDK backfill() الإخراج المتوقع، فقد يكون ذلك بسبب مشكلة في المصادقة. عند إنشاء الحساب لتمريره إلى هذه الدالة، لا تستخدم Run.get_context().experiment.workspace.compute_targets. بدلًا من ذلك، استخدم ServicePrincipalAuthentication مثل ما يلي لإنشاء الحساب الذي تمرره إلى هذه backfill() الدالة:

    auth = ServicePrincipalAuthentication(
            tenant_id=tenant_id,
            service_principal_id=app_id,
            service_principal_password=client_secret
            )
    ws = Workspace.get("xxx", auth=auth, subscription_id="xxx", resource_group="xxx")
    compute = ws.compute_targets.get("xxx")
    
  • من Model Data Collector، قد يستغرق وصول البيانات إلى حساب تخزين blob الخاص بك ما يصل إلى 10 دقائق. ومع ذلك، فإنه عادة ما يستغرق وقتا أقل. في برنامج نصي أو دفتر ملاحظات، انتظر 10 دقائق للتأكد من تشغيل الخلايا أدناه بنجاح.

    import time
    time.sleep(600)
    

الخطوات التالية