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

تغییرات پروژه از تاریخ 1394/01/29 تا تاریخ 1394/02/27

**#چکیده**

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

در این پروژه قرار است جریان هایی که این افراد ایجاد میکنند را تشخیص و منشع آنها را نیز پیدا نمود.

![](http://upload7.ir/download/552f65b699746/b.png)
**
#مقدمه**

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

![](http://upload7.ir/download/552f65d60fb86/a.png)
**
#انگیزه برای داده کاوی در رسانه های اجتماعی**

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

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

تعریفی که از فرد تاثیرگذار توسط یک جامعه از محققان درگیر در پروژه IARPA جمع بندی شده است شامل ویژگی های زیر است**[6]**:
1. دارای اعتبار در گروه.
2. تلاش برای متقاعد کردن دیگران حتی اگر دیگران با حرف او مخالف باشند.
3. معرفی موضوعات یا ایده هایی که دیگران آنهارا انتخاب و یا پشتیبانی میکنند.

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

**چالش های رو به رو**

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

پارامتر ها در دیتاست:

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

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

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

**راه های پیدا کردن افراد تاثیرگذار**

در آینده تکمیل میشود

**کار های مرتبط**

در آینده تکمیل میشود

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

در آینده تکمیل میشود

**کارهای آینده**

پیاده سازی در سطح اولیه

**منابع**#مجموعه دادگان

طبق دیتاستی که در سایت کگل موجود است و از توییتر گرفته شده، باید الگوریتم خودآموزی پیاده سازی شود که بر اساس مقادیر و جواب داده شده در دیتاست train بتواند بین هر دو فردی که بعد از مرحله­ ی آموختن به برنامه داده میشود قضاوت کرده و فردی که تاثیر گذاری اش بیشتر است را اعلام کند. در واقع برنامه باید توانایی بدست آوردن درصد تاثیرگذاری هر فرد را داشته باشد و بین این دو عدد عمل قضاوت را انجام دهد.
 [لینک  ](https://www.kaggle.com/c/predict-who-is-more-influential-in-a-social-network) دانلود دیتاست.
این داده ها توسط 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


لینک [گیت هاب](https://github.com/hoomanbehnejad/AI_social_network/tree/master)   پروژه.

#نحوه پیاده سازی

برای پیاده سازی این برنامه با زبان پایتون می­توان از کتاب خانه های آماده ­­ای نظیر 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].


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

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

**راه های پیدا کردن افراد تاثیرگذار**

در آینده تکمیل میشود

**کار های مرتبط**

در آینده تکمیل میشود

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

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



#منابع

[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,

----------
اینکه چه کسانی در شبکه اجتماعی، جریان ایجاد می‌کنند و کدام‌ها بیشتر خواننده هستند برای صاحبان این شبکه‌ها مهم است.
نگاهی به [داده‌های این پژوهش](https://www.kaggle.com/c/predict-who-is-more-influential-in-a-social-network) بیاندازید[7]. [Lagrange polynomial](http://en.wikipedia.org/wiki/Lagrange_polynomial) as visited on may 16th 2015.
[8]. [# Minimum mean square error](http://en.wikipedia.org/wiki/Minimum_mean_square_error) as visited on 16th may 2015.