רווחים:
- יכולת לזהות סוגי נתונים חסרים (MCAR/MAR/MNAR), חריגים ושגיאות קידוד ולהשתמש ב-AI עם הנתונים הנכונים כדי לייצר קוד ניקוי ואבחון
- יכולת לראות כיצד כל שלב ניקוי (מחיקה, הקצאה, טרנספורמציה) המוצע על ידי בינה מלאכותית ישפיע על תוצאת הניתוח ויבסס זרימת עבודה הפיכה ומתועדת
- שמירה על כך שהחלטות ניקוי מבוססות על ידע על התהליך שיוצר נתונים, ושהבינה המלאכותית היא עוזר בפיקוח, לא אוטומט עיוור
כל אנליסט מנוסה יודע אמת אחת: רוב הזמן של פרויקט אמפירי אינו מודלים, אלא ניקוי נתונים (עבודה של תיקון טעויות, השמטות וחוסר עקביות בנתונים והכנתם לניתוח). ככלל אצבע גס, כ-70-80% מהזמן הולך להבנה, ניקוי והפיכת נתונים; נותרו רק 20-30% לניתוח בפועל. ביחידה זו נראה שלב אחר שלב כיצד בינה מלאכותית (AI) מקלה על הנטל הכבד הזה, אך אילו החלטות עדיין צריכות להישאר בידיכם ומדוע.
בוא נשים שתי עובדות בסיסיות תחילה. ראשית, החלטות ניקיון מבוססות על הידע שלך על התהליך שמייצר את הנתונים: רק אתה יודע למה חסר ערך, למה מספר גדול מדי. AI לא רואה את הנתונים, לא יודע את ההקשר; כותב קוד, לא מקבל החלטות. שנית, כל שלב ניקוי עשוי לשנות את תוצאת הניתוח. מחיקת חריג יכולה להפוך את המקדם; מילוי החסר בממוצע יכול להפחית באופן מלאכותי את השונות. אז ניקוי צריך להיות הפיך ומתועד: לעולם אל תיגע בנתונים הגולמיים, בצע כל שלב בקוד, רשום את ההשפעה של כל שלב.
תהליך ניקוי שלב אחר שלב
1. דע את הנתונים. תחילה ראה את המבנה: מספר שורות (תצפיות) ועמודות (משתנים), סוג של כל משתנה (מספרי, קטגורי, תאריך), סטטיסטיקות סיכום, מספר חסרים. אתה יכול לבקש מה-AI את קוד "פרופיל הנתונים" הזה; אבל אתה קורא את הפלט ושואל שאלות כמו "מדוע המשתנה הזה הגיע כטקסט?"
2. להבין ולסווג נתונים חסרים. נתונים חסרים מתחלקים לשלושה סוגים. MCAR (חסר לגמרי באקראי): החסר אינו נובע מכלום, למשל חיישן נכשל באופן אקראי. MAR (חסר באקראי): חסר תלוי במשתנים אחרים שנצפו, למשל אנשים מבוגרים משאירים שאלה ריקה לעתים קרובות יותר, אבל אתה יודע את הגיל. MNAR (חסר לא באקראי): חסר תלוי בערך הבלתי נצפה עצמו, למשל בעלי הכנסה גבוהים אינם מדווחים על הכנסתם. ההבחנה הזו היא קריטית מכיוון שהיא קובעת את שיטת הפתרון וה-AI לא יכול להחליט על כך עבורך.
3. להתמודד עם החסר. אפשרויות: מחיקה ברשימה, זקיפה ממוצעת/חציונית, זקיפה מרובה מבוססת מודל. מחיקה ב-MCAR בטוחה יחסית אך מקטינה את גודל המדגם. הקצאה מרובה מתאימה יותר ב- MAR. שום שיטה פשוטה לא מבטיחה חוסר פניות ב-MNAR; יש לעצב את מנגנון החסר או לפחות לבצע ניתוח רגישות. מילוי ממוצע הוא קל אך מסוכן: הוא מפחית שונות, מחליש מערכות יחסים ומסתיר אי ודאות.
4. בדוק חריגים. חריג הוא תצפית העומדת רחוק מאוד מהאחרים. הפרד בין שתי השאלות: האם זו שגיאה (גיל 999 נכתב בהזנת הנתונים) או שזה ערך אמיתי אך חריג (הכנסה של מיליארדר)? תקן באגים; אל תמחק חריגים אמיתיים מכיוון שהם מייצגים נתונים. מחיקת החריג "כי זה מפריע" אותך מטה את הנתונים לכיוון התוצאה.
5. קידוד ועקביות. תקן קטגוריות ("זכר", "זכר", "E" הכל לקוד אחד), הבא תאריכים לפורמט אחד, יחידות לסולם אחד, זיהוי שורות כפולות. זהו השלב הכי פחות מסוכן שבו AI עוזר הכי טוב.
6. לתעד ולהקפיא. הקלט כל שלב עם קוד ושורת הערות, תוך שמירה על הפרדה של נתונים גולמיים ומנוקים. אז כששופט שואל "מדוע הושמטו התצפיות האלה?" יש לך את התשובה שלך מוכנה.
זהירות: אל תקבל החלטות ניקוי על סמך תוצאות. מחיקת שורה שאומרת "כשאתה מוחק את השורה הזו, המקדם הופך להיות משמעותי" היא הצורה הכי ערמומית של p-hacking, אותה נראה ביחידה הבאה.
טבלת השוואה: שיטות נתונים חסרות
שיטה
מתי זה מתאים?
סיכון
תפקיד של AI
מחק שורה
MCAR, שיעור חסר נמוך
המדגם הופך קטן יותר, הטיה ב- MAR/MNAR
כותב את הקוד; אתה מחליט
הקצאה ממוצעת/חציונית
ניתוח ראשוני מהיר
מפחית שונות, מסתיר מערכת יחסים
זה קל אבל לא ממליץ על זה; צריך להזהיר
הקצאה מרובה (MI)
MAR, משתנים חשובים
אם לא יותקן נכון זה יהיה מטעה
ממליץ על קוד וחבילה (עכברים)
דוגמנות מנגנון
MNAR
מורכב, עתיר הנחות
טיוטה בלבד; נדרש מומחה
ארבע הנחיות הניתנות להעתקה
1. פרופיל נתונים:
תפקידך: עוזר ניקוי נתונים. אני לא חולק את הנתונים, אני רוצה את קוד R. יש לי data.frame שנקרא 'digit'; משתנים: מזהה, גיל (מספרי), הכנסה (מספרית), השכלה (קטגורי), אזור (קטגורי), תאריך (תאריך). משימה: כתוב קוד שמייצר סוג, מספר חסר ותעריף עבור כל משתנה, סטטיסטיקות סיכום עבור מספרים וטבלת תדירות עבור קטגוריים. הוסף שורת תגובה.
2. אבחון נתונים חסרים:
כתוב קוד הבוחן את הדפוס החסר עבור נתוני ה'ספרה' למעלה: - השיעור החסר של כל משתנה, - טבלה/גרף פשוטים המציגים את הקשר בין החסר למשתנים אחרים. אני אסתכל על הפלט של הקוד ואעשה את ההבחנה של MCAR/MAR/MNAR; אתה רק מייצר את כלי האבחון, אל תחליט על שיטת ההקצאה.
3. בדיקת חריגים (לא מחיקה):
כתוב קוד למשתנה 'הכנסה' שבוחן חריגים מבלי למחוק: תרשים קופסה, גבולות מבוססי IQR וטבלה המפרטת תצפיות חריגות + ערכים. אני אראה אם אלו טעויות או אמיתיות. הוסף מחיקה אוטומטית.
4. סטנדרטיזציה של קידוד:
במשתנה 'חינוך', הערכים נכתבים מעורבים: "בית ספר יסודי", "בית ספר יסודי", "יסודי", "תיכון", "תיכון", "אוניברסיטה", "אוניברסיטה". כתוב קוד R שמקודד אותם מחדש לקטגוריות עקביות; הצג את טבלת המיפוי בצורה ברורה כדי שאוכל לאשר כל המרה. הגדר את הערך שאינך מזהה ל-"UNKNOWN".
הנחיה חלשה / הנחיה חזקה
הנחיה חלשה:
נקו את הנתונים, מלאו את החסר, זרוק את החריגות.
הדרישה הזו מסוכנת: היא מעניקה סמכות עיוורת לבינה מלאכותית. איזה סוג של חסר, איזה סוג של מילוי, איזו אמת סותרת - שום דבר מזה לא ברור. התוצאה עשויה להיות מערך נתונים מוטה בסתר.
הנחיה עוצמתית:
התפקיד שלך: עוזר ניקיון, אתה לא מקבל ההחלטות. עבור שלב אחר שלב וכתוב קוד המדווח על ההשפעה של כל שלב: 1) הצג את הדפוס החסר (אל תמחק/תמלא), 2) ציין מועמדים חריגים (אל תמחק), 3) תקן חוסר עקביות בקטגוריות עם טבלת המיפוי. הדפס את ספירת השורות וסטטיסטיקת סיכום לאחר כל שלב כדי שאוכל לראות ולאשר את השינוי. הקצאה/מחיקה אוטומטית.
ההבדל ברור: רצון חזק ממצב את ה-AI כעוזר מפוקח, ומייצר שלבים הפיכים ומתועדים.
שלושה מיני תיקים
מקרה 1 - מלכודת הקצאה ממוצעת. נתוני ההכנסה של אנליסט אחד עבור 5,000 אנשים היו חסרים 18%. הוא אמר לבינה מלאכותית "להשלים את החסר"; בינה מלאכותית קבעה את הממוצע של כולם. התוצאה: שונות ההכנסה ירדה ב-22%, ומקדם יחסי השכלה-הכנסה התברר כחלש ממה שהיה. דרך נכונה: החסר היה MAR (בשל השכלה), היה צריך להתמלא על ידי מטלות מרובות (עכברים). שיעור: שיטת המילוי תלויה במנגנון.
מקרה 2 - ניקוי חריגים הופך את הממצא. היו 3 חברות גדולות מאוד (0.6% מסך התצפית) בנתוני חברה אחת. אלה נמחקו על ידי הצעת ה"ניקוי" של ה-AI; מקדם יתרונות הגודל הפך מחיובי לשלילי. עם זאת, 3 החברות הללו היו אמיתיות וחלק חשוב מהתעשייה. הדרך הנכונה הייתה לדווח עם הערכה מלאה וגם חזקה במקום למחוק. לקח: חריגים אמיתיים הם נתונים, לא רעש.
מקרה 3 - שגיאת קידוד שקטה. בפאנל אחד, משתנה התאריך הגיע בשני פורמטים שונים ("2020-03-01" ו-"01/03/2020"). כאשר קוד השילוב שהופק על ידי ה-AI הטעה אותם בערכים שונים, 1,400 תצפיות לא היו תואמות ושיעורי הצמיחה הפכו למגוחכים. זה לא משנה אם האנליסט לא יבדוק את ספירת השורות. שיעור: ספירת תצפית ובדיקות שפיות לאחר כל שלב הן חובה.
טעויות נפוצות
- ממלא באופן עיוור את הפער עם הממוצע. זה מפחית שונות, מסתיר אי ודאות ויוצר הטיה ב- MAR/MNAR. ראשית סווגו את המנגנון.
- מחיקת החריג "כי זה מפריע". חריגים אמיתיים מייצגים את הנתונים; מחיקה מכופפת את התוצאה. תקן את מה שלא בסדר, שמור על מה שאמיתי.
- הקשה על נתונים גולמיים. לעולם אל תשנה נתונים גולמיים; בצע את כל הניקוי עם הקוד בעותק נפרד כדי שניתן יהיה לחזור אליו.
- לא מודדים את ההשפעה של צעדים. אם ספירת השורות והסטטיסטיקות הסיכום לא נבדקות לאחר כל שלב, שגיאות שקטות יצטברו.
- ניקיון כתוצאה מכך. ההיגיון של "כאשר אתה מוסיף שורה זו, התוצאה משתפרת" הוא p-hacking; יש לתכנן את הניקוי לפני ובלי תלות בתוצאת הניתוח.
טיפ: שמור טבלה "לפני/אחרי" שמציבה את אותה סטטיסטיקה בסיסית (ממוצע, חציון, מספר תצפיות, כמה מתאמים) זה לצד זה לפני ואחרי הניקוי. קפיצה בלתי צפויה היא המבשר הטוב ביותר לשגיאה נסתרת.
לסיכום
ניקוי נתונים הוא השלב של עבודה אמפירית שגוזל זמן רב ודורש החלטות. הבינה המלאכותית היא מחולל קוד רב עוצמה בעניין הזה, אבל היא לא יכולה לממש את היריות: אתה מסווג את סוג הנתונים החסרים (MCAR/MAR/MNAR), קובע אם החריג הוא שגיאה או אמיתי, שומר על כל שלב הפיך ומתועד. במקום לתת ל-AI העיוור סמכות "ברורה", קבע זרימת עבודה שלב אחר שלב שהשפעתה נמדדת ומאומתת. בדיקת מספר התצפיות וסטטיסטיקות סיכום לאחר כל שלב היא התרופה הטובה ביותר לטעויות שקטות.
משימת יישום
בחר לפחות שני משתנים המכילים חסרים וחריגים במערך נתונים (נתונים משלך או סט מדגם). בקש קוד אבחון מה-AI דרך ההנחיה "שלב אחר שלב, אין למחוק/למלא" למעלה והפעל אותו. סווגו את החסר כ-MCAR/MAR/MNAR וכתבו את ההצדקה שלכם במשפט אחד. בחנו את המועמדים הסותרים בזה אחר זה והחליטו מי מהם טעות ואיזה אמיתי. לבסוף, הפק טבלת "לפני-אחרי" לפני/אחרי הניקוי ודווח אם יש שינויים בלתי צפויים.
רשימת בדיקה
- [ ] ניקיתי את הנתונים הגולמיים בעותק נפרד מבלי לשנות אותם.
- [ ] סיווגתי את החסר כ-MCAR/MAR/MNAR ובחרתי בשיטה בהתאם.
- [ ] בדקתי את החריגים בזה אחר זה אם הם שגיאות או אמיתיים; לא מחקתי את זה בצורה עיוורת.
- [ ] בדקתי את מספר התצפיות והסטטיסטיקה המסכמת לאחר כל שלב ניקוי.
- [ ] תיעדתי את כל השלבים עם קוד ושורת הערה; הָפִיך.
- [ ] ביססתי את הניקוי על ידיעת התהליך שמייצר את הנתונים, ולא על תוצאת הניתוח.