מה מתרחש (:
אני אסף שפירא וזה נטפריקס – הפודקאסט העברי הראשון למדע הרשתות.
לפני סיום הסקירה של המערכות לניתוח רשת ודירוגן הסופי, הייתי רוצה לנצל את ההזדמנות לדבר על נתונים ודירוג בהקשר של הצלחה והשפעה ברשת, שזה נושא שיצא לי להרצות עליו בזמן האחרון.
דירוג פודקאסטים הוא פיצ'ר חדש שהכניסה אפליקציית ספוטיפיי, שהיא האפליקציה שאחוז גדול מהמאזינות והמאזינים שלנו משתמשים בה. כמה גדול?
אז כ-30 אחוז מאזינים לנטפריקס דרך ספוטיפיי. חצי מכך, כלומר, באיזור ה-15%, מאזינים דרך אפל. שליש, או 10%, מאזינים דרך גוגל ורבע דרך פודקאסט אדיקט. שאר עשרות האפליקציות זוכות כל אחת לכאחוז ומטה.
מי שלא הופתע או הופתעה מהנתון הזה יכול להמשיך הלאה.
למי שזה נראה סתם צירוף מקרים שמקום 2 הוא חצי ממקום ראשון, מקום 3 הוא שליש ומקום רביעי הוא רבע, אני מזמין לפרק 3 של נטפריקס בנושא חוק החזקה או ה-Power Law.
חזרה לדירוגים, אז דירוג הוא פעולה אקטיבית שאנחנו מבצעים. זה דורש רצון ואנרגיה של שני הצדדים: הפודקאסט צריך לחזור ולבקש ממאזיניו לדרג והמאזינים צריכים ללחוץ על כפתור. נשמע פשוט נכון? אז בהנחה שהפודקאסט מממלא את הצד שלו, כמה אחוז מהמאזינים ידרגו את הפודקאסט? קחו שניה לחשוב על זה.
אם נתתם מספר דו ספרתי, סימן שאתם צריכים לחזור אחורה כמה משבצות לפרק 3. התשובה היא שהמספר ינוע בין 1 ל-10 אחוז, שזה התפלגות "זנב ארוך" קלאסי של מעט שמדרגים לצד רוב דומם. וזה נורמלי וטבעי מאד וגם נטפריקס נמצא שם. מה שהפתיע היה שבין המדרגות והמדרגים היה גם מישהו שנתן לפודקאסט רק כוכב אחד או אם לצטט משירו של נתן זך: "איך זה שכוכב אחד מעז? איך הוא מעז, למען השם?!" אז מה, מבאס? כשלון? בדיוק ההפך.
למה? כדי להבין למה, צריך לספר את הסיפור של אברהם וולד.
וולד היה מתמטיקאי שהצטרף במלחמת העולם השניה לקבוצת מחקר שעשתה חקר ביצועים סטטיסטי לטובת הצד הנכון במאמץ המלחמתי. הפרוייקט המוכר ביותר כיום של אותה קבוצה הוא מחקר שנדרשו לבצע על מיגון מטוסים: הצבא העביר לקבוצה נתונים לגבי פגיעות במטוסים שחזרו מהמשימה, כשהנטייה של הצבא היתה למגן את אותם איזורים שנפגעו. אבל וולד, שעבר על הנתונים, ציין שהמצב הוא הפוך: מכיוון שהמטוסים שנבדקו הם אלה שהצליחו לחזור מהמשימה, הדבר מעיד שהאיזורים שבהם נפגעו אינם מהותיים לכשירות המטוס. דווקא המקומות שלא נפגעו הם כנראה האיזורים הקריטיים. הסיבה שאין פגיעות באיזורים אלה הם בגלל עיקרון סטטיסטי שנקרא "הטיית השורדים": המטוסים שנפגעו באיזורים הקריטיים לא יכלו לחזור לספר את הסיפור.
למרבה הצער והאירוניה, וולד עצמו נספה בתאונת מטוס ב-1950 ולא זכה לקצור את מלוא התהילה על המחקר שלו. הסיפור שלו פורסם רק 30 שנה אחר כך, בספר זכרונות של אחד מהחוקרים באותו מרכז, ומאז הפך לאגדה. וכמו כל אגדה, זו אכן קצת אגדה אבל בניגוד להרגל שלי ושל הנ"מ הגרמני ליירט דברים, הפעם אני בוחר להשאיר אותה לטוס בשמי הארץ.
אז איך הסיפור היפה הזה על ספיטפייר קשור לספוטיפיי? כשאנחנו יוצרים משהו, אנחנו נוטים לחלוק את היצירה קודם כל עם אנשים שקרובים לנו וחושבים כמונו. לא במפתיע, נקבל הרבה פעמים עידוד וביקורות חיוביות כמעין תיבת הדהוד או echo chamber למחשבות שלנו. אלו התגובות ששורדות ומגיעות אלינו ומעודדות אותנו להמשיך לכתוב שירה ווגונית, שהיא כידוע לכל קורא של דגלאס אדאמס, סוג השירה השלישי הכי גרוע ביקום. הילדה שלי למשל מרבה לצייר בזמן האחרון ארנבים קורצים. למה קורצים? לא שאלתי. אני קהל שבוי. אבל אני חושש לפעמים לפרסם את היצירות שלה מעבר לגבולות המקרר. מה אם המבקרים במוזיאון ייתנו ביקורת שלילית על הרגלי הקריצה שלה וזה יפגע בנפשה הרכה? והנה ההקשר לנטפריקס:
עד עכשיו הפודקאסט קיבל הרבה ביקורות תומכות וחיוביות מהקהילה שנתנו לי את הכוח להמשיך ולהציף את אהבתי לרשתות ושנאתי לרשימות. אבל הקטע עם קהילות זה שהן מבוססות על הומופיליה, כלומר, קהילה ברשת היא קבוצה של אנשים שחולקים מכנה משותף כלשהו. אני מתלהב מהביקורות החיוביות כי הן אלה ששרדו להגיע אלי. הקרובים והיקרים לי שפחות התלהבו פשוט בחרו לא להציף את הביקורת. הרי למה להסתבך? מה זה פה, הוואטסאפ של הגן שאפשר לפתוח ג'ורה על אנשים בלי השלכות? מה שזה אומר זה שברגע שנקבל אינדיקציה שמישהו לא חולק איתנו את אותו מכנה משותף, ולמעשה, הוא מוכן אפילו להשקיע אנרגיה כדי להראות לנו את זה, זה כנראה סימן שהגענו לפיתחה של קהילה אחרת. זה קרה כשמישהי או מישהו עם Betweenness גבוה, כלומר, צומת ברשת שמהווה גשר בין קהילות, החליטו להעביר את הפודקאסט הלאה. מה שניתן להסיק מזה הוא שהשמועה על נטפריקס ומדע הרשתות מתפשטת ומתחילה לחצות קהילות. ומה לעשות, כשמתפשטים, נתקלים גם בהתנגדות. תשאלו כל איש ערום שרץ אי פעם לתוך מגרש כדורגל.
אז רגע לפני שנעבור לדירוג המערכות, אמרנו שלקבל דירוג מאחוז בודד של מאזינים עונה להגדרה של התפלגות זנב ארוך וזה נורמלי וטבעי. אבל האם זה אנושי? תלוי איך מגדירים אנושי וטבעי. במובן המילולי, יובל נח הררי מגדיר טבעי כל דבר שקורה או יכול לקרות. אם זה קרה, הרי זה כי הטבע איפשר זאת ולכן זה טבעי. אם נוריד קצת את הבולד מהשוליים של ההגדרה הזו, אז זה ייתן לנו מקום להתפעל מעצמנו: למשל זה שבני אדם מסוגלים להיכנס לצינורות מתכת, לעוף בתוכם מסביב לכדור הארץ ולנחות בשלום, זה הישג שאנחנו חוגגים יום יום. לא פלא שאחרי טיסה אנחנו נדרשים לדחוף מטוש לאף להזכיר לנו שאנחנו רק בני תמותה. אבל יובל נח הררי צודק - טיסה היא אפשרית ולכן טבעית, כלומר, לא ניצחנו את הטבע. רק ניצלנו את הטבע. וניצול זה משהו שכולנו נסכים שהוא אנושי מאד. אבל מה לגבי נצחון על הטבע? יש בכלל כזה דבר?
כנראה שלא, אבל עצם הניסיון נשמע לי כמו תמצית ההגדרה, או הטרגדיה, של מהו אנושי. אז מכיוון שנטפריקס הוא פודקאסט ללא מטרות רווח, והוא נהנה בעיקר מהדירוגים שאתם נותנות ונותנים – תנו לאנושי שבתוככם לנצח את הנצחון הקטן הזה. תילחמו בטבע שמכתיב לכם לא לעשות את זה – ותלחצו על הכפתור לדרג.
אז זו היתה הההקדמה לנושא הדירוג שנעסוק בו בהקשר של מערכות לניתוח רשת. המערכות בפרק הזה זוכות לפרק נפרד מפני שמכל מיני סיבות הן או הרבה פחות פופולריות או שהן צריכות להיות הרבה פחות פופולריות. זו גם הסיבה שאת הפרטים המלאים עליהן נשמור בעיקר לבלוג ההרחבות, ופה נתייחס רק ל-juicy stuff. אבל רגע, אם זה המצב, אז למה בכלל לטרוח?
אז דווקא יש הרבה דברים שניתן ללמוד מהן.
אבל זו ההזדמנות לתת הבהרה חשובה לפרק הזה ובכלל:
זה לא חובה לשמוע אותם, אבל זה יבהיר הרבה מאד מהדברים שנאמרים כאן, כמו למשל מהו חוק החזקה, מדדי מרכזיות, חלוקה לקהילות וכדומה.
לגבי הפרק הזה ספציפית, ממליץ לשמוע את פרקים 21 ו-22 קודם כי שם התחלנו את הסדרה בנושא מערכות לניתוח רשת ופה נרחיב ונסכם.
אוקי, עד עכשיו סקרנו, כולל Gephi, חמש מערכות שמהוות את המיינסטרים למחקר רשתות נגיש. בפרק הזה תיכננתי להציג את 7 המערכות שנותרו, אבל בזכות הפרק הקודם, פנו אלי וגילו לי שיש מערכת נוספת, אז יצא לנו 8 סה"כ. ועכשיו לשאלה הגדולה, למה לסקור אותן מלכתחילה? אז קודם כל, כי בסוף הפרק תהיה לנו ההזדמנות לסיים את הסדרה בטבלה האולטימטיבית שתכריע, מי המערכת שתשלוט בכולן? ואני מבטיח שהגמר יהיה מפתיע. למי שפחות בקטע של ריאליטי ויותר בקטע של רשתות, אז יהיו לנו פה לא מעט הזדמנויות למידה. למשל, דרך המערכות האלה נחשף למהו גרף ידע ובמה הוא שונה מרשתות רגילות. בנוסף, נזכיר מה זה Random Walks או "שיטוט ברשת" ומה הקשר בינו לבין מטריצות, עליהן דיברנו בפרק 21. ואפרופו מטריצות, בסוף הפרק נספר על יתרון משמעותי שיש למטריצות על פני גרפים, שלא הזכרנו בפרקים הקודמים.
ואחרון, לחובבי ההיסטוריה, נדבר פה קצת על מערכות ניתוח הרשת הראשונות שתתפלאו, אבל חלקן שרדו עד ימינו. שיבדלו לחיים ארוכים? נדבר גם על זה.
את הפרק נתחיל עם מערכות ה-web שאיתן סיימנו את הפרק הקודם.
למעונינים במאפיינים כלליים של מערכות אלו, אני ממליץ לחזור משבצת אחת אחורה לפרק 22.
והמערכת הראשונה שנדבר עליה היא Graph Commons. מה שמייחד אותה מכל שאר המערכות שסקרנו ונסקור הוא שהיא מתיימרת לייצר גרף ידע, או Knowledge Graph שזה מונח שבטוח נעסוק בו מתישהו לעומק בפרק עתידי. למה מתיימרת? נשמור משהו לסוף.
גרף ידע, בשונה מרשתות סקרנו עד היום, יהיה לרוב מורכב מכמה סוגים של צמתים וכמה סוגים של קשתות.
דוגמא למודל פשוט לרשת כזו שמכיל ארבעה סוגי צמתים היא מודל P-O-L-E שנקרא כך כי הוא מורכב מ: Person-Object-Location-Event. סוגי קשתות אפשריות במודל כזה יכולות להיות למשל קשת מסוג חברות בין אנשים, קשת מסוג בעלות של אדם על חפץ וכד'.
גרף מסוג זה יהיה בדרך כלל גם מולטיגרף, כלומר, הוא כזה שמאפשר מספר קשתות בין אותם שני צמתים.
לדוגמא, אפשר לדמיין ברשת שני צמתים מסוג בן אדם שיש בינהם מספר סוגים של קשתות אוקשרים שנרצה לראות בו זמנית, למשל, קשת מסוג של פגישה, קשת מסוג של שיחת טלפון וקשת של חברות.
כבר עכשיו אנחנו הולכים פה על חוט דק או יותר נכון – קו פרשת מים – בין מערכות לניתוח רשת לבין מערכות שמאפשרות לייצר גרף ידע ומכאן כבר קצרה הדרך לדאטהבייסים גרפיים.
אז נשאיר משהו לפרקים עתידיים, ורק נזכיר קצת מהחסרונות והיתרונות של גרפים כאלה.
היתרון של גרף ידע הוא כמובן במידע ובידע הנוסף שהוא מאפשר לנו לראות על הצמתים והקשתות. במובנים מסויימים, גרף הידע מקרב אותנו לתיאור מדוייק יותר של המציאות שבה לכולנו יש קשרים מסוגים שונים לדברים מסוגים שונים. החיסרון הוא שנתקשה להפעיל עליו אלגוריתמיקת רשת, וכבר נתקלנו בזה בעבר כשדיברנו על רשתות שהן Bipartite או מורכבות משני סוגי צמתים. הסיבה לכך היא שאלגוריתמיקת ה-SNA בנויה על ההנחה שכל הקשרים הם מאותו סוג, כלומר, שהקשתות ממושקלות באופן שווה. למשל, גרף חברות בפייסבוק. כל קשר מוגדר כאותו סוג קשר, ולכן, בהיעדר מידע אחר, כל הקשרים שווים, ומשקלם לרוב יהיה 1. גם ברשת ממושקלת שבה אנחנו נספור כמות הודעות בין צמתים, אז כל הודעה שווה לכל הודעה, ואם צומת שלח לצומת אחר 4 הודעות, המשקל של הקשר יהיה שווה 4 והוא יהיה בהגדרה חזק פי 2 מקשר בין צמתים ששלחו רק שתי הודעות ביניהם. אבל מה קורה במצב בו הקשרים שונים במהותם ובמשקלם? ניתן דוגמא: נניח שיש לנו רשת שמחברת מספר אנשים והיא מכילה סוגים שונים של קשרים, למשל, חברות בפייסבוק, הודעות בוואטסאפ, פגישות אישיות ושמירה משותפת על חתול. הרשת הזו מתארת סבך קשרים שאכן יותר מדמה את המציאות, אבל זה מציב בפנינו בעיה. ברשת הזו, לכל סוג קשר יש קונטקסט שונה ולא ניתן אובייקטיבית להגדיר משקל יחסי בין סוגי הקשרים.
אם היינו מנתחים רק את רשת הוואטסאפ של אותם אנשים, סביר להניח ש-10 הודעות יעידו על קשר חזק יותר מהודעה אחת. אבל הערבוב של סוגי הקשרים באותה רשת, מכניס אותנו לויכוח סובייקטיבי לגבי משקלי הקשרים. האם פגישה פנים אל פנים חזקה יותר ממשמורת משותפת על חתול או מ-5 הודעות בוואטסאפ?
סוגיית הסובייקטיביות של המשקל מזכירה בדיוק את אותה הבעיה שהייתה לנו עם קביעת המשקלים ברשתות המסומנות כשדיברנו על Pajek. אז שאלנו כמה חיובי או שלילי נדרש להיות משקל הקשר? מי מחליט? וגם, מה זה אומר אם לצומת יש הרבה קשרים שליליים? שיש לו דרגה גבוהה? זה נשמע קצת סותר את הרעיון מאחורי המהות המקורית של המושג "דרגה" ברשת.
כמו שניתן להבין, מבחינה טכנית, אנחנו יכולים להפעיל את האלגוריתמיקה הרגילה על הרשת, אבל המשמעות של התוצאות כבר לא יהיו לנו כל כך ברורות, אפילו במדדים פשוטים כמו דרגה,
שלא לדבר על חלוקת הצמתים לקהילות.
אז במקרים מסויימים אפשר לפתור את זה על ידי קיפול הרשת או projection, מושג שהזכרנו מספר פעמים בעבר, אבל זה דורש שברשת המקורית לא יהיו קשרים בין צמתים מאותו סוג. אבל זה פחות הסיפור של גרף ידע. העוצמה שלו באה לידי ביטוי בדברים אחרים, למשל, לבצע אגרגציה של צמתים לפי התיוגים שלהם וכך לייצר גרף קבוצות. אני מבדיל גרף זה מגרף הקהילות שכן בגרף קהילות אנחנו מבצעים אגרגציה על סמך הקשרים בין הצמתים ואילו כאן אנחנו מבצעים אגרגציה על סמך התכונות של הצמתים. גרף ידע יכול גם לספק לנו מסלולים קצרים בין הישויות השונות בגרף ועוד, אבל מכיוון שיכולות אלה לא באות לידי ביטוי במערכת המדוברת, לא נרחיב עליהם. לכן, מבחינת אלגוריתמיקה של רשתות, זה לא מפתיע של- GraphCommons אין הרבה מה להציע. המערכת מחשבת דרגה של צמתים באופן אוטומטי ומאפשרת חלוקת קהילות לפי לובאין ופחות או יותר זה הכל. לכן גם אין כל כך משמעות לתהליך איטרטיבי במערכת. לכן זה קצת מאכזב שהמערכת מכריחה את המשתמשים להכניס נתונים לגבי סוגי הצמתים וסוגי הקשתות אבל בסופו של יום - לא מאפשרת שימוש אמיתי ברשת כגרף ידע, למעט היכולת לייצר מולטיגרף. בנוסף, לפי הברושור, המערכת יכולה להתמודד עם עד 4,000 צמתים. אבל בפועל, היא חוותה האטה משמעותית כבר אחרי העלאה של רשת עם 2,500 צמתים, שזה די מעט כשמדובר בגרף ידע שאמור לכלול סוגים רבים של צמתים. רק אנקדוטה קצרה לקראת סיום: מכיוון שהמערכת נוצרה בתורכיה, בגלריה של הרשתות שהיא מציגה ניתן לראות מידע רב על המערכת הפוליטית התוססת שם. אז שורה תחתונה: יתרונה המרכזי של Graphcommons הוא בכך שהיא סיפקה לנו תירוץ להזכיר את המושגים גרף ידע ומולטיגרף. זה לא מעט.
המערכת הבאה היא עוד מערכת web בשם Palladio. זו מערכת שנועדה לסייע לחוקרים במדעי הרוח והחברה להציג את הנתונים שלהם כרשת. במידה ויש לדאטה תגית זמן או מיקום, היא מאפשרת לראות ציר זמן או את פריסת הצמתים על מפה. מבחינת אלגוריתמיקה, יש לה רק את האלגוריתמיקה הבסיסית, לא כולל Closeness. אם מצאתם בבוידעם תיבה עם עשרות מכתבים מהתקופה העותמאנית ותרצו לנתח אותם רשתית – זו המערכת בשבילכם. הבעיה היא שאם בתיבה יש יותר מאלף מכתבים, המערכת כבר לא תעמוד בזה. בעיה נוספת היא שגם בשביל מערכת שמיועדת לאנשים מהמדעים הפחות מדוייקים, היא הרבה פחות אינטואיטיבית משהייתי מצפה.
מערכת ה-web האחרונה היא מערכת שגיליתי דרך הפנייה שקיבלתי בלינקדאין ושמה Graphistry. לאלה מאיתנו שהם נטולי ענן או רצון לשלם, Graphistry מציעה בגרסה החינמית ממשק לטעינת אקסלים, ואפילו כאלה בגודל של עשרות מגה. בתמורה, המערכת מאפשרת להציג כמעט מיידית תמונה רשתית שלהם, כולל היסטוגרמות שונות וחישוב מדדים. הסוד הוא שברקע הם משתמשים ב-GPU שאלו כרטיסים גרפיים שמאפשרים חישוב מהיר. אלו אותם כרטיסים שאיפשרו את פריצת הדרך בעולם למידת המכונה שהייתה זקוקה לכח חישוב חזק כדי להתממש. העניין הוא שמבחינת אלגוריתמיקה ומדדים, המדד היחיד הזמין הוא דרגה והחלוקה לקהילות באה לידי ביטוי רק ויזואלית, כלומר, הצמתים נצבעים לפי הקהילה. מה שכן, אפשר לפלטר בתצוגה רק את הקהילות שנרצה לראות. אז מה היתרון של Graphistry? היא המערכת היחידה שתוכל לספק לנו ויזואליזציה לרשתות ענק. קצת כמו שקיעות בחוף געש: זה מאד יפה, אבל אין הרבה מה לעשות עם זה מבחינת ניתוח רשתי.
על המערכת הבאה שנקראת Visone (שזה אגב "חורפן" באיטלקית), מעולם לא שמעתי עד ש-Renaud Lambiott הזכיר אותה בדיון צד בכנס הרשתות העולמי. רנה הוא אחד מכותבי המאמר המקורי של אלגוריתם הלובאין ובדיון הוא ציין שיש לו פינה חמה בלב לתוכנה הזו. הסתכלתי עליה והיא נראתה כמו קרוב משפחה מכוער של Gephi וזה כבר אומר הרבה. שתיהן כתובות ב-Java, ולכן משדרות הזנחה אבל ב-Visone נראה שלא השקיעו הרבה בעיצוב מאז היווסדה ב-2002 או בתחזוקה שלה. ואז, לצורך התחקיר, חזרתי אליה ובצירוף מקרים מדהים, היא עברה שדרוג באוגוסט 2021 וכך זכתה לאזכור כאן. שלא נתבלבל – היא נראית בדיוק אותו דבר - לא משהו - אבל היא עובדת הרבה יותר חלק.
מערת Visone תומכת בקבצי CSV בלבד ומייצאת קבצים רק בפורמט TXT מה שאומר שקשה יותר לעשות מחקרי המשך על הפלט. גם טעינת הזיהויים לרשת, אגב, מצריך שימוש בממשק שונה מטעינת הרשת עצמה. תהליך מיותר שסובל לפעמים גם מבאגים.
משם והלאה הממשק יחסית פשוט והכותרות של הפונקציות הן די ברורות ומסודרות בצורה נוחה, למעט טבלת הצמתים/קשתות שדורשת עבודה דרך תפריטים, בדומה לPajek וזה קצת לא נוח.
השמצנו מספיק, מה בכל זאת סבבה בה? אז מבחינת ויזואליזציה, ברירת המחדל של ה-layout של המערכת הוא טוב מאד ואחת מהתכונות שמאד אהבתי זה תכונה שמאפשרת לייצר אוטומטית פוליגון סביב כל קהילה שהאלגוריתם מגלה ברשת. כך אפשר להזיז את הקהילות כפוליגון ולראות את גרף הקהילות והצמתים במשולב. כמו בGephi, גם ל-Visone יש יכולת לבצע קיפול או projection של רשת והיא גם מאפשרת עוד מדדים שאין ב-Gephi. הבעיה היא שהמדדים המתקדמים שVisone- מציעה יעזרו רק למי שיודע בדיוק מה זה אומר Simmelian Backbone למשל. וגם מי שמבין מה זה אומר, ימצא שלא טריויאלי לעשות את זה בלי עזרה מהמדריכים של המערכת. כמו בGephi, גם Visone מאפשרת לבצע ניתוח דינאמי ויזואלי של רשתות אבל לדעתי הוא מסורבל יותר מזה של Gephi. לכאורה, יש ב-Visone יכולת יותר מתקדמת לניתוח דינאמי של רשת, שאמורה לספק סטטיסטיקות דינאמיות על הרשת ועוד יכולות כאלה ואחרות. הפיצ'ר נקרא Event networks ומי שהצליח להשמיש אותו, אשמח שיראה לי איך עושים את זה.
מבחינת ספיקה, כלומר, התמודדות עם רשתות גדולות, אז כשחזרתי למערכת הזו, אחרי מתיחת הפנים שעברה, פתאום גיליתי שהיא מאפשרת להעלות גם רשת של 20 אלף צמתים. נכון, לוקח לה כמה שניות להתאפס עליה, והיא מציגה אותה ברזולוציה נמוכה כדי לחסוך זמן חישוב, אבל היא עולה. מה שכן, זה מותח אותה למקסימום. ניסיון להוסיף עוד רשת קטנה במקביל נתקל בסירוב מוחלט מצד המערכת.
אז לסיכום, היתרון של Visone על Gephi הוא בעיקר בגרף הקהילות ובפוטנציאל, שכרגע מבחינתי לא ממומש, של ניתוח דינאמי אמיתי ולא רק ויזואלי. החיסרון המשמעותי הוא ש-Visone מרגישה קצת כמו זן מוחלש של Gephi.
ועכשיו, לפינה ההיסטורית ולמערכת NetDraw: NetDraw היא רכיב חינמי בתוך מערכת לא חינמית אבל מוכרת מאד לחוקרים ממדעי החברה שנקראת UCINET. למרות שהיא רק רכיב, אפשר להתקין אותה עצמונית. את UCINET אני מזכיר כאן רק בגלל שהיא אולי המערכת הראשונה לניתוח רשתי, והיא נוסדה על ידי שתי אושיות מתחום ה-SNA: הראשון הוא לינטון פרימן, שכתב ב-1978 מאמר יסוד על מדדי מרכזיות שצוטט כ-20 אלף פעם והוא היה זה שהקים את המערכת. מאוחר יותר הצטרף אליו סטיבן בורגטי, שהוא אחד החוקרים הידועים ביותר בתחום ה-SNA, שהקים כמעט במקביל מערכת אחרת. השניים החליטו לאחד מאמצים תחת השם UCINET, כשאחד מרכיבי המערכת שזמין גם חינמית הוא NetDraw. כשמסתכלים על NetDraw, אי אפשר להתבלבל. זו אכן נראית כמו מערכת משנות השמונים. זה גם מסביר את הקושי הראשון שניתקל בו והוא שניתן לטעון אליה רק קבצי TXT בפורמט UCINET או Pajek. אבל זה גם אומר שהיא המערכת כמעט הכי פשוטה שאפשר לדמיין. המערכת כולה נמצאת במסך אחד שמכיל אך ורק ויזואליזציה והיא מעולה אם אתם אוהבים לשחק פונג או snake. אם אתם לא יודעים על מה אני מדבר, סימן שלא תאהבו מה שתראו. מה שזה גם אומר זה שהממשק שלה סופר אינטואיטיבי עם סרגל כלים מאד ברור והיא מאפשרת את כל האלגוריתמיקה הבסיסית. מכיוון שהיא נבנתה לטובת ניתוח רשתות חברתיות במדעי החברה, היא גם מכילה פיצ'רים ייעודיים לניתוח חברתי, למשל, זיהוי חורים מבניים ברשת ומדדי מרכזיות נוספים שהומצאו ברבות השנים ע"י חוקרי רשתות משועממים. מכיוון שמדובר במערכת מיושנת מאד, גם שאר האלגוריתמיקה שלה היא מאד מיושנת, ונראה שהאלגוריתם החדש ביותר שם הוא אלגוריתם החלוקה לקהילות של גירבן-ניומן מ-2004 ודי לחכימא.
היא לכאורה יכולה לנתח רשת של עד כאלף צמתים, אבל בגלל שאין בה טבלה או גריד לניהול הצמתים והקשתות, אין הרבה מה לעשות בה עם רשת של יותר מעשרה צמתים.
אז אם את או אתה חוקרי רשתות חברתיות וגם חובבי וינטז' – זו המערכת בשבילכם.
עברנו 5, נשארו עוד 3. ונמשיך עם Tulip: Tulip ואני התחלנו לא טוב, כשרק ההתקנה לקחה 1.5 ג'יגה ועל הדרך שתתה לי את כל הסוללה מהלפטופ. עכשיו נשאלת השאלה, האם היה שווה את זה? במילה אחת – לא. אבל במאה מילים?
למרות העיצוב המודרני שלה, המערכת בנויה בצורה מאד מוזרה. יש לה תפריט אחד שמכיל רשימה ארוכה של כל הפקודות. שמחה לגוללים. מצד שני, ההסברים על כל פונקציה הם מאד ברורים. באופן מאד מוזר, המערכת מכילה את כל האלגוריתמיקה הנדרשת למעט מדד ה-Closeness. אבל זה לא היה הדבר היחיד שמוזר. אחרי שהרצתי את האלגוריתמיקה, לא הצלחתי למצוא את התוצאות. זה קצת בעייתי הייתי אומר. כאילו, אני בטוח שהן שם איפשהו. למשל, נתתי למערכת לחשב Betweenness לרשת של 5 אלפים צמתים. לקח לה בערך 2 דקות, אבל זה ניחא. עד עכשיו לא הצלחתי למצוא את התוצאות של אותה שליפה ארוכה, כלומר, איפה מסתתרת תוצאת ה-Betweenness של הצמתים. אז יכול להיות שאני האהבל, אבל האמת, בשלב מסוים כבר לא היה אכפת לי שהמתכנתים של Tulip צוחקים עלי מאחורי הגב.
תכלס, בשביל מערכת כל כך כבדה, הייתי מצפה שהויזואליזציה תהיה מדהימה. במקרה הטוב, היא בינונית. ויותר מזה, היא קורסת לא מעט. אפילו במקרים של רשתות לא גדולות. אני מניח שהיא יציבה לרשתות קטנות. עכשיו, מי שגר בבית מזכוכית, כמו למשל משתמשי Gephi, שלא יתחילו לזרוק אבנים על מערכות לא יציבות. וזה נכון, גם ב-Gephi יש באגים שדורשים סגירה/פתיחה, אבל מכיוון שTulip היא מערכת כבדה, פתיחה וסגירה של המערכת לוקחים זמן.
אז מה בכל זאת יש שם?
היתרון, כנראה היחיד, של Tulip הוא באלגוריתמיקה מתורת הגרפים. המערכת מאפשרת ליצור סוגים רבים של גרפים שונים ומתמקדת באלגוריתמיקה הקשורה לגרפים ופחות לרשתות, למשל, תכונות שקשורות לגרף מסוג DAG (שזה Directed A-Cyclic Graph) שאלו גרפים או רשתות כיווניות שזורמות רק בכיוון אחד. בעולם האמיתי, רשתות כאלה יהיו בדרך כלל תשתיות כמו חשמל, ביוב, מים או משתמשים שבורחים מ-Tulip.
המערכת הלפני אחרונה שנסקור היא SocNetv: צריך לתת הקדמה קצרה על המערכת הזו, כי מרגע שמבינים את זה, מבינים הכל: SocNetV נועדה לרשתות קטנות. מה זה קטנות – זעירות! הרמז הוא בשם. שמתי לב שכשתוכנה מגדירה את עצמה כתוכנת SNA, בדגש על ה-S כלומר ה-Social, זה סאבטקסט לזה שהיא תתמוך רק במחקר של רשתות קטנות מאד. כנראה שבמדעי החברה יש חשש מובנה מהתקהלויות גדולות. ב-SocNetV זה בא לידי ביטוי באופן מעצבן במיוחד: מרגע שהזנתם את הצמתים, המערכת ממספרת אותם (מ-1 והלאה) ומעכשיו והלאה היא תעבוד בעיקר עם מספרי הצמתים האלה, כלומר, בחלק מהניתוחים תצטרכו לרשום בצד או לבדוק בתצוגה הויזואלית מה התיוג שהמערכת נתנה לכל צומת. אפשר להציג את התיוגים המקוריים אבל הם לא נוחים לתצוגה והם לא מופיעים בפלטי המערכת. מצד אחד, זה מאד פוליטיקלי קורקט מצד SocNetV שהיא לא מוכנה שאף אחד ישים תגית על הצמתים שלה. מצד שני, יש פה דיקטטורה של פוליטיקת הזהויות. רק ל-SocNetV מותר לקבוע. לכן זה גם לא מפתיע שSocNetV לא סוחבת גם עם רשת של מאות צמתים. היא מיועדת לרשתות כה אינטימיות עד שמי שחוקר אותן מסוגל לזהות כל אחד מהצמתים על סמך העיגול בלבד.
סיבה אפשרית לפיצ'ר המוזר הזה זה שנראה ש-SocNetV מיועדת לייצור פלטים למעבדת מחקר, ולא לביצוע מחקר איטרטיבי. כך יכול להיות שהתכונה הזו של העלמת התיוגים היא למעשה פיצ'ר שמאפשר אנונימיזציה אוטומטית של הרשת. עדות נוספת לכך ש-SocNetV היא יותר מחשבון ממערכת מחקרית זה שאי אפשר לעשות תהליך איטרטיבי ב-SocNetV והויזואליזציה שלה לא נוחה לתפעול. התוצר שלה זה רק פלטים בתצורת popup שניתן לשמור. מרגע שמבינים את זה ומתייחסים למערכת כמו מחשבון מדעי, זה ממש נחמד למצוא בה פיצ'רים מורכבים שמונגשים בצורה נוחה של הקלקה על כפתור. לזכותה ייאמר ש-SocNetV עושה שימוש בשפה פשוטה ונוחה והפיצ'רים מסודרים בצורה נוחה ואינטואיטיבית עם הסברים. יש בה את כל האלגוריתמיקה הבסיסית אבל אין בה ממש גילוי קהילות, שזה לא מפתיע, כי היא מתמודדת עם רשתות קטנות מאד. מה שכן היא מאפשרת זה לזהות טריאדות וקליקות. וחוצמזה, באלגוריתמיקות שמצריכות מטריצות, SocNetV דווקא יודעת להציע דברים, למשל אלגוריתמיקה להשוואות ודמיון בין צמתים או Embedding של צמתים ועוד כמה כלים שהם טיפה הארדקור כמו למשל מטריצת לפלסיאן שזה מושג שלתחושתי לא נדבר עליו לעולם.
חדי האוזן ישימו לב שיש לי יחסים אמביוולנטיים עם מטריצות, אבל אם כבר פתחנו את זה, אז יש מקום אחד שבו למטריצות יש יתרון גם למשתמש הפשוט. זה ממש לא אינטואיטיבי להגיד אבל למטריצה יש יתרון ב... ויזואליזציה.
כאן אני רוצה לנצל את ההזדמנות להמליץ על הניוזלטר של כריסטיאן מיילס בשם "source/target" העוסק בין השאר בויזואליזציה של רשתות. שם מצאתי קישור למאמר מעניין שבחן שיטות של ניתוח רשת ויזואלי בעזרת קבוצה של נסיינים. למרות שהנסיינים כמעט אף פעם לא עשו שימוש ויזואלי קודם במטריצות, יצא שברוב המקרים, המטריצה איפשרה להם להעריך את הרשת בצורה טובה יותר. הטיעון של כותבי המאמר היה שלא משנה כמה צפופה הרשת, במטריצות אין את הבעיה של צמתים וקשתות שעולים אחד על השני ומפריעים לניתוח. וזה טיעון לא רע. אבל מכיוון שאף תוכנה שסקרתי לא מאפשרת משחק ויזואלי עם המטריצה, נשאיר את זה ברמה התיאורטית כרגע.
מה זהו?
כן, נשארה לנו רק מערכת אחת.
Infomap:
InfoMap היא מערכת web'ית, אבל שונה מאד מכל שאר המערכות שצויינו כאן.
InfoMap יודעת לעשות כמעט רק דבר אחד וזה להשתמש באלגוריתם InfoMap לחלוקה לקהילות.
אז מה הקטע?
העניין הוא שהמערכת היא בעצם רק הביסטרו. המסעדה האמיתית היא הספרייה של האלגוריתם InfoMap שנועדה למפתחים. האתר הוא רק בונוס שהוקם ע"י כותבי האלגוריתם, מרטין רוזוול וקארל ברגסטרום (Rosvall & Bergstrom) שהם חוקרי רשת ידועים.
התלבטתי אם בכלל להכניס את InfoMap לפרק הרי ניתן להריץ את האלגוריתם גם ב-CytoScape, אז בשביל מה? הסיבה הפרקטית היא שהאתר של InfoMap מאפשר, בניגוד ל-CytoScape, לנתח גם רשתות של עשרות אלפי צמתים. אבל הסיבה האמיתית היא שזה נותן לנו הזדמנות לדבר קצת על אלגוריתמיקת Random Walk ש-InfoMap עושה בה שימוש. אבל לפני שנצלול לאלגוריתמיקה, ניתן סקירה קצרה של המערכת:
מבחינת הזנה, ניתן להזין רק קבצי TXT בפורמט הלא טריויאלי של Pajek.
אבל מרגע שהכל מוזן, נדרש רק להקליק על כפתור ה"נתח" והניתוח מסתיים תוך זמן קצר.
ניתן לשנות הרבה מאד פרמטרים בדרך החישוב של האלגוריתם, למשל, לשנות את רזולוציית הקהילות, אבל מניח שרובנו לא נידרש לכך, או במילים אחרות, לא נבין איך לעשות את זה ונסתפק במה שנקבל. ומה שנקבל זה ויזואליזציה יפה שמשלבת בין גרף הקהילות לגרף הצמתים ומאפשרת zoom in-out מאד מרשים ונוח. בנוסף, נקבל פלט של התוצאות, כלומר, איזה צומת שוייך לאיזו קהילה וכבונוס, גם מדד PageRank לכל צומת. למה דווקא PageRank? עוד מעט נבין.
אז עכשיו בואו נצלול קצת לסיפור של ה-Random Walk, נסביר איך הוא קשור למטריצות ולמה InfoMap מצליחה לתת לנו תשובה מהירה למרות שחישוב של מטריצות הוא איטי. נתחיל בלהזכיר מה זה Random Walk או שוטטות אקראית ברשת (שנקראת גם: הליכת שיכור): נדמיין שאנחנו משוטטים ברשת לאורך הקשתות שלה. אנחנו נתחיל בצומת רנדומלי ונבחר באופן רנדומלי לאיזה צומת שכן נמשיך. במקרה של רשת מכוונת, נוכל להגיע לשכן רק אם הצומת שלנו מצביע עליו. במהלך השיטוט נגלה שישנם צמתים ברשת שבהם נעבור מספר רב של פעמים. הסיבה לכך היא שאלו צמתים מרכזיים ברשת וכך מדד השיטוט יכול לשמש גם כמדד מרכזיות וזה בגדול דומה לרעיון מאחורי PageRank. לקצת יותר פירוט, מוזמנים לחזור לפרק 4 בנושא מדדי מרכזיות. לאורך זמן, נגלה שבשיטוט שלנו אנחנו נתקעים מדי פעם בחלקים אחרים של הרשת. אנחנו נשוטט בין הקשרים שבאותו איזור זמן רב, עד שנמצא קשת שתוציא אותנו החוצה ממנו. בסבירות גבוהה, הקשת תיקח אותנו לאיזור אחר בגרף שגם בו ניתקע זמן רב בגלל צפיפות הקשרים שבו. אותם איזורים צפופים של הרשת הם בעצם הקהילות, והסיבה שאנחנו נתקעים בהן זה כי הקשרים בתוכן צפופים ויש רק מעט יחסית קשתות שיכולות להוציא אותנו משם. כך אנו בעצם משתמשים בשוטטות כדי לגלות את הקהילות ברשת.
זו דרך נחמדה לחשוב על האלגוריתם, אבל הדרך שבה הוא באמת פועל היא קצת יותר מורכבת.
וכאן נכנסת המטריצה.
את החישוב של ה-Random Walk נעשה על מטריצה, בשיטה שנקראת גם Markov Clustering.
(מזמין לרענן את הזיכרון בנושא המטריצות בפרק 21).
מכיוון שאנחנו עוסקים בפרקים אלו ב-DIY, את כל התהליך שתראו ניתן לעשות גם באקסל:
שלב 1: מרשת למטריצה
נמיר את הגרף שלנו למטריצה:
מכיוון שיש לנו שבעה צמתים בגרף, אנו נזדקק למטריצה של 7 על 7. תשומת לב שהקשתות בגרף שלנו ממושקלות, למשל, הקשת בין B ל-C משקלה 3 ולכן בתא בטבלה שמצטלב בין B ל-C נרשום "3". נשים לב שהגרף שלנו הוא לא-מכוון (Undirected) ולכן המטריצה שלנו היא סימטרית כי כל הקשרים ברשת שהבאנו הם הדדיים. דבר אחרון, הצמתים שלנו אינם קשורים לעצמם (ללא "קשת עצמית") ולכן קיבלנו אלכסון "0".
שלב 2: נירמול המטריצה
עכשיו שהקשרים שלנו הם בתצורת מטריצה, ניקח כל עמודה וננרמל אותה, כלומר,
נחבר את המספרים בכל עמודה ונחלק בסכום שנקבל כל תא באותה עמודה.
למשל, סך המספרים בעמודה A = 3 + 3 + 2 = 8
ולכן נחלק את כל המספרים בעמודה A ב-8 (0/8, 0/8, 0/8, 2/8, 3/8, 3/8, 0/8), ואלה תוצאות האמת:
שלב 3: הכפלת המטריצה
כעת, נעלה את המטריצה בחזקה, או בפשטות (אם יש דבר כזה במטריצות), נכפיל את המטריצה בעצמה. פעולה זו נקראת הרחבה (Expansion) ומטרתה, באופן ציורי, לבצע מעין "היכרות" בין כלל הצמתים ברשת. זהו למעשה החלק של ה"שיטוט" (Random Walk) בתהליך. איך כופלים מטריצה? נכפול את השורה הראשונה בעמודה הראשונה ונחבר את התוצאות:
A1*A1 + B1*A2 + C1*A3…
נכפול את השורה הראשונה בעמודה השנייה ונחבר את התוצאות:
A1*B1 + B1*B2 + C1*B3…
וכך נכפול את השורה הראשונה בכל העמודות ונחבר את התוצאות.
את התוצאות שחיברנו נשים בשורה הראשונה של המטריצה החדשה שקיבלנו:
תוצרי החיבור של כפל שורה1 עם עמ'1 | תוצרי החיבור של כפל שורה1 עם עמ'2 | תוצרי החיבור של כפל שורה1 עם עמ'3 | וכן הלאה... | ... | ... | |
לכשנסיים, הגיע תורה של השורה השנייה להכיר את הצמתים ברשת:
נכפול את השורה השנייה בעמודה הראשונה ונחבר את התוצאות:
A*2A1 + B2*A2 + C2*A3…
נכפול את השורה השנייה בעמודה השנייה ונחבר את התוצאות:
A2*B1 + B2*B2 + C2*B3…
וכך נכפול את השורה השנייה בכל העמודות ונחבר את התוצאות.
את התוצאות שחיברנו נשים בשורה השנייה של המטריצה החדשה שקיבלנו:
תוצרי החיבור של כפל שורה1 עם עמ'1 | תוצרי החיבור של כפל שורה1 עם עמ'2 | תוצרי החיבור של כפל שורה1 עם עמ'3 | ... | ... | ... | |
תוצרי החיבור של כפל שורה2 עם עמ'1 | תוצרי החיבור של כפל שורה2 עם עמ'2 | תוצרי החיבור של כפל שורה2 עם עמ'3 | וכן הלאה... | ... | ... | |
כך נמשיך עד שנמלא מטריצה חדשה שגם בה 7 עמודות ו-7 שורות:
שימו לב, שבעקבות ההכפלה, אנחנו נראה תופעה משונה. כשנשווה את המטריצה שקיבלנו למטריצה המקורית, אנחנו נראה שהקשרים החזקים שלנו ברשת נחלשו והחלשים התחזקו. למעשה, אנחנו נראה אפילו שהיכן שפעם היה לנו 0 (לא היה קשר בין הצמתים), פתאום מופיע לנו מספר. מה קרה? אז יש לי בשורה מרגשת: רבותיי, זה סימן שהשיטוט התחיל! כל הכפל הזה לא היה לחינם ועכשיו קיבלנו מטריצה שבה תוצר ראשוני של שיטוט האלגוריתם בין הצמתים. אנחנו בשלים לשלב הבא.
שלב 4: העלאה בריבוע ונירמול
כעת אנחנו נעבור על כל עמודה במטריצה החדשה שקיבלנו ונעשה בה שתי פעולות:
נעבור על כל מספר בעמודה ונעלה אותו בריבוע וכך נקבל את המטריצה הבאה:
כשנסיים, ננרמל את המספרים בעמודה בשיטה שעשינו קודם (נחלק כל מספר בסך החיבור בין המספרים בעמודה) ונקבל את התוצאה הבאה:
מה אנחנו מנסים להשיג בכך? המטרה של פעולות אלה היא "לנפח" (Inflation) את הקשרים החזקים ולהחליש את הקשרים החלשים. כך אנחנו "מסבירים" לאלגוריתם המשוטט שהוא צריך לתת דגש לקשרים החזקים שאנו מצפים למצוא בתוך הקהילה ולהחליש את הקשרים החלשים שאנו מצפים למצוא בין הקהילות.
שלב 5: המשך הניפוח
אולי לא תאהבו לשמוע את זה, אבל עכשיו, צריך להתחיל את התהליך מחדש על המטריצה המשודרגת שלנו.
הסיבה לכך היא שזה "התהליך הלימודי" שעובר על האלגוריתם שלנו. התהליך מסייע לנו לנפח את הקשרים החזקים ולהחליש את החלשים. לאחר הסבב השני שעשינו (הכפלה, העלאה בחזקה ונירמול) קיבלנו את המטריצה הבאה:
נוכל לראות עדיין שיש "רעשים" במטריצה אבל התמונה הולכת ומתבהרת והיא תמשיך להתבהר ככל שלא נתייאש וננפח שוב. אחרי הניפוח השלישי, נראה שכר לעמלנו במטריצה הבאה:
עכשיו המספרים כבר מאד קרובים לייצוג הרשתי של הקהילות שחיפשנו: הקשרים החלשים שואפים ל-0 והחזקים ל-1. אנחנו בשלים לשלב האחרון.
שלב 6: עיגול התוצאות וזיהוי הקהילות
את המספרים מהמטריצה הקודמת עיגלנו למספר הקרוב ביותר (רזולוציה של 0.5) וקיבלנו את המטריצה הסופית:
פה אנחנו כבר יכולים לראות שהקשרים החזקים מופיעים כ-1 והחלשים (או הלא קיימים) כ-0. כך מה שנשאר לנו הן הקהילות, כמעין איים מנותקים זה מזה. כל מה שנשאר לנו לעשות עכשיו הוא לרוץ לאורך השורות של המטריצה ושם נראה את הקהילות שלנו (מסומנות במלבן). בחזרה לרשת המקורית שלנו, אנחנו יכולים עכשיו לתייג את הצמתים שלנו לפי הקהילה שלהם: קהילה ראשונה: A, B, C קהילה שנייה: E, F, G
אבל מה לגבי D? צומת D קשור במידה שווה לשתי הקהילות. האם הוא קהילה בפני עצמה?
נשאיר את זה תלוי באוויר כתזכורת לכך ששום דבר לא מושלם.
נכון שהתיאור של השיטוט היה יותר פשוט ואינטואיטיבי? תוסיפו לתחושת הבאסה הכללית שכל התהליך הזה לוקח זמן ולכן אלגוריתם Markov לגילוי קהילות נחשב איטי ומיושן קצת.
אז אחרי כל ההקדמה הזו, מה יש לחגוג את InfoMap?
אז מה שרוזוול וברגסטרום עשו זה לייעל את התהליך ע"י שימוש בשיטת כיווץ שפיתחו שמתבססת על Information Theory. ולמי שמעוניין להבין איך הם בדיוק עשו את זה, אני מאחל חיים ארוכים ונטולי אירועים.
אז בואו נסכם: אחת מהשפעות הקורונה שפחות מדברים עליה זה שלמתכנתים היה כנראה יותר זמן לעשות סדר בבית. במקרה הזה, הרווח של כולנו – הרבה תוכנות של ניתוח רשתי קיבלו לאחרונה booster והן עדכניות וטובות יותר מבעבר.
סה"כ סקרנו 12 מערכות:
מערכות מבוססות Java:
Gephi
CytoScape
Visone
NetDraw
Pajek
מערכות מבוססות web: KUMU
Graph Commons
Palladio Graphistry
InfoMap וגם את
NodeXL
Tulip
SocNetV
ועכשיו, לרשימת הדירוג. האם יש לנו מנצחת בכל הקטגוריות, או מערכת אחת שתשלוט בכולן? אז מזכיר לכולנו שרשימות, הן האויב של הרשתות. רק בדקתי אתכם.ן. לראות דברים ברשימה מוציא את ההקשר מהתוכן. אמנם צירפתי טבלת ציונים להרחבות של הפרק הזה, אבל זה כי אני איש חלש ומושפע בקלות. כדי לפצות ולנסות לשמור על הקשר, הטבלה חולקה לקטגוריות:
ובמקום הראשון בקטגוריה של "המערכת הכי נוחה למשתמש המתחיל" זוכה... NodeXL ובמקום הראשון בקטגוריה של "המערכת הכי טובה לניתוח" זוכה... CytoScape
ובמקום הראשון בקטגוריה של "המערכת הכי טובה למתקדמים" זוכה.. Pajek הפתעה? Gephi לא נמצאת במקום הראשון בשום קטגוריה. אבל בכולן היא נמצאת במקום השני או השלישי.
אז הייתי מנסח את זה ככה: אם רק התחלתם לעשות ניתוחי רשת ואתם רוצים למשש את דרככם בעדינות, הייתי ממליץ על NodeXL או KUMU. הן בעלות ממשק נוח ונמצאות בסביבה מוכרת.
אתם מתקדמים יותר ורוצים את הדבר האמיתי? כאן תצטרכו לקבל הכרעה קשה:
מערכת CytoScape או Gephi.
הזהרתי כבר מראש שאני משוחד לטובת Gephi , ואני אופטימי מאד לקראת העדכון הצפוי שלה בסוף 2021. לא רק שיש בה כמעט כל מה שצריך לניתוח רשתי, האפשרות שישלבו בה כפיצ'ר את היכולת לנתח hyperedges ישים אותה בקטגוריה ייחודית. חוצמזה, כשנרצה לעשות ניתוחים מתקדמים יותר, נרצה גם לנתח רשתות גדולות ולשם כך, נצטרך את Gephi .
אבל כמו שאמרנו, אף מערכת לא מושלמת, אז איפה נדרשות השלמות ל-Gephi?
אז קודם כל – כמויות. כשצריך לנתח רשתות מעל 50 אלף צמתים, נצטרך לפנות ל-Pajek.
אם נרצה לעשות שימוש במאגרי מידע חיצוניים, למשל, לקצור מידע מטוויטר לצורך הניתוח, נצטרך להשתמש בתוכנות כמו NodeXL אבל במקרה הגרוע ביותר, ניתן לייצא את הדאטה ולהעביר להמשך טיפול ב-Gephi.
לפחות כרגע, לכל הפעולות הקשורות במטריצה, למשל, מציאת דמיון בין צמתים ע"י node embedding, נידרש לפנות למערכות חיצוניות כמו למשל Socnetv.
ויש תכונות שלא נמצא באף מערכת.
הפיצ'ר הבולט ביותר בהיעדרו, לפחות בתוכנות החינמיות הוא סוגיית הדינאמיות.
זה נכון שפה ושם יש כמה פתרונות ויזואליים, אבל כלי ניתוח אמיתי שעובד, לא מצאתי.
ומה שבוודאות אין באף תוכנה זה כל התחום שעוסק בקהילות דינאמיות ברשת. זהו תחום מרתק שדיברנו עליו בפרק 9, נשמע שיש בו הרבה פוטנציאל ולצערי הוא לא זמין כרגע לקהל הרחב.
עכשיו, כמובטח, נביא כמה ביקורות מרחבי המרשתת:
א-בישי, שביקש להיקרא אבישי, כתב בטוויטר:
אולי הדבר הכי חשוב שלמדתי עד כה מנטפריקס הוא: "לקרב סכינים תביא קרוקודיל"
תודה אבישי, שהזכיר לנו את חוק מס' 3 של הרשת!
אוריאל כתב בלינקד אין:
לאחרונה נחשפתי לפודקאסט מעולה על מדע הרשתות - 'נטפריקס' של אסף שפירא. נשמע נושא קצת טרחני ומשעמם. אבל בעצם מדובר בנושא שנוגע לכל אחד מאיתנו. ובמיוחד למתכנתים שעובדים כל הזמן במרחב של רשתות. מה שמיוחד בפודקאסט הזה הוא שמצד אחד כמו כל פודקאסט נעים לשמוע אותו בזמן נסיעה או שטיפת כלים וכו', ומצד שני הוא נותן המון ידע מקצועי ומדוייק. עוד לפני הפודקאסט הכרתי את הרעיון של התפלגות זנב ארוך או power law. אבל רק בפודקאסט הכרתי המון דוגמאות ויישומים של הרעיון הזה, שעזרו לי להבין איך ניתן להיעזר בו, ואיך אפשר להבין דרכו הרבה תופעות שקורות סביבנו.
.
תודה רבה אוריאל!
הביקורת הזו מהדהדת משהו שיצא לי להיתקל בו הרבה אחרי הרצאות שהעברתי לבוגרות ובוגרי מדמ"ח. זה לא האלגוריתמים שהלהיבו אותם אלא המטבע שנפל כשהבינו את היישומים האפשריים שלהם.
איתן כתב בקאסטבוקס:
פודקאסט ממש מומלץ ואיכותי. אחרי שמתחילים לשמוע את הפודקאסט מבינים עד כמה העולם סביבנו מורכב מרשתות, וכמה ההבנה שלהם מאפשרת להבין טוב יותר את העולם, לא ידעתי שאפשר להעביר נושא כזה - שנחשב מורכב - בכל כך פשטות, הומור וכיף - אבל לא לוותר על איכות הלימוד והחומר. ממש ממליץ!
תודה איתן!
ועכשיו, גם אתן רוצות להרחיב את קהילת מדע הרשתות בישראל? ככל שתדרגו יותר, כך הפודקאסט יהיה חשוף לא.נשים רבים יותר.
דרגו את הפודקאסט בספוטיפיי - עכשו אפשר! אפשר גם באפל-פודקאסטס ו/או כיתבו ביקורת. ניתן לדרג גם בפודקאסט-אדיקט (בטאב של ה-reviews). מותר ומומלץ להעלות פוסט ולתייג את נטפריקס בפייסבוק/טוויטר/אינסטגרם או לינקדאין ושוב, פוסטים יצירתיים במיוחד יושמעו בפרקים הבאים.
ואם עוד לא עשיתן לייק בדף של נטפריקס בפייסבוק, זה הזמן. אתרים עם יותר לייקים, מקבלים יותר חשיפה.
לפניות/הערות/הארות/הצעות ועוד: שלחו מייל!
נתראה בפרק הבא של נטפריקס.
#Podcast #NetworkScience #SNA #SocialNetworkAnalysis #GraphTheory #DataScience #Software #Survey #Infomap #CytoScape #NodeXL #Pajek #KUMU #Graphistry #Spotify
Comments