צריך לבצע פיתוח תכונות (טרנספורמציה) של הנתונים הגולמיים. מתי כדאי לבצע טרנספורמציה של נתונים? באופן כללי, אפשר לבצע הנדסת תכונות בשתי התקופות הבאות:
- לפני אימון המודל.
- בזמן אימון המודל.
טרנספורמציה של נתונים לפני אימון
הגישה הזו כוללת שני שלבים:
- כותבים קוד או משתמשים בכלים מיוחדים כדי לבצע טרנספורמציה של הנתונים הגולמיים.
- שומרים את הנתונים שעברו טרנספורמציה במקום שבו המודל יכול לקלוט אותם, למשל בדיסק.
יתרונות
- המערכת מבצעת טרנספורמציה של נתונים גולמיים רק פעם אחת.
- המערכת יכולה לנתח את כל מערך הנתונים כדי לקבוע את אסטרטגיית הטרנספורמציה הטובה ביותר.
חסרונות
- צריך ליצור מחדש את הטרנספורמציות בזמן החיזוי. חשוב להיזהר מסטיות training-serving skew.
הטיה בין אימון להצגה מסוכנת יותר כשהמערכת מבצעת הסקה דינמית (אונליין). במערכת שמשתמשת בהסקה דינמית, בדרך כלל התוכנה שמבצעת את הטרנספורמציה של מערך הנתונים הגולמי שונה מהתוכנה שמספקת את התחזיות, מה שעלול לגרום לסטייה בין אימון לבין שירות. לעומת זאת, במערכות שמשתמשות בהסקה סטטית (אופליין) יכול להיות שייעשה שימוש באותה תוכנה.
טרנספורמציה של נתונים במהלך האימון
בגישה הזו, הטרנספורמציה היא חלק מקוד המודל. המודל מבצע הטמעה של נתונים גולמיים ומבצע בהם טרנספורמציה.
יתרונות
- עדיין תוכלו להשתמש באותם קבצים של נתונים גולמיים אם תשנו את הטרנספורמציות.
- כך מובטחים לכם אותם טרנספורמציות בזמן האימון ובזמן החיזוי.
חסרונות
- טרנספורמציות מורכבות עלולות להגדיל את זמן האחזור של המודל.
- הטרנספורמציות מתבצעות בכל אצווה.
טרנספורמציה של הנתונים בכל קבוצה יכולה להיות בעייתית. לדוגמה, נניח שאתם רוצים להשתמש בנורמליזציה לפי ציון Z כדי לשנות נתונים מספריים גולמיים. כדי לבצע נורמליזציה לפי ציון z, צריך את הממוצע וסטיית התקן של המאפיין. עם זאת, אם תבצעו טרנספורמציות לכל קבוצה, תהיה לכם גישה רק לקבוצת נתונים אחת, ולא למערך הנתונים המלא. לכן, אם יש הבדלים משמעותיים בין קבוצות הנתונים, לדוגמה, למספר Z-score של -2.5 בקבוצת נתונים אחת תהיה משמעות שונה מזו של -2.5 בקבוצת נתונים אחרת. כפתרון עקיף, המערכת יכולה לחשב מראש את הממוצע ואת סטיית התקן של כל מערך הנתונים, ואז להשתמש בהם כקבועים במודל.