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

TensorFlow Data Validation: Checking and analyzing your data

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

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

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

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

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

بررسی اجمالی

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

  1. چک های اعتبار را با مقایسه آمار داده ها در برابر طرحواره ای که انتظارات کاربر را رمزگذاری می کند انجام دهید.
  2. با مقایسه نمونه هایی در آموزش و ارائه داده ها ، یک skew-service-service را کشف کنید.
  3. با جستجوی یک سری داده ، رانش داده ها را تشخیص دهید.

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

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

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

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

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

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

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


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() in_environment() ، not_in_environment() .

به عنوان مثال ، فرض کنید یک ویژگی به نام "LABEL" برای آموزش لازم است ، اما انتظار می رود که از خدمت نباشد. این می تواند توسط:

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

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

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

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

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

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

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

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

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

آموزش-خدمت به کشف Skew

بررسی اجمالی

ردیاب اسکویی که در خدمت آموزش است به عنوان یک زیر مجموعه TensorFlow Data Validation اجرا می شود و بین آموزش و سرویس داده ها فاصله چندانی پیدا نمی کند.

انواع Skew

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

  1. Schema Skew وقتی اتفاق می افتد که داده های آموزش و ارائه با یک طرح مشابه مطابقت ندارند. همانطور که این شمای خصوصیات منطقی داده ها را توصیف می کند ، انتظار می رود که آموزش و همچنین ارائه داده ها به همان طرح رعایت شود. هرگونه انحراف مورد انتظار بین این دو (مانند ویژگی برچسب فقط در داده های آموزش وجود دارد اما در خدمت نیست) باید از طریق زمینه محیط در طرح مشخص شود.

    از آنجا که تولید داده آموزش یک مرحله پردازش داده های گسترده است ، در حالی که (تولید آنلاین) ارائه داده ها معمولاً یک مرحله حساس به تأخیر است ، داشتن مسیرهای کد مختلف که ایجاد داده های آموزشی و ارائه دهنده خدمات هستند معمول است. این اشتباه است. هرگونه اختلاف بین این دو کد نویسی (یا به دلیل خطای توسعه دهنده یا انتشار باینری متناقض) می تواند منجر به طرحواره شود.

    سناریوی مثال

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

  2. Feature Skew زمانی رخ می دهد که مقادیر ویژگی که یک مدل در آن آموزش می دهد با مقادیر ویژگی که در زمان خدمت مشاهده می کند متفاوت باشد. این می تواند به دلایل مختلف اتفاق بیفتد ، از جمله:

    • اگر یک منبع داده خارجی که برخی از ویژگی های ویژگی را ارائه می دهد ، بین زمان آموزش و زمان سرویس تغییر یابد.

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

    سناریوی مثال

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

    با انجام این کار ، وی سهواً یک اسکای را معرفی می کند که مخصوصاً برای فیلم های تازه بارگذاری شده و ویروسی خطرناک است که زمان مشاهده آنها می تواند بین زمان خدمت و آموزش تغییر کند (همانطور که در زیر مشاهده می شود).

    
     Serving Example           Training Example
     -------------------------  -------------------------
     features {                 features {
       feature {                  feature {
         key "vid"                  key "vid"
         value { int64_list {       value { int64_list {
           value 92392               value 92392
         } }                         } }
       }                          }
       feature {                  feature {
         key "views"               key "views"
         value { int_list {       value { bytes_list {
           value "10"                value "10000"  # skew
         } }                         } }
       }                          }
     }                          }
    

    این نمونه ای از کمبود ویژگی ها است زیرا داده های آموزش تعداد بازدیدهای زیاد را مشاهده می کنند.

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

    سناریوی مثال

    به عنوان مثال ، برای جبران داده های كمتر از داده ها ، اگر از نمونه گیری مغرضانه بدون اضافه وزن مناسب نمونه های پایین دست استفاده شود ، توزیع مقادیر مشخصه بین آموزش و داده های ارائه شده بطور كمی آراسته می شود.

  4. امتیاز دهی / خدمت Skew تشخیص سخت تر است و هنگامی اتفاق می افتد که فقط زیر مجموعه ای از نمونه های به ثمر رسیده باشد. از آنجا که برچسب ها فقط برای نمونه های ارائه شده موجود است و نه نمونه های به دست آمده ، فقط از این مثال ها برای آموزش استفاده می شود. این به طور ضمنی باعث می شود که مدل در نمونه های نمره نادرست پیش بینی شود زیرا آنها به تدریج در داده های آموزش کمرنگ می شوند.

    سناریوی مثال

    یک سیستم تبلیغاتی را در نظر بگیرید که در خدمت 10 تبلیغات برتر است. از میان این 10 تبلیغات ، فقط یکی از آنها ممکن است توسط کاربر کلیک کند. همه 10 از این نمونه خدمت برای روز آینده آموزش استفاده می شود - 1 مثبت و 9 منفی است. با این حال ، در زمان خدمت از مدل آموزش دیده شده برای کسب 100s تبلیغات استفاده شده است. 90 تبلیغ دیگر که هرگز ارائه نشده اند به طور ضمنی از داده های آموزش حذف می شوند. این منجر به یک حلقه بازخورد ضمنی می شود که موارد مرتبه پائین را بیشتر اشتباه می کند زیرا در داده های آموزش دیده نمی شود.

چرا باید مراقبت کنید؟

کشف Skew سخت است و در بسیاری از خطوط لوله ML شیوع دارد. چندین حادثه رخ داده است که این امر باعث تخریب عملکرد و از بین رفتن درآمد شده است.

در حال حاضر چه چیزی پشتیبانی می شود؟

در حال حاضر ، TensorFlow Data Validation از طرحواره طرحواره ، ویژگی های skew و تشخیص skew توزیع پشتیبانی می کند.

تشخیص رانش

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

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

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

آمار ویژگی ها

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

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

داده نامتعادل

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

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

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

توزیع داده به طور یکنواخت

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

برای تشخیص ویژگی های یکنواخت توزیع شده در یک نمای اجزای صورت ، "یکنواختی" را از قسمت کشویی "مرتب سازی بر اساس" انتخاب کنید و کادر انتخاب "ترتیب معکوس" را تیک بزنید:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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