Smart-World Surf

Unit 2: עיבוד נתונים והנדסת מאפיינים

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

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

חשיבות עיבוד הנתונים והנדסת מאפיינים

העיקרון המנחה בלמידת מכונה הוא "זבל נכנס, זבל יוצא" (Garbage In, Garbage Out). גם המודל המתוחכם ביותר לא יצליח לספק תחזיות מדויקות אם הנתונים שהוא מקבל פגומים, חסרים או לא מיוצגים כראוי. עיבוד נתונים והנדסת מאפיינים הם השלבים המקדימים והקריטיים ביותר בתהליך פיתוח מודל ML, המשפיעים ישירות על דיוק, יציבות ויכולת ההכללה של המודל.

הנדסת מאפיינים (Feature Engineering): תהליך יצירה, בחירה או שינוי של מאפיינים (features) מנתונים גולמיים, במטרה לשפר את ביצועי מודל למידת מכונה. זהו שילוב של ידע בתחום הבעיה, אינטואיציה וניסיון.

ניקוי נתונים וטיפול בבעיות נפוצות

איסוף וניקוי נתונים

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

טיפול בערכים חסרים (Missing Values)

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

הסרה (Deletion)

הסרת שורות (דוגמאות) או עמודות (מאפיינים) המכילות ערכים חסרים. פשוט ליישום, אך עלול להוביל לאובדן מידע יקר, במיוחד אם יש הרבה ערכים חסרים או שהם אינם חסרים באופן אקראי.

השלמה (Imputation)

מילוי ערכים חסרים בערכים חלופיים. שיטות נפוצות כוללות ממוצע (Mean), חציון (Median) או שכיח (Mode) של המאפיין. שיטות מתקדמות יותר כוללות מודלים סטטיסטיים או מודלי למידת מכונה.

אינדיקטור (Indicator)

יצירת מאפיין בינארי חדש המציין האם הערך היה חסר במקור, ובמקביל השלמת הערך החסר בשיטה כלשהי (לרוב 0 או ממוצע). מאפשר למודל ללמוד מהעובדה שהנתון היה חסר.

טיפול בערכים חריגים (Outliers)

ערכים חריגים הם נקודות נתונים השונות באופן משמעותי משאר הנתונים. הם יכולים לנבוע משגיאות מדידה, טעויות הקלדה או לייצג אירועים נדירים אך לגיטימיים. ערכים חריגים עלולים להשפיע לרעה על מודלים רבים, במיוחד אלו הרגישים למרחק (כמו רגרסיה לינארית או SVM).

  • זיהוי: שיטות סטטיסטיות (כגון ציון Z, IQR), ויזואליזציה (תרשימי קופסה), או אלגוריתמים ייעודיים (Isolation Forest, One-Class SVM).
  • טיפול: הסרה (אם מדובר בטעות), טרנספורמציה (לוגריתמית, שורש), או קיצוץ (Capping/Winsorization) לערך מקסימלי/מינימלי מוגדר.
טיפול בערכים חסרים וחריגים: נושא זה הוא קריטי לבחינה ולעבודה מעשית. הבחירה בשיטת הטיפול הנכונה תלויה בסוג הנתונים, היקף הבעיה, והמודל שבו משתמשים. טעות בטיפול עלולה להוביל להטיה (bias) במודל, להפחתת דיוק, או אפילו לקריסתו. חשוב להבין את ההשלכות של כל שיטה ואת ההבדלים ביניהן.

הכנת מאפיינים למודלים

קידוד משתנים קטגוריים (Categorical Variable Encoding)

משתנים קטגוריים (כמו "צבע", "עיר", "מין") אינם ניתנים לשימוש ישיר במודלים מתמטיים. יש להמיר אותם לייצוג מספרי.

קידוד לייבל (Label Encoding)

הקצאת מספר שלם לכל קטגוריה ייחודית (לדוגמה: אדום=0, ירוק=1, כחול=2). מתאים למשתנים קטגוריים אורדינליים (שיש להם סדר טבעי), אך עלול ליצור קשר סדר שגוי במשתנים נומינליים, מה שעלול לבלבל מודלים.

קידוד One-Hot (One-Hot Encoding)

יצירת עמודה בינארית חדשה לכל קטגוריה ייחודית. אם דוגמה שייכת לקטגוריה מסוימת, הערך בעמודה המתאימה יהיה 1, ואחרת 0. מונע יצירת קשר סדר שגוי ומתאים למשתנים נומינליים, אך עלול להגדיל מאוד את מימדי הנתונים (curse of dimensionality) עבור משתנים עם קטגוריות רבות.

קידוד מטרה (Target Encoding)

החלפת כל קטגוריה בערך הממוצע של משתנה המטרה עבור קטגוריה זו. שימושי מאוד ויכול להכיל מידע רב, אך רגיש ל-overfitting אם לא מטופל נכון (למשל, באמצעות Cross-Validation או smoothing).

נרמול וסטנדרטיזציה (Normalization and Standardization)

מודלים רבים רגישים לקנה המידה של המאפיינים. לדוגמה, אלגוריתמים מבוססי מרחק (KNN, SVM) או אופטימיזציה מבוססת גרדיאנט (רשתות נוירונים) יתפקדו טוב יותר כאשר המאפיינים נמצאים בקנה מידה דומה.

נרמול (Normalization - Min-Max Scaling)

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

סטנדרטיזציה (Standardization - Z-score Scaling)

משנה את הנתונים כך שיהיה להם ממוצע 0 וסטיית תקן 1. מניח התפלגות נורמלית (אך עובד גם ללא הנחה זו). פחות רגיש לערכים חריגים מנרמול, ומתאים למודלים רבים.

שאלות לדיון

  • תאר מצב שבו שימוש ב-Label Encoding עלול להזיק לביצועי מודל, והצע פתרון חלופי.
  • הסבר מתי עדיף להשתמש בנרמול (Min-Max Scaling) ומתי בסטנדרטיזציה (Z-score Scaling), והבא דוגמה לכל אחד.
  • כיצד ערכים חסרים שאינם חסרים באופן אקראי (Missing Not At Random - MNAR) יכולים להשפיע על המודל, ומהן האפשרויות לטיפול במצב כזה?
  • האם תמיד כדאי להסיר ערכים חריגים? נמק והבא דוגמה למצב שבו הסרה אינה הפתרון הטוב ביותר.

נקודות לתשובת מודל

  • Label Encoding: יזיק כאשר משתמשים בו למשתנים קטגוריים נומינליים (ללא סדר טבעי), למשל "צבעים". המודל עלול לפרש את המספרים כסדר או חשיבות, מה שיוביל למסקנות שגויות. פתרון חלופי: One-Hot Encoding.
  • נרמול מול סטנדרטיזציה:
    • נרמול (Min-Max): עדיף כאשר יש צורך בטווח ספציפי (למשל, לרשתות נוירונים עם פונקציות אקטיבציה כמו סיגמואיד שפועלות בטווח 0-1), או כאשר הנתונים אינם מתפלגים נורמלית ויש צורך לשמור על צורת ההתפלגות המקורית. דוגמה: נתוני פיקסלים בתמונות.
    • סטנדרטיזציה (Z-score): עדיפה למודלים המניחים התפלגות נורמלית (למשל, רגרסיה לוגיסטית, LDA) או מודלים מבוססי מרחק (KNN, SVM) כאשר הנתונים עשויים להכיל ערכים חריגים. היא פחות רגישה לערכים חריגים מנרמול. דוגמה: נתוני גיל או הכנסה.
  • ערכים חסרים MNAR: במצב זה, העובדה שהערך חסר נושאת מידע חשוב. לדוגמה, אם אנשים בעלי הכנסה גבוהה נוטים לא לדווח על הכנסתם. טיפול בשיטות פשוטות (ממוצע, חציון) עלול להטות את המודל. אפשרויות טיפול: יצירת מאפיין אינדיקטור לציון חסר, או שימוש באלגוריתמים מתוחכמים יותר המטפלים ב-MNAR (כמו Multiple Imputation by Chained Equations - MICE) או מודלים שיכולים להתמודד עם ערכים חסרים (כמו XGBoost).
  • הסרת ערכים חריגים: לא תמיד כדאי. אם הערכים החריגים מייצגים תופעות אמיתיות וחשובות (לדוגמה, עסקאות הונאה, תקלות נדירות במכונה), הסרתם עלולה לגרום למודל לא ללמוד לזהות אותן. במקרים אלו, עדיף לנסות טרנספורמציה (לוגריתמית) או קיצוץ (capping) כדי להפחית את השפעתם מבלי לאבד את המידע.
Spotted an error or something missing?
← Previous
מבוא ללמידת מכונה
Next →
מודלים לינאריים: רגרסיה