الكشف عن انحراف البيانات (معاينتها) على مجموعات البيانات

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

باستخدام شاشات مجموعة بيانات Azure التعلم الآلي (المعاينة)، يمكنك:

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

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

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

هام

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

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

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

ما هو انحراف البيانات؟

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

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

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

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

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

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

شاشات مجموعة البيانات

باستخدام شاشة مجموعة البيانات، يمكنك:

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

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

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

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

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

تعتمد شاشات مجموعة البيانات على خدمات Azure التالية.

خدمة Azure الوصف
مجموعة البيانات يستخدم Drift مجموعات بيانات التعلم الآلي لاسترداد بيانات التدريب ومقارنة البيانات الخاصة بتدريب النماذج. يتم استخدام إنشاء ملف تعريف للبيانات لإنشاء بعض المقاييس التي تم الإبلاغ عنها مثل الحد الأدنى والحد الأقصى والقيم المميزة وعدد القيم المتميزة.
Azureml pipeline and compute تتم استضافة مهمة حساب الانجراف في خط أنابيب azureml. يتم تشغيل المهمة عند الطلب أو حسب الجدول الزمني لتشغيلها على حساب تم تكوينه في وقت إنشاء شاشة الانجراف.
رؤى التطبيق ينبعث من Drift مقاييس إلى التطبيق Insights تنتمي إلى مساحة عمل التعلم الآلي.
تخزين الكائنات الثنائية الكبيرة في Azure ينبعث Drift من المقاييس بتنسيق json إلى تخزين Azure blob.

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

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

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

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

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

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

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 أو Azure التعلم الآلي studio.

راجع الوثائق المرجعية ل 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 بيانات وكاشف انحراف البيانات، راجع دفتر الملاحظات المثالي.

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

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

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

Drift overview

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

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

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

Drift magnitude trend

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

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

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

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

Drift magnitude by features

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

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

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

Numeric feature graph and comparison

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

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

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

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

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

Select a date to compare to target

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

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

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

Azure portal overview

حدد السجلات (التحليلات) ضمن المراقبة في الجزء الأيمن:

Application insights overview

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

Log analytics query

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

New alert rule

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

New action group

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

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

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

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

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

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

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

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

    نوع الميزة نوع البيانات Condition التقييدات
    Categorical سلسلة، بول، إنترنت، تعويم عدد القيم الفريدة في الميزة أقل من 100 وأقل من 5٪ من عدد الصفوف. يتم التعامل مع Null على أنها فئة خاصة بها.
    عددي int ، تعويم القيم الموجودة في الميزة من نوع بيانات رقمية ولا تفي بشرط ميزة فئوية. يتم إسقاط الميزة إذا كانت >15٪ من القيم فارغة.
  • عند إنشاء جهاز عرض لانحراف البيانات ولكن لا يمكنك رؤية البيانات الموجودة في صفحة شاشات مجموعة البيانات في استوديو Azure التعلم الآلي، جرب ما يلي.

    1. تحقق مما إذا كنت قد حددت النطاق الزمني الصحيح في أعلى الصفحة.
    2. في علامة التبويب شاشات مجموعة البيانات ، حدد رابط التجربة للتحقق من حالة التشغيل. يوجد هذا الرابط في أقصى يمين الجدول.
    3. إذا اكتمل التشغيل بنجاح، فتحقق من سجلات برامج التشغيل لمعرفة عدد المقاييس التي تم إنشاؤها أو ما إذا كانت هناك أي رسائل تحذير. ابحث عن سجلات برامج التشغيل في علامة التبويب الإخراج + السجلات بعد النقر فوق تجربة.
  • إذا لم تقم وظيفة 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")
    
  • من "جامع البيانات النموذجي"، قد يستغرق الأمر ما يصل إلى (ولكن عادة أقل من) 10 دقائق حتى تصل البيانات إلى حساب تخزين blob الخاص بك. في برنامج نصي أو دفتر ملاحظات، انتظر 10 دقائق لضمان تشغيل الخلايا أدناه.

    import time
    time.sleep(600)
    

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