انجام پروژه های داده کاوی

انجام پروژه های داده کاوی بدر زمینه های مخار weka clementine12 spss modeler14.2 rapidminer ت کارشناسی و کارشناسی ارشد 09367292276 09367292276 azsoftir@gmail.com

انجام پروژه های داده کاوی

انجام پروژه های داده کاوی بدر زمینه های مخار weka clementine12 spss modeler14.2 rapidminer ت کارشناسی و کارشناسی ارشد 09367292276 09367292276 azsoftir@gmail.com

انجام پایان نامه داده کاوی

– پروژه داده کاوی با rapid miner

– پایان نامه داده کاوی با rapid miner

– پایان نامه داده کاوی با متلب Matlab

– پروژه داده کاوی با کلمنتاین

– انجام پروژه با نرم افزار کلمنتاین

– انجام پروژه با نرم افزار Clementine

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com

Data Type و Content Type در داده کاوی

برای پیاده سازی مدل های داده کاوی در SSAS از دو نوع داده ای استفاده می شود. یک نوع فیزیکی که در ساختار داده کاوی کاربرد دارد و دیگری نوع منطقی است که برای ستون های مورد استفاده در مدل بکار می رود. به زبان ساده تر در زمان ایجاد یک مدل داده کاوی برای ستون های انتخاب شده از جداول دو نوع داده ای Data Type و Content Type خواسته می شود که اولی به عنوان نوع فیزیکی و دومی به عنوان نوع منطقی برای SSAS شناخته می شود.
در ادامه به شرح هر یک از آن ها خواهم پرداخت اما قبل از آن به عبارات و تعارف زیر توجه کنید.

 

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com

Data Type: از آن به عنوان نوع داده ای نام برده می شود که نشان دهنده نوع رکوردهای یک ستون خاص در جدول است.Content Type: از آن به عنوان نوع محتوایی نام برده می شود که بیانگر شرح حالت و نوع منطقی رکوردهای ستون است.Column: ستون های هر جدول است.Row: به سطرهای هر جدول گفته می شود.Case Table: منظور از آن جدول اصلی و پایه است.Nested Table: منظور از آن جدول کمکی یا تودرتو است.Input: به ستون های ورودی انتخاب شده برای مدل گفته می شود.Predictable: به ستون هایی که باید پیش بینی بر اساس آن ها انجام شود گفته می شود. از آن ها به عنوان ستون های قابل پیش بینی نیز یاد می شود.

 

در زمان ساخت مدل، نوع داده ای هر ستون در قسمت Data Type مشخص می شود که این کار باعث می شود تا الگوریتم اطلاعاتی از داده های هر ستون بدست آورد و در پردازش آن ها بکار گیرد. در داده کاوی هر نوع داده ای یک یا چند نوع محتوایی را پشتیبانی می کند. Content Type رفتار محتوای ستون ها را به SSAS توصیف می کند. برای مثال اگر داده های یک ستون در وقفه های زمانی خاصی مانند روزهای هفته تکرار شوند می توان نوع محتوایی مربوط به آن ستون را برابر با Cyclical قرار داد.برخی از الگوریتم های داده کاوی برای اینکه به خوبی کار کنند حساسیت زیادی به مشخص بودن این انواع دارند مانند الگوریتم بیز که نمی تواند از نوع محتوایی Continus برای مقادیر ورودی استفاده کند.

Data Typeهنگام ساخت مدل داده کاوی در SSAS باید نوع داده ای هر ستون مشخص شود. در واقع نوع داده ای مشخص کننده ی متنی یا عددی بودن داده های موجود در ستون است. موتور داده کاوی از این اطلاعات برای مشخص کردن نحوه پردازش استفاده می کند.هر نوع داده ای یک یا چند نوع محتوایی را پشتیبانی می کند. برای مثال اگر داده های موجود در یک ستون عدد باشند می توانید در قسمت Data Type آن نوع Numeric یا Text را انتخاب کنید. اگر نوع Numeric را انتخاب کنید در آن صورت برای Content Type نوع های Continuous و Discretize قابل انتخاب هستند.جدول زیر نوع های داده ای و محتوایی قابل پشتیبانی را نشان می دهد.

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com

نوع محتوایی(Content Types) نوع داده ای (Data Type)
Cyclical, Discrete, Discretized, Key Sequence,Ordered, Sequence Text
Continuous, Cyclical, Discrete, Discretized, Key, Key Sequence, Key Time, Ordered, Sequence Long
Cyclical, Discrete, Ordered Boolean
Continuous, Cyclical, Discrete, Discretized, Key, Key Sequence, Key Time, Ordered, Sequence Double
Continuous, Cyclical, Discrete, Discretized, Key, Key Sequence, Key Time, Ordered Date

Content Type
همانطور که پیش تر گفته شد نوع محتوایی برای SSAS به عنوان یک نوع منطقی شناخته می شود که بیانگر رفتار محتوای ستون ها است. در ادامه به شرح هر یک از انواع Content Type می پردازم. Discrete: این نوع نشان دهنده این است که ستون مورد نظر شامل تعداد محدودی از مقادیر است. برای مثال ستون جنسیت را در نظر بگیرید، مقادیر این ستون یا مرد است یا زن، به ستون هایی که این نوع مقادیر را در خود دارند Discreteگفته می شود. این نوع مقادیر نظم و ترتیب خاصی ندارند و نمی توانند حاکی از مسئله ای باشند و با اینکه ممکن است گاهی اوقات عددی هم باشند، نمی توانند ما را به مقصود خاصی برسانند. مثل شماره تلفن که عدد است اما کاربردی در محاسبات ندارند. Continuous: این نوع بیانگر داده های عددی نامحدود است که در یک مقیاس خاصی میان مقادیر وجود دارد. همانطور که در مورد نوع Discreteمتوجه شدید، این نوع محدود و قابل شمارش است اما مقادیر Continuous مقادیر عددی در رنج بزرگ و نامحدود می باشند. یک ستون با رکوردهایی از درجه حرارت مثال مناسبی برای این نوع است.
Discretized: این نوع بیانگر فرایند قرار دادن یک مجموعه از تعداد محدودی از مقادیر Continuous در یک گروه است. به عبارت دیگر نوعdiscretized گروهی از داده های مشتق شده از ستون Continuous را شامل می شود. می توان داده ها را به صورت دستیdiscretized کرد.
Key: همانطور که از نام این نوع مشخص است، به معنای یونیک بودن رکوردها در هر سطر است. معمولا در جداول اصلی (Case Tables) کلید به صورت عددی یا متنی مشخص می شود. انتخاب نوع Key برای ستون به معنای عدم آنالیز برروی آن ستون است و فقط جهت پیگیری رکوردها استفاده می شود. جداول تودرتو (Nested Tables) نیز ستون کلید دارند اما معنای Key در این جداول کمی متفاوت با قبلی است. در جداول تودرتو زمانی یک ستون را به عنوان Key معرفی می کنیم که قصد داشته باشیم تا از خصوصیات آن ستون برای آنالیز استفاده کنیم. با این حال مقادیر ستون این جدول باید جدول اصلی یونیک باشد. برای مثال اگر قصد آنالیز محصولات خریداری شده ی مشتریان را دارید، باید در قسمت Content Type مربوط به ستون CustomerID در جدول اصلی نوع Key را انتخاب کنید و همین کار را برای ستون PurchasedProducts در جدول تودرتو انجام دهید.
key sequence: از این نوع فقط در الگوریتم خوشه بندی زنجیره ای استفاده می شود و بیانگر و توصیف کننده ی رویدادهای پیوسته و زنجیره ای در ستون است.

key time: از این نوع فقط در الگوریتم سری زمانی استفاده می شود و به معنای این است که مقادیر این ستون در واحد زمان نمایش داده می شوند.

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com


Cyclical: رکوردهای موجود در این نوع بیانگر وجود یک مجموعه ی گردشی است برای مثال روزهای هفته یک مجموعه گردشی است زیرا هفت روز هفته مرتبا تکرار می شود. ستون های cyclical را با نوع های ordered discrete نیز مشخص می کنند.
Ordered: این نوع معمولا مشخص کننده ی ستون هایی است که مقادیر آن ها به صورت زنجیره ای است.

تشخیص حالت احساسی نویسنده متن

.مقدمه

تشخیص احساسات یا Sentiment analysis شاخه ای از علوم کامپیوتر و پردازش زبان (NLP) است که سعی دارد ماشین و هوش مصنوعی را با احساس و عواطف انسانی آشنا سازد و تشخیص آنها از هم را میسر سازد .
تلفن همراهی را تصور کنید که بر اساس مکالمات شما با افراد تشخیص میدهد که امروز روز دشواری داشته اید و به طور خودکار تماس کسانی که سابقه ی بیشترین دعوا ی لفظی را دارند را بلاک میکند تا شما در آرامش باشید .
شبکه ی اجتماعی را تصور کنید که لحن و احساس شما را از آپدیت روزانه ی که پست کردید تشخیص میدهد و شما را با افرادی با حس مشابه در تماس قرار میدهد تا با هم بر سر مشکل مشترکتان (مثلا حقوق کم ) درد و دل کنید ! همچنین اگر شبکه ی اجتماعی دارای جامعه ی بزرگی باشد اطلاعات جمع آوری شده ی آن برای امور آماری – روان شناسی بی نظیر خواهند بود . مثلا روانشناسان میتوانند شروع یک اپیدمی افسردگی در یک منطقه ی خاص را تشخیص دهند . از آنجا که میزان جرم وقتی که مردم یک منطقه مشکلات روحی دارند بیشتر است پلیس نیز میتواند نیرو های خود را بر این اساس در جا های مختلف تقسیم کند .
تشخیص احساس در زمان حال بیشترین کاربرد را در سایت های عرضه انواع کالا ( مجازی یا حقیقی ) دارد . بسیار مهم است که مدیر سایت و شرکت عرضه کننده ی محصول بدانند کدام نقد و بررسی ها از یک محصول مثبت هستند و کدام منفی و اینکه شدت منفی یا مثبت بودن چقدر است . کاربر از محصول کمی ناراضی است یا شدیدا ؟ شرکت های بزرگی همچون Amazon و Google و Ebay از SA برای بررسی نظرات کاربران استفاده میکنند . این شاخه از SA را Opinion mining میگویند .
تشخیص احساس ماشین های فعلی را یک نسل به جلو رانده و باور عمومی بر بی احساس بودن ماشین ها را کمرنگ تر میسازد . در پی آن باعث آسان تر شدن بسیاری از جهات زندگی انسان نیز خواهد شد .
۱٫۱شرح مساله

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com


در این پروژه قصد داریم به کمک SA برنامه ای بنویسیم که حالت روحی نویسنده ی یک حساب سایت Twitter را بررسی و تشخیص دهد . برای ساده تر شدن مساله کمیت “حالت روحی” را یک کمیت بولین در نظر میگیریم به این شکل که شخص میتواند خوشحال – ناراحت – خنثی باشد .
در صورت امکان سعی خواهد شد که حالت های پیچیده تر روحی مثل استرس و آرام بودن (Contentsity and stress ) را نیز شناسایی کنیم .
در انتها اطلاعات را بر روی نموداری بر حسب زمان/احساس نمایش میدهیم که نشان دهنده ی حالت روحی فرد در گذر زمان خواهد بود .
هدف ما در این مساله رسیدن به دقت بالای ۷۰ درصد است . دلیل آن اینست که طبق گزارش ها و تحقیقات متعدد دقت انسان در تشخیص حالت احساسی با در دست داشتن تنها متن ، در حدود ۷۰ درصد است [۲۰] .
۲٫۱چالش ها

در پیاده سازی SA برای یک نوشتار همیشه چالش های زیادی را پیش روی داریم :

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com


    کاربر به طور مستقیم احساس خود را بروز نمیدهد و ممکن است به شیوه های متعدد ( افعال یا صفات منفی ) نظر خود را بروز دهد . جملات پیاپی ممکن است معنی هم را تکمیل کنند .
    امروز حالم به هیچ وجه خوب نبود
    یا
    اگر فکر میکنید حالم خوبه در اشتباهید
    کاربر ممکن است از کنایه – طعنه – شوخی استفاده کند . هر کدام از این موارد در ساختار جمله مفهومی کاملا متفاوت با مفهوم واقعی دارند .
    امروز همونقدر خوشحال بودم که یه بره تو سلاخ خونه خوشحاله !
    این کامپیوتر کاربردش در حد یه پاره آجر هم نیست
    کاربران معمولا از ساختار های جمله ای پیچیده ای استفاده میکنند که به دلیل رسمی نبودن الزاما در چهارچوب کلی ساختار زبان قرار نمیگیرند .
    بنا به دلایل فوق بررسی تنها لغت به لغت (Lexical) میتواند باعث ایجاد نتایج غلط شود .

هیچ کدام از این چالش ها تا به کنون در ضمینه ی NLP به کلی حل نشده اند .
۲٫ کار های مرتبط

در ضمینه ی Sentiment analysis که ازین به بعد آن را به اختصار SA می نامیم تا به کنون روش های مختلفی پیشنهاد شده . درادامه به بررسی تعدادی از کارهای انجام شده میپردازیم . هر روش به مقاله مربوط ارجا داده شده است .

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com


ٍشکلک ها ! [۱] ساده ترین روش تشخیص حالت یک نویسنده مشاهده ی شکلک ها یا Emoticons ای هست که او در متن به کار برده . با این شکلک های بسیار ساده میتوان مفاهیم احساسی پیچیده ای را انتقال داد .
مثلا :
حالم خوب است :))
مفهوم بسیار ساده ای دارد . در حالی که :
حالم خوب است

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

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

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com



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

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com


در این پروژه قصد داریم به بررسی روش های گفته شده در کارهای مرتبط بر روی دیتاست های مختلف بپردازیم و دقتشان را با یکدیگر مقایسه کنیم.
خروجی کار در انتها نموداری برای سنجش میزان دقت و سرعت روش های مختلف مطرح شده می باشد.
۲. کارهای مرتبط
۲.۱. Clustering

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

    راس هایی که در یک حلقه قرار دارند باید ویژگی ها یا جنبه های یکسانی داشته باشند
    حلقه های مختلف باید براساس ویژگی های متفاوتی شکل گرفته باشند مثلا حلقه ی خانوادگی یا حلقه ی افراد یک دانشگاه
    حلقه ها می توانند با یکدیگر تداخل داشته باشند و همچنین حلقه های قوی تر نیز میتوانند داخل حلقه های ضعیف تر شکل بگیرند

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com


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

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

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

به عنوان نمایش دادن میزان شباهت پروفایل دو کاربر x و y استفاده شده است.
در قدم اول ابتدا هر یک از رئوس گراف را یک خوشه در نظر میگیریم و سپس از فرمولی که در زیر آمده برای تشخیص اینکه آیا دو خوشه میتوانند با هم ترکیب شوند و یا خیر استفاده میشود. این روش را تا جایی که مجموعه C تغییری نکند انجام میدهیم.
p((x,y)∈E)∝exp{∑Ck⊇{x,y}⟨ϕ(x,y),θk⟩−∑Ck⊉{x,y}αk⟨ϕ(x,y),θk⟩}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\}p((x,y)∈E)∝exp{∑Ck⊇{x,y}⟨ϕ(x,y),θk⟩−∑Ck⊉{x,y}αk⟨ϕ(x,y),θk⟩}

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com


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

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

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

در روش infomap با استفاده از روش خوشه بندی با این تفاوت نسبت به روش قبل که می تواند بر روی گراف های جهت دار و وزن دار نیز اعمال شود دو الگوریتم برای خوشه بندی داده ها ارائه می شود که به طور مختصر به شرح آن ها می پردازیم[۲].

    الگوریتم Two-level clustering
    هسته کاری این الگوریتم خوشه بندی براساس map equation است و ابتدا هر یک از راس های گراف را یک خوشه درنظر می گیرد و در هر مرحله هرکدام از خوشه ها که شباهت زیادی با یکدیگر دارند ادغام می کند.

    این روش از این نظر مناسب نیست که هر گاه دو خوشه با یکدیگر ترکیب شوند یک خوشه ی جدید به وجود می آید و اثری از خوشه های قبلی دیگر نیست و ممکن است که اگر خوشه های قبلی با خوشه های دیگری در مراحل بعد ترکیب شوند به جواب بهتر و دارای دقت بالاتری دست پیدا کنیم[۲].

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com

    برای رفع این مشکل دو متد زیر در نظر گرفته شده است:
    ۱٫ متد Submodule movements
    این متد به ما قابلیت تجزیه ی یک خوشه به زیر خوشه هایش که در مرحله قبل تشکیل شده اند را می دهد.
    ۲٫ متد Single-node movements
    این متد به ما قابلیت تجزیه ی خوشه و جدا کردن یک راس و درنظر گرفتن راس به عنوان خوشه ی مستقل را می دهد.
    الگوریتم Multi-level clustering
    این الگوریتم مدل کامل تری از الگوریتم قبل بوده و متد هایی که در این الگوریتم تعریف می شوند می توانند به جای تجزیه ی خوشه به یک مرحله قبل خوشه را به مقدار دلخواه تجزیه کنند.

توسط این دو متد می توان در هر مرحله و هر جا که یک خوشه ترکیب شد چک کنیم که آیا بهترین ترکیب برای خوشه بندی را انتخاب کرده ایم و یا خیر!
۲.۳. Martelot

روش Le Martelot نیز همانند روش های پیشین از الگوریتم های خوشه بندی اطلاعات استفاده می کند و قابل اجرا بر روی گراف های جهت دار و وزن دار می باشد.
در این روش با استفاده از [۴]Newman’s modularity که فرمولی برای محاسبه میزان تفاوت های یک راس یا یک خوشه با دیگر خوشه ها می باشد به خوشه بندی اطلاعات می پردازیم.
این فرمول خوشه بندی برای حل مسئله ی تشخیص گروه ها مناسب نیست چرا که در شناسایی گروه های کوچک و متداخل ضعیف عمل می کند.
برای حل این مشکل در روش Martelot ضرایب مختلفی به میزان متفاوت بودن خوشه ها با یکدیگر در ماژولاریتی داده می شود و الگوریتم خوشه بندی را چندین بار اجرا می کند و خوشه بندی بهینه را انتخاب میکند [۵].
۲.۴. Louvain

متد Louvain یک متد نسبتا سریع برای پیدا کردن گروه ها در شبکه های بزرگ است.
در این متد با استفاده از روش های حریصانه بر روی ماژولاریتی [۴] آن را بهینه کرده و به خوشه بندی راس های گراف می پردازد.
این بهینه سازی در ۲ مرحله انجام می شود:

    با بهینه سازی محلی متد به دنبال گروه های کوچک میگردد.
    سپس با ادغام گروه های کوچک که توانایی ایجاد گروه های بزرگتر را دارند خوشه بندی را ادامه می دهد.

این مراحل را مرتبا تکرار می شود تا به مقدار ماکزیمم ماژولاریتی برسیم [۶].
Louvain two greedy optimization steps
Louvain two greedy optimization steps
۲.۵. Combo

الگوریتم های جستجوی موجود برای تشخیص گروه های شبکه های اجتماعی براساس یک یا چند روش زیر کار می کنند:

    ادغام : ادغام و ترکیب دو جامعه مشابه
    تقسیم : تقسیم و تجزیه ی دو جامعه ی متفاوت
    نوترکیبی : انتقال و حرکت کردن یک راس بین دو جامعه ی مجزا

الگوریتم combo با بهره گیری از هر ۳ روش بالا به حل مساله تشخیص گروه های اجتماعی می پردازد که روش انجام کار این الگوریتم را توضیح می دهیم.
پس از انتخاب شدن یک حالت اولیه از یک شبکه اجتماعی موجود ( منظور از حالت اولیه ،جوامع موجود در ابتدای برنامه است که می توانند هر جوامع تصادفی انتخاب شوند و یا در ابتدای کار تمام شبکه یک جامعه در نظر گرفته شود و در مراحل بعدی تقسیم شود و یا هر کدام از رئوس یک جامعه جدا در نظر گرفته شوند و در مراحل بعد ادغام گردند ) مراحل زیر تا زمانی که تابع هدف به امتیاز بالا و نتایج مطلوب دست پیدا کند انجام می شود[۳]:

    برای هر جامعه بهترین توزیع مجدد ممکن برای تمام رئوس به جامعه ی مقصد آن ها ( اگر جامعه ی مقصد موجود نباشد جامعه جدید ایجاد می گردد ) محاسبه می شود. به زبان ساده تر در این مرحله وضعیت یک جامعه بررسی می شود که آیا جامعه مشخص شده مستقل از بقیه ی جوامع موجود است یا نیاز دارد که تغییرات روی آن صورت بگیرد[۳].
    در این مرحله اگر جامعه نیاز به تغییر داشته باشد بهترین عمل ادغام/تقسیم/نوترکیبی انتخاب شده و اعمال می شود[۳].

۳. آزمایش و نتایج
۳.۱. Data Set

مجموع دادگان ورودی این مساله یک گراف شبکه است که به صورت های مختلف می تواند تعریف شود.

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com


    فرمت Link list
    این نوع ورودی دارای N خط می باشد که به تعداد یال های گراف شبکه است و در هر خط هر یال به صورت
    source target weight
    تعریف می شود. که source و target رئوس مبدا و مقصد را مشخص می کنند و weight نیز نمایش دهنده وزن یال است که عددی نا منفی است و می تواند نباشد که در این صورت به صورت پیش فرض مقدار ۱ در نظر گرفته می شود.
    همان طور که مشاهده می شود توسط این نوع به سادگی می توان گراف های جهت دار و وزن دار را نیز پشتیبانی کرد.
    فرمت Pajek
    این نوع ورودی راس ها و یال های گراف شبکه را در دو قسمت جداگانه همانند زیر در یک فایل مشخص می کند:

    *Vertices N
    ۱ “V1”
    ۲ “V2”
    ۳ “V3”
    …

    *Edges M
    ۱ ۲ ۱
    ۱ ۵ ۰٫۳۳
    ۴ ۳ ۰٫۵
    ۲ ۳ ۱
    …

در بخش رئوس که با
Vertices N*
مشخص می شود N نمایش دهنده ی تعداد رئوس گراف است و در N خط بعد در هر خط ابتدا id راس و سپس label آن می آید.
در بخش یال ها نیز که با
Edges M*
و یا
Arcs M*
مشخص می شود M نمایش دهنده ی تعداد یال های گراف است و M خط بعد همانند فرمت Link List تعریف می شود.

ورودی آزمایش شده ابتدایی شبکه ی کوچکی از فیسبوک با ۴,۰۳۹ راس و ۸۸,۲۳۴ یال و از هر دو نوع فرمت Link list و Pajek می باشد.
۳.۲. Methods of Implementation

در این قسمت به بررسی و انجام آزمایش الگوریتم های ارائه شده روی مجموع دادگان پرداخته شده و از کدهای موجود و آماده ی آنان استفاده شده است. (لینک کدها)
روش کامپایل و اجرای هر الگوریتم در فایل readme که داخل فولدر هر کدام قرار دارد آورده شده است.

    ۳.۲.۱. Infomap
    با انجام این روش بر روی دادگان facebook به نتایج و خروجی های زیر دست یافتیم که در گیت هاب نیز موجود است. برای مشاهده نوع فرمت فایل های خروجی به اینجا مراجعه کنید.
    تعداد ۷ انجمن پیدا شد که توسط ۱۲ یال با یکدیگر در ارتباطند. این ۷ انجمن با یکدیگر قابل ترکیب نیستند ولی توسط وزن یالی که بین آن هاست می توان تشخیص داد که چه مقدار به نسبت بقیه به یکدیگر شباهت دارند.

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com


    communities predicted by infomap on facebook dataset
    communities predicted by infomap on facebook dataset
    ۳.۲.۲. Combo
    پس از انجام این روش بر روی دادگان facebook زمان زیادی را برای دریافت نتایج منتظر ماندم ( در حدود ۷۰ ثانیه ). در پایان کار نتایج و فایل خروجی این الگوریتم فایلی متنی است که تعداد خطوط آن به تعداد رئوس گراف می باشد و در هر خط تنها یک عدد نامنفی تولید شده است که نشان دهنده تعداد انجمن هایی است که راس مورد نظر در آن مشترک است.
    تعداد انجمن ها و همچنین اعضای این انجمن ها جزو نتایج و خروجی برنامه نیست!!
    ۳.۲.۳. Louvain
    نتایج خروجی برنامه ی نوشته شده برای متد Louvain به صورت یک فایل با فرمت tree. می باشد که برای تبدیل این فرمت به clu. این قطعه کد را نوشتم. چرا که برای نمایش خروجی به فرمت clu. نیازمندیم.
    با انجام این روش بر روی دادگان facebook به تعداد ۱۷ انجمن مختلف دست پیدا کردم که در شکل زیر قابل مشاهده می باشد.

    facebook clu results in louvain method
    facebook clu results in louvain method
    ۳.۲.۴. Martelot
    با اجرای متد Le Martelot بر روی دیتاست facebook به خروجی زیر دست پیدا کردیم ( گیت هاب ) .
    این روش ۱۲ انجمن بر روی این دادگان پیدا کرد که در شکل زیر نمایان است.

    facebook clu results in martelot method
    facebook clu results in martelot method

۴. کارهای آینده
بررسی نتایج بدست آمده

تا اینجای کار روش های موجود را بر روی دادگان فیسبوک اجرا کردیم و برای هر کدام به نتایجی رسیدیم.
برای دقیق تر شدن نتایج اقدام به بررسی دادگان توییتر (اینجا) نیز کردم که متاسفانه به دلیل بالا بودن حجم آن رم کامپیوترم پر شد و در استفاده از تمام روش ها به ارور segmentation fault برخوردم.
برای بررسی دقت الگوریتم های مختلف نیازمند یک جواب بودم که با خروجی دیگر برنامه ها مقایسه کنم و میزان صحت روش های مختلف را اندازه گیری کنم ولی متاسفانه دسترسی به جواب صحیح برای دادگان فیسبوک نداشتم. البته طبق تحقیقات دانشگاه MIT بر روی همین دادگان و مقایسه روش ها با یکدیگر به نمودار رسیده اند.
comparison of algorithms
comparison of algorithms

با توجه به این نمودار که از نظر کیفیت و سرعت متدهای مختلف بررسی شده اند متد Combo دارای بالاترین کیفیت و متد Martelot بالاترین سرعت را دارا بوده است.
نکته حائز اهمیت نبودن روش Infomap است که دلیلش رو نمیدونم!

با توجه به گستردگی زیاد این روش و همچنین داشتن کد بسیار قوی که از انواع فرمت های ورودی و خروجی را پشتیبانی می کند و دارای option زیادی برای اجرای آن است به همراه داکیومنت بسیار قوی و کامل ، من استفاده از روش Infomap را درحال حاضر مناسب ترین روش برای پیدا کردن گروه های دوستان در شبکه های اجتماعی می دانم و به بقیه ی دوستان پیشنهاد می کنم.

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com

دسته بندی متون یا طبقه بندی (classifying)

 عبارتست از تشخیص موضوع اصلی یک سند.
* هدف از طبقه بندی، ایجاد امکان استفاده از مدلی بر ای پیش بینی کلاسی از اشیا است که با عنوان ناشناخته برچسب خورده است
* طبقه بندی یک فرایند ۲ مرحله ای است:
الف- ساخت مدل
ب- استفاده از مدل

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com


طبقه بندی در مواردی مانند: تعیین اعتبار، مشخص نمودن گروه هایی از مشتری ها که خصوصیات و علایق مشترکی دارند، تشخیص میزان تاثیر داروها و موثر بودن درمان بکار می رود. در ادامه طبقه بندی و برخی روش ها و الگوریتم های آن به طور کامل توضیح داده شده اند.

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com


زمانی که corpus به ماتریس inner point distance تبدیل شد می توان از کلاسیفایر های ساده نزدیک ترین همسایه برای داده ها استفاده کرد. از آنجایی که ابعاد بالای موروثی ویژگی های اسناد، مانع از یک رویکرد ساده برای استفاده از درخت های دسته بندی مبتنی بر ویژگی می شوند می توان یا از رویکرد های دسته بندی دیگر استفاده کرد یا این درخت ها را در ترکیب با استراتژی های کاهش بعد به کار برد. در توسعه دسته بندی برای اسناد متنی چالش هایی وجود دارد مثلا یکی از این چالش ها برخورد با مترادف ها و کلمات چند معنی است. چالش دیگر ایجاد دسته بندی هایی است که بتواند مجوعه های بزرگ اسناد را دسته بندی کند. یا چالش دیگر دسته بندی منابع اسناد در حال استریم است. مانند اخبار که بصورت مداوم پخش می شوند. بد نیست اشاره کنیم که تکنیک های طبقه بندی بر خلاف خوشه بندی، تکنیک های با ناظر یا supervised هستند.

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

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

روش Hunt
ساخت درخت به صورت بازگشتی و با استفاده از راهبرد حریصانه تقسیم و حل اول عمق میباشد.

الگوریتم C4.5
مراحل کلی الگوریتم C4.5  برای ساخت درخت تصمیم :
۱) انتخاب ویژگی برای گره ریشه
۲) ایجاد شاخه برای هر مقدار از آن ویژگی
۳) تقسیم موارد با توجه به شاخه ها
۴)تکرار روند برای هر شاخه تا زمانی که تمام موارد شاخه، کلاس یکسان داشته باشند.
انتخاب هر ویژگی به عنوان ریشه بر پایه بالاترین حصول از هر صفت است.

الگوریتم

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com

SPRINT

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

فرمول بندی موازی از درخت تصمیم بر پایه طبقه بندی
هدف این روش مقیاس پذیری در زمان اجرا و حافظه مورد نیاز است. فرمول بندی موازی برمحدودیت حافظه که برای الگوریتم های ترتیبی مشکل ساز است غلبه می کند، بدین صورت رسیدگی به مجموعه داده های بزرگ تر بدون نیاز به دیسک I/O افزونه را ممکن میسازد. همچنین فرمول بندی موازی سرعت بالاتری نسبت به الگوریتم سریال ارائه میکند. انواع فرمول بندی های موازی برای ساخت درخت تصمیم طبقه بندی:
رویکرد ساخت درخت همزمان
رویکرد ساخت درخت قسمت بندی شده
فرموله بندی موازی ترکیبی
طبقه بندی کننده ساده بیزی
یک روش طبقه بندی احتمالی است. کلاس یک سند متناسب با کلماتی است که در یک سند ظاهر شده اند.

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com


نزدیکترین همسایه K طبقه بندی کننده
راه دیگر این است که اسنادی از مجموعه آموزش انتخاب شوند که مشابه سند جاری هستند. کلاس سند جاری، کلاسی است که اکثریت اسناد مشابه، دارند. در این روش K تا سند از مجموعه آموزش که بیشترین شباهت (بر اساس معیار شباهت تعریف شده) را به سند جاری دارند به عنوان همسایگان آن سند انتخاب می شوند. این طبقه بندی به سه مورد اطلاعاتی نیاز دارد: ۱ مقدار K 2) مجموعه ای از داده های برچسب دار، که به عنوان داده های آموزشی مورد استفاده قرار گیرند و ۳) یک معیار شباهت.
یک روش ساده برای معیار شباهت شماردن تعداد کلمات مشترک در دو سند است. این روش باید برای اسناد با طول مختلف نرمال سازی شود. یک روش استاندارد برای اندازه گیری شباهت، شباهت کسینوسی است.

شبکه های عصبی


09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com

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

(SVM) ماشین بردار پشتیبانی
الگوریتم طبقه بندی یا دسته بندی مشاین بردار پشتیبان که از روش های یادگیری با نظارت استفاده می کند که در مقاله دیگری به طور کامل در مورد این روش توضیح داده شده است.

ژنتیک

09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com

یک روش بهینه سازی اکتشافی است که از قوانین تکامل بیولوژیک طبیعی تقلید میکند. الگوریتم ژنتیک قوانین را بر روی جواب های مسأله (کروموزومها)، برای رسیدن به جوابهای بهتر، اعمال میکند. در هر نسل به کمک فرآیند انتخابی متناسب با ارزش جوا بها و تولید مثل جواب های انتخاب شده و به کمک عملگرهایی که از ژنتیک طبیعی تقلید شده اند، تقریب های بهتری از جواب نهایی بدست میآید. این فرایند باعث میشود که نسلهای جدید با شرایط مساله سازگارتر باشند. به منظور حل هر مسئله، ابتدا باید یک تابع برازندگی برای آن ابداع شود. این تابع برای هر کروموزوم، عددی را بر می گرداند که نشان دهنده شایستگی آن کروموزوم است. در طی مرحله تولید نسل ازعملگرهای ژنتیکی استفاده می شود که با تأثیر آنها بر روی یک جمعیت، نسل بعدی تولید میشود. عملگرهای انتخاب، آمیزش و جهش معمولاً بیشترین کاربرد را در الگوریتم های ژنتیکی دارند . تعدادی شروط خاتمه برای الگوریتم ژنتیک وجود دارد از جمله: تعداد مشخصی نسل، عدم بهبود در بهترین شایستگی جمعیت در طی چند نسل متوالی و عدم تغییر بهترین شایستگی جمعیت تا یک زمان خاص.
در اکثر مواقع طبقه بندی کننده های SVM و K نزدیک ترین همسایه کارآیی بالایی را ارائه میکنند و پس از آن ها شبکه عصبی، درخت های تصمیم و روش ساده بیزی قرار گرفته اند.