מהי ההזדמנות המפוספסת ביותר בהצגה גרפית של נתונים ואיך אפשר להשתפר את האימפקט של המצגת שלכם ב-94% תוך דקה?

הדמיית נתונים

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

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

מתי: יום רביעי, ה־21 באוקטובר בשעה 20:00

איפה: בזום, כמובן

בעלי חשבון פייסבוק יכולים להרשם כאן.

אפשר להגיע ישירות דרך הקישור לזום.

(הקישור לזום יהיה פעיל רבע שעה לפנית תחילת הוובינר)

https://jce-ac-il.zoom.us/j/92147623684

בואו, יהיה כיף. גם אם אתם לא בתחום הדאטה. בעיקר אם אתם לא

חשדות טובות. חרא של גרפים

בלוג, הדמיית נתונים

אני מתנצל על השפה הבוטה, אני פשוט נסער (טוב, לא באמת, סתם עושה את עצמי). 

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

הנה גרף שראיתי בקבוצת הפייסבוק https://www.facebook.com/groups/DataVisualizationIsrael

(אני לא נותן לינק לגרף המקורי בכוונה, כדי לא לעודד את גוגל לשלוח לשם מבקרים)

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

מה רע בגרפים האלה?

מה רע בגרפים האלה? מה לא טוב בהם? שום דבר לא טוב!

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

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

איזה גרף יפה! אילו קווים חלקים ונעימים. אלא מה? 

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

(מקור התמונה – כאן)

ובחזרה לגועל הנפש שלנו (באמת, אני לא מגזים). בגרף ה־״חמוד״ הזה, אין למיקום הפעמון, העובי שלו ומידת החפיפה שום משמעות! כל מה מעניין זה הגובה של הצורה. אז למה לא קיבלנו גרף עמודות? באמת שאין לי מושג. הנה, הפכתי את הגרף המקורי לעמודות. עכשיו, כל נהיה בסדר.

למה זה חשוב?

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

לפעמים, צבע זה דבר טוב. רק לפעמים

בלוג

כל מי שמתחיל ללמוד הדמיית נתונים יודע שברוב המקרים שימוש בצבע מיותר. אני כבר כתבתי בבלוג שלי באנגלית בנושא [לינק] ואני, כמובן, לא היחיד.

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

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

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

אבל, וכאן יש אבל גדול. הגרף הזה מופיע בדשבור (לא מוצלח במיוחד) של משרד הבריאות שמפלח את סיבות המוות בישראל בשנת 2016 [לינק]. והדשבורד הזה מראה פילוח של סיבות המוות לפי מגדרים. את הפילוח הזה מראים לנו בצורה הבאה

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

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

חבית של דבש עם כפית של חרא?

בלוג, הדמיית נתונים

תארו לעצמכם שהייתם רואים ספר דקדוק עברי עם הכותרת ״חמש חוקי הדקדוק״. האם הייתם טורחים לקרוא את  הספר הזה? אני מקווה שלא. זה, פחות או יותר מה שעשתה חברת IBM כשהיא פרסמה את 

המדריך שלה להדמיית נתונים (אני בכוונה לא שם לינק, כדי לא להעלות את ה־rank של העמוד הזה). 

שימו לב איך נראה הגרף שמופיע על עמוד הבית של המדריך 

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

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

זוויות הפלחים הן 182 ו־75 מעלות, בהתאמה, יחס של 2.42:1. הרדיוס של המקטעים הם 135 ו־110פיקסלים. עם קצת מתמטיקה, אחנו מקבלים שאורך הקשתות של שני הפלחים הם 426 ו־144פיקסלים, יחס של 2.96:1. ומה עם השטחים: כאן, בגלל התלות הריבועית היחס עוד יותר גדול: 28,930 פיקסלים, לעומת 7,915 שנותנים יחס של 3.66:1. 

אז נכון, הצבעים יפים, אבל אילו יחסים הגרף הזה מייצג?

חברת IBM אולי עושה מחשבים טובים, אבל אל תלמדו מהם איך עושים הדמיית נתונים!

כל מה שטוב בהדמיית נתונים

בלוג, הדמיית נתונים

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

The quintessence of data visualization usefulness. These graphs are SOOOO good and convincing.

The quintessence of data visualization usefulness — Boris Gorelik

קוד הסדנה זמין להורדה

בלוג, הדמיית נתונים

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

קוד לסדנה זמין בלינק הבא

https://github.com/bgbg/datascience_dataviz_workshop/

לא זאת השאלה

בלוג, הדמיית נתונים

לא זאת השאלה. על גרף קורלציה והאלטרנטיבות

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

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

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

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

מה כן השאלה?מה הפתרון? עוד רגע נגלה, בוא נראה עוד דוגמא.

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

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

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

מה השאלה?

השאלה האמיתית היא מה מידת ההסכמה בין שני המספרים או מידת ההבדל בינהם. לכן נציג את ההבדל בין שני המדדים. אבל הבדל כפונקציה של מה? איזה מדד נצייר על ציר ה־X? האם הבדל המכירות הוא פונקציה של המכירות באמצע השבוע או בסוף השבוע? האם ההבדל במדידות שי הנשיפה הוא פונקציה של המדד הזה הנמדד במכשיר הגדול או במכשיר הקטן? אם נבחר מדד אחד נייחס לו חשיבות רבה יותר. אז הפתרון הוא פשרה מפאיניקית: נקח את הממוצע. זה בדיוק מה שהציעו רבותינו Altman ו־Bland במאמרם שהתפרסם בשנת 1986 "Statistical methods for assessing agreement between two methods of clinical measurement". המאמר היה כל כך חשוב שהוא התפרסם שוב, כמעט בלי שינויים ב־1999 תחת השם "Measuring agreement in method comparison studies". הכותרת מבטאית את הרעיון: במקום לצייר קורלציה, אנחנו מציירים ומנתחים את מידת ההסכמה בין שני מדדים. על מנת לבצע את המשימה הזאת, אנחנו מציירים את ממוצע המדידות בציר ה־X ואת ההבדל בציר ה־Y.

הנה התוצאה של אלטמן ובלנד

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

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

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

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

אז מה היה לנו כאן?

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

אני ממליץ מאוד לקרוא את המאמר השני של אלטמן ובלנד. המאמר זמין כאן

סדנה בהדמיית נתונים

בלוג, הדמיית נתונים

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

לפרטים והרשמה הקליקו על התמונה למטה

תרשים עוגה כחלופה הולמת לגרף עמודות

בלוג, הדמיית נתונים

תרשים עוגה כחלופה הולמת לגרף עמודות

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

הכנסת המתפקדת האחרונה שהייתה לנו במדינת ישראל הייתה הכנסת ה־20. בואו נראה איך התפלגו מושבי הכנסת בין המפלגות השונות.

זה הקוד ליצירת תרשים עוגה בסיסי בשפת פייתון עם שימוב בספריות סטנדרטיות

fig, ax = plt.subplots()
ax.pie(
    x=tbl_knesset20['מושבים'],
    labels=tbl_knesset20['מפלגה']
)

עד לא מזמן, התוצאה הייתה נראית ככה:


עזבו לרגע את העברית ההפוכה (נטפל בזה בהמשך), הגרף הזה פשוט נורא. הבעיה הגדולה ביותר שלו זה עווית המציאות. כאשר אנחנו מסתכלים על תרשים עוגה, אנחנו אומדים (estimate) שטחים וזוויות. במקרה הזה, יחס גובה/רוחב של העיגול לא נשמר ואתו גם נהרסו השטחים והזוויות. מה עושים?  ספריית matplotlib  מאפשרת קיבוע של יחס גובה/רוחב על ידי ax.set_aspect(1.0) . לשמחתי, גרסאות חדשות של ספריה זו הכניסו את היחס הנכון כברירת מחדל והעוגה הדפולטיבית נראית עגולה היום. ברוך ה׳


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

fig, ax = plt.subplots()
ax.set_aspect(1.0)
patches, texts = ax.pie(
    x=tbl_knesset20['מושבים'],
)
ax.legend(patches, tbl_knesset20['label'])
ax.set_title(bidialg.get_display('לא לנסות בבית'))

עדיין לא טוב. מרוב עצים לא רואים את היער. האם הצופה יכול לראות כמה מושבים יש לש״ס, למשל? או לליכוד?

ניסיון להזיז את המקרא ולהוסיף מספרים עדיין לא עובד טוב

בנקודה הזאת, האדם הסביר שלמד הדמית נתונים מרים ידיים, נזכר בתרשימי עמודות ומייצר משהו נחמד

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

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

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

״רגע!״ אתם וודאי צועקים, לא אמרת מעט קבוצות?  ״כן,״ אני עונה – כאן יש שתי קבוצות: קואליציה ואופוזיציה. בואו נצבע את הפלחים בהתאם

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

נו, תגידו אתם, מה יותר טוב?

אני טוען שבמקרה הזה העוגה עדיפה על המקלות.

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

להלן חוברת העבודה הרלוונטית

https://github.com/bgbg/datascience_dataviz_workshop/blob/master/demos/item_distribution/pie%20charts%20as%20an%20alternative%20to%20bar%20charts%20-%20the%20Israeli%20Knesset.ipynb

הדמיית נתונים כמשימה הנדסית – גישה שיטתית ליצירת הדמיה יעילה

בלוג, הדמיית נתונים

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

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