دادهٔ شبکهای پیچیده (Complex Network Data) چیست؟
💡 این متن «بازنویسی آزاد» است: ایدهها و مفاهیم مطلب اصلی با نگارش کاملاً مستقل فارسی و مثالهای تازه بازگو شدهاند و ترجمهٔ کلمهبهکلمه نیست. بخشهای افزودهٔ مترجم در جعبهٔ منبع مشخص شدهاند.
دادهٔ شبکهای شکل خودش را از رابطه میگیرد، نه از ردیف و ستون. به همین دلیل ابزارهای معمول نمودار روی آن جواب نمیدهند.
تعریف
دادهٔ شبکهای مجموعهای است که عضوهایش با «اتصال» یا «دربرگیری» به هم مربوطاند، نه با وابستگی.
دو واژه تمام این ساختمان را میسازد: گره و یال. گره همان چیزی است که میشمارید و یال رابطهای است که دو گره را به هم وصل میکند.
تفاوتش با جدول از همینجا شروع میشود. در جدول هر ردیف مستقل است و جابهجا کردن ردیفها هیچ اطلاعاتی را از بین نمیبرد.
در شبکه اما معنا در خودِ پیوندها نشسته است. یک گره جدا از یالهایش تقریباً هیچ چیزی حمل نمیکند.
تفاوتش با دادهٔ سلسلهمراتبی هم به همان اندازه مهم است. درخت یک شبکهٔ خاص است که هر گرهاش فقط یک والد دارد و هیچ حلقهای در آن نیست.
پس هر درختی شبکه است، ولی هر شبکهای درخت نیست. همین یک قید تعیین میکند که نمایش دادهٔ سلسلهمراتبی برایتان کار میکند یا نه.
شبکههای کوچک را با نقشهٔ ذهنی و نقشهٔ مفهومی هم میتوان کشید و خوانا نگه داشت. مسئله جایی شروع میشود که شمار گره و یال بالا برود.
واژهٔ «پیچیده» در نام این موضوع هم به همین اشاره دارد. پیچیدگی اینجا صفتِ داده است، نه صفتِ موضوع.
سه راهبردی که برای شبکهٔ بزرگ هست
برای نمایش شبکهٔ بزرگ سه راهبرد جاافتاده در دست است و هر سه در عمل به کار میآیند.
- - ۱. عوض کردن چیدمان: جای گرهها را طوری حساب کنید که خوانایی بالا برود. الگوریتمهای نیرومحور و «فنرمحور» گرههای متصل را به هم نزدیک و بقیه را از هم دور میکنند تا شمار تقاطع یالها کم شود.
- - ۲. کم کردن پیچیدگی: فقط یالهایی را بکشید که شرطی را برمیآورند و ساختار کلی را حفظ کنید. روشهای جدیترش مقیاسگذاری شبکهٔ مسیریاب و درخت پوشای کمینهاند.
- - ۳. افزودن تعامل: به مخاطب اجازهٔ عوض کردن زاویهٔ دید یا خوشهبندی داده را بدهید. اینکه کدام تعامل لازم است، پرسشی برای پژوهش کاربر است و نه انتخابی سلیقهای.
این سه راهبرد درستاند و ترتیب رایجشان غلط است. تیمها تقریباً همیشه از اولی شروع میکنند، چون پیشفرضِ هر کتابخانهٔ گراف همان است.
اما سقف راهبرد اول از دو راهبرد دیگر پایینتر است. چیدمان فقط جای گرهها را عوض میکند و شمار یالها را دست نمیزند.
راهبرد دوم گرانتر است، چون یک تصمیم میخواهد: کدام یال مهم است. همان تصمیم است که تصویر را از تزئین به تحلیل تبدیل میکند.
کلاف مو از کجا میآید
ریشهٔ ماجرا یک حساب ساده است. در شبکهای با n گره، شمار یالهای ممکن با مجذور n بالا میرود.
۵۰ گره حدود ۱٬۲۲۵ یال ممکن دارد. ۵۰۰ گره بیش از ۱۲۴ هزار.
پس شمار گرهها خطی رشد میکند و شمار رابطهها تواندار. مساحت صفحه در همین میان ثابت میماند.
چیدمان نیرومحور تا وقتی جواب میدهد که فضای خالی داشته باشد. گرههای متصل را نزدیک مینشاند و بقیه را به حاشیه میراند.
از یک تراکمی به بعد، هر گره در هر جهتی یک همسایه دارد. آنوقت الگوریتم هیچ فضای خالی برای استفاده ندارد و همهچیز وسط جمع میشود.
حاصلش چیزی است که به آن «کلاف مو» میگویند. تصویری پرجزئیات که فقط یک جمله میگوید: داده زیاد است.
نکتهٔ مهم این است که مرز شکست، تعداد گره نیست. تراکم یال است.
۳۰۰ گره با ۳۲۰ یال کاملاً خوانا میماند. ۱۰۰ گره با ۸۰۰ یال خوانا نیست.
یک سنجهٔ سرانگشتی برای همین کار دارم و آن میانگین درجه است، یعنی شمار یال تقسیم بر شمار گره. زیر ۳ معمولاً خوانا میشود و بالای ۶ به کلاف میزند.
یک عیب دوم هم هست که کمتر گفته میشود. چیدمان نیرومحور قطعی نیست و دو بار اجرایش دو تصویر متفاوت میدهد.
پس اسکرینشاتی که هفتهٔ پیش در گزارش گذاشتید، امروز با همان داده بازتولید نمیشود. برای مخاطبی که میخواهد دو نسخه را مقایسه کند، این تقریباً یک شکست کامل است.
درمانش ساده است. بذر تصادفی الگوریتم را ثابت کنید و جای گرهها را ذخیره کنید.
چهار جایگزین کلاف مو
وقتی گراف نیرومحور از دست رفت، چهار راه عملی میماند. هیچکدام صرفاً یک سبک تصویری نیست و هرکدام به پرسش دیگری جواب میدهد.
یک: ماتریس مجاورت. گرهها را روی هر دو محور بنشانید و هر خانه را به یک یال اختصاص بدهید.
مزیتش این است که تقاطع و همپوشانی در آن معنا ندارد. یک ماتریس چگال به همان اندازهٔ یک ماتریس تُنُک خوانا میماند.
بهایش هم روشن است. مسیر در ماتریس دیده نمیشود، چون دنبال کردن یک زنجیره در آن به چند بار رفتوبرگشت بین سطر و ستون نیاز دارد.
یک هشدار هم دارد: ترتیب سطر و ستون تمام کارِ ماتریس است. یک ماتریس با ترتیب تصادفی شبیه نمکپاشی میشود و همان ماتریس با ترتیب خوشهبندیشده بلوکهای تمیز نشان میدهد.
دو: تجمیع اجتماعات. ابتدا خوشهها را با یک الگوریتم تشخیص دهید، بعد هر خوشه را یک گرهِ واحد بکشید.
ضخامت یال میان دو خوشه هم شمار یالهای واقعی بین اعضایشان میشود. هزار گره اینطور به بیست گره تبدیل میشود و کل تصویر برمیگردد.
بهایش حذف شدنِ گرهِ فردی است. پس تجمیع بی امکان ریزشدن ناقص است و افشای تدریجی اینجا دقیقاً همان الگویی است که لازم دارید.
سه: فیلتر. فقط یالهای بالای یک وزن یا گرههای بالای یک درجه را نگه دارید.
ارزانترین راهِ فهرست همین است و بیشترین اثر را هم دارد. اما فیلتر یک ادعا دربارهٔ اهمیت است، پس باید روی خودِ تصویر اعلام شود.
نموداری که ۹۰ درصد یالهایش را انداخته و این را نگفته، گمراهکننده است. یک خط زیرنویس همین را حل میکند.
چهار: تمرکز و زمینه. همسایگی یک گره را با تمام جزئیات بکشید و باقی شبکه را کمرنگ در پسزمینه نگه دارید.
این راه از همه بیشتر به شکل واقعی خواندن یک شبکه نزدیک است. آدمها گراف را کلبهکل نمیخوانند و از یک گرهِ آشنا شروع میکنند و یک قدم جلو میروند.
نمای شبکه به کدام پرسش جواب میدهد
این بخش افزودهٔ من است، چون گفتوگو دربارهٔ گراف معمولاً به الگوریتم چیدمان میرسد و از خودِ پرسش رد میشود.
پرسشهای واقعیِ یک شبکه پنج دسته بیشتر نیستند. نکته این است که هیچ نمایشی همهٔ پنج دسته را با هم پاسخ نمیدهد.
- - ۱. شکل کلی و خوشهها: آیا این شبکه چند جزیرهٔ جدا است یا یک تودهٔ بههمچسبیده؟ گراف نیرومحور اینجا از همه بهتر است.
- - ۲. اتصال دو گرهِ مشخص: آیا الف به ب وصل است؟ ماتریس مجاورت این را با یک نگاه به یک خانه جواب میدهد و گراف نیرومحور تقریباً هیچ.
- - ۳. مرکزیت: کدام گره پرارتباطترین است؟ در ماتریس، تراکم یک سطر همین را نشان میدهد.
- - ۴. ترتیب و توالی: رابطهها در طول زمان چه ترتیبی داشتند؟ نمودار کمانی گرهها را روی یک خط مینشاند و همین ترتیب را حفظ میکند.
- - ۵. تصویر کلان: در هزاران گره چه خبر است؟ فقط تجمیع اجتماعات پاسخ دارد.
وقتی این پنج پرسش را کنار چهار نمایش میگذارید، یک نتیجهٔ ناخوشایند بیرون میآید. گراف نیرومحور که پیشفرض همه است، تنها در سطر اول قوی است.
سطر اول هم کمعملترین پرسش فهرست است. «این شبکه چند خوشه دارد» بهتنهایی هیچ تصمیمی را جلو نمیبرد.
پس ترتیب کار برعکس عادت است. اول پرسش را انتخاب کنید، بعد نمایش را.
یک پرسش مقدمتر هم هست که معمولاً پرسیده نمیشود. آیا دادههای شما اصلاً شبکه است؟
چهار نشانه میگوید که گراف مدل غلطی برای این داده است.
- - یالها همه یک نوع و یک وزناند: آنوقت شبکهای در کار نیست و شما فقط یک رابطهٔ عضویت دارید. جدول یا فهرست همین را دقیقتر میگوید.
- - هر گره فقط یک والد دارد: این یک درخت است و نمایش درختی از هر گرافی خواناتر است.
- - یالها را میتوان از یک قاعده بازتولید کرد: اگر یال یعنی «در یک شهر»، تصویر شما چند گرافِ کامل میشود که هیچ اطلاعاتی جز خودِ دستهبندی ندارند.
- - پرسش واقعی دربارهٔ مقدار است: «کدام گره بیشترین فروش را دارد» یک میلهٔ مرتبشده است. مصورسازی داده این را با دقت بالاتری جواب میدهد.
قاعدهٔ کوچکی از این چهار مورد بیرون میآید. گراف را وقتی بکشید که پرسشتان دربارهٔ مسیر، واسطه یا خوشه باشد.
اگر پرسش با یک ستون از جدول جواب میگیرد، همان جدول را بکشید. دامنهٔ کلی این تصمیمها را در مصورسازی اطلاعات نوشتهام.
یک اشتباه رایج دیگر هم قاطی کردن دو چیز است. نمودار سیستمی و گرافِ داده شبیه هم به نظر میرسند و یکی نیستند.
نمودار سیستمی در تفکر سیستمی مدلی است که خودتان میسازید تا یک فرضیه را نشان دهید. گرافِ داده تصویری از چیزی است که اندازه گرفتهاید.
اولی میتواند ده گره داشته باشد و بسیار گویا باشد. دومی با ده گره معمولاً یعنی دادهای جمع نشده است.
در سیستمهای اجتماعی-فناورانهٔ پیچیده این دو مدام کنار هم میآیند و برچسبگذاریشان روی تصویر لازم است.
در بافت فارسی
این بخش هم افزودهٔ من است، چون همهٔ کتابخانههای گراف با پیشفرض چپبهراست ساخته شدهاند.
یک: برچسب فارسی روی گراف چگال جا نمیشود. واژهٔ فارسی معمولاً بلندتر از معادل لاتینش است و حروفش به هم میچسبند.
پس بریدن برچسب با سه نقطه کلمه را از ریخت میاندازد و چرخاندنش ناخوانا میکند. راهحل عملی این است که فقط گرههای پرمرکز برچسب ثابت بگیرند.
باقی گرهها برچسبشان را روی نشانگر یا لمس نشان میدهند. همین یک تصمیم، بیشترِ شلوغی یک گراف فارسی را برمیدارد.
دو: ماتریس مجاورت قطرش را از راست شروع میکند. در یک رابط راستبهچپ، سرِ قطر خانهٔ بالا-راست است و نه بالا-چپ.
شرط درستیاش هم این است که ترتیب سطرها و ترتیب ستونها یکی باشد. کتابخانهها معمولاً فقط یکی از این دو را برمیگردانند و قطر از تصویر بیرون میزند.
آزمونش ساده است. یک گره را با خودش وصل کنید و ببینید نقطه روی قطر مینشیند یا نه.
سه: نام لاتین داخل برچسب فارسی جهت را میشکند. نام سرویس، شناسه و شمارهٔ نسخه مدام در برچسب گرههای یک محصول فارسی میآیند.
اگر این نامها جداسازی نشوند، «API v2» به شکل جابهجا خوانده میشود. هر نام لاتین باید در یک بستهٔ جداشدهٔ چپبهراست بنشیند.
در SVG این کار با یک عنصر جدا و ویژگی جداسازی دوسویه انجام میشود. در بوم هم باید رشته را دستی تکهتکه کنید، چون بوم چیزی از جهت متن نمیداند.
چهار: گراف هزارگرهی روی موبایل میانرده باز نمیشود. شبیهسازی نیرومحور در هر فریم برای هر جفت گره حساب میکند.
روی یک اندروید میانرده که سهم بزرگی از کاربران اینجاست، همین حساب صفحه را چند ثانیه قفل میکند. کاربر هم منتظر نمیماند و برمیگردد.
درمانش انتقال کار به سرور است. تجمیع و خوشهبندی را آنجا انجام دهید و به مرورگر خوشه بفرستید، نه گرهِ خام.
جمعبندی
- - دادهٔ شبکهای: عضوها با اتصال یا دربرگیری به هم مربوطاند · دو واژه کافی است: گره و یال
- - در جدول ترتیب ردیف بیمعناست · در شبکه معنا در خودِ پیوندهاست · گرهِ بییال چیزی نمیگوید
- - درخت یک شبکهٔ خاص است: یک والد برای هر گره و بدون حلقه · هر درختی شبکه است، هر شبکهای درخت نیست
- - سه راهبرد شبکهٔ بزرگ: عوض کردن چیدمان · کم کردن پیچیدگی · افزودن تعامل
- - ترتیب رایجشان غلط است · چیدمان سقف پایینی دارد چون شمار یالها را دست نمیزند
- - یالهای ممکن با مجذور شمار گرهها بالا میرود · ۵۰ گره حدود ۱٬۲۲۵ یال · ۵۰۰ گره بیش از ۱۲۴ هزار
- - مرز شکست تعداد گره نیست · تراکم یال است · میانگین درجه زیر ۳ خوانا و بالای ۶ کلاف مو
- - چیدمان نیرومحور قطعی نیست · دو اجرا دو تصویر میدهد · بذر تصادفی را ثابت و جای گرهها را ذخیره کنید
- - ماتریس مجاورت: تقاطع ندارد و در تراکم بالا میماند · مسیر را از دست میدهد · ترتیب سطر و ستون تمام کارش است
- - تجمیع اجتماعات: هزار گره به بیست گره · گرهِ فردی حذف میشود · بی امکان ریزشدن ناقص است
- - فیلتر ارزانترین راه است · اما یک ادعا دربارهٔ اهمیت است و باید روی تصویر اعلام شود
- - تمرکز و زمینه به شکل واقعی خواندن نزدیکترین است · آدمها از یک گرهِ آشنا شروع میکنند
- - پنج پرسش شبکه: شکل کلی · اتصال دو گره · مرکزیت · ترتیب زمانی · تصویر کلان
- - گراف نیرومحور فقط در سطر اول قوی است · و سطر اول کمعملترین پرسش فهرست است
- - چهار نشانهٔ مدل غلط: یالهای یکنوع · تکوالد بودن · یالهای بازتولیدشدنی از یک قاعده · پرسشی که دربارهٔ مقدار است
- - نمودار سیستمی مدلی است که میسازید · گرافِ داده تصویر چیزی است که اندازه گرفتهاید
- - در فارسی: برچسب بلند جا نمیشود · قطر ماتریس از راست شروع میشود · نام لاتین جداسازی میخواهد · تجمیع را سمت سرور ببرید
منبع
این نوشته «بازنویسی آزاد» است از مطلب Complex Network Data در وبسایت بنیاد طراحی تعامل (Interaction Design Foundation — IxDF؛ بدون نام نویسندهٔ مشخص)، همراه با مقالهٔ آزادِ همان صفحه: How to Display Complex Network Data with Information Visualization. مفاهیم پایه — تعریف شبکه بهعنوان مجموعهای از داده که عضوهایش نه با وابستگی بلکه با اصل اتصال یا دربرگیری به هم مربوط میشوند؛ کافی بودن نقشهٔ ذهنی و نقشهٔ مفهومی برای شبکههای ساده و ناخوانا شدن سریع گراف با بالا رفتن شمار گره و شاخه که نمایش را به روشهای جدیترِ مصورسازی اطلاعات میسپارد؛ نقل جملهٔ کارلی فیورینا دربارهٔ تبدیل داده به اطلاعات و اطلاعات به بینش بهعنوان کاری که نمای شبکه انجام میدهد؛ و سه راهبرد نمایش شبکهٔ بزرگ به نقل از کتاب «درآمدی بر مصورسازی اطلاعات» ریکاردو مازا، یعنی عوض کردن چیدمان برای بالا بردن خوانایی با الگوریتمهای نیرومحور و فنرمحور و کم کردن شمار تقاطع یالها، کم کردن پیچیدگی با کاهش پیوند و نمایش تنها یالهایی که شرطی را برمیآورند و در همان حال حفظ ساختار کلی داده بههمراه روشهای مقیاسگذاری شبکهٔ مسیریاب و درخت پوشای کمینه، و افزودن تعامل برای عوض کردن زاویهٔ دید یا خوشهبندی داده بهشرط آنکه انتخاب تعاملها بر پایهٔ پژوهش کاربر باشد — از این منبع گرفته شده. متن فارسی، ساختار بخشها و همهٔ تحلیلها کاملاً مستقل نوشته شدهاند.
متن مطلب اصلی تحت هیچ لایسنس بازی منتشر نشده است؛ به همین دلیل اینجا ترجمهٔ کلمهبهکلمه ارائه نشده و متن کامل انگلیسی (بههمراه همهٔ منابع مرتبط) در لینک زیر در دسترس است.
بخشهای افزودهٔ مترجم: بند آغازین دربارهٔ اینکه دادهٔ شبکهای شکلش را از رابطه میگیرد و ابزارهای معمول نمودار روی آن جواب نمیدهند؛ تمایز گره و یال و مقایسهٔ صریح شبکه با جدول و با دادهٔ سلسلهمراتبی، شامل تعریف درخت بهعنوان شبکهای با یک والد برای هر گره و بدون حلقه و نتیجهٔ اینکه هر درختی شبکه است ولی هر شبکهای درخت نیست؛ نقد ترتیب رایج سه راهبرد و استدلال اینکه سقف راهبرد چیدمان پایینتر است چون شمار یالها را دست نمیزند و راهبرد دوم گرانتر است چون یک تصمیم دربارهٔ اهمیت یال میخواهد؛ کل بخش «کلاف مو از کجا میآید» شامل حساب رشد تواندار یالهای ممکن با ارقام ۵۰ و ۵۰۰ گره، توضیح اینکه چیدمان نیرومحور تا وقتی فضای خالی دارد کار میکند، تشخیص اینکه مرز شکست تراکم یال است و نه تعداد گره با مثال ۳۰۰ گره و ۳۲۰ یال در برابر ۱۰۰ گره و ۸۰۰ یال، سنجهٔ سرانگشتی میانگین درجه با آستانههای ۳ و ۶، و عیب قطعی نبودن چیدمان نیرومحور و هزینهٔ بازتولیدنشدنی بودن اسکرینشات و درمانش با ثابت کردن بذر تصادفی و ذخیرهٔ جای گرهها؛ کل بخش «چهار جایگزین کلاف مو» شامل ماتریس مجاورت و مصونیتش از تقاطع و از دست رفتن مسیر و اهمیت تعیینکنندهٔ ترتیب سطر و ستون، تجمیع اجتماعات و تبدیل هزار گره به بیست گره و نیازش به افشای تدریجی، فیلتر بهعنوان ارزانترین راه و ضرورت اعلام کردنش روی تصویر، و تمرکز و زمینه بهعنوان نزدیکترین راه به شکل واقعی خواندن یک شبکه؛ کل بخش «نمای شبکه به کدام پرسش جواب میدهد» شامل پنج پرسش واقعی شبکه یعنی شکل کلی و خوشهها و اتصال دو گرهِ مشخص و مرکزیت و ترتیب زمانی و تصویر کلان، نگاشتشان به چهار نمایش، و نتیجهٔ اینکه گراف نیرومحور تنها در سطر اول قوی است و همان سطر کمعملترین پرسش فهرست است؛ زیربخش چهار نشانهٔ اینکه گراف مدل غلطی برای داده است یعنی یالهای یکنوع و یکوزن و تکوالد بودن گرهها و بازتولیدشدنی بودن یالها از یک قاعده و پرسشی که در واقع دربارهٔ مقدار است، همراه با قاعدهٔ «گراف برای مسیر و واسطه و خوشه» و تفکیک نمودار سیستمی از گرافِ داده؛ و کل بخش بافت فارسی شامل جا نشدن برچسب بلند فارسی روی گراف چگال و راهحل برچسب ثابت فقط برای گرههای پرمرکز، شروع شدن قطر ماتریس مجاورت از بالا-راست در رابط راستبهچپ و شرط یکسان بودن ترتیب سطر و ستون و آزمون گرهِ خودوصل، شکستن جهت با نام لاتین داخل برچسب فارسی و ضرورت بستهٔ جداشدهٔ چپبهراست و تفاوت کار در SVG و بوم، و باز نشدن گراف هزارگرهی روی موبایل میانرده و انتقال تجمیع به سمت سرور
تصاویر: تصویرهای مطلب اصلی متعلق به اشخاص ثالث و با لایسنسهای CC BY-SA 3.0 و CC BY-SA 4.0 و CC BY-SA 2.0 منتشر شدهاند (با نامهای Martin Grandjean و Deepthiyathiender و Computermacgyver و yaph). هیچکدام اینجا بازتولید نشده است. هر سه نمودار این صفحه طراحی مستقل مترجم است.
مشاهدهٔ مطلب اصلی
دادهٔ شبکهای پیچیده