דף זה תורגם על ידי Cloud Translation API.
Switch to English

אימות נתונים של TensorFlow: בדיקה וניתוח הנתונים שלך

ברגע שהנתונים שלך נמצאים בצינור TFX, אתה יכול להשתמש ברכיבי TFX כדי לנתח ולהפוך אותם. אתה יכול להשתמש בכלים אלה עוד לפני שאתה מאמן מודל.

ישנן סיבות רבות לנתח ולהפוך את הנתונים שלך:

  • כדי למצוא בעיות בנתונים שלך. בעיות נפוצות כוללות:
    • חסרים נתונים, כגון תכונות עם ערכים ריקים.
    • תוויות המתייחסות לתכונות, כך שהמודל שלך יוכל להציץ על התשובה הנכונה במהלך האימון.
    • תכונות עם ערכים מחוץ לטווח המצופה.
    • חריגות נתונים.
  • להנדס מערכי תכונות יעילים יותר. לדוגמה, תוכל לזהות:
    • תכונות אינפורמטיביות במיוחד.
    • תכונות מיותרות.
    • תכונות המשתנות כל כך בקנה מידה עד שהן עשויות להאט את הלמידה.
    • תכונות עם מעט או ללא מידע ניבוי ייחודי.

כלי TFX יכולים גם לעזור במציאת באגים בנתונים וגם לעזור בהנדסת תכונות.

אימות נתונים של TensorFlow

סקירה כללית

אימות נתונים של TensorFlow מזהה חריגות באימון והגשת נתונים ויכול ליצור באופן אוטומטי סכימה על ידי בחינת הנתונים. ניתן להגדיר את הרכיב לזהות סוגים שונים של חריגות בנתונים. זה יכול

  1. בצע בדיקות תוקף על ידי השוואת נתונים סטטיסטיים מול סכמה שמקודדת את הציפיות של המשתמש.
  2. גלה הטייה של אימון הגשה על ידי השוואת דוגמאות בנתוני האימון וההגשה.
  3. זיהוי סחף נתונים על ידי התבוננות בסדרת נתונים.

אנו מתעדים כל אחת מהפונקציות הללו באופן עצמאי:

אימות דוגמאות מבוססות סכמה

אימות נתונים של TensorFlow מזהה חריגות בנתוני הקלט על ידי השוואת נתונים סטטיסטיים מול סכמה. הסכימה מקודדת מאפיינים שנתוני הקלט צפויים לספק, כגון סוגי נתונים או ערכים קטגוריים, וניתן לשנות או להחליף אותם על ידי המשתמש.

תכונות סכמה מתקדמות

סעיף זה מכסה תצורת סכמות מתקדמת יותר שיכולה לסייע בהתקנות מיוחדות.

מאפיינים דלילים

קידוד של מאפיינים דלילים בדוגמאות מציג בדרך כלל תכונות מרובות שצפויות להיות בעלות ערך זהה לכל הדוגמאות. לדוגמא המאפיין הדליל:


WeightedCategories = [('CategoryA', 0.3), ('CategoryX', 0.7)]
יקודד באמצעות מאפיינים נפרדים לאינדקס וערך:

WeightedCategoriesIndex = ['CategoryA', 'CategoryX']
WeightedCategoriesValue = [0.3, 0.7]
עם המגבלה כי הערך של מאפיין האינדקס והערך צריך להתאים לכל הדוגמאות. מגבלה זו יכולה להיות מפורשת בסכימה על ידי הגדרת תכונה דלילה:

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 Validation. באופן ספציפי, אימות נתונים של TensorFlow בונה באופן אוטומטי סכימה ראשונית המבוססת על נתונים סטטיסטיים המחושבים על סמך נתוני אימון הזמינים בצינור. משתמשים יכולים פשוט לבדוק את הסכימה האוטומטית הזו, לשנות אותה לפי הצורך, לבדוק אותה במערכת בקרת גרסאות ולדחוף אותה במפורש לצינור לצורך אימות נוסף.

TFDV כולל infer_schema() ליצירת סכמה באופן אוטומטי. לדוגמה:

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

פעולה זו מפעילה יצירת סכמות אוטומטיות המבוססת על הכללים הבאים:

  • אם סכמה כבר נוצרה אוטומטית, היא משמשת כמות שהיא.

  • אחרת, אימות נתונים של TensorFlow בוחן את הנתונים הסטטיסטיים הזמינים ומחשב סכמה מתאימה לנתונים.

הערה: הסכימה שנוצרה אוטומטית היא המאמץ הטוב ביותר ומנסה רק להסיק מאפיינים בסיסיים של הנתונים. צפוי שמשתמשים יבדקו וישנו אותו בהתאם לצורך.

איתור שיפוע אימון המשרת

סקירה כללית

אימות נתונים של TensorFlow יכול לזהות הטיית הפצה בין נתוני האימון להגשה. הטיית הפצה מתרחשת כאשר התפלגות ערכי התכונות לנתוני אימון שונה באופן משמעותי מנתוני הגשה. אחד הגורמים המרכזיים להטיית הפצה הוא שימוש בקורפוס אחר לגמרי לצורך אימון יצירת נתונים כדי להתגבר על היעדר נתונים ראשוניים בקורפוס הרצוי. סיבה נוספת היא מנגנון דגימה לקוי שבוחר רק תת-דגימה של נתוני ההגשה להתאמן עליהם.

Example Scenario

For instance, in order to compensate for an underrepresented slice of data,
if a biased sampling is used without upweighting the downsampled examples
appropriately, the distribution of feature values between training and
serving data gets artificially skewed.

עיין במדריך התחלת העבודה של אימות נתונים של 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}.

בדוק את ערכי התוויות בסקירה על פני פנים וודא שהם תואמים את דרישות האומדנים .