• אסף שפירא

הרחבות לפרק 21: כל אחת יכולה לנתח רשת

עודכן ב: נוב 28

(ר' קישורים בטקסט) מה מתרחש 😊 אני אסף שפירא וזה נטפריקס – הפודקאסט העברי הראשון למדע הרשתות.

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

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

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

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

מכיוון שהפרק הזה עוסק בפרקטיקה, אז על הדרך, נדבר קצת על Best practices לחוקרי וחוקרות הרשת ונכיר מושגים מתקדמים בתחום הרשתות, למשל מטריצות ברשתות ומה זה Higher Order Networks או הייפר גרפים. וזו הסיבה שאני נותן פה כבר עכשיו התראונת: לצורך הפרק הזה אני מניח שהמושגים הבסיסיים של ניתוח רשתי כמו מדדי מרכזיות, חלוקה לקהילות וכדומה - כבר מוכרים למאזינות ולמאזינים. למי שזו הפעם הראשונה בתחום או סתם לטובת חימום קל, אני ממליץ על פרקים 4 ו-5, בנושא מדדי מרכזיות וקהילות ברשת, בהתאמה.

במסגרת התחקיר, ואני יודע שזה נשמע קצת כמו בומר, אבל נראה לי עברתי על כל מה שיש לאינטרנט להציע. מדובר בעשרות מערכות לפחות, אבל רק כעשר מתוכן עמדו בכל הקריטריונים: הראשון - לא דורשות תיכנות וניתן לעבוד איתן עם PC ו-Windows. השני - יכולות לעבוד עם אקסל. השלישי - חינמיות על-מלא, כלומר, כאלה שהן חינם רק לתקופת ניסיון לא נכנסו לכאן. לחלק מהמערכות החינמיות יש גם גרסת premium שעליהן לא נרחיב, אבל חשוב לי להבהיר שרוב התוכנות כאן, בוודאי אלה הותיקות, אינן מסחריות במובן הכלכלי של המילה. הן לרוב תוצר של עבודה אקדמאית שנתמכת ע"י תרומות. ורביעי ואחרון, המערכות צריכות לאפשר ניתוח של כל סוגי הרשתות, כלומר, בפרק הזה לא נסקור מערכות שמאפשרות ניתוח רק של רשתות ספציפיות או תהליכים ספציפיים או מערכות שמאפשרות להציג את הדאטה כרשת, אבל רק כסוג של sideshow, כלומר, לא מאפשרות ניתוח אלא ויזואליזציה בלבד. כך למשל, לא נדבר על מערכות ייעודיות לניתוח רשתות ביולוגיות, רשתות ארגוניות, ניתוח טקסטים ומאמרים כרשת ומערכות לניתוח גרף תהליכים ו/או קבלת החלטות (קצת בדומה ל-Visio של מיקרוסופט). הן אולי טובות בתחומן, אבל לא מאפשרות הרבה גמישות. והנה תופעה מעניינת שנתקלתי בה במהלך סקר התוכנות: הרבה מהמערכות האלה לא תוחזקו במשך שנים, אבל מרגע שהתחלתי לעבוד על הפרק, גיליתי שלהרבה מהתוכנות שמצוינות פה מתוכננת גרסה חדש או בוצע בה השנה שדרוג משמעותי. אז או שזה אפקט באדר-מיינהוף או שיכול להיות שהסגרים של הקורונה ייצרו בייבי בום של שדרוג מערכות? מוקדם להגיד, אבל אולי 2021 מביאה איתה גל של מודעות גוברת והולכת לעולם הרשתות. אולי זה כמו שברבאשי, חוקר הרשתות המפורסם אמר בפרק קודם שהקורונה הביאה איתה את שפת הרשתות לבמה המרכזית וזה תפס. למשל, אני לא יודע אם שמתם לב, אבל לראשונה יש לנו זוכים בנובל מתחום המערכות המורכבות, שרשתות הן חלק גדול בתחום הזה. ריספקט. אז בנימה אופטימית זו ניגש לעסק. מה שנעשה כאן זה לסקור את העיקרים של כל תוכנה – מה מייחד אותה ומה היתרונות/חסרונות שלה עם דגשים לכאלה שמתחילים ומתחילות בתחום. על הדרך, נלמד קצת על תהליך המחקר ועל מושגים מתקדמים במדע הרשתות. את הסקירה של כל מערכת נקביל לשלבים בתהליך המחקר, אז דבר ראשון, נתחיל בהתקנת המערכת וטעינת הנתונים. ההתקנה לרוב פשוטה או לא נדרשת (במקרה של מערכות web). חלק מהמערכות שנסקור מבוססות Java ולכן עלולות לדרוש התקנה גם של Java. זה לא מסובך, פשוט ניגשים לגוגל, מחפשים Download Java ומורידים. אבל תהליך הטעינה של הנתונים יכול להיות קצת יותר טריקי. מה זאת אומרת?

אז ה-Best practice לטעינת הנתונים הוא לרוב שימוש בשני קבצים:

קובץ קשרים וקובץ זיהויים.

קובץ הקשרים הוא חובה והוא יכיל לרוב שתי עמודות: source ו-target וזה יספיק לרוב התוכנות. לעיתים ניתן להוסיף גם עמודת weight, או משקל, כלומר, כמה פעמים הקשר חזר על עצמו, אבל לרוב זה לא חובה, והמערכת תחשב זאת בעצמה. כבונוס, יש תוכנות שמאפשרות להכניס מידע נוסף על הקשרים למשל סוג הקשר וכד'. במערכות מסוימות שמאפשרות ניתוח דינאמי, ניתן להכניס גם את תאריך וזמן הקשר.


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

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

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

רוב המערכות מציעות עוד אפשרויות לטעינה פשוטה של נתונים:

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

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


עכשיו שיש לנו נתונים, השאלה היא כמה נתונים המערכת יכולה לאכול?

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

אז אחרי שיש לנו מערכת, והנתונים הוזנו, השלב הבא הוא שלב הניתוח:

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

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

הסוגייה הראשונה היא די פשוטה: האם יש למערכת את האלגוריתמיקה הבסיסית שתאפשר לנו ניתוח טוב של הרשת והאם יש לה גם אלגוריתמיקה למתקדמים? כשאני אומר אלגוריתמיקה בסיסית אני מתכוון בעיקר ל-3 מדדי המרכזיות העיקריים שמי שלא אמר אותם לא יצא ידי חובתו והם: Degree, Betweenness ובני יקירי Closeness. כמו כן, במסגרת המדדים הבסיסיים אני כולל גם מדדי רשת, למשל, מדידת הצפיפות של הרשת או הקוטר שלה. חלוקת הרשת לקהילות לא תיחשב כאלגוריתמיקה בסיסית אבל אני ממליץ עליה מאד. כאן יש מגוון רחב ואקלקטי מאד אבל מבחינתי, מערכת שלא מאפשרת שימוש באלגוריתם Louvain, זה אומר עליה הרבה ובהקשר זה שני גילויים: אחד, שבשיחותיי עם דוברי צרפתית הם התעקשו להגיד "לובה" ולא "לובאין", וזה רק מראה מה הם יודעים. דבר שני, זה שאני סאקר של "לובה". אחלה אלגוריתם. על אלגוריתמיקה מתקדמת יותר נדבר אח"כ, אחרי שנבנה מומנטום.

הסוגייה השנייה בנושא הניתוח היא אפשרויות הויזואליזציה של הרשת.

כמה נוח לשחק איתה וכמובן, האם היא מאפשרת פריסה נוחה של הרשת, מה שנקרא, תכונת ה-Layout.

ברשתות עם צמתים בודדים, אין כל כך בעיה. אנחנו נראה את כל הצמתים והקשרים ביניהם באופן די אינטואיטיבי. אבל ככל שהרשת גדלה, הצורה שבה היא פרוסה על המסך מתחילה להיות משמעותית כי הצמתים והקשתות מתחילים לרמוס אחד את השני כשהשיא הוא מה שמכונה בספרות המקצועית: "The giant hairball effect" או רשת שנראית כמו כדור צמר ענקי שאי אפשר להבין ממנו כלום.


מאחורי התצורות השונות לפריסה של הרשת עומדים אלגוריתמים בפני עצמם שמטרתם למקסם תכונות מסוימות של הרשת, לפי הצורך של המשתמש, למשל, אלגוריתם פריסה יכול למקסם על הקירבה של צמתים זה לזה, כלומר, להצמיד צמתים שקשורים זה לזה ולהרחיק מהם צמתים אחרים. אלגוריתמים אחרים יכולים למקסם על סגנון הפריסה המבוקש, למשל, להציג את כל הצמתים במעגל או בתצורה היררכית, כמו של עץ מבנה או אפילו לאפשר הצגה של הצמתים ברשת לפי מיקומם הגיאוגרפי בעולם, כלומר להצמידם למפה ועוד. למרות שאני ממש יכול להבין כאלה שנשבו בויזואליזציה מסוימת בגלל היופי האסתטי שלה, יש ספרות של Best practice להצגת רשתות, כי ויזואליזציות מסוגלות גם ליצור רושם מוטעה. דיברנו על זה קצת בפרק 13 על פוליטיקה ורשתות בעקבות התמונה האייקונית במחקרה של לאדה אדאמיק "Divided They Blog". אז הסוגייה השלישית בנושא הניתוח היא סוגיית האיטרטיביות. למה הכוונה?

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


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

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

יש יותר מדרך אחת לשמור מידע כרשת.

עד היום דיברנו על 2 שיטות: השיטה הגרפית, כלומר, לצייר את הרשת כצמתים וקשתות או שיטת רשימת הקשרים: טבלה ובה מקור ויעד או source ו-target.

אבל שיטה שלא הזכרנו עד היום היא שיטת המטריצה הנקראת Adjacency matrix, או טבלת שכנויות, שנקראת כך כי היא מראה איזה צומת נמצא ליד איזה צומת.


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

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

כל זה נשמע קצת מורכב והדבר הראשון שקופץ לראש זה למה לעשות את זה? זה גם נשמע מאד בזבזני מבחינת אגירה: תחשבו למשל על רשת של אלף צמתים. זה אומר שאנחנו צריכים להחזיק טבלה של 1000 על 1000, כשרוב הסיכויים שמרבית הטבלה תהיה מורכבת מאפסים, כי כמו שאנחנו זוכרים, קשרים ברשת מתפלגים "זנב ארוך", כלומר, יש לנו מעט צמתים עם הרבה קשרים אבל לרוב הצמתים קשרים בודדים. כלומר, יופי לנו, ייצרנו טבלה גדולה שרובה ריקה. אבל שימו לב שהטבלה אמנם בזבזנית במקום אבל חסכונית בזמן. למשל, בעזרת המטריצה, אנחנו יכולים במבט מהיר על שורה או עמודה לראות איזה צמתים קשורים לאיזה צמתים. במטרה למקסם על שני העולמות – גם לחסוך במקום אבל גם להנות מקריאה מהירה של הנתונים, קיימת שיטה שהיא מעין הכלאה של רשימת הקשרים ומטריצת השכנויות והיא נקראת Adjacency list או רשימת שכנויות: הרשימה מכילה בעמודה אחת את כל הצמתים ובעמודה השנייה את כל השכנים של הצמתים. כלומר, אם יש לנו רשת ובה שלושה צמתים וצומת X קשור לצומת Y ו-Z, אז בעמודה הראשונה, בשורה הראשונה יופיע צומת X ובעמודה השנייה כל הצמתים שהוא קשור אליהם, במקרה זה, Y ו-Z עם פסיקים ביניהם. בשורה השנייה יופיע צומת Y, ובעמודה לצידו צומת X בלבד (כי Z לא קשור ל-Y) וכן הלאה.

בשיטה זו, אנחנו לא מבזבזים מקום על קשרים שלא קיימים ברשת ובמקביל נהנים ממבט מהיר על מי השכנים של מי.

אבל שוב, למה זה טוב?

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


רשימת קשרים פשוטה של source ו-target מספיקה לנו, במיוחד שמי שסוחב את החישוב זו תוכנה חיצונית. שתעבוד קצת, למי אכפת? בטח עם היא חינמית. העניין הוא שיש אלגוריתמים שמבוססים על הבנת הרשת כמטריצה וזקוקים למטריצה כקלט. לא נפרוט את כולם, כי בכל זאת יש גבול, ונשמור קצת לפרק הבא. רק נגיד מילה על יישום המטריצה בהקשר של מציאת דמיון בין צמתים: כשאנחנו רוצים להשוות בין שני צמתים, מבחינת תפקידם ומיקומם ברשת, אנחנו נדרשים לשכנים של אותם צמתים. והדרך המהירה ביותר לגלות שכנים היא דרך מטריצה. השוואה זריזה בין השכנים של אותם הצמתים יכולה לגלות לנו, למשל, שקיים אחוז חפיפה גבוה בין אותם צמתים ולכן הם דומים מאד. מה זה אומר? זה יכול להגיד למשל שמדובר בחברים קרובים שחולקים את אותה חבורה בפייסבוק או באלטר אגו של המשתמש, או במילים פשוטות – יוזר נוסף של אותו משתמש. אולי היישום הנפוץ ביותר כיום למטריצות הוא לשמש כקלט לכל מה שקשור ללמידת מכונה על רשתות וגרפים, תחום שנקרא Graph Neural Network, או GNN בקיצור, ומתישהו נהיה חייבים לכסות אותו באיזה פרק. עד אז, מוזמנים לפרק בנושא של Amlek AI שהוא לצערי בין הפודקאסטים הבודדים בעברית שעסקו במדע הנתונים, חוץ מנטפריקס, וכיסו את תחום למידת המכונה. אני מדבר בלשון עבר כי שוב, למרבה הצער, נראה לי שהם הפסיקו להוציא פרקים. ואז גיליתי שמסיבותיהם הם, לאחר הפסקה של כחצי שנה, הפודקאסט שינה את שמו ל-ExplAIable וממשיך להוציא פרקים. אז טוויסט עם סוף טוב (: מטריצות זה תחום שלם בעולם הגרפים והרשתות, ובניגוד למה שאני בדרך כלל אומר על רשתות, הוא לא תמיד פשוט. למרבה המזל, ואני אשתדל לא להעליב אף אחד, לרוב לא נצטרך אותו בניתוח רשת. חוצמזה, האלגוריתמים שעושים שימוש במטריצות הם לא פעם כבדים ומסורבלים והתוצאות שנקבל באמצעותם לא בהכרח יהיו טובות בהרבה מאלגוריתמים פשוטים ועדכניים יותר.

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

ועכשיו, בואו נעבור למערכות, וכשאני אומר מערכות, אני בעצם אומר Gephi.


כשנסקור את המערכות (בפרק הזה ובפרק הבא), נבדוק אותן לפי הפרמטרים הבאים:

  1. התקנה

  2. ממשק הזנה

  3. ממשקים חיצוניים

  4. ממשק אינטואיטיבי

  5. מדדים בסיסיים

  6. חלוקה לקהילות

  7. ניתוח איטרטיבי

  8. ויזואליזציה טובה/נוחה

  9. אלגוריתמיקה ופיצ'רים מתקדמים

  10. התמודדות עם רשתות גדולות

  11. מתעדכן

  12. יתרון משמעותי

  13. חסרון משמעותי

וכמו שאמרתי, אנחנו נתחיל עם מערכת Gephi וגילוי נאות, אני סאקר של Gephi.

GEPHI

אז כש-Gephi רק יצאה ב-2009, היו לה כ-10,000 הורדות. 7 שנים אחר כך, היא חצתה את ה-2 מיליון ומסקרים לא רשמיים, נראה שגם כיום זו כנראה תוכנת ניתוח הרשתות הפופולרית ביותר.

כמו שאני אומר לילדים שלי, זה לא תחרות, אבל Gephi לוקחת.

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


.Gephi במערכת Gephi קצת מטא: תמונה רשתית של הקוד של

אז מה אפשר להגיד על Gephi?

  1. התקנה: Gephi דורשת התקנה של המערכת ושל גרסת Java עדכנית. ההתקנה היא קצרה ופשוטה ולכן לא אתגר משמעותי. בנוסף, יש ל-Gephi הרבה plug-ins כלומר, פיצ'רים נוספים שלא באים אוטומטית עם התוכנה וחלקם דווקא די שימושיים אבל צריך להתקין אותם.

  2. ממשק הזנה: ניתן להזין אקסל, אבל הממשק אינו גמיש, כלומר, צריך להשתמש ב-Best practice שדיברנו עליו של Source/Target. בהקשר ההזנה, היתרון של Gephi על הרבה מערכות אחרות זה שהיא מאפשרת לייבא ולייצא ממגוון מאד רחב של סוגי קבצים.

  3. ממשקים חיצוניים: אם יש לכם קוד ל-API של טוויטר, Gephi מאפשרת לכם להתחבר ישירות ולקצור דאטה משם. בנוסף, אם יש לכם איזה אתר שאתם יכולים להתחבר אליו כ-stream, אז Gephi מאפשרת גם את זה.

  4. ממשק אינטואיטיבי: כאן זו בעיה קשה, כי אני עובד על Gephi כבר הרבה זמן ואני לא כל כך אובייקטיבי. גילוי נאות, כתבתי מדריך קצר בעברית על Gephi לטובת צוותי מחקר בזמן הקורונה (זה עדיין issue קורונה?) אז המסקנה המתבקשת מזה היא שאם היא הייתה מאד אינטואיטיבית, לא היה צריך לכתוב לה מדריך. כלומר, אלה שירצו לעשות את צעדיהם הראשונים בתחום, Gephi תדרוש מס למידה על המערכת. למשל, וזו תכונה קצת מעצבנת שקיימת בלא מעט מערכות, זה שהדברים הבסיסיים שנחפש "מוחבאים" תחת כותרות לא אינטואיטיביות. למשל ב-Gephi, אם רוצים לנתח מדדי מרכזיות כמו Closeness ו-Betweenness, צריך ללחוץ על הפעולה: "חשב קוטר הרשת" ואז המערכת תיחשב את הקוטר, אבל גם את מדדי מרכזיות נוספים. אמנם מבחינת חישובית, אחד תלוי בשני, אבל למה להפוך פעולה בסיסית לסוג של Easter egg למשתמש? ל-Gephi פתרונים.

  5. מדדים בסיסיים: אז אם מצאתם אותם או התקנתם את ה-plugins המתאימים, ל-Gephi יש את כל מדדי הרשת הרלוונטים ועוד קצת.

  6. חלוקה לקהילות: ב-Gephi אין הרבה אלגוריתמים לחלוקה לקהילות ולמשל כל העולם של זיהוי ו/או ספירת קליקות ברשת לא קיים בכלל. לעומת זאת, יש בה את אלגוריתם הלובאין, ולדעתי היא המערכת היחידה שמכילה את הגרסה החדשה של הלובאין כלומר, אלגוריתם Leiden המשופר. שוב, כדי ליהנות מהם צריך להוריד את ה-plugin הרלוונטי.

  7. ניתוח איטרטיבי: כאן Gephi היא בין המובילות. היא מאד נוחה לתהליך איטרטיבי ומאפשרת לבצע מדידות, להיכנס ולצאת מהויזואליזציה, לפלטר על תוצאות ועוד. שני חסרונות עיקריים בהקשר זה: הראשון הוא הקושי להתמרכז על המיקום הרלוונטי ברשת. זה דורש מעט מיומנות עם העכבר ויכול קצת לתסכל אנשים חסרי סבלנות. חסרון נוסף, הוא היעדר ה-ctrl-Z או לעשות Undo. כלומר, אם מחקתם משהו, לא ניתן לשחזר. זה לא ישפיע על קבצי המקור שלכם כמובן, אבל אם תרצו לבטל מחיקה, תצטרכו לטעון את כל העסק שוב. בראיון עימו, ג'קומי מתייחס לסוגיה הזאת ואולי לפתרון אפשרי שלה.

  8. ויזואליזציה טובה/נוחה: נושא ש-Gephi חזקה בו הוא ויזואליזציה והיא מאפשרת הרבה גמישות. למעשה, הרבה פוסטרים של רשתות שתמצאו במרשתת נעשו בעזרת הממשק של Gephi. לדעתי, היתרון הכי משמעותי של Gephi הוא באלגוריתם הפריסה שנקרא Force Atlas2 שפותח ע"י מתיאו ג'קומי והוא מאד מהיר יחסית ומאפשר פריסה טובה גם לרשתות ענק. יתרונו בכך שהאלגוריתם שלו פורס את הרשת די בהתאמה לחלוקה לקהילות, כלומר, הוא מבנה את הקהילות ויזואלית ומרחיק אותן זו מזו.

  9. אלגוריתמיקה ופיצ'רים מתקדמים: בזכות כמאה ה-plug-ins שלה, ל-Gephi יש מגוון רחב מאד של אלגוריתמים ופיצ'רים לרשותה. מה שאין זה אלגוריתמים מבוססי מטריצות. מה שכן יש וזה נדיר יחסית למצוא, זו יכולת צפיה ברשת דינאמית. בהינתן שלקשרים ברשת יש Time Label, אז Gephi מאפשרת "לנגן" את הרשת וכך לצפות בהשתנות שלה. בנוסף, בשדה הטבלאי, ניתן לראות מעין גרף קטן של מתי נוצרה כל קשת. אבל כדי ליהנות מכל הטוב הדינאמי הזה, צריך להקפיד על הזנה נכונה של תגי הזמנים לפי הפורמט של Gephi, ורק בקבצי CSV. חוצמזה, זה פיצ'ר נחמד לרשתות קטנות, אבל ברשתות גדולות, נאבד את הידיים והרגליים אם ננסה להבין מה קורה שם מבחינה ויזואלית בלבד. עוד תכונה נחמדה של Gephi זה היכולת לקפל רשתות או לבצע Projection, תכונה שהזכרנו בפרק קודם, והיא עושה את זה באופן די נוח ואינטואיטיבי.

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

  11. האם המערכת מתעדכנת: הגרסה האחרונה של המערכת (0.9.2) יצאה ב-2017 אבל בנובמבר 2021 צפוי הקאתון בכדי לבצע מתיחת פנים לתוכנה הותיקה ולהוסיף בה פיצ'רים חדשים.

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

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

  • Hyper Edges

  • Higher Order Edges

  • או סתם Parallel Edges.

ממש בשנים האחרונות התחיל לעלות חזק העיסוק ב-Higher Order Networks או Hyper Graphs כמודל שמשפר את הרזולוציה בה אנו מסתכלים על הרשת. הכוונה היא פשוט לתופעה שבה קשת יכולה לחבר יותר משני צמתים. מה זה אומר? אז הנה דוגמא: נניח גרף המורכב מ-3 צמתים, A,B ו-C. נניח ש-A התכתב עם B ו-Bהתכתב עם C ו-C התכתב עם A. יש לנו מקרה קלאסי ובו 3 זוגות של קשרים יצרו גרף משולש. ההייפר-גרף נוצר כאשר A שולח הודעה ל-B ו-C ביחד. כלומר, נעשתה פה פעולה מקבילה שהמשמעות שלה היא שהקשר של A עם B הוא סימולטני לקשר של A עם C. בהקשר זה, הייפר-קשת זו הקשת שמחברת יותר משני צמתים באותו זמן או במילים אחרות: Higher Order Edge.


מימין: גרף רגיל, משמאל: הייפר-גרף (קשר סימולטני מסומן כצבע מלא)

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

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

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


זה באג? זה פיצ'ר?

רואים? ככה זה כשאוהבים - אוהבים עם הפגמים ואולי גם בגללם.

אז בפרק הבא נעבור על שאר המערכות לניתוח רשת, וטיזר קטן:

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

כמובטח, הנה כמה ביקורות מרחבי המרשתת:

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

ואחרונה חביבה, אפרת מחברת לייטריקס שהעלתה את הפוסט הבא ולא התעצלה לתייג: נטפריקס הוא למעשה אחדות מופלאה של תוכן וצורה! פודקאסט מבריק ונהדר על מדע הרשתות, שמפעיל על עצמו את חוק החזקה, או כמו שאסף נוהג לכנות אותו פאולו. הכיצד? הפודקאסט נמצא אי שם במורד הזנב של הדינוזאור (בינתיים!), וכך כשמחפשים אותו בגוגל או בלינקדין, תמיד נקבל קודם כל את נטפליקס, הנמצא אי שם במעלה הגב. וכך אנו למדים כיצד מתנהגות רשתות רק מלגגל את הפודקאסט. סחטיין אסף שפירא, ולכולם - לכו להאזין ויחד נעלה את נטפריקס במעלה הדינוזאור. רק לקרוא את זה הפך אותי מורוד לורוד כהה. תודה רבה! התיאור של אפרת מזכיר לי את השיר על הקאובוי בשם "סו". אביו עזב אותו כשהיה תינוק, אבל לפני שעזב הוא קרא לו "סו". הילד, שגדל בסביבה פחות סובלנית מהיום, חטף הרבה מכות בגלל השם ונאלץ ללמוד להילחם כדי להגן על עצמו והפך להיות הקאובוי הכי קשוח באיזור. יום אחד הוא נתקל במקרה באביו שעבד באיזה מסבאה. סו התנפל על האב בכעס אבל אז האב גילה לו שהוא רצה בטובתו. מכיוון שהוא ידע שהוא לא יהיה שם לדאוג לו, הוא היה צריך לבחור לו שם שיכריח את סו לדאוג לעצמו. אז זו אולי הסיבה שחבר שלי, קרסיק, בחור די חד, המליץ לי על השם נטפריקס ואילץ אותי להיאבק ב-SEO של נטפליקס. כדי לתת פייט, הפודקאסט חייב את התמיכה שלכן ושלכם ואני די מאושר להגיד שהוא אכן מקבל אותה: לפי סטטיסטיקות של אתר הפודקאסטים Listen Notes, נטפריקס נמצא ב-Top 5% העולמי ולפי אתר הפודקאסטים buzzsprout נטפריקס בערך ב-Top15%. אולי בזכות העקשנות של מאזינות כמו אפרת, ננצח את נטפליקס ו"משחקי הדיונון". אבל אל תספרו לי, כי לא ראיתי.


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

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

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

לפניות/הערות/הארות/הצעות ועוד: שלחו מייל!

ולא לשכוח לעשות Subscribe לפודקאסט באפליקציה החביבה עליכן.


נתראה בפרק הבא של נטפריקס.


* - ההשתתפות בהגרלה אסורה על מאזיני וקוראי נטפריקס #פודקאסט #מדע_הרשתות #ניתוח_רשתות_חברתיות #תורת_הגרפים #מדע_הנתונים #תוכנה

#Podcast #NetworkScience #SNA #SocialNetworkAnalysis #GraphTheory #DataScience #Software #Survey #Gephi #Java