التحقق من صحة بيانات TensorFlow: فحص وتحليل بياناتك

بمجرد أن تكون بياناتك في خط أنابيب TFX ، يمكنك استخدام مكونات TFX لتحليلها وتحويلها. يمكنك استخدام هذه الأدوات حتى قبل تدريب النموذج.

هناك العديد من الأسباب لتحليل بياناتك وتحويلها:

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

يمكن لأدوات TFX المساعدة في العثور على أخطاء البيانات والمساعدة في هندسة الميزات.

التحقق من صحة بيانات TensorFlow

ملخص

يحدد التحقق من صحة بيانات TensorFlow الحالات الشاذة في بيانات التدريب والخدمة ، ويمكنه إنشاء مخطط تلقائيًا عن طريق فحص البيانات. يمكن تكوين المكون لاكتشاف فئات مختلفة من الحالات الشاذة في البيانات. يمكن

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

نقوم بتوثيق كل من هذه الوظائف بشكل مستقل:

التحقق من صحة المثال المستند إلى المخطط

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

عادةً ما يتم استدعاء التحقق من صحة بيانات Tensorflow عدة مرات في سياق خط أنابيب TFX: (1) لكل تقسيم تم الحصول عليه من ExampleGen ، (2) لجميع البيانات المحولة مسبقًا المستخدمة بواسطة Transform و (3) لجميع بيانات ما بعد التحويل التي تم إنشاؤها بواسطة تحول. عند الاستدعاء في سياق التحويل (ii-iii) ، يمكن تعيين خيارات الإحصائيات والقيود المستندة إلى المخطط من خلال تحديد stats_options_updater_fn . هذا مفيد بشكل خاص عند التحقق من صحة البيانات غير المهيكلة (مثل ميزات النص). انظر رمز المستخدم للحصول على مثال.

ميزات المخطط المتقدمة

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

ميزات متفرقة

عادةً ما يقدم ترميز الميزات المتفرقة في الأمثلة ميزات متعددة يُتوقع أن يكون لها نفس التكافؤ لجميع الأمثلة. على سبيل المثال ، الميزة المتفرقة: سيتم ترميز


WeightedCategories = [('CategoryA', 0.3), ('CategoryX', 0.7)]
باستخدام ميزات منفصلة للفهرس والقيمة:

WeightedCategoriesIndex = ['CategoryA', 'CategoryX']
WeightedCategoriesValue = [0.3, 0.7]
مع التقييد بأن تكافؤ الفهرس وميزة القيمة يجب أن تتطابق مع جميع الأمثلة. يمكن جعل هذا التقييد صريحًا في المخطط عن طريق تحديد ميزة sparse_feature:

sparse_feature {
  name: 'WeightedCategories'
  index_feature { name: 'WeightedCategoriesIndex' }
  value_feature { name: 'WeightedCategoriesValue' }
}

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

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

بيئات المخطط

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

على سبيل المثال ، افترض أن الميزة المسماة "LABEL" مطلوبة للتدريب ، ولكن من المتوقع أن تكون مفقودة من العرض. يمكن التعبير عن ذلك من خلال:

  • حدد بيئتين متميزتين في المخطط: ["الخدمة" ، "التدريب"] واربط "التسمية" بالبيئة "التدريب" فقط.
  • ربط بيانات التدريب ببيئة "التدريب" وبيانات الخدمة مع بيئة "الخدمة".
جيل المخطط

يتم تحديد مخطط بيانات الإدخال كمثيل لمخطط TensorFlow.

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

يتضمن infer_schema() لإنشاء مخطط تلقائيًا. فمثلا:

schema = tfdv.infer_schema(statistics=train_stats)
tfdv.display_schema(schema=schema)

يؤدي هذا إلى إنشاء مخطط تلقائي بناءً على القواعد التالية:

  • إذا كان المخطط قد تم إنشاؤه تلقائيًا بالفعل ، فسيتم استخدامه كما هو.

  • بخلاف ذلك ، يفحص التحقق من صحة بيانات TensorFlow إحصائيات البيانات المتاحة ويحسب مخططًا مناسبًا للبيانات.

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

كشف انحراف خدمة التدريب

ملخص

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

سيناريو مثال

راجع دليل بدء التحقق من صحة بيانات TensorFlow للحصول على معلومات حول تكوين اكتشاف انحراف خدمة التدريب.

كشف الانجراف

يتم دعم اكتشاف الانجراف بين فترات متتالية من البيانات (أي بين الامتداد N والامتداد N + 1) ، مثل بين أيام مختلفة من بيانات التدريب. نعبر عن الانجراف من حيث المسافة L- اللانهاية للميزات الفئوية وتباعد جنسن-شانون التقريبي للميزات الرقمية. يمكنك ضبط مسافة الحد بحيث تتلقى تحذيرات عندما يكون الانحراف أعلى من المقبول. عادةً ما يكون تحديد المسافة الصحيحة عملية تكرارية تتطلب معرفة المجال والتجريب.

راجع دليل بدء التحقق من صحة بيانات TensorFlow للحصول على معلومات حول تكوين اكتشاف الانجراف.

استخدام المرئيات للتحقق من بياناتك

يوفر التحقق من صحة بيانات TensorFlow أدوات لتصور توزيع قيم المعالم. من خلال فحص هذه التوزيعات في دفتر Jupyter باستخدام Facets ، يمكنك اكتشاف المشكلات الشائعة المتعلقة بالبيانات.

احصائيات الميزة

تحديد التوزيعات المشبوهة

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

بيانات غير متوازنة

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

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

تصور البيانات غير المتوازنة

البيانات الموزعة بشكل موحد

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

لاكتشاف الميزات الموزعة بشكل موحد في نظرة عامة على الواجهات ، اختر "عدم التماثل" من القائمة المنسدلة "فرز حسب" وحدد مربع الاختيار "ترتيب عكسي":

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

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

الرسم البياني الخطي: التوزيع التراكمي للبيانات المنتظمة

الأخطاء التي يمكن أن تنتج بيانات موزعة بشكل موحد

فيما يلي بعض الأخطاء الشائعة التي يمكن أن تنتج بيانات موزعة بشكل موحد:

  • استخدام السلاسل لتمثيل أنواع البيانات غير المتسلسلة مثل التواريخ. على سبيل المثال ، سيكون لديك العديد من القيم الفريدة لميزة التاريخ والوقت مع تمثيلات مثل "2017-03-01-11-45-03". سيتم توزيع القيم الفريدة بشكل موحد.

  • بما في ذلك فهارس مثل "رقم الصف" كميزات. هنا مرة أخرى لديك العديد من القيم الفريدة.

بيانات مفقودة

للتحقق مما إذا كان العنصر يفتقد القيم بالكامل:

  1. اختر "المبلغ المفقود / صفر" من القائمة المنسدلة "فرز حسب".
  2. حدد مربع الاختيار "عكس الترتيب".
  3. انظر إلى العمود "المفقود" لمعرفة النسبة المئوية للمثيلات التي تحتوي على قيم مفقودة لعنصر ما.

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

  1. اختر "طول قائمة القيم" من القائمة المنسدلة "مخطط لعرض" على اليسار.

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

يتم عرض نظرة عامة على الواجهات مع ميزة بقوائم قيم سمات ذات طول صفري

اختلافات كبيرة في المقياس بين الميزات

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

ضع في اعتبارك تسوية قيم الميزة لتقليل هذه الاختلافات الواسعة.

تسميات مع تسميات غير صالحة

يمتلك مقدمو TensorFlow قيودًا على نوع البيانات التي يقبلونها كعناوين. على سبيل المثال ، عادةً ما تعمل المصنفات الثنائية فقط مع تسميات {0، 1}.

راجع قيم الملصقات في نظرة عامة على الواجهات وتأكد من توافقها مع متطلبات المقدرين .