מודל בלוקים סטוכסטי
מודל בלוקים סטוכסטי (Stochastic block model) הוא שם כולל למשפחת מודלים סטוכסטיים שפותחה לראשונה בשנת 1983 על ידי פול ו. הולנד ועמיתיו [1]. מודלים אלו משמשים לניתוח רשתות ולתיאור מבנה רשתות על ידי חלוקתן לבלוקים או קהילות, בהם בדרך כלל ההסתברות להימצאות קשתות בין צמתים בתוך אותה קהילה גבוהה יותר בהשוואה לקשתות בין צמתים מקהילות שונות.
באמצעות מודלים אלו, ניתן לחקור מבנים מתמטיים וסטטיסטיים של רשתות מורכבות, לזהות דפוסים סמויים בנתוני רשתות, ולספק כלים חשובים בתחומים כמו סטטיסטיקה, למידת מכונה ומדע הרשתות. מודלים אלו משמשים כמדד ראשוני ליכולת לנתח ולשחזר מבנה קהילות בגרפים.
הגדרה
[עריכת קוד מקור | עריכה]מודל בלוקים סטוכסטי עבור גרפים מקריים לא מכוונים מוגדר על ידי הפרמטרים הבאים:[2]
- מציין את מספר הצמתים בגרף.
- הוא ווקטור הסתברויות מעל הקבוצות כאשר הוא מספר הקהילות בגרף.
- מטריצת הסתברויות הקהילות מתארת את ההסתברויות לקיומה של קשת בין כל שתי קהילות. במילים אחרות, ההסתברות לקיומה של קשת בין צומת מקהילה לקהילה היא .
המודל הסטטיסטי
[עריכת קוד מקור | עריכה]בהינתן זוג , שבו הוא גרף ו- הוא ווקטור. נאמר שהזוג נדגם מתוך , אם מתקיימים התנאים הבאים: [2]
- הינו ווקטור ממדי, כאשר כל אחת מהכניסות שלו מכילה ערכים מעל , ומתפלגת באופן זהה ובלתי תלוי (i.i.d) בשאר הכניסות, בהתאם לווקטור ההסתברויות .
- הגרף מכיל צמתים, כאשר ההסתברות לקיומה של קשת בין הצומת ה- לצומת ה- היא , וההסתברויות עבור כל זוג צמתים הן בלתי תלויות.
הקהילות בגרף
[עריכת קוד מקור | עריכה]קהילות בגרף יוגדרו באופן הבא: עבור כל .
התפלגויות
[עריכת קוד מקור | עריכה]עבור , מתקיים
התפלגות הקהילות
[עריכת קוד מקור | עריכה]
התפלגות הקשתות בהינתן הקהילות
[עריכת קוד מקור | עריכה]
כאשר:
מקרים מיוחדים
[עריכת קוד מקור | עריכה]- כאשר מטריצת ההסתברויות היא קבועה, כלומר לכל זוג , מדובר במקרה פרטי של מודל הבלוקים הסטוכסטי הידוע כמודל ארדש-רני (Erdős–Rényi Model). במודל זה, קיומן של קהילות אינו משמעותי, שכן ההסתברות שכל צומת יתחבר לכל צומת אחר היא תמיד זהה.
- כאשר במטריצת ההסתברויות ערכי האלכסון קבועים ושווים ל- והערכים מחוץ לאלכסון קבועים שווים ל- , אזי ההסתברות לקיומה של קשת בין צמתים בתוך אותה קהילה שווה ל-, ואילו ההסתברות לקיומה של קשת בין קהילות שונות שווה ל-. במקרה שבו , המודל מכונה מודל אסורטטיבי (Assortativity); במקרה ההפוך, שבו , המודל נקרא מודל דיסאסורטטיבי[3]. שם נוסף למודל זה בספרות הינו The Planted Partition Model[4].
- מודל שבו עבור כל מכונה מודל אסורטטיבי חזק, כלומר כל ערכי האלכסון גדולים יותר מכל הערכים שמחוץ לאלכסון.[3]
- מודל שבו עבור כל מכונה מודל אסורטטיבי חלש, שבו כל ערך באלכסון דומיננטי יותר מכל הערכים באותה השורה והעמודה שלו בלבד.[3]
עבור אלגוריתמים מסוימים, רלקסציות אלו מאפשרות לתהליך גילוי הקהילות להיות קל יותר.
בעיות סטטיסטיות נפוצות
[עריכת קוד מקור | עריכה]רוב המחקר בתחום האלגוריתמיקה לזיהוי קהילות בגרפים מקריים מתמקד בשלוש בעיות סטטיסטיות עיקריות: זיהוי (detection), שחזור חלקי של המבנה הקהילתי, ושחזור מלא של הגרף. השימוש במודל הבלוקים הסטוכסטי כבסיס להתפלגות הגרף המקרי מאפשר להגדיר ולהוכיח אלגוריתמים רבים לפתרון בעיות אלו. בנוסף, מודל זה מאפשר קביעת חסמים שונים על היכולת לזהות קהילות ולבצע שחזור מדויק של המבנה הקהילתי.
זיהוי (Detection)
[עריכת קוד מקור | עריכה]הבעיה הראשונה היא זיהוי, שבו המטרה היא לקבוע האם לגרף נתון יש מבנה סמוי של קהילות (latent community structure), או באופן שקול, האם הגרף נדגם מאיזשהי התפלגות פריורית מעל מודל בלוקים סטוכסטי (Stochastic Block Model), או האם הוא נדגם מעל מודל ארדש-רני (Erdős–Rényi Model) [5].
שיחזור חלקי (Partial Recovery)
[עריכת קוד מקור | עריכה]אלגוריתמי שחזור חלקי נועדו למצוא קירוב לחלוקה הסמויה (latent partition) של הגרף לקהילות, כך שהקירוב יהיה בעל קורלציה גבוהה עם החלוקה האמיתית לקהילות. המשמעות היא שהקירוב צריך להיות טוב יותר מניחוש אקראי מבחינה סטטיסטית[2].
שחזור מלא (Exact Recovery)
[עריכת קוד מקור | עריכה]המטרה של אלגוריתמי שחזור מלא היא לשחזר באופן מדויק את ההתפלגות הסמויה לקהילות, כך שכל צומת בגרף משויך באופן נכון לקהילה שלו. בשחזור מלא, גודל הקהילות ומטריצות ההסתברויות של הקהילות יכולות להיות ידועות או לא ידועות, מה שמשפיע על המורכבות של הבעיה[2].
שימושים נפוצים
[עריכת קוד מקור | עריכה]מספר אלגוריתמים פותחו כדי לזהות קהילות במודלים של בלוקים סטוכסטיים (SBMs), או הותאמו כדי לפתור בעיות כאלו, כאשר כל אחד מנצל טכניקות מתמטיות שונות. סיווג ספקטרלי משתמש בווקטורים העצמיים של מטריצת השכנויות או ה-Laplacian של הגרף כדי לזהות קהילות. מקסום מודולריות, שמיושם לרוב באמצעות אלגוריתם Louvain, ממקסם פונקציית מודולריות שמשווה את הצפיפות של קצוות הקהילות לגרפים אקראיים. Belief Propagation[2] מעדכנת באופן איטרטיבי את הסבירות של צמתים להשתייך לקהילות ספציפיות על ידי העברת הודעות בין צמתים שכנים. Expectation-Maximization (EM) היא גישה הסתברותית מתחפלת, בה נעריך את הקשר של הצמתים לקהילות על פי המידע הנתון (מידע חלקי), לבין מקסום הסבירות של הגרף הנצפה תחת ה-SBM. שיטות מבוססות Likelihood, כגון נראות מקסימלית ומיקסום ההסתברות הפוסטריורית , מעריכות את שיוך הקהילות על ידי אופטימיזציה של הסבירות או ההסתברות הבייסיאנית של ה-SBM. לבסוף, שיטות מבוססות למידת עמוקה (Deep Learning-Based Methods), כגון רשתות (Graph Neural Networks - GNNs), הלומדות embeddings של צמתים דרך ארכיטקטורות המותאמות לנתוני גרפים, מה שמאפשר גילוי קהילות גמיש וניתן להרחבה במודלים מורכבים ורועשים. אלגוריתמים אלו מהווים את הבסיס לטכניקות המודרניות לגילוי קהילות ב-SBMs [6].
דוגמה לשימוש בקוד
[עריכת קוד מקור | עריכה]ניתוח רשתות ניתן לבצע במגוון שפות תכנות, כאשר אחת הפופולריות ביותר היא פייתון. בדוגמה הבאה נעשה שימוש בשלוש חבילות מרכזיות לניתוח רשתות ומחקר: NetworkX, scikit-learn ו-NumPy. בנוסף, ויזואליזציה של הנתונים תתבצע באמצעות החבילה המוכרת Matplotlib.
import networkx as nx
import matplotlib.pyplot as plt
from sklearn.cluster import SpectralClustering
import numpy as np
def spectral_clustering_on_graph(G, num_clusters):
# יצירת מטריצת שכנויות
adjacency_matrix = nx.to_numpy_array(G)
# אתחול אלגוריתם Spectral Clustering
sc = SpectralClustering(
n_clusters=num_clusters,
affinity='precomputed',
assign_labels='kmeans',
random_state=42
)
# התאמת הנתונים וחיזוי תוויות הקהילות
labels = sc.fit_predict(adjacency_matrix)
return labels
תחילה, ניצור גרף מקרי, המכיל 30 צמתים, תוך שימוש במטריצת הסתברויות הבאה: .
המשמעות היא שההסתברות לקשת בין צמתים בתוך אותה קהילה היא , ואילו ההסתברות לקשת בין צמתים מקהילות שונות היא .
# שלב 1: יצירת גרף SBM
sizes = [10, 10, 10] # מספר הצמתים בכל בלוק
# הסתברויות לקיום קשתות בתוך ובין הבלוקים
probs = [[0.9, 0.2, 0.2],
[0.2, 0.9, 0.2],
[0.2, 0.2, 0.9]]
G = nx.stochastic_block_model(sizes, probs, seed=42)
spectral_clustering_on_graph(G, 3)
להלן תוצאת האלגוריתם המיושמת על הגרף שנוצר:

ראו גם
[עריכת קוד מקור | עריכה]קישורים חיצוניים
[עריכת קוד מקור | עריכה]- ספר הנקרא High-Dimensional Probability ונכתב על ידי רומן ורשין [1].
- תיעוד של stochastic_block_model בסיפרייה Networkx כולל דוגמאות [2].
- תיעוד של Spectral Clustering בחבילה scikit-learn.
הערות שוליים
[עריכת קוד מקור | עריכה]- ^ Holland, Paul W.; Laskey, Kathryn Blackmond; Leinhardt, Samuel (1983). "Stochastic blockmodels: First steps". Social Networks. 5 (2): 109–137. doi:10.1016/0378-8733(83)90021-7. ISSN 0378-8733.
- ^ 1 2 3 4 5 Abbe, Emmanuel (2018). "Community Detection and Stochastic Block Models: Recent Developments". Journal of Machine Learning Research. 18 (177): 1–86.
- ^ 1 2 3 Amini, Arash A.; Levina, Elizaveta (2014). "On semidefinite relaxations for the block model". CoRR. abs/1406.5647.
- ^ Mossel, Elchanan; Neeman, Joe; Sly, Allan (2012). "Stochastic Block Models and Reconstruction". arXiv:1202.1499 [math.PR].
- ^ Jin, Di; Yu, Zhizhi; Jiao, Pengfei; Pan, Shirui; He, Dongxiao; Wu, Jia; Yu, Philip S.; Zhang, Weixiong (2023). "A Survey of Community Detection Approaches: From Statistical Modeling to Deep Learning". IEEE Transactions on Knowledge and Data Engineering. 35 (2): 1149–1170. doi:10.1109/TKDE.2021.3104155.
- ^ Chen, Zhengdao; Li, Xiang; Bruna, Joan (2019). "Supervised Community Detection with Line Graph Neural Networks". arXiv preprint.