داده کاوی و الگوریتم خوشه بندی kmeans

/
/
/

داده کاوی و الگوریتم خوشه بندی kmeans
در این مقاله قصد داریم به کاربرد یکی از روش های خوشه بندی در داده کاوی اشاره کنیم و پیاده سازی الگوریتم kmeans را در خوشه بندی داده های یک دیتاست در نرم افزارهای مختلف بررسی کنیم.
برای استفاده از kmeans در R پکیج مربوط به تابع kmeans را دانلود و نصب می کنیم (پکیج amap_0.8-14) . سپس تابع kmeans را با ماتریسی از مقادیر تعداد مراکز (K) فراخوانی می کنیم. تابع به دنبال پارتیشن کردن نقاط به K گروه می گردد (با توجه به تعداد مراکزی که ما تعیین کردیم) بطوری که مجموع مربعات نقاط اختصاص یافته به هر مرکز کلاستر مینیمم شود. هر نقطه (مشاهده) به کلاستری با نزدیکترین میانگین اختصاص دارد. برای استفاده از این الگوریتم درR از دیتاست گل ذنبق استفاده می کنیم.
newiris <- iris
newiris$Species <- NULL
(kc <- kmeans(newiris, 3))
مقایسه Species label با نتایج کلاسترینگ

table(iris$Species, kc$cluster)

برای ترسیم کلاسترها و مراکز آنها توجه کنید که 4 بعد در داده وجود دارد که تنها دو بعد اول برای رسم پلات استفاده می شود.
برای استفاده از kmeans در R روشهای زیادی وجود دارد در مرحله بعدی می توان تابع clustergrum را از سایت
https://raw.githubusercontent.com/talgalili/R-code-snippets/master/clustergram.r
گرفته و در R اجرا کرد، سپس قطعه کد زیر را اجرا نمود:

data(iris)
set.seed(250)
par(cex.lab = 1.5, cex.main = 1.2)
Data <- scale(iris[,-5]) # اسکیل کردن بردارها)
clustergram(Data, k.range = 2:8, line.width = 0.004)

این مدل دقیق است ولی بی نقص نیست.

به عنوان یک روش دیگر می توان باز هم با استفاده از دیتاست آیریس بصورت زیر عمل کرد:
می دانیم که در دیتاست مورد استفاده 3 کلاستر وجود دارد حداکثر از 1000 تکرار استفاده می کنیم که برای دیتاستی که مثل آیریس کوچک است تفاوت چندانی در سرعت ایجاد نمی کند.
data(“iris”)
set.seed(321)
iris.km <- kmeans(iris[, -5], 3, iter.max = 1000)
بصورت زیر جدول دسته بندی را ایجاد می کنیم:

tbl <- table(iris[, 5], iris.km$cluster)
همان طور که می توان دید همه اعضای گونه setosa در کلاستر سوم، اکثر اعضای کلاستر versicolor در کلاستر دوم و اکثریت اعضای virginica در کلاستر اول جای دارند. باید داده را به فضای دوبعدی انتقال دهیم (با استفاده از Multidimensional scaling).
iris.dist <- dist(iris[, -5])
iris.mds <- cmdscale(iris.dist)
به محض اینکه نقاط را اسکیل کردیم می توانیم نقاط را در فضای دوبعدی ترسیم کنیم. از رنگ و نمودارهای نمایشی برای نشان دادن دسته بندی استفاده می کنیم.
c.chars <- c(“*”, “o”, “+”)[as.integer(iris$Species)]

a.cols <- rainbow(3)[iris.km$cluster]

plot(iris.mds, col = a.cols, pch = c.chars, xlab = “X”, ylab = “Y”)
نرم افزار وکا

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

ابتدا از سربرگ cluster وارد قسمت مربوط به خوشه بندی می شویم سپس با استفاده از دکمه choose، simple kmeans را انتخاب می کنیم. پس از ورود به قسمت properties مانند شکل بالا تعداد خوشه ها را به 3 تغییر می دهیم.
برای خوشه بندی در مرحله اول از attribute های طول و عرض کاسبرگ استفاده شده است. مانند شکل زیر:

پس از اجرا نتایج بصورت شکل زیر به دست می آید:

همان طور که می توان مشاهده کرد در هر یک از خوشه ها 50 نمونه قرار داده شده است. در شکل زیر خوشه بندی مربوطه visualize شده است:

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

در این قسمت همان طور که در شکل بالا مشاهده می شود برای خوشه بندی از کلیه ویژگی ها استفاده شده است:

مانند مرحله قبل این بار هم به هر سه خوشه 50 نمونه نسبت داده شد. در شکل زیر شمای گرافیکی این خوشه بندی قابل مشاهده است:

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

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

ابزار داده کاوی RapidMiner
از ابزارهای دیگری که می توان در کار بر روی دیتاست ها از آن استفاده نمود، ابزار RapidMiner است. الگوریتم kmeans و دیگر الگوریتم های خوشه بندی به راحتی در این ابزار در دسترسی هستند. در اینجا توضیح مختصری درباره نحوه استفاده از این ابزار برای خوشه بندی دیتاست مورد نظر آورده شده است.

ابتدا با روش drag and drop دیتاست مورد نظر (در اینجا Iris ) و اپراتور کلاسترینگ kmeans را انتخاب کرده و به روی صفحه main process قرار می دهیم. سپس مانند شکل بالا ورودی ها و خروجی ها را به هم متصل می کنیم و از سمت راست صفحه میزان k یا تعداد خوشه ها را تعیین می کنیم. در اینجا مقدار 3 را انتخاب کردیم. سپس روی دکمه play از بالای صفحه کلیک می کنیم. در شکل زیر نشان داده می شود که سه کلاستر ساخته شده و در هر کلاستر چه تعداد نمونه قرار گرفته است.
اجرای این اپراتور منجر به ایجاد فولدرهایی برای هر خوشه می شود که دیتاهای هریک از خوشه ها در پوشه مربوط به خود قرار می گیرند و با کلیک بر روی پوشه می توان محتویات آن را مشاهده نمود. مانند شکل زیر:

در قسمت Graph نیز می توان گراف مربوط به خوشه های ایجاد شده را مشاهده کرد که با کلیک روی هر یک از اعداد 0، 1 یا 2 محتویات مربوط به آن خوشه نمایش داده می شود.
در قسمت plot پلات پلات مربوط به هر گونه از سه کلاس گل زنبق با توجه به attribute های طول و عرض گلبرگ ها و کاسبرگ ها که در محور افقی قرار گرفته نمایش داده شده است.

Kmeans(fast)

در RapidMiner الگوریتم دیگری نیز علاوه بر K-means وجود دارد که نام آن Kmeans(fast) است.
بر خلاف kmeans استاندارد، این پیاده سازی از بسیاری جهات سریع تر می باشد. به خصوص برای دیتاست هایی که attribute های زیادی دارند و k value آنها نیز بزرگ است. ولی این الگوریتم به حافظه اضافی بیشتری نیاز دارد.

استفاده از این الگوریتم نیز مانند kmeans معمولی است. همان طور که در شکل زیر مشاهده می شود در این الگوریتم داده های گونه Setosa در خوشه 2 قرار گرفته اند و در خوشه بندی داده های دو گروه دیگر نیز نسبت به حالت kmeans استاندارد کمی تفاوت دیده می شود. درحالت قبلی تقسیم بندی 61 در مقابل 39 نمونه بود ولی در اینجا 62 در مقابل 38 نمونه.

در شکل فوق می توان مشاهده کرد که داده های خوشه 0 از id-51 یعنی از 51 امین دیتا شروع می شود و 50 دیتای اول که مربوط به گونه setosa می باشد در این حالت در خوشه سوم قرار داده شده است.

نظر بدهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

It is main inner container footer text