امروز برای رویداد محلی TensorFlow خود در همه جا پاسخ دهید!
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

اعتبار سنجی داده TensorFlow: بررسی و تجزیه و تحلیل داده های شما

هنگامی که داده های شما در خط لوله TFX قرار گرفت ، می توانید از اجزای TFX برای تجزیه و تحلیل و تبدیل آنها استفاده کنید. حتی قبل از آموزش مدل می توانید از این ابزارها استفاده کنید.

دلایل زیادی برای تجزیه و تحلیل و تبدیل داده های شما وجود دارد:

  • برای یافتن مشکل در داده های خود. مشکلات رایج عبارتند از:
    • داده از دست رفته است ، مانند ویژگی هایی با مقادیر خالی.
    • برچسب هایی به عنوان ویژگی در نظر گرفته می شوند ، به طوری که مدل شما در حین آموزش به جواب درست نگاه می کند.
    • ویژگی هایی با مقادیر خارج از محدوده ای که انتظار دارید.
    • ناهنجاری داده ها.
  • برای مهندسی مجموعه های موثرتر به عنوان مثال ، می توانید موارد زیر را شناسایی کنید:
    • به خصوص ویژگی های آموزنده.
    • ویژگی های زائد.
    • ویژگی هایی که در مقیاس بسیار متفاوت هستند و ممکن است یادگیری را کند کنند.
    • ویژگی هایی با اطلاعات پیش بینی کننده منحصر به فرد یا کم یا هیچ.

ابزار TFX هم می تواند به یافتن اشکالات داده کمک کند و هم به مهندسی ویژگی کمک کند.

اعتبار سنجی داده TensorFlow

بررسی اجمالی

اعتبار سنجی داده TensorFlow ناهنجاری هایی را در آموزش و ارائه داده ها شناسایی می کند و می تواند با بررسی داده ها به طور خودکار یک طرحواره ایجاد کند. این م componentلفه می تواند برای شناسایی کلاسهای مختلف ناهنجاری در داده ها پیکربندی شود. می تواند

  1. با مقایسه آمار داده ها با برنامه ای که انتظارات کاربر را رمزنگاری می کند ، بررسی اعتبار را انجام دهید.
  2. با مقایسه مثالهایی در آموزش و ارائه داده ها ، کج کردن سرویس دهی را تشخیص دهید.
  3. با مشاهده یک سری داده ها ، رانش داده ها را تشخیص دهید.

ما هر یک از این ویژگی ها را مستقل مستند می کنیم:

اعتبار سنجی بر اساس طرحواره

اعتبار سنجی داده TensorFlow با مقایسه آمار داده ها با یک طرح ، هرگونه ناهنجاری در داده های ورودی را شناسایی می کند. طرح خصوصیاتی را که انتظار می رود داده های ورودی از آنها راضی باشد ، مانند انواع داده ها یا مقادیر طبقه بندی ، رمزگشایی می کند و می تواند توسط کاربر اصلاح یا جایگزین شود.

ویژگی های پیشرفته طرحواره

این بخش پیکربندی طرحواره پیشرفته تری را شامل می شود که می تواند به تنظیمات ویژه کمک کند.

ویژگی های پراکنده

رمزگذاری ویژگیهای پراکنده در مثالها معمولاً چندین ویژگی را معرفی می کند که انتظار می رود برای همه نمونه ها از پتانسیل یکسانی برخوردار باشند. به عنوان مثال ویژگی پراکنده:


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" مورد نیاز است ، اما انتظار می رود که در خدمت وجود نداشته باشد. این را می توان با موارد زیر بیان کرد:

  • دو محیط مشخص را در برنامه مشخص کنید: ["SERVING" ، "TRAINING"] و "LABEL" را فقط با محیط "TRAINING" مرتبط کنید.
  • داده های آموزش را با محیط "TRAINING" و داده های ارائه دهنده را با محیط "SERVING" مرتبط کنید.
طرحواره

طرح داده ورودی به عنوان نمونه ای از طرح TensorFlow مشخص شده است.

به جای ساختن یک طرحواره از ابتدا به صورت دستی ، یک توسعه دهنده می تواند به ساخت طرح خودکار TensorFlow Data Validation اعتماد کند. به طور خاص ، اعتبار سنجی داده TensorFlow به طور خودکار یک طرح اولیه را بر اساس آمار محاسبه شده روی داده های آموزشی موجود در خط لوله ایجاد می کند. کاربران می توانند به سادگی این طرح خودکار را مرور کرده ، آن را در صورت لزوم اصلاح کنند ، آن را در سیستم کنترل نسخه بررسی کرده و برای اعتبار بیشتر به طور واضح به داخل خط لوله فشار دهند.

TFDV شامل infer_schema() برای ایجاد طرحواره به صورت خودکار است. مثلا:

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

این باعث ایجاد یک طرحواره اتوماتیک بر اساس قوانین زیر می شود:

  • اگر یک طرحواره قبلاً به صورت خودکار تولید شده باشد ، همانطور که هست استفاده می شود.

  • در غیر این صورت ، اعتبار سنجی داده TensorFlow آمار داده موجود را بررسی می کند و یک طرحواره مناسب برای داده ها محاسبه می کند.

توجه: طرحواره تولید شده به صورت خودکار بهترین تلاش است و فقط سعی می کند خصوصیات اساسی داده ها را استنباط کند. انتظار می رود که کاربران در صورت لزوم آن را بررسی و اصلاح کنند.

آموزش-خدمت تشخیص کج

بررسی اجمالی

اعتبار سنجی داده TensorFlow می تواند انحراف توزیع بین آموزش و ارائه داده را تشخیص دهد. انحراف از توزیع زمانی اتفاق می افتد که توزیع مقادیر ویژگی برای داده های آموزش با ارائه داده متفاوت باشد. یکی از دلایل اصلی ایجاد انحراف در توزیع ، استفاده از یک مجموعه کاملاً متفاوت برای آموزش تولید داده برای غلبه بر کمبود داده های اولیه در مجموعه مورد نظر است. دلیل دیگر مکانیسم نمونه برداری معیوبی است که فقط یک نمونه فرعی از داده های سرویس دهنده را برای آموزش انتخاب می کند.

سناریوی مثال

برای کسب اطلاعات در مورد پیکربندی تشخیص کج کردن آموزش ، به راهنمای شروع به کار اعتبار سنجی داده TensorFlow مراجعه کنید.

ردیابی

تشخیص رانش بین دهانه های متوالی داده (مثلاً بین دهانه N و دهانه N + 1) پشتیبانی می شود ، مانند روزهای مختلف داده های آموزشی. ما برای ویژگی های طبقه ای و واگرایی تقریبی جنسن-شانون برای ویژگی های عددی ، رانش را از نظر فاصله L-infinity بیان می کنیم. می توانید فاصله آستانه را طوری تنظیم کنید که وقتی رانش بالاتر از حد قابل قبول است ، اخطار دریافت کنید. تنظیم فاصله صحیح معمولاً یک فرآیند تکراری است که نیاز به دانش دامنه و آزمایش دارد.

برای اطلاعات در مورد پیکربندی تشخیص رانش ، به راهنمای شروع به کار تأیید اطلاعات TensorFlow مراجعه کنید.

با استفاده از تجسم برای بررسی داده های خود

اعتبار سنجی داده TensorFlow ابزاری را برای تجسم توزیع مقادیر ویژگی فراهم می کند. با بررسی این توزیع ها در یک نوت بوک Jupyter با استفاده از Facets می توانید مشکلات رایج داده ها را پیدا کنید.

آمار ویژه

شناسایی توزیع های مشکوک

برای جستجوی توزیع های مشکوک مقادیر ویژگی ها ، می توانید اشکالات رایج داده های خود را با استفاده از نمایشگر Facets Overview شناسایی کنید.

داده های نامتوازن

یک ویژگی نامتعادل ویژگی است که یک مقدار برای آن غالب است. ویژگی های نامتعادل می تواند به طور طبیعی رخ دهد ، اما اگر ویژگی همیشه دارای همان ارزش باشد ، ممکن است یک اشکال داده داشته باشید. برای شناسایی ویژگی های نامتعادل در نمای کلی Facets ، "عدم یکنواختی" را از لیست کشویی "مرتب سازی بر اساس" انتخاب کنید.

عدم تعادل ترین ویژگی ها در بالای هر لیست نوع ویژگی ذکر شده است. به عنوان مثال ، تصویر زیر یک ویژگی را نشان می دهد که همه آن صفر است و یک ویژگی دیگر بسیار ناموزون است ، در بالای لیست "ویژگی های عددی":

تجسم داده های نامتوازن

داده های توزیع یکنواخت

یک ویژگی توزیع یکنواخت یکی از ویژگی هایی است که تمام مقادیر ممکن با تقریباً یکسان فرکانس برای آن ظاهر می شوند. همانند داده های نامتعادل ، این توزیع می تواند به طور طبیعی اتفاق بیفتد ، اما همچنین می تواند توسط اشکالات داده ایجاد شود.

برای شناسایی ویژگی های توزیع یکنواخت در نمای کلی Facets ، از کرکره کشویی "مرتب سازی بر اساس" "غیر یکنواختی" را انتخاب کنید و کادر انتخاب "ترتیب معکوس" را علامت بزنید:

هیستوگرام داده های یکنواخت

داده های رشته ای اگر 20 مقدار منحصر به فرد یا کمتر داشته باشند ، و اگر بیش از 20 مقدار منحصر به فرد وجود داشته باشد ، با استفاده از نمودارهای میله ای نشان داده می شوند. بنابراین برای داده های رشته ای ، توزیع های یکنواخت می توانند به صورت نمودارهای میله ای مسطح مانند شکل بالا یا خطوط مستقیم مانند شکل زیر ظاهر شوند:

نمودار خط: توزیع تجمعی داده های یکنواخت

اشکالاتی که می توانند داده های توزیع شده یکنواخت تولید کنند

در اینجا برخی از اشکالات رایج وجود دارد که می توانند داده های توزیع شده یکنواخت تولید کنند:

  • استفاده از رشته ها برای نمایش انواع داده های غیر رشته ای مانند تاریخ. به عنوان مثال ، شما دارای مقادیر منحصر به فرد زیادی برای یک ویژگی datetime با نمایش هایی مانند "2017-03-01-11-45-03" خواهید بود. مقادیر منحصر به فرد بصورت یکنواخت توزیع خواهد شد.

  • از جمله شاخص هایی مانند "شماره ردیف" به عنوان ویژگی. در اینجا دوباره ارزشهای منحصر به فرد زیادی دارید.

داده از دست رفته

برای بررسی اینکه آیا ویژگی به طور کامل مقادیر را از دست می دهد:

  1. "مقدار از دست رفته / صفر" را از لیست کشویی "مرتب سازی بر اساس" انتخاب کنید.
  2. کادر تأیید "سفارش معکوس" را علامت بزنید.
  3. به ستون "گمشده" نگاه کنید تا درصد موارد با مقادیر از دست رفته برای یک ویژگی را ببینید.

یک اشکال داده همچنین می تواند مقادیر ویژگی ناقص ایجاد کند. به عنوان مثال ممکن است انتظار داشته باشید که لیست ارزش یک ویژگی همیشه دارای سه عنصر باشد و کشف کنید که گاهی اوقات فقط یک عنصر دارد. برای بررسی مقادیر ناقص یا سایر مواردی که لیست ارزش ویژگی تعداد مورد انتظار عناصر را ندارد:

  1. "طول لیست ارزش" را از فهرست کشویی "نمودار برای نمایش" در سمت راست انتخاب کنید.

  2. به نمودار سمت راست هر ردیف ویژگی نگاه کنید. نمودار دامنه طول لیست ارزش برای ویژگی را نشان می دهد. به عنوان مثال ، ردیف برجسته شده در تصویر زیر یک ویژگی را نشان می دهد که دارای برخی از لیست های با طول صفر است:

نمایش نمای کلی Facets با ویژگی با لیست های ارزش ویژگی طول صفر

تفاوت های بزرگ در مقیاس بین ویژگی ها

اگر ویژگی های شما در مقیاس بسیار متفاوت باشد ، مدل ممکن است در یادگیری مشکل داشته باشد. به عنوان مثال ، اگر برخی از ویژگی ها از 0 تا 1 و برخی دیگر از 0 تا 1،000،000،000 متغیر است ، شما تفاوت زیادی در مقیاس دارید. ستون های "حداکثر" و "حداقل" را در ویژگی ها مقایسه کنید تا مقیاس های بسیار متنوعی پیدا کنید.

مقادیر ویژگی عادی را در نظر بگیرید تا این تغییرات گسترده کاهش یابد.

برچسب هایی با برچسب های نامعتبر

برآورد کنندگان TensorFlow در نوع داده ای که به عنوان برچسب قبول می کنند محدودیت هایی دارند. به عنوان مثال ، طبقه بندی کننده های باینری معمولاً فقط با {0 ، 1} برچسب کار می کنند.

مقادیر برچسب را در نمای کلی Facets مرور کرده و مطمئن شوید که با الزامات ارزیابی کنندگان مطابقت دارند .