• אסף שפירא

ניתוח השוואתי של רשת הטוויטר בזמן הפיגוע בדיזינגוף (אפריל 2022)

עודכן: 14 בספט׳

רקע והקדמה

בפוסט זה ננתח את רשת הטוויטר בישראל בזמן הפיגוע בדיזינגוף (7/4/22): ב-7 באפריל ירה מחבל ברחוב דיזינגוף והרג שלושה. המחבל נמלט והחל מרדף שנמשך כעשר שעות עד להריגת המחבל. באמצעות ה-API של טוויטר, אספתי אלפי טוויטים שהכילו מילים אינדיקטיביות לאירוע ("פיגוע", "תל אביב", "דיזינגוף") מהם נבנתה הרשת.

קצת על כלי הניתוח

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

1. המערכת נראית טוב יותר ומכילה כותרות אינטואיטיביות יותר למה לחפש איפה.

2. ניקו קצת תכונות/plugins ישנים. אני מניח שזה אמור לעשות אותה גם יציבה יותר.

3. הבשורה הגדולה: הכניסו אלגוריתם חלוקה לקהילות חדש – Statistical Inference (ובקיצור – SI).

מה זה אומר? אז קודם כל, למי שצריכ.ה תזכורת לגבי מה זה חלוקה לקהילות והשיטות השונות לעשות זאת - מציע לקפוץ לפרק 5 לקרוא או סתם לרענן (פודקאסט). ועכשיו להסבר הקצר: SI הוא אלגוריתם שמתבסס על שיטת בייסיאנית של Stochastic Block Model)SBM) ובמילים של בני אדם, הכוונה היא שהאלגוריתם מנסה לחלק את הרשת לקהילות לפי מודל ההיווצרות שלה. על מודלי היווצרות של רשת דיברנו בפרק 3 ובפרק 9 אבל ניתן דוגמת קיצון להמחשה:

נניח שהרשת היא רנדומלית, כלומר, צמתים מתקשרים זה לזה באופן מקרי (למשל מודל ER של רשתות. אין רשתות כאלה כמעט במציאות, אבל רק לשם הדוגמה). במקרה כזה, לא נצפה למצוא קהילות ברשת כי ההגדרה של קהילה היא איזור ברשת שבו כמות הקשרים של הצמתים בתוכה גדולה מכמות הקשרים לשאר הרשת. כשפיזור הקשתות הוא רנדומלי, אנחנו לא מצפים להצטופפות של קשרים אלא שהקשרים ייתפזרו בין כל הרשת. למעשה, העובדה שלא אמורות להיות ברשת רנדומית קהילות היא הסיבה שהלובאין משתמש בה כדי להשוות את תוצאותיו: אם הוא מוצא שיש באיזור מסויים ברשת יותר קשרים ממה שהיה מצפה למצוא ברשת רנדומית, זו אינדיקציה שיש כאן קהילה. אבל בפרקטיקה... לובאין לפעמים כן מוצא קהילות ברשת רנדומית (אם היא מאד sparse, או לא צפופה) - כלומר, זיהוי מקרי של קהילה. לכן, יש כאלה שטוענים שלובאין הוא שיקוץ טמא (כי תיאורטית, אסור היה לו למצוא קהילות ברשת שההיגיון שלה נובע מהתפשטות רנדומית). שיטת SI אמורה לזהות שהמודל הוא רנדומי ולכן לא תמצא קהילות כלל (כל הרשת = קהילה אחת). אז למה להשתמש בלובאין בכלל?

1. כי ברשתות ענק, הלובאין נותן תוצאה די דומה ובאופן מהיר מאד.

2. ובפרקטיקה, אין סיכוי שניתקל ברשתות רנדומיות.

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


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

רשת הטוויטר בזמן הפיגוע - מקרה בוחן


הרשת מכילה כ-3,360 צמתים (משתמשים) וכ-4,120 קשרים (מסוג: retweet/quote/mention).

את הרשת נחלק לקהילות (כל צבע יהיה קהילה) ובנוסף, נדגיש את המשתמשים ברשת שזכו להכי הרבה אינטראקציה (לצורך העניין, נשתמש במדד הפשוט של ה-InDegree, כלומר, כמה קשרים נכנסים לכל צומת). כדי לחלק את הרשת לקהילות, נעשה השוואה בין שלושה אלגוריתמים: לובאין (Louvain), ליידן (Leiden) ו-SI (מבוסס B-SBM).

מימין: חלוקה באמצעות אלגוריתם לובאין משמאל - ליידן

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

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

ההבדלים והדימיון בולטים יותר לעין כשעושים שימוש בגרף קהילות. גרף קהילות הוא למעשה אגרגציה של הצמתים שראינו קודם. כל צומת בגרף הקהילות "מכיל" את כל הצמתים ששייכים לקהילה שלו. הקשתות הן הקשרים בין הקהילות. הקהילות במרכז הן הקהילות של רכיב הקשירות המרכזי, והצמתים "המנותקים" שמסביבן אלו הצמתים המנותקים שראינו בגרף הצמתים. לתזכורת על מהו רכיב קשירות ולמה ברשתות יש רכיב קשירות מרכזי והרבה רכיבים קטנים, אני מפנה לפרק 2 (פודקאסט). התיאור שמופיע ליד כל קהילה מתבסס על זיהוי הגורמים המרכזיים באותה קהילה (ומפנה לפרקים 4 ו-5 בכדי להסביר מדוע), וגודל הקהילה נקבע לפי המרכזיות שלה בגרף הקהילות, בדיוק כפי שנעשה בגרף הצמתים "הרגיל":


גרף קהילות של רשת הטוויטר, לפי האלגוריתמים השונים

מילה לגבי תיוג הקהילות:

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

אחת מהקהילות המענינות שנחשפות כאן היא קהילת "שמאל+גלית דיסטל": מחד, נמצאים בה בעיקר אנשי שמאל (כמו למשל גלעד קריב, ח"כ ממפלגת העבודה) אך הצומת המרכזי ביותר הוא דווקא חה"כ מהליכוד, גלית דיסטל אטבריאן. מכיוון שחברת הכנסת לא יצרה אף קשר ברשת מיוזמתה (OutDegree 0), ניתן להבין שקהילת השמאל "התאחדה" נגדה. נקודה נוספת, היא נוכחות של משתמשים מרכזיים תחת שמות ערבים בקהילות הימין (מופיעים כ"ערבים" בתמונה). משתמשים אלו נוטים להציג את הנראטיב היהודי-ימני ומגלים תמיכה עקבית בנתניהו. מחנה הימין נוטה להעצים את המסרים שלהם וכך להדהד את אותם קולות "אותנטיים" מהמגזר. גרף הקהילות מאפשר לנו לראות את הדימיון בין תוצאות הלובאיין לליידן. בשניהם יש בערך אותה כמות קהילות ברכיב הקשירות המרכזי ופחות-או-יותר אותן קהילות מרכזיות. בגרף הקהילות מבוסס ה-SI לעומת זאת, ניתן לראות שיש הרבה יותר קהילות, שכוללות גם קהילות שלא מופיעות בגרפי הקהילות הקודמים. הסיבה לכך היא "בעיית רזולוציה" בלובאין עליה דיברנו בפרק 5. אלגוריתמים מסוגו של הלובאין, מנסים מבצעים כמה איטרציות כדי "לחבר" קהילות זו לזו ולכן לפעמים נדרש "לצלול" לתוך הקהילות הגדולות של הלובאין כדי לחלץ מהן קהילות קטנות יותר ("תת-קהילות"). המחשה נוספת לדימיון/שוני בין האלגוריתמים נקבל בעזרת שימוש בתרשים זרימה מסוג Sankey/Alluvial. התרשים מראה לנו איזה מהצמתים בחלוקה של הלובאין מופיעים באיזה קהילות בחלוקה של ה-Leiden:

כמה הערות לגבי התרשים:

  • הקהילות בצד הלובאין מסודרות לפי גודל (אין התייחסות למרכזיות הקהילה ברשת).

  • התיוגים של הקהילות מתבססים על הגורמים המובילים בכל קהילה.

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


כאן כבר השינויים מובהקים מאד. אחת מהסיבות ש-SI "מתפזר" על יותר קהילות מהלובאין היא אותה "בעיית רזולוציה" בלובאין עליה דיברנו קודם (והרחבנו עליה בפרק 5). מבחינת התכנים:

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

בגלל הרזולוציה המשופרת, ה-SI חושף לנו קהילות מעניינות כמו למשל קהילת "הקואליציה" (שמכילה את בנט/לפיד). הבדל מעניין נוסף הוא קהילת החדשות (News):

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

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

#נטפריקס, #מדע_הרשתות #רשתות_חברתיות #מדע_הנתונים

#NETfrix #Network_Science #SNA #Social_Network Analysis #Graph_Theory #Data_Science #Podcast #Twitter #Dizengoff

91 צפיות0 תגובות