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

۱. ۱. مقدمه

امروزه شبکه های اجتماعی ما بسیار گسترده و بهم ریخته شده اند و درحال حاضر هیچ راه مناسبی برای مدیریت و دسته بندی آن ها وجود ندارد. البته بعضی از شبکه های اجتماعی به کاربران این امکان را داده اند تا خودشان دوستانشان را در حلقه های اجتماعی ( مانند حلقه ها در google+ و لیست دوستان در facebook و twitter ) دسته بندی کنند. بهرحال این روش راهی مناسب به نظر نمی رسد چرا که با اضافه شدن افراد دیگر به دوستان باید این حلقه ها توسط کاربران بروزرسانی گردند.
پس ما به دنبال طراحی سیستمی هستیم که قابلیت یادگیری و شناسایی افراد را داشته باشد و بتواند به صورت خودکار حلقه های اجتماعی را تشکیل داده و آن ها را بروز رسانی کند.
در این پروژه ما اطلاعات یک شخص و دوستان وی در یک شبکه اجتماعی را داریم و هدف ما پیدا کردن حلقه های اجتماعی شخص مورد نظر است که هر حلقه زیر مجموعه ای از دوستان شخص می باشد.
همان طور که در شکل زیر مشاهده می شود شخص با u و دوستان وی با v مشخص گردیده اند و هدف ما پیدا کردن حلقه های نمایش داده شده است.

an ego-network with labled circles

با پیدا کردن این حلقه ها میتوانیم افرادی که در یک حلقه قرار دارند ولی با هم دوست نیستند ( راس های داخل یک حلقه که یالی میان آنان وجود ندارد ) را مانند سیستم people you may know در facebook به یکدیگر پیشنهاد دهیم.

۲. ۲. کارهای مرتبط

۳. ۲.۱. روش خوشه بندی

در روش خوشه بندی یا clustering مدلی برای ایجاد حلقه ها با ویژگی های زیر تعریف می شود:

  1. راس هایی که در یک حلقه قرار دارند باید ویژگی ها یا جنبه های یکسانی داشته باشند

  2. حلقه های مختلف باید براساس ویژگی های متفاوتی شکل گرفته باشند مثلا حلقه ی خانوادگی یا حلقه ی افراد یک دانشگاه

  3. حلقه ها می توانند با یکدیگر تداخل داشته باشند و همچنین حلقه های قوی تر نیز میتوانند داخل حلقه های ضعیف تر شکل بگیرند

ورودی این مدل برای هر کاربر مجوعه V که رئوس متصل به u ( کاربر مورد نظر ) و مجموعه E که شامل تمام یال هایی می باشد که میان مجموعه V وجود دارد به همراه پروفایل تمام اعضای مجموعه V است.
هدف این روش پیش بینی کردن مجموعه C ( حلقه های کاربر ) میباشد

C = \{ C_1\dotso C_k \}, C_k \subseteq V

و همچنین مشخص کردن پارامتر
\theta_k

که نمایش دهنده این می باشد که حلقه بر اساس چه ویژگی یا جنبه هایی تشکیل شده است.
همچنین از پارامتر
\phi(x,y)

به عنوان نمایش دادن میزان شباهت پروفایل دو کاربر x و y استفاده شده است.
سپس از فرمول زیر برای یافتن اینکه آیا دو کاربر x و y در یک خوشه قرار میگیرند یا خیر استفاده میشود.
p((x,y) \in E) \propto exp \Bigg\{ \sum_{C_k \supseteq \{x,y\}}\langle \phi(x,y) , \theta_k \rangle - \sum_{C_k \nsupseteq \{x,y\}}\alpha_k \langle \phi(x,y) , \theta_k \rangle \Bigg\}

که سیگمای اول شامل تمام حلقه هایی است که هر دو راس در آن ها قرار میگیرند و سیگمای دوم بقیه ی حلقه ها را شامل می شود.
در این فرمول مقدار
\alpha_k

ضریب تناسبی برای متعادل کردن مقدار سیگما ها می باشد.
ایده این فرمول آن است که اگر مقدار پارامتر
\langle \phi(x,y) , \theta_k \rangle

که نمایش دهنده میزان شباهت دو راس با یکدیگر بر اساس ویژگی مورد نظر می باشد بالا باشد یعنی هر دو راس متعلق به یک خوشه می باشند و اگر پایین باشد یعنی متعلق به خوشه ی مورد نظر نیستند.[3]

۴. ۳. آزمایش و نتایج

۵. ۴. کارهای آینده

۶. ۵. مراجع

[1] Y.-Y. Ahn, J. Bagrow, and S. Lehmann. Link communities reveal multiscale complexity in networks. nature, 2010.
[2] E. Airoldi, D. Blei, S. Fienberg, and E. Xing. Mixed membership stochastic blockmodels. JMLR, 2008.
[3] Julian McAuley, and Jure Leskovec. Learning to discover social circles in ego networks. stanford, 2012.

محمد غضنفری

وقتی شما از «تشخیص گروه دوستان در شبکه‌های اجتماعی» صبحت می‌کنید قطعا به مسئله مشهور «تشخیص انجمن‌ها» (Community Detection) اشاره دارید. به دلیل این که کارهای بسیاری در زمینه تشخیص انجمن‌ها در حوزه شبکه‌های اجتماعی انجام شده است (برای مثال Infomap، Louvain و معیار مشهور ماژولاریتی) سوال اصلی در ارتباط با پروژه شما این است که «هدف نهایی پروژه شما چیست؟». بهتر است در ابتدای کار به صورت صریح مشخص کنید که شما قصد «پیاده‌سازی یکی از روش‌های موجود و مقایسه آن با دیگر روش‌ها بر روی مجموعه‌دادگان مختلف را دارید و یا تصمیم دارید روش جدیدی در این حوزه ارائه دهید»؟ و اگر هدف شما مورد دوم است، به این نکته توجه داشته باشید که تا به حال کارهای بسیاری در حوزه «تشخیص انجمن‌ها» صورت گرفته است و در حال حاضر نیز تز ارشد و دکترا بر روی این موضوع تعریف می‌شود و شما برای نوآوری و دستیابی به نتایج بهتر نسبت به روش‌های پیشین، کار ساده‌ای در پیش‌رو نخواهید داشت.
در پاراگراف آخر مقدمه شما ذکر کرده‌اید که
«با پیدا کردن این حلقه ها میتوانیم افرادی که در یک حلقه قرار دارند ولی با هم دوست نیستند (راس های داخل یک حلقه که یالی میان آنان وجود ندارد) را مانند سیستم people you may know در facebook به یکدیگر پیشنهاد دهیم»
که این موضوع یک مسئله شناخته شده دیگر در حوزه شبکه‌های اجتماعی به نام «پیش‌بینی پیوند» (Link Prediction) است. شما در مقدمه خود به دو مسئله بزرگ در حوزه شبکه‌های اجتماعی اشاره کرده‌اید. بهتر است کلا بر روی همان مسئله «تشخیص انجمن‌ها» تمرکز کنید و صرفا انجمن‌ها را تشخیص دهید و به عنوان خروجی پروژه خود انجمن‌های تشخیص ‌داده شده را مشخص کنید چرا که «پیش‌بینی پیوند» خود مسئله‌ای مجزا با پیچیدگی‌های خاص خود خواهد بود.
در بخش «کارهای مرتبط» تنها یک کار بررسی شده و به مهم‌ترین کارهای این حوزه که در بالا ذکر شد اشاره‌ای نشده است. همچنین معمولا مرسوم نیست که کارهای پیشین به این شکل بیان شود و بهتر است که خلاصه‌ای از ایده‌های اصلی کارهای پیشین بیان شود و نهایتا روابط اصلی آن‌ها بیان شود. همچنین در تنها کار معرفی شده کمی ابهام وجود دارد، ابتدا بیان شده «هدف این روش پیش بینی کردن مجموعه C است» و بعد در رابطه ارائه شده از C برای محاسبه p((x,y)∈E) استفاده شده که بهتر است کمی روشن‌تر بیان شود و یا این که کارهای بیشتر در بخش کارهای مرتبط آورده شود ولی فقط به ذکر ایده‌ها کلی آن‌ها بسنده شود و وارد روابط و الگوریتم‌های آن‌ها نشوید و به جای آن روش خودتان و روابط آن را به خوبی بیان کنید.
همچنین نیاز است به صورت صریح «مجموعه دادگان‌(های)» خود را نیز مشخص کنید و در پروژه خود جزیئات آن را شرح دهید.