به انجمن SIG TFX-Addons بپیوندید و به پیشرفت TFX کمک کنید!

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

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

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

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

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

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

بررسی اجمالی

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

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

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

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

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

اعتبار سنجی داده Tensorflow معمولاً چندین بار در زمینه خط لوله TFX فراخوانی می شود: (i) برای هر تقسیم به دست آمده از مثالGen ، (ii) برای تمام داده های از قبل تبدیل شده استفاده شده توسط Transform و (iii) برای همه داده های پس از تبدیل تولید شده توسط تبدیل. وقتی در متن Transform (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" مورد نیاز است ، اما انتظار می رود که در خدمت وجود نداشته باشد. این را می توان با موارد زیر بیان کرد:

  • دو محیط مشخص را در برنامه مشخص کنید: ["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- بینهایت برای ویژگیهای طبقه ای و واگرایی تقریبی جنسن-شانون برای ویژگیهای عددی بیان می کنیم. می توانید فاصله آستانه را طوری تنظیم کنید که وقتی رانش بالاتر از حد قابل قبول است ، اخطار دریافت کنید. تنظیم فاصله صحیح معمولاً یک فرایند تکراری است که نیاز به دانش دامنه و آزمایش دارد.

برای کسب اطلاعات در مورد پیکربندی تشخیص دریفت ، به راهنمای شروع اعتبار سنجی داده 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 مرور کرده و مطمئن شوید که با الزامات ارزیابی کنندگان مطابقت دارند .