تحليل الشبكة الاجتماعية باستخدام Power BI و R: دليل مرئي مخصص
نشرت: 2022-07-22أصبح تحليل الشبكات الاجتماعية بسرعة أداة مهمة لخدمة مجموعة متنوعة من الاحتياجات المهنية. يمكنه إعلام أهداف الشركة مثل التسويق المستهدف وتحديد مخاطر الأمان أو السمعة. يمكن أن يساعد تحليل الشبكات الاجتماعية أيضًا الشركات على تحقيق الأهداف الداخلية: فهو يوفر نظرة ثاقبة لسلوكيات الموظفين والعلاقات بين الأجزاء المختلفة للشركة.
يمكن للمنظمات استخدام عدد من الحلول البرمجية لتحليل الشبكات الاجتماعية ؛ لكل منها مزاياها وعيوبها ، وهي مناسبة لأغراض مختلفة. تركز هذه المقالة على Power BI من Microsoft ، وهي إحدى أدوات تصور البيانات الأكثر استخدامًا اليوم. بينما يقدم Power BI العديد من الوظائف الإضافية للشبكات الاجتماعية ، سنستكشف المرئيات المخصصة في R لإنشاء نتائج أكثر إقناعًا ومرونة.
يفترض هذا البرنامج التعليمي فهم نظرية الرسم البياني الأساسية ، وخاصة الرسوم البيانية الموجهة. أيضًا ، الخطوات اللاحقة هي الأنسب لـ Power BI Desktop ، والمتوفر فقط على Windows. يمكن للقراء استخدام مستعرض Power BI على نظام التشغيل Mac OS أو Linux ، لكن مستعرض Power BI لا يدعم ميزات معينة ، مثل استيراد مصنف Excel.
هيكلة البيانات من أجل التصور
يبدأ إنشاء الشبكات الاجتماعية بجمع بيانات الاتصالات (الحافة). تحتوي بيانات الوصلات على حقلين أساسيين: العقدة المصدر والعقدة الهدف - العقد الموجودة في أي من طرفي الحافة. خارج هذه العُقد ، يمكننا جمع البيانات لإنتاج رؤى مرئية أكثر شمولاً ، يتم تمثيلها عادةً كخصائص عقدة أو حافة:
1) خصائص العقدة
- الشكل أو اللون : يشير إلى نوع المستخدم ، على سبيل المثال ، موقع / بلد المستخدم
- الحجم : يشير إلى الأهمية في الشبكة ، على سبيل المثال ، عدد المتابعين للمستخدم
- الصورة : تعمل كمعرف فردي ، على سبيل المثال ، الصورة الرمزية للمستخدم
2) خصائص الحافة
- اتصال اللون أو الخط أو رأس السهم : يشير إلى نوع الاتصال ، على سبيل المثال ، شعور المنشور أو التغريدة التي تربط بين المستخدمين
- العرض : يشير إلى قوة الاتصال ، على سبيل المثال ، عدد الإشارات أو إعادة التغريد التي تمت ملاحظتها بين مستخدمين في فترة معينة
دعنا نفحص مثالًا مرئيًا للشبكة الاجتماعية لنرى كيف تعمل هذه الخصائص:
يمكننا أيضًا استخدام نص التمرير لتكملة أو استبدال المعلمات المذكورة أعلاه ، حيث يمكن أن تدعم المعلومات الأخرى التي لا يمكن التعبير عنها بسهولة من خلال خصائص العقدة أو الحافة.
مقارنة ملحقات الشبكة الاجتماعية الخاصة بـ Power BI
بعد تحديد ميزات البيانات المختلفة لشبكة اجتماعية ، دعنا نفحص إيجابيات وسلبيات أربع أدوات شائعة تُستخدم لتصور الشبكات في Power BI.
امتداد | رسم بياني للشبكة الاجتماعية بواسطة آرثر غراوس | متصفح الشبكة | شبكات متقدمة بواسطة ZoomCharts (Light Edition) | المرئيات المخصصة باستخدام R |
---|---|---|---|---|
حجم العقدة الديناميكية | نعم | نعم | نعم | نعم |
حجم الحافة الديناميكي | رقم | نعم | رقم | نعم |
تخصيص لون العقدة | نعم | نعم | رقم | نعم |
معالجة الشبكات الاجتماعية المعقدة | رقم | نعم | نعم | نعم |
صور الملف الشخصي للعقد | نعم | رقم | رقم | نعم |
تكبير قابل للتعديل | رقم | نعم | نعم | نعم |
أعلى N اتصالات التصفية | رقم | رقم | رقم | نعم |
معلومات مخصصة على التمرير | رقم | رقم | رقم | نعم |
تخصيص لون الحواف | رقم | رقم | رقم | نعم |
الميزات المتقدمة الأخرى | رقم | رقم | رقم | نعم |
يعد الرسم البياني للشبكة الاجتماعية بواسطة Arthur Graus و Network Navigator و Advanced Networks من ZoomCharts (Light Edition) امتدادات مناسبة لتطوير شبكات اجتماعية بسيطة والبدء في أول تحليل للشبكات الاجتماعية.
ومع ذلك ، إذا كنت ترغب في جعل بياناتك تنبض بالحياة والكشف عن رؤى رائدة باستخدام مرئيات تجذب الانتباه ، أو إذا كانت شبكتك الاجتماعية معقدة بشكل خاص ، فإنني أوصي بتطوير مرئياتك المخصصة في R.
هذا التصور المخصص هو النتيجة النهائية لتمديد الشبكة الاجتماعية لبرنامجنا التعليمي في R ويوضح مجموعة كبيرة ومتنوعة من الميزات وخصائص العقدة / الحافة التي يقدمها R.
بناء امتداد شبكة اجتماعية لـ Power BI باستخدام R.
يتألف إنشاء امتداد لتصور الشبكات الاجتماعية في Power BI باستخدام R من خمس خطوات متميزة. ولكن قبل أن نتمكن من بناء امتداد شبكتنا الاجتماعية ، يجب علينا تحميل بياناتنا في Power BI.
المتطلب الأساسي: جمع البيانات وتحضيرها لـ Power BI
يمكنك متابعة هذا البرنامج التعليمي بمجموعة بيانات اختبار استنادًا إلى بيانات Twitter و Facebook أو المتابعة مع شبكة التواصل الاجتماعي الخاصة بك. تم توزيع بياناتنا بشكل عشوائي ؛ يمكنك تنزيل بيانات Twitter الحقيقية إذا رغبت في ذلك. بعد أن تقوم بتجميع البيانات المطلوبة ، قم بإضافتها إلى Power BI (على سبيل المثال ، عن طريق استيراد مصنف Excel أو إضافة البيانات يدويًا). يجب أن تبدو نتيجتك مشابهة للجدول التالي:
بمجرد إعداد بياناتك ، تكون جاهزًا لإنشاء تصور مخصص.
الخطوة 1: قم بإعداد قالب التصور
إن تطوير مرئيات Power BI ليس بالأمر السهل - فحتى المرئيات الأساسية تتطلب آلاف الملفات. لحسن الحظ ، تقدم Microsoft مكتبة تسمى pbiviz
، والتي توفر ملفات دعم البنية التحتية المطلوبة ببضعة سطور فقط من التعليمات البرمجية. ستعيد مكتبة pbiviz
أيضًا حزم جميع ملفاتنا النهائية في ملف .pbiviz
يمكننا تحميله مباشرةً في Power BI كمرئيات.
إن أبسط طريقة لتثبيت pbiviz
هي باستخدام Node.js. بمجرد تثبيت pbiviz
، نحتاج إلى تهيئة R المرئية المخصصة الخاصة بنا عبر واجهة سطر الأوامر الخاصة بالجهاز:
pbiviz new toptalSocialNetworkByBharatGarg -t rhtml cd toptalSocialNetworkByBharatGarg npm install pbiviz package
لا تنسَ استبدال toptalSocialNetworkByBharatGarg
بالاسم المطلوب لتصورك. -t rhtml
بإعلام حزمة pbiviz
بأنه يجب عليها إنشاء نموذج لتطوير تصورات HTML القائمة على R. سترى أخطاء لأننا لم نحدد حقولاً بعد مثل اسم المؤلف والبريد الإلكتروني في الحزمة الخاصة بنا ، لكننا سنحلها لاحقًا في البرنامج التعليمي. إذا لم يتم تشغيل البرنامج النصي pbiviz
على الإطلاق في PowerShell ، فقد تحتاج أولاً إلى السماح بالبرامج النصية باستخدام Set-ExecutionPolicy RemoteSigned
.
عند التنفيذ الناجح للرمز ، سترى مجلدًا بالهيكل التالي:
بمجرد أن تصبح بنية المجلد جاهزة ، يمكننا كتابة رمز R لتصورنا المخصص.
الخطوة 2: كود التمثيل المرئي في R.
يحتوي الدليل الذي تم إنشاؤه في الخطوة الأولى على ملف يسمى script.r
، والذي يتكون من التعليمات البرمجية الافتراضية. (يُنشئ الرمز الافتراضي امتدادًا بسيطًا لـ Power BI ، والذي يستخدم قاعدة بيانات نموذج iris
المتوفرة في R لرسم مخطط بياني Petal.Length
بواسطة Petal.Species
.) سنقوم بتحديث الكود ولكننا نحتفظ بهيكله الافتراضي ، بما في ذلك الأقسام المعلقة.
يستخدم مشروعنا ثلاث مكتبات R:
- DiagrammeR: إنشاء الرسوم البيانية من النص
- visNetwork: يوفر تصورات تفاعلية للشبكة
- data.table: يساعد في تنظيم البيانات ، على غرار data.frame
دعنا نستبدل الكود الموجود في قسم Library Declarations
في script.r
استخدام مكتبتنا:
libraryRequireInstall("DiagrammeR") libraryRequireInstall("visNetwork") libraryRequireInstall("data.table")
بعد ذلك ، سنقوم باستبدال الكود الموجود في قسم Actual code
R الخاص بنا. قبل إنشاء تصورنا ، يجب علينا أولاً قراءة بياناتنا ومعالجتها. سنأخذ مدخلين من Power BI:
-
num_records
: الإدخال الرقمي N ، بحيث نختار فقط أفضل اتصالات N من شبكتنا (للحد من عدد الاتصالات المعروضة) -
dataset
: عُقد وحواف شبكتنا الاجتماعية
لحساب الاتصالات N التي سنرسمها ، نحتاج إلى تجميع قيمة num_records
لأن Power BI ستوفر متجهًا افتراضيًا بدلاً من قيمة رقمية واحدة. دالة التجميع مثل max
تحقق هذا الهدف:
limit_connection <- max(num_records)
سنقرأ الآن dataset
ككائن data.table
مع أعمدة مخصصة. نقوم بفرز مجموعة البيانات حسب القيمة بترتيب تنازلي لوضع الاتصالات الأكثر شيوعًا في أعلى الجدول. هذا يضمن أننا نختار أهم السجلات التي نرسمها عندما نقصر اتصالاتنا مع num_records
:
dataset <- data.table(from = dataset[[1]] ,to = dataset[[2]] ,value = dataset[[3]] ,col_sentiment = dataset[[4]] ,col_type = dataset[[5]] ,from_name = dataset[[6]] ,to_name = dataset[[7]] ,from_avatar = dataset[[8]] ,to_avatar = dataset[[9]])[ order(-value)][ seq(1, min(nrow(dataset), limit_connection))]
بعد ذلك ، يجب علينا إعداد معلومات المستخدم الخاصة بنا عن طريق إنشاء وتخصيص معرفات مستخدم فريدة ( uid
) لكل مستخدم ، وتخزينها في جدول جديد. نحسب أيضًا العدد الإجمالي للمستخدمين ونخزن هذه المعلومات في متغير منفصل يسمى num_nodes
:
user_ids <- data.table(id = unique(c(dataset$from, dataset$to)))[, uid := 1:.N] num_nodes <- nrow(user_ids)
دعونا نقوم بتحديث معلومات المستخدم الخاصة بنا بخصائص إضافية ، بما في ذلك:
- عدد المتابعين (حجم العقدة).
- عدد السجلات.
- نوع المستخدم (رموز الألوان).
- روابط الصورة الرمزية.
سنستخدم وظيفة merge
R لتحديث الجدول:
user_ids <- merge(user_ids, dataset[, .(num_follower = uniqueN(to)), from], by.x = 'id', by.y = 'from', all.x = T)[is.na(num_follower), num_follower := 0][, size := num_follower][num_follower > 0, size := size + 50][, size := size + 10] user_ids <- merge(user_ids, dataset[, .(sum_val = sum(value)), .(to, col_type)][order(-sum_val)][, id := 1:.N, to][id == 1, .(to, col_type)], by.x = 'id', by.y = 'to', all.x = T) user_ids[id %in% dataset$from, col_type := '#42f548'] user_ids <- merge(user_ids, unique(rbind(dataset[, .('id' = from, 'Name' = from_name, 'avatar' = from_avatar)], dataset[, .('id' = to, 'Name' = to_name, 'avatar' = to_avatar)])), by = 'id')
نضيف أيضًا uid
الذي أنشأناه إلى مجموعة البيانات الأصلية حتى نتمكن من استرداد معرفات المستخدم from
to
معرفات المستخدم لاحقًا في الكود:
dataset <- merge(dataset, user_ids[, .(id, uid)], by.x = "from", by.y = "id") dataset <- merge(dataset, user_ids[, .(id, uid_retweet = uid)], by.x = "to", by.y = "id") user_ids <- user_ids[order(uid)]
بعد ذلك ، نقوم بإنشاء إطارات بيانات العقدة والحافة للتصور. نختار style
shape
عقدنا (الدوائر المملوءة) ، ونختار الأعمدة الصحيحة من جدول user_ids
لتعبئة سمات color
العقد data
value
image
:
nodes <- create_node_df(n = num_nodes, type = "lower",, color = user_ids$col_type, shape = 'circularImage', data = user_ids$uid, value = user_ids$size, image = user_ids$avatar, title = paste0("<p>Name: <b>", user_ids$Name,"</b><br>", "Super UID <b>", user_ids$id, "</b><br>", "# followers <b>", user_ids$num_follower, "</b><br>", "</p>") )
وبالمثل ، فإننا نختار أعمدة جدول dataset
التي تتوافق مع سمات حوافنا from
، to
، color
:
edges <- create_edge_df(from = dataset$uid, to = dataset$uid_retweet, arrows = "to", color = dataset$col_sentiment)
أخيرًا ، مع وجود إطارات بيانات العقدة والحافة جاهزة ، فلنقم بإنشاء تصورنا باستخدام مكتبة visNetwork
في متغير سيستخدمه الرمز الافتراضي لاحقًا ، يسمى p
:
p <- visNetwork(nodes, edges) %>% visOptions(highlightNearest = list(enabled = TRUE, degree = 1, hover = T)) %>% visPhysics(stabilization = list(enabled = FALSE, iterations = 10), adaptiveTimestep = TRUE, barnesHut = list(avoidOverlap = 0.2, damping = 0.15, gravitationalConstant = -5000))
هنا ، نقوم بتخصيص عدد قليل من تكوينات تصور الشبكة في visOptions و visPhysics. لا تتردد في الاطلاع على صفحات التوثيق وتحديث هذه الخيارات حسب الرغبة. اكتمل الآن قسم Actual code
، ويجب علينا تحديث قسم Create and save widget
المستخدم عن طريق إزالة السطر p = ggplotly(g);
منذ أن قمنا بترميز متغير التصور الخاص بنا ، p
.
الخطوة 3: تحضير التصور لـ Power BI
الآن وقد انتهينا من الترميز في R ، يجب علينا إجراء بعض التغييرات في ملفات JSON الداعمة لدينا لإعداد التصور لاستخدامه في Power BI.
لنبدأ بملف capabilities.json
. يتضمن معظم المعلومات التي تراها في علامة تبويب المرئيات للحصول على عنصر مرئي ، مثل مصادر بيانات الملحق والإعدادات الأخرى. أولاً ، نحتاج إلى تحديث dataRoles
البيانات واستبدال القيمة الحالية بأدوار بيانات جديدة num_records
dataset
وعدد السجلات:
# ... "dataRoles": [ { "displayName": "dataset", "description": "Connection Details - From, To, # of Connections, Sentiment Color, To Node Type Color", "kind": "GroupingOrMeasure", "name": "dataset" }, { "displayName": "num_records", "description": "number of records to keep", "kind": "Measure", "name": "num_records" } ], # ...
في ملف capabilities.json
json ، دعنا نقوم أيضًا بتحديث قسم dataViewMappings
. سنضيف conditions
يجب أن تلتزم بها scriptResult
، بالإضافة إلى تحديث نتيجة البرنامج النصي لمطابقة أدوار البيانات الجديدة وشروطها. راجع قسم conditions
، جنبًا إلى جنب مع قسم select
ضمن scriptResult
، من أجل التغييرات:
# ... "dataViewMappings": [ { "conditions": [ { "dataset": { "max": 20 }, "num_records": { "max": 1 } } ], "scriptResult": { "dataInput": { "table": { "rows": { "select": [ { "for": { "in": "dataset" } }, { "for": { "in": "num_records" } } ], "dataReductionAlgorithm": { "top": {} } } } }, # ...
دعنا ننتقل إلى ملف dependencies.json
الخاص بنا. هنا ، سنضيف ثلاث حزم إضافية ضمن حزم cranPackages
حتى يتمكن Power BI من تحديد المكتبات المطلوبة وتثبيتها:
{ "name": "data.table", "displayName": "data.table", "url": "https://cran.r-project.org/web/packages/data.table/index.html" }, { "name": "DiagrammeR", "displayName": "DiagrammeR", "url": "https://cran.r-project.org/web/packages/DiagrammeR/index.html" }, { "name": "visNetwork", "displayName": "visNetwork", "url": "https://cran.r-project.org/web/packages/visNetwork/index.html" },
ملاحظة: يجب أن يقوم Power BI بتثبيت هذه المكتبات تلقائيًا ، ولكن إذا واجهت أخطاء مكتبة ، فحاول تشغيل الأمر التالي:
install.packages(c("DiagrammeR", "htmlwidgets", "visNetwork", "data.table", "xml2"))
أخيرًا ، دعنا نضيف المعلومات ذات الصلة لملفنا المرئي إلى ملف pbiviz.json
. أوصي بتحديث الحقول التالية:
- حقل الوصف المرئي
- عنوان URL للدعم المرئي
- عنوان URL المرئي لـ GitHub
- اسم المؤلف
- البريد الإلكتروني للمؤلف
الآن ، تم تحديث ملفاتنا ، ويجب علينا إعادة تجميع التصور من سطر الأوامر:
pbiviz package
عند التنفيذ الناجح للتعليمات البرمجية ، يجب إنشاء ملف .pbiviz
في دليل dist
. يمكن الاطلاع على الكود الكامل المغطى في هذا البرنامج التعليمي على GitHub.
الخطوة 4: استيراد التصور إلى Power BI
لاستيراد المرئيات الجديدة في Power BI ، افتح تقرير Power BI الخاص بك (إما واحد للبيانات الموجودة أو آخر تم إنشاؤه أثناء خطوة المتطلبات المسبقة الخاصة بنا مع بيانات الاختبار) وانتقل إلى علامة التبويب المرئيات . انقر فوق الزر ... [المزيد من الخيارات] وحدد استيراد صورة مرئية من ملف . ملاحظة: قد تحتاج أولاً إلى تحديد تحرير في المستعرض حتى تكون علامة التبويب المرئيات مرئية.
انتقل إلى دليل dist
لمجلد التصور الخاص بك وحدد ملف .pbiviz
لتحميل الصورة المرئية الخاصة بك بسلاسة في Power BI.
الخطوة 5: إنشاء التصور في Power BI
المرئيات التي قمت باستيرادها متاحة الآن في جزء المرئيات. انقر فوق رمز التصور لإضافته إلى تقريرك ، ثم أضف الأعمدة ذات الصلة إلى dataset
ومدخلات num_records
:
يمكنك إضافة نصوص وعوامل تصفية وميزات إضافية إلى التصور الخاص بك بناءً على متطلبات مشروعك. أوصي أيضًا بالاطلاع على الوثائق التفصيلية لمكتبات R الثلاث التي استخدمناها لزيادة تحسين التصورات الخاصة بك ، نظرًا لأن مشروعنا المثال لا يمكن أن يغطي جميع حالات استخدام الوظائف المتاحة.
ترقية تحليل الشبكة الاجتماعية التالي الخاص بك
نتيجتنا النهائية هي شهادة على قوة وكفاءة R عندما يتعلق الأمر بإنشاء تصورات Power BI مخصصة. جرب تحليل الشبكة الاجتماعية باستخدام المرئيات المخصصة في R في مجموعة البيانات التالية ، واتخذ قرارات أكثر ذكاءً باستخدام رؤى بيانات شاملة.
تعرب مدونة Toptal Engineering عن امتنانها لـ Leandro Roser لمراجعة عينات التعليمات البرمجية المقدمة في هذه المقالة.