پیدا کردن افراد موثر در شبکه اجتماعی

چکیده

در دنیای وب و به خصوص شبکه های اجتمایی ،خبر ها نقش مهمی را بین افراد دارا هستند و می توانند گروهی را تحت تاثیر قرار دهند و در این بین دسته ای از افراد هستند که بین اعضا از اعتبار بالایی برخوردار هستند و پیروان آنها نیز او را تایید می­کنند و هر خبر یا رویدادی که او به اشتراک بگذارد، آنها نیز آن را به اشتراک میگذارند و به همین ترتیب خبر در بیشتر شبکه های اجتمایی گسترش میابد. حال با این تفاسیر محققان تصمیم گرفته اند که با بررسی این نوع شبکه های اجتماعی، روابط حاکم بر آنها را دریابند تا بتوانند مدلی ارائه دهند و از روی آن به شناختن و بررسی رفتار های افراد دست یابند.
در این پروژه قرار است جریان هایی که این افراد ایجاد میکنند را تشخیص و منشع آنها را نیز پیدا نمود.

مقدمه

امروزه رشد سریع شبکه ای اجتماعی باعث شده افراد در زندگی شخصی خود زمان بیشتر را در این شبکه ها بگذرانند و به همین علت این شبکه معیاری برای مطالعه رفتار و انگیزه­ی افراد در چرایی استفاده از شبکه های اجتمایی قرار گرفته است. همچنین مطالعات بر روی این شبکه ها نشان داده است که خبر یا هر منبعی که باعث خوشی و شادی افراد میشود (که خود یکی از فاکتور های تاثیرگذار است) از اهمیت بالای برخوردار است[1].

انگیزه برای داده کاوی در رسانه های اجتماعی

اطلاعات در دسترس از طریق رسانه های اجتماعی می تواند به ما بینش شبکه های اجتماعی و جوامعی که قبلا در هر دو فیلد مقیاس و انداره امکان پذیر نبوده را بررسی کنیم. این رسانه های دیجیتال می تواند از مرزهای دنیای فیزیکی به مطالعه روابط انسانی [2] و اندازه گیره محبوبیت اجتماعی و سیاسی افراد در یک منطقه بدون برری صریح و روشن برسانند[3، 4، 5]. رسانه های اجتماعی بزرگی مانند فیس بوک و توییتر منبع ایده آل برای مطالعه مکانیزم ها و روندهای تاثیر گذاری است. با این حال، این کاری بسیار دشوار است. برای به دست آوردن اطلاعات مفید از داده های رسانه های اجتماعی بدون استفاده از فن آوری های داده کاوی کاری بسیار سخت و طاقت فرسا است. این اطلاعات به ما برای درست کردن مدلی از رفتار های مردم کمک کند. و بر اساس این مدل میتواند افراد را بر اساس ویژگی هایشان طبقه بندی کرد و ویژگی های روانشناسی افراد را از روی رفتار هایی که از خود نشان میدهند دریافت نمود و همچنین در جوامعی که در حال پیشرفت میباشند این ویژگی ها به دولت کمک میکنند تا بداند افراد جامعه چه مشکلاتی (در صورت وجود مشکل) یا چه نظراتی در مورد خود دارند و یا چه چیز هایی موجب خوش حالی افراد در مناطق مختلف جغرافیایی میشود.

حال برای فهم بیشتر پروژه بهتر است با مفاهیم زیر آشنا شویم:

فرد تاثیرگذار

تعریفی که از فرد تاثیرگذار توسط یک جامعه از محققان درگیر در پروژه IARPA جمع بندی شده است شامل ویژگی های زیر است[6]:

  1. دارای اعتبار در گروه.

  2. تلاش برای متقاعد کردن دیگران حتی اگر دیگران با حرف او مخالف باشند.

  3. معرفی موضوعات یا ایده هایی که دیگران آنهارا انتخاب و یا پشتیبانی میکنند.

دارای اعتبار بودن به معنی این است که ایده و نظر های فرد تاثیرگذار توسط افراد شناخته شده و مشهور به رسمیت شناخته میشود. ممکن است در ابتدا به نظریات یا ایده های خود پافشاری نماید ولی سرانجام بتواند افکار خود را در طی دراز مدت به پیروانش اثبات نماید. این فرد لازم نیست در بحث و یا گروهی که در آن فعالیت می کنند فعال باشند تا بتوانند حمایت و پشتیبانی آنها را دریافت کنند، او حرف خود را از طریق فراهم آوری جواب های قابل قبول، آوردن بینش یا ایده ای جدید و یا با پیدا کردن موارد خاص که باعث رد یا تایید مسئله میشود نظریات دیگران به نظر خود نزدیک کند.

مجموعه دادگان

طبق دیتاستی که در سایت کگل موجود است و از توییتر گرفته شده، باید الگوریتم خودآموزی پیاده سازی شود که بر اساس مقادیر و جواب داده شده در دیتاست train بتواند بین هر دو فردی که بعد از مرحله­ ی آموختن به برنامه داده میشود قضاوت کرده و فردی که تاثیر گذاری اش بیشتر است را اعلام کند. در واقع برنامه باید توانایی بدست آوردن درصد تاثیرگذاری هر فرد را داشته باشد و بین این دو عدد عمل قضاوت را انجام دهد.
لینک دانلود دیتاست.
این داده ها توسط Peerindex تهیه شده و با همکاری شرکت ماکروسافت مسابقه­ ای به نام influence in social networks با هدف قضاوت روی رفتار افراد در شبکه های اجتماعی و پیدا کردن موثر ترین فرد در این شبکه ها در تاریخ 13 آپریل 2013 به مدت یک روز برگذار شد. در این مجموعه دادگان، داده ­ها به صورت جفت جفت قرار دارد و در هر جفت با 11 المان از قبل محاسبه شده و مثبت،براساس فعالیت های آنها در توییتر (مثل تعداد پیروان، تعداد پست ها و ...) فراهم شده است. در هر جفت میزان تاثیرگذاری A و B با یک متغییر دودویی مشخص میشود. 1 مشخص کننده ­ی این است که A از B تاثیرگذارتر است و 0 نشان دهنده ­ی تاثیرگذاری بیشتر B نسبت به A است. همان طور که گفته شد هدف این کار پیاده سازی یک نرم افراز خودآموز ماشین است که سعی میکند این رفتار ها شناسایی و پیش بینی کند و استفاده از آن در موارد دیگر جایز نیست.
پارامتر های موجود و توضیحات آن در دیتاست:

  1. follower_count

  2. following_count

  3. listed_count *

  4. mentions_received

  5. retweets_received

  6. mentions_sent

  7. retweets_sent

  8. posts

  9. network_feature_1 *

  10. network_feature_2 *

  11. network_feature_3 *

توضیحات:
مورد اول: مشخص کننده ی تعداد افراد پیروی یک فرد را در شبکه اجتماعی است.
مورد دوم:مشخص کننده ی تعداد افرادی است که فرد آنها را در شبکه اجتماعی دنبال میکند است.
مورد چهارم:مشخص کننده ی تعداد پست هایی است که فرد در آنها ذکر شده است.
مورد پنجم:مشخص کننده ی تعداد پست های به اشتراک گذاشته شده از پست های یک فرد توسط پیروان او است.
مورد ششم:مشخص کننده ی تعداد افرادی است که فرد آنها را در مجموعه پست های خود ذکر یا به آنها اشاره کرده است.
مورد هفتم:مشخص کننده ی تعداد پست های به اشتراک گذاشته شده توسط فرد از مجموعه پست ها یا اخبار پیروان خود است.
مورد هشتم:مشخص کننده ی تعداد پست هایی است که فرد از آغاز عضویت خود در شبکه اجتماعی ارسال کرده است.
لازم به ذکر است هیچ توضیحی درمورد عناصر ستاره داد بالا در سایت کگل (منبع مجموعه دادگان) موجود نمی باشد.
لینک گیت هاب پروژه.

روش‌های حل مسئله

برای حل این نوع مسائل میتوان از روش های زیر بهره گرفت. همچنین میتوان تلفیقی از این روش ها را به عنوان روش حل درنظر گرفت زیرا در برخی روش ها ویژگی هایی موجود است که در بقیه نیست و با ترکیب آنها میتوان مسئله را دقیق تر حل نمود.
برای پیاده سازی این برنامه با زبان پایتون می­توان از کتاب خانه های آماده ­­ای نظیر numpy که برای محاسبات علمی به کارمیرود، sklearn که برای خودآموزی ماشین در زبان پایتون است استفاده نمود.
روش اول: مدل خطی
در ابتدا باید یک رفتار خطی از این پارامتر ها پیدا کنیم یعنی ساختن مدلی شبیه
ax + by + cz + ... = 0 یا {\sum^{m}_{i=1}(a_i x_i) }= 0

که در اینجا میتوان بازه های a_i
را با حل دستگاه معدالات خطی پیدا نمود.

روش دوم: اف اف تی یا Fast Fourier transform
در این روش با فرض اینکه ما توابعی داریم کاملا مستقل خطی هستند و با ضرب آنها در هم به یک معادله شبیه

U(x, y, t, ...) = P(x) F(y) M(t) ... = 0

به دست می آید. حال تنها کاری که باید انجام داد بدست آوردن توابع است که می توان آنهارا با روش اف اف تی و استفاده از سری فوریه محاسبه نمود.
خوبی روش فوریه این است که میتوان این توابع را به صورت سینوسی و کسینوسی نوشت و با یک سیکما محاسبه نمود و همچنین در مواقعی که صورت صریح توابع موجود نباشد سری فوریه میتواند آنها را به صورت توابع پایه بیان کند،
هر یک از این توابع به صورت زیر می باشد:
F(x) = \frac{a_0}{2} + {\sum_{i=1}^{\infty}(a_i \cos(\frac{n\pi}{l}x) + b_i \sin(\frac{n\pi}{l}x))}

روش سوم: مدل چند جمله ای
در این روش در ابتدا فرض میشود که یک چند جمله ای از درجه ی n داریم، که n به تعداد نقاط (پارامتر های) ورودی برنامه است و قرار است با این تعداد نقطه منحنی رسم شود که از تمام این نقاط بگذرد در نتیجه فرمولی که بدست می آید را میتوان به عنوان فرمول کلی درنظر گرفت و با استفاده از روش های مختلف برون یابی و درون یابی نقاط دیگر را پیش بینی نمود.
روش های درون یابی :
روش اول - لاگرانژ:
در این روش برای پیدا کردن تابع مورد نظر طبق زیر عمل میکنیم [7]:

(x_0, y_0), (x_1, y_1), ... ,(x_n, y_n)
L(x) = {\sum_{j = 0}^{k}(y_j l_j(x))}
l_j(x) = \prod_{0\leq m \leq k , m \not= k } (\frac{x - x_m}{x_j - x_m})

روش چهارم - برازش منحنی:
در این روش سعی میشود یک چند جنله ای مرتبه n حدس زد که

\sum_{i = 0}^{N} (y_i - P(x_i))^{2}

کمترین مقدار شود.
برای این منظور از روش ماتریس کمترین مربعات استفاده میشود [8].
بعد از بدست آوردن ضریب ها میتوان با استفاده از معادله و پارامتر های ورودی میزان تاثیر گذاری را پیدا نمود.

نحوه ارزیابی برنامه

همان طور که گفته شد برنامه میزان تاثیرگذاری افراد را با مقادیری بین صفر و یک مشخص میکند درنتیجه بعد از اینکه هر یک از رکورد ها خوانده شد و درصد تاثیرگذاری محاسبه شد آن را با جواب مقایسه میشود و اگر درست بود یک امتیاز مثبت تلقی شده و بالعکس. این امتیاز ها به روند پیش بینی درصد تاثیرگذاری برنامه تاثیر گذاشته و باعث بهبود آن میشود. یعنی ماشین از مجموع امتیاز های خود و مقدار متغییر های فعلی و قبلی خود بعد از هر اجرا روی ضرایب و متغییر های فرمول ارزیابی تجدید نظر انجام میدهد.
بعد از اتمام مرحله­ ی آموختن برنامه را با دیتاست از پیش تعیین شده اجرا کرده و میزان اختلاف جواب برنامه و جواب های پیش فرض مقایسه می­کنیم.

کار های مرتبط

مقاله ای با نام [9]Extracting Influential Nodes on a Social Network for Information Diffusion که این مسئله را از دیدگاه دیگری بررسی کرده است. سعی شده که شبکه را به صورت یک گراف در نظر گرفت و وزن های هر یال را با درجه ی تاثیر گذاری مشخص نمود.
در این مقاله روش های حریصانه (Greedy)، درجه ی نفوذ (marginal degree) بررسی شده و نتایج هر کدام آمده است و طبق فرمول ها و نمودار های بدست آمده، نشان داده است که اگر دیدگاه ما به صورت گراف باشد به نتایج بهتری دست خواهیم یافت و همچنین راه برای بیرون کشیدن اطلاعات هموار است.

آزمایش و نتایج

نتایج آزمایش اولیه
در پیاده سازی اولیه که از روش اول (مدل خطی یا linear) بهره گرفته شده است و با استفاده از کتاب خانه numpy و sklearn سعی شده با پارامتر های مسئله مدل خطی ای را بدست آورد که با آن داده های تست مورد آزمایش قرار داد و میزان تاثیرگذاری هر فرد محاسبه نمود. وزن این مدل خطی 0.8946 است یعنی 89.46% داده های درون مجموعه دادگان با خروجی برنامه با تقریب 0.0000001 واحد، برابر است. وزن برابر تعداد جواب درست به تعداد جواب اصلی است.

در پیاده سازی ثانویه که از روش کمترین مربعات بهره گرفته شده است و همچنان از کتاب خانه ی numpy و sklearn استفاده شده است، پارامتر های این مسئله را از نظر داشتن داشتن روابط توانی بررسی شده. این روش نسبت به روش قبل کند تر عمل میکند زیرا وقت بسیاری را صرف ضرب کردن ماتریس های بزرگ میکند ولی مزیت آن نسبت به روش قبل این است که جواب های بدست آمده به مراتب دقیق تر شده و وزن بیشتری را به خود اختصاص میدهند. این مدل با داشتن 92.301% از مدل قبلی ارزش بیشتری دارد ولی دارای نسبت زمانی 0.58 است که تقریبا نصف سرعت قبلی را دارد.

منابع

[1]. Kuan-Yu Lin, Hsi-Peng Lu National Taiwan University of Science and Technology, No. 43 Keelung Road, Sec. 4, Taipei 106, Taiwan, ROC
[2]. H. Lauw, J. C. Shafer, R. Agrawal, and A. Ntoulas. Homophily in the digital
world: A livejournal case study. Internet Computing, IEEE, 14(2):15–23, march-april 2010
[3]. S. Kumar, N. Agarwal, M. Lim, and H. Liu. Mapping socio-cultural dynamics
in indonesian blogosphere. In Proceedings of the Third International
Conference on Computational Cultural Dynamics (ICCCD 2009),2009.
[4]. J. Ritterman, M. Osborne, and E. Klein. Using prediction markets and
twitter to predict swine 􀃀u pandemic. In F. M. Carrero, J. M. Gomez,
B. Monsalve, P. Puertas, and J. C. a. Cortizo, editors, Proceedings of the
1st International Workshop on Mining Social Media, pages 9–17, 2009.
[5]. B. Ulicny, M. Kokar, and C. Matheus. Metrics for monitoring a socialpolitical
blogosphere: A malaysian case study. Internet Computing,
IEEE, 14(2):34 –44, march-april 2010.
[6]. Proceedings of the 2012 Workshop on Language in Social Media (LSM 2012), pages 37–45,
[7]. Lagrange polynomial as visited on 16th may 2015.
[8]. Minimum mean square error as visited on 16th may 2015.
[9]. Extracting Influential Nodes on a Social Network for Information Diffusion, Masahiro Kimura, Kazumi Saito, Ryohei Nakano, and Hiroshi Motoda, july 2010.

محمد غضنفری

«تشخیص افراد تاثیرگذار شبکه اجتماعی» مسئله جذابی است. بهتر است در بخش‌های «چکیده و مقدمه» به شکل بهتری این مسئله را معرفی کرده و به کاربردهای آن مثل بازاریابی، انتشار اخبار، عقاید و نوآوری‌ها اشاره کنید.
نکته مثبت کار شما این است که مجموعه دادگان خود را معرفی کرده‌اید، اما عنوان زیربخش آن را بهتر است «مجموعه دادگان» یا چیز مشابهی قرار دهید. «چالش‌های روبه‌رو» عنوان مناسبی برای این بخش نیست. همچنین وقتی به سایت کگل اشاره می‌کنید، پاورقی، لینک یا مرجعی به آدرس مجموعه دادگان بر روی این سایت قرار دهید. البته این کار را در انتهای صفحه انجام داده‌اید اما بهتر است در متن، پس از ذکر نام مجموعه‌ دادگان آن را قرار دهید.
ویژگی‌های معرفی شده از مجموعه دادگان را نیز شرح دهید. برای مثال منظور از network_feature_1 چیست؟ همچنین توضیحاتی نیز در رابطه با برچسب مجموعه دادگان لازم است. این طور استنباط می‌شود که در مجموعه دادگان، به ازای هر نمونه، مقدار تاثیرگذاری واقعی کاربر وجود دارد و قرار است بر اساس آن یادگیری صورت بگیرد. در صورت امکان شرح دهید که این برچسب چگونه به دست آمده است.
همچنین نیاز است روش‌ها و الگوریتم‌های یادگیری خود را شرح دهید که چگونه قرار است بر روی این مجموعه دادگان یادگیری صورت بگیرد. با توجه به این که هدف روش پیشنهادی شما پیش‌بینی مقدار تاثیرگذاری برای نمونه‌های تست مجموعه دادگان است، روش «ارزیابی» خود را نیز باید به خوبی شرح دهید که چگونه روش پیشنهادی خود را در نهایت ارزیابی خواهید نمود.
شکل‌های آورده شده طراحی شما است یا از جایی آورده شده است؟ اگر از جایی آورده شده است حتما باید مرجع آن ذکر شود و در هر دو حالت باید دارای برچسب بوده و مفاهیم داخل شکل را توضیح دهد. شکل تزئینی در مقاله علمی جایگاهی ندارد.

خسته نباشد ، خیلی خوب بود ، فقط یک سری نکته برای بهبود روند انجام پروژه:
1-در یک جای متن یک جمله را به 3 مورد از منابع اشاره داده اید که معلوم نیس چرا
2-سعی کنید بیشتر از کلمات فارسی استفاده کنید و معدل انگلیسی آن را در پاورقی بیاورید.
3-یک جای متن کامل به سمت راست شیفت داده شده است ، حتما در بررسی نهایی این اشکلات را برطرف کنید .
4-در مورد روش هایی که آورده اید فقط اصول روش را توضیح داده اید و نحوه ی استفاده از آنها در این پروژه را نگفته اید.
موفق باشید.

تایید شده

خسته نباشید
چکیده و مقدمه به خوبی بیان شده است و فرد را متقاعد می کند که وارد بحث اصلی شود.این بسیار خوب استروش اول در پیاده سازی یعنی مدل خطی به خوبی توضیح داده نشده است یعنی روش اول: مدل خطی
در ابتدا باید یک رفتار خطی از این پارامتر ها پیدا کنیم یعنی ساختن مدلی شبیه
ax+by+cz+...=0 یا ∑mi=1(aixi)=0
که در اینجا میتوان بازه های ai
را با حل دستگاه معدالات خطی پیدا نمود.
آیا می توان بین 11 پارامتری که ذکر شده است رفتار خطی پیدا کرد ؟
3 مورد آخر از پارامتر ها،توضیحی درموردشان ذکر نشده نکته بعدی این که برنامه های جانبی زیادی فراهم شده است که به صورت غیر واقعی پست ها را retweet و یا تعداد follower ها را زیاد می کنند
راهکار شما برای این مشکل چیست؟

محمد غضنفری

در بازنگری فاز پیش به شما بازخورد داده شد تا پیشینه مسئله جالب «تشخیص افراد تاثیرگذار شبکه اجتماعی» و کاربردهای آن را بهتر مرور کنید که در این امر نسبتا موفق نبوده‌اید. همچنین گرچه همان‌طور که خواسته شده بود مجموعه‌دادگان خود را بهتر معرفی کرده و ویژگی‌های آن را شرح داده‌اید اما باز هم ویژگی‌هایی مثل network_feature_1 شرح داده نشده‌اند.
مروری بر کارهای پیشین نداشته‌اید و به روش‌هایی که در گذشته برای حل این مسئله به کار رفته‌اند و ایده اصلی آن‌‌ها اشاره‌ای نداشته‌اید. همچنین از آن‌جا که هدف پروژه شما ارائه روش جدیدی نیست، بهتر بود صریحا ذکر می‌کردید که قصد مقایسه چند روش موجود برای حل مسئله را دارید.
از طرفی در بخش «نحوه پیاده‌سازی» که بهتر بود چیزی شبیه «روش‌های حل مسئله» نامیده می‌شد بیان نکرده‌اید که «چرا این روش‌ها را انتخاب و معرفی کرده‌اید و چرا از طبقه‌بندها و روش‌های رگرسیون دیگر بهره نبردید»؟ همچنین صرفا یکی از این روش‌ها را بر روی مجموعه‌دادگان اجرا کرده و نتایج آن را گزارش کرده‌اید و عملا نتایج حاصل از این روش را با روش‌های دیگر مقایسه و تحلیل نکرده‌اید.

تایید شده

توضیحات در مورد موضوع و اهمیت و روش های آن خوب ارائه شده. ارجاع ها هم دقیق و به جا هستند.
نکاتی که به نظر بنده میرسه یکی اینه که خود روش ها توضیحاتشون خوب و کامله اما این که در این موضوع چه طور از روش ها استفاده میشه خیلی بیان نشده.مثلا اگر یک مثال بیان میشد که برای یک شخص این روشها و روابط چه طور نتیجه داده خیلی گیراتر میشد.
نکته بعدی این که نتایج خیلی دقیق بیان نشدن یعنی بعضی جاها به خصوص در قسمت نتایج آزمایش اولیه توضیحات کلی ارائه شده اما نتیجه ای که به صورت جدول یا هر روش دیگه ای که ملموس و قابل مشاهده باشه بیان نشده که اگر اینطور میشد بهتر بود.
در کل پروژه دارای توضیحات خوبی بود. موفق باشید.

محمد غضنفری

پروژه شما در این فاز کامل‌تر و بهتر از فازهای قبل ارائه شده است اما نیاز است تا به چند نکته اشاره شود. وقتی فارسی می‌نویسید سعی کنید کلمات انگلیسی را در متن فارسی به کار نبرید و به ذکر بهترین ترجمه آن‌ها را در متن و اصل واژه انگلیسی در پاورقی اکتفا کنید. بخش «کارهای مرتبط» ناکافی است و در جای نامناسبی ارائه شده است. بهتر بود این بخش با بخش «روش‌های حل مسئله» ترکیب شده و به صورت کلی به معرفی روش‌هایی که می‌توان با آن‌ها به آموزش مدلی برای یافتن افراد موثر در شبکه‌های اجتماعی پرداخت اقدام می‌شد.