SlideShare a Scribd company logo
1 of 12
‫الگوریتم‬ ‫اساس‬ ‫بر‬ ‫بندی‬ ‫خوشه‬KMeans
Clustering customers based on KMeans
algorithm
Ehsan Kamali
Email
LinkedIn
Clustering customers based on KMeans algorithm
1
‫در‬‫بود‬ ‫شده‬ ‫اعالم‬ ‫شرکتی‬ ‫سوی‬ ‫از‬ ‫که‬ ‫نیازمندی‬ ‫یک‬ ‫به‬ ‫توجه‬ ‫با‬ ‫تا‬ ‫دارم‬ ‫تصمیم‬ ‫مقاله‬ ‫این‬‫خو‬‫شه‬‫و‬ ‫بندی‬‫الگوریتم‬
KMeans‫در‬ ‫را‬ ‫آن‬ ‫سازی‬ ‫پیاده‬ ‫نحوه‬ ‫همچنین‬ ‫و‬ ‫کنم‬ ‫تشریح‬ ‫را‬‫داده‬ ‫پایگاه‬SQL‫از‬ ‫استفاده‬ ‫بدون‬‫مکانیزم‬‫های‬
‫دستورهای‬ ‫طریق‬ ‫از‬ ‫صرفا‬ ‫و‬ ‫آن‬ ‫کاوی‬ ‫داده‬SQL.‫دهم‬ ‫توضیح‬‫علت‬‫اصلی‬‫این‬ ‫کاوی‬ ‫داده‬ ‫امکانات‬ ‫از‬ ‫استفاده‬ ‫عدم‬
‫داده‬ ‫پایگاه‬‫می‬ ‫این‬‫دستورات‬ ‫با‬ ‫راحتی‬ ‫به‬ ‫سازی‬ ‫گزارش‬ ‫ابزارهای‬ ‫اغلب‬ ‫که‬ ‫باشد‬SQL‫کنند‬ ‫برقرار‬ ‫ارتباط‬ ‫توانند‬ ‫می‬
‫امکانات‬ ‫از‬ ‫استفاده‬ ‫و‬‫کاوی‬ ‫داده‬ ‫پیشرفته‬‫ساده‬ ‫گزارش‬ ‫یک‬ ‫صورت‬ ‫به‬ ‫اطالعات‬ ‫این‬ ‫سازی‬ ‫پیاده‬ ‫در‬ ‫دشواری‬ ‫باعث‬
‫می‬.‫شد‬
‫به‬‫دیتا‬ ‫از‬ ‫استفاده‬ ‫دلیل‬‫داده‬ ‫امنیت‬ ‫حفظ‬ ‫منظور‬ ‫به‬ ،‫شرکت‬ ‫یک‬ ‫واقعی‬ ‫ی‬‫معرفی‬ ‫برای‬ ‫سریال‬ ‫شماره‬ ‫یک‬ ‫از‬ ‫صرفا‬ ‫ها‬
‫داده‬ ‫نمایش‬ ‫در‬ ‫مشتری‬‫می‬ ‫استفاده‬ ‫ها‬.‫شود‬
‫شرکت‬‫ی‬‫ن‬‫ی‬‫از‬‫مشتر‬ ‫بتواند‬ ‫تا‬ ‫دارد‬‫ی‬‫ها‬‫ی‬‫سال‬ ‫در‬ ‫که‬ ‫را‬ ‫خود‬95‫ا‬ ‫از‬‫ی‬‫ن‬‫خر‬ ‫شرکت‬‫ی‬‫د‬‫و‬ ‫اساس‬ ‫بر‬ ‫اند‬ ‫کرده‬‫ی‬‫ژگ‬‫ی‬‫ها‬‫ی‬
‫خر‬ ‫دفعات‬ ‫تعداد‬‫ی‬‫د‬‫خر‬ ‫مقدار‬ ‫و‬‫ی‬‫د‬‫خر‬ ‫مبلغ‬ ‫و‬‫ی‬‫د‬‫بند‬ ‫گروه‬‫ی‬‫نما‬‫ی‬‫د‬.
‫برا‬‫ی‬‫ا‬‫ی‬‫ن‬‫دنبال‬ ‫به‬ ‫منظور‬‫ی‬‫ک‬‫برا‬ ‫راهکار‬‫ی‬‫تقس‬ ‫مالک‬‫ی‬‫م‬‫بند‬‫ی‬‫م‬‫ی‬.‫باشد‬
‫به‬‫و‬‫ی‬‫الگور‬‫ی‬‫تم‬KMean‫پ‬‫ی‬‫شنهاد‬‫ا‬ ‫از‬ ‫تا‬ ‫شد‬‫ی‬‫ن‬‫طر‬‫ی‬‫ق‬‫ا‬ ‫بتوان‬‫ی‬‫ن‬‫بند‬ ‫دسته‬‫ی‬.‫داد‬ ‫انجام‬ ‫را‬
‫خوشه‬‫بند‬‫ی‬‫ی‬‫ا‬‫آنال‬‫ی‬‫ز‬( ‫خوشه‬Clustering‫و‬ ‫آمار‬ ‫در‬ )‫ی‬‫ادگ‬‫ی‬‫ر‬‫ی‬‫ماش‬‫ی‬‫ن‬‫ی‬،‫ی‬‫ک‬‫ی‬‫ها‬ ‫شاخه‬ ‫از‬‫ی‬‫ی‬‫ادگ‬‫ی‬‫ر‬‫ی‬‫ب‬‫ی‬‫نظارت‬
‫م‬‫ی‬‫باشد‬‫فرآ‬ ‫و‬‫ی‬‫ند‬‫ی‬‫ط‬ ‫در‬ ‫که‬ ‫است‬‫ی‬‫نمونه‬ ،‫آن‬‫دسته‬ ‫به‬ ‫ها‬‫ها‬‫یی‬‫اعضا‬ ‫که‬‫ی‬‫مشابه‬ ‫آن‬‫ی‬‫کد‬‫ی‬‫گر‬‫م‬‫ی‬‫باشند‬‫تقس‬‫ی‬‫م‬
‫م‬‫ی‬‫شوند‬‫ا‬ ‫به‬ ‫که‬‫ی‬‫ن‬‫م‬ ‫گفته‬ ‫خوشه‬ ‫ها‬ ‫دسته‬‫ی‬‫شود‬‫بنابرا‬ .‫ی‬‫ن‬‫مجموع‬ ‫خوشه‬‫ه‬‫ا‬‫ی‬‫اش‬ ‫از‬‫ی‬‫اء‬‫م‬‫ی‬‫باشد‬‫اش‬ ‫آن‬ ‫در‬ ‫که‬‫ی‬‫اء‬‫با‬
‫ی‬‫کد‬‫ی‬‫گر‬‫اش‬ ‫با‬ ‫و‬ ‫بوده‬ ‫مشابه‬‫ی‬‫اء‬‫خوشه‬ ‫در‬ ‫موجود‬‫ها‬‫ی‬‫د‬‫ی‬‫گر‬‫غ‬‫ی‬‫ر‬‫م‬ ‫مشابه‬‫ی‬‫باشند‬.
‫ا‬‫ی‬‫ن‬‫عل‬ ‫روش‬‫ی‬‫رغم‬‫سادگ‬‫ی‬‫آن‬‫ی‬‫ک‬‫پا‬ ‫روش‬‫ی‬‫ه‬‫برا‬‫ی‬‫بس‬‫ی‬‫ار‬‫ی‬‫روش‬ ‫از‬‫ها‬‫ی‬‫خوشه‬‫بند‬‫ی‬‫د‬‫ی‬‫گر‬‫خوشه‬ ‫(مانند‬‫بند‬‫ی‬
‫فاز‬‫ی‬‫م‬ ‫محسوب‬ )‫ی‬‫شود‬‫ا‬ .‫ی‬‫ن‬‫روش‬ ‫روش‬‫ی‬‫انحصار‬‫ی‬‫م‬ ‫محسوب‬ ‫مسطح‬ ‫و‬‫ی‬‫شود‬‫برا‬ .‫ی‬‫ا‬‫ی‬‫ن‬‫الگور‬‫ی‬‫تم‬‫شکل‬‫ها‬‫ی‬‫مختلف‬‫ی‬
‫ب‬‫ی‬‫ان‬‫ول‬ .‫است‬ ‫شده‬‫ی‬‫دارا‬ ‫آنها‬ ‫همة‬‫ی‬‫روال‬‫ی‬‫تکرار‬‫ی‬‫برا‬ ‫که‬ ‫هستند‬‫ی‬‫تعداد‬‫ی‬‫ثا‬‫بت‬‫خوشه‬ ‫از‬‫سع‬ ‫ها‬‫ی‬‫تخم‬ ‫در‬‫ی‬‫ن‬‫موارد‬
‫ز‬‫ی‬‫ر‬:‫دارند‬
•‫نقاط‬ ‫آوردن‬ ‫بدست‬‫ی‬‫خوشه‬ ‫مراکز‬ ‫عنوان‬ ‫به‬‫ا‬ ‫ها‬‫ی‬‫ن‬‫در‬ ‫نقاط‬‫م‬ ‫همان‬ ‫واقع‬‫ی‬‫انگ‬‫ی‬‫ن‬‫خوشه‬ ‫هر‬ ‫به‬ ‫متعلق‬ ‫نقاط‬
.‫هستند‬
•‫به‬ ‫داده‬ ‫نمونه‬ ‫هر‬ ‫دادن‬ ‫نسبت‬‫ی‬‫ک‬‫کمتر‬ ‫داده‬ ‫آن‬ ‫که‬ ‫خوشه‬‫ی‬‫ن‬.‫باشد‬ ‫دارا‬ ‫را‬ ‫خوشه‬ ‫آن‬ ‫مرکز‬ ‫تا‬ ‫فاصله‬
‫در‬‫ساده‬ ‫نوع‬‫ا‬‫ی‬‫ا‬ ‫از‬‫ی‬‫ن‬‫خوشه‬ ‫تعداد‬ ‫به‬ ‫ابتدا‬ ‫روش‬‫ها‬‫ی‬‫ن‬ ‫مورد‬‫ی‬‫از‬‫نقاط‬‫ی‬‫تصادف‬ ‫صورت‬ ‫به‬‫ی‬‫م‬ ‫انتخاب‬‫ی‬‫شود‬‫سپس‬ .
‫داده‬ ‫در‬‫تو‬ ‫با‬ ‫ها‬‫م‬ ‫با‬ ‫جه‬‫ی‬‫زان‬‫نزد‬‫ی‬‫ک‬‫ی‬‫به‬ )‫(شباهت‬‫ی‬‫ک‬‫ی‬‫ا‬ ‫از‬‫ی‬‫ن‬‫خوشه‬‫داده‬ ‫نسبت‬ ‫ها‬‫م‬‫ی‬‫شوند‬‫بد‬ ‫و‬‫ی‬‫ن‬‫ترت‬‫ی‬‫ب‬‫خوشه‬‫ها‬‫ی‬
Clustering customers based on KMeans algorithm
2
‫جد‬‫ی‬‫د‬‫ی‬‫م‬ ‫حاصل‬‫ی‬‫شود‬‫هم‬ ‫تکرار‬ ‫با‬ .‫ی‬‫ن‬‫م‬ ‫روال‬‫ی‬‫توان‬‫در‬‫هر‬‫م‬ ‫با‬ ‫تکرار‬‫ی‬‫انگ‬‫ی‬‫ن‬‫گ‬‫ی‬‫ر‬‫ی‬‫داده‬ ‫از‬‫جد‬ ‫مراکز‬ ‫ها‬‫ی‬‫د‬‫ی‬‫برا‬‫ی‬
‫داده‬ ‫مجدادأ‬ ‫و‬ ‫کرد‬ ‫محاسبه‬ ‫آنها‬‫خوشه‬ ‫به‬ ‫را‬ ‫ها‬‫ها‬‫ی‬‫جد‬‫ی‬‫د‬‫ا‬ .‫داد‬ ‫نسبت‬‫ی‬‫ن‬‫زمان‬ ‫تا‬ ‫روند‬‫ی‬‫پ‬ ‫ادامه‬‫ی‬‫دا‬‫م‬‫ی‬‫کند‬‫د‬ ‫که‬‫ی‬‫گر‬
‫تغ‬‫یی‬‫ر‬‫ی‬‫داده‬ ‫در‬.‫نشود‬ ‫حاصل‬ ‫ها‬
‫ا‬ ‫در‬‫ی‬‫ن‬‫با‬ ‫متناظر‬ ‫خوشه‬ ‫هر‬ ‫روش‬‫ی‬‫ک‬‫خوش‬ ‫به‬ ‫داده‬ ‫هر‬ ‫و‬ ‫است‬ ‫مرکز‬‫ه‬‫ا‬‫ی‬‫نزد‬ ‫با‬‫ی‬‫کتر‬‫ی‬‫ن‬‫م‬ ‫داده‬ ‫نسبت‬ ‫مرکز‬‫ی‬‫شود‬.
‫خوشه‬ ‫تعداد‬‫ها‬(K)‫با‬‫ی‬‫د‬‫تع‬ ‫قبل‬ ‫از‬‫یی‬‫ن‬‫الگور‬ ‫در‬ .‫باشد‬ ‫شده‬‫ی‬‫تم‬‫بند‬ ‫خوشه‬‫ی‬KMeans‫ابتدا‬k‫عضو‬(‫که‬k‫تعداد‬
‫خوشه‬‫تصادف‬ ‫بصورت‬ )‫است‬ ‫ها‬‫ی‬‫م‬ ‫از‬‫ی‬‫ان‬n‫خوشه‬ ‫مراکز‬ ‫عنوان‬ ‫به‬ ‫عضو‬‫ها‬‫م‬ ‫انتخاب‬‫ی‬‫شود‬‫سپس‬ .n-k‫عضو‬
‫باق‬‫ی‬‫مانده‬‫نزد‬ ‫به‬‫ی‬‫ک‬‫تر‬‫ی‬‫ن‬‫تخص‬ ‫خوشه‬‫ی‬‫ص‬‫م‬‫ی‬‫ی‬‫ابند‬‫تخص‬ ‫از‬ ‫بعد‬ .‫ی‬‫ص‬‫مجددا‬ ‫خوشه‬ ‫مراکز‬ ‫اعضا‬ ‫همه‬‫م‬ ‫محاسبه‬‫ی‬‫شوند‬
‫جد‬ ‫مراکز‬ ‫به‬ ‫توجه‬ ‫با‬ ‫و‬‫ی‬‫د‬‫خوشه‬ ‫به‬‫تخص‬ ‫ها‬‫ی‬‫ص‬‫م‬‫ی‬‫ی‬‫ابند‬‫ا‬ ‫و‬‫ی‬‫ن‬‫زمان‬ ‫تا‬ ‫کار‬‫ی‬‫خوشه‬ ‫مراکز‬ ‫که‬‫ادامه‬ ‫بماند‬ ‫ثابت‬ ‫ها‬
‫م‬‫ی‬‫ی‬‫ابد‬.
‫برخ‬‫ی‬‫و‬ ‫از‬‫ی‬‫ژگ‬‫ی‬‫ها‬‫ی‬‫بند‬ ‫خوشه‬ ‫مهم‬‫ی‬KMeans:
‫الگور‬ ‫عملکرد‬‫ی‬‫تم‬‫اول‬ ‫مراکز‬ ‫به‬ ‫وابسته‬‫ی‬‫ه‬‫است‬
‫به‬ ‫در‬ ‫اغلب‬‫ی‬‫ن‬‫ه‬‫ها‬‫ی‬‫محل‬‫ی‬‫پ‬ ‫خاتمه‬‫ی‬‫دا‬‫م‬‫ی‬‫کند‬
‫خوش‬‫ه‬‫ها‬‫شکل‬ ‫به‬‫ها‬‫ی‬‫هستند‬ ‫محدب‬
‫الگور‬‫ی‬‫تم‬‫ی‬‫برا‬ ‫موثر‬‫ی‬‫داد‬‫ه‬‫ها‬‫یی‬‫ز‬ ‫حجم‬ ‫با‬‫ی‬‫اد‬‫است‬‫(دل‬‫ی‬‫ل‬‫ا‬‫ی‬‫ن‬‫و‬‫ی‬‫ژگ‬‫ی‬‫ا‬‫ی‬‫ن‬‫پ‬ ‫که‬ ‫است‬‫ی‬‫چ‬‫ی‬‫دگ‬‫ی‬‫زمان‬‫ی‬‫ا‬‫ی‬‫ن‬
‫الگور‬‫ی‬‫تم‬O(nmkt)‫که‬ ‫است‬(n‫نمونه‬ ‫تعداد‬،‫ها‬m‫و‬ ‫تعداد‬‫ی‬‫ژگ‬‫ی‬،‫ها‬k‫خوشه‬ ‫تعداد‬‫و‬ ‫ها‬t‫تکرار‬ ‫تعداد‬
‫تابع‬ ‫و‬ )‫است‬‫ی‬‫خط‬‫ی‬‫م‬ ‫نمونه‬ ‫حجم‬ ‫از‬‫ی‬‫باشد‬.
‫خوشه‬ ‫روش‬ ‫مشکالت‬‫بند‬‫ی‬K-Mean
‫عل‬‫ی‬‫رغم‬‫ا‬‫ی‬‫نکه‬‫خاتمه‬‫پذ‬‫ی‬‫ر‬‫ی‬‫الگور‬‫ی‬‫تم‬‫تضم‬ ‫باال‬‫ی‬‫ن‬‫ول‬ ‫است‬ ‫شده‬‫ی‬‫نها‬ ‫جواب‬‫یی‬‫جواب‬ ‫همواره‬ ‫و‬ ‫نبوده‬ ‫واحد‬ ‫آن‬‫ی‬‫به‬‫ی‬‫نه‬
‫نم‬‫ی‬‫باشد‬‫کل‬ ‫طور‬ ‫به‬ .‫ی‬‫دارا‬ ‫باال‬ ‫ساده‬ ‫روش‬‫ی‬‫ز‬ ‫مشکالت‬‫ی‬‫ر‬.‫است‬
‫نها‬ ‫جواب‬‫یی‬‫خوشه‬ ‫انتخاب‬ ‫به‬‫ها‬‫ی‬‫اول‬‫ی‬‫ه‬‫وابستگ‬‫ی‬.‫دارد‬
‫روال‬‫ی‬‫برا‬ ‫مشخص‬‫ی‬‫اول‬ ‫محاسبة‬‫ی‬‫ة‬‫خوشه‬ ‫مراکز‬.‫ندارد‬ ‫وجود‬ ‫ها‬
‫تکرار‬ ‫در‬ ‫اگر‬‫ی‬‫الگور‬ ‫از‬‫ی‬‫تم‬‫داده‬ ‫تعداد‬‫ها‬‫ی‬‫خوشه‬ ‫به‬ ‫متعلق‬‫ا‬‫ی‬‫راه‬ ‫شد‬ ‫صفر‬‫ی‬‫برا‬‫ی‬‫تغ‬‫یی‬‫ر‬‫ادامة‬ ‫بهبود‬ ‫و‬
.‫ندارد‬ ‫وجود‬ ‫روش‬
‫در‬‫ا‬‫ی‬‫ن‬‫که‬ ‫است‬ ‫شده‬ ‫فرض‬ ‫روش‬‫خوشه‬ ‫تعداد‬‫کاربردها‬ ‫در‬ ‫معموال‬ ‫اما‬ .‫است‬ ‫مشخص‬ ‫ابتدا‬ ‫از‬ ‫ها‬‫ی‬‫ز‬‫ی‬‫اد‬‫ی‬‫تعداد‬
‫خوشه‬‫نم‬ ‫مشخص‬ ‫ها‬‫ی‬‫باشد‬
Clustering customers based on KMeans algorithm
3
‫این‬ ‫برای‬ ‫زیادی‬ ‫بسیار‬ ‫های‬ ‫روش‬ ، ‫باشد‬ ‫می‬ ‫وابسته‬ ‫ابتدایی‬ ‫نقاط‬ ‫انتخاب‬ ‫به‬ ‫شدیدا‬ ‫الگوریتم‬ ‫این‬ ‫که‬ ‫آنجایی‬ ‫از‬
‫آم‬ ‫وجود‬ ‫به‬ ‫انتخاب‬.‫است‬ ‫ده‬
‫الگوریتم‬ ‫از‬ ‫کد‬ ‫شبه‬KMeans:
‫کنید‬ ‫توجه‬ ‫زیر‬ ‫مثال‬ ‫به‬ ‫موضوع‬ ‫شدن‬ ‫روشن‬ ‫برای‬
‫سن‬ ‫کنید‬ ‫فرض‬9‫مجموعه‬ ‫صورت‬ ‫به‬ ‫نفر‬‫است‬ ‫شده‬ ‫آوری‬ ‫جمع‬ ‫زیر‬:
{2, 4, 10, 12, 3, 20, 30, 11, 25}
‫روش‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫میخواهیم‬KMeans‫داده‬ ،‫کنیم‬ ‫تقسیم‬ ‫خوشه‬ ‫دو‬ ‫به‬ ‫را‬ ‫آمده‬ ‫دست‬ ‫به‬ ‫های‬
‫گام‬1:‫خوشه‬ ‫مراکز‬ ‫عنوان‬ ‫به‬ ‫تصادفی‬ ‫عدد‬ ‫دو‬ ‫باید‬ ‫ابتدا‬ ‫گام‬ ‫این‬ ‫در‬‫اعداد‬ ‫کنید‬ ‫فرض‬ .‫کنیم‬ ‫تولید‬ ‫ها‬3‫و‬4‫مراکز‬
‫باشند‬ ‫ها‬ ‫خوشه‬ ‫اولیه‬.‫داده‬ ‫از‬ ‫هریک‬ ‫حال‬‫فاصله‬ ‫به‬ ‫توجه‬ ‫با‬ ‫را‬ ‫ها‬‫ها‬ ‫خوشه‬ ‫از‬ ‫یکی‬ ‫به‬ ،‫مراکز‬ ‫این‬ ‫از‬ ‫آنها‬ ‫از‬ ‫هریک‬ ‫ی‬
.‫میدهیم‬ ‫نسبت‬‫عدد‬ ‫مثال‬ ‫عنوان‬ ‫به‬2‫مرکز‬ ‫به‬3‫عد‬ ‫و‬‫د‬10‫مرکز‬ ‫به‬4‫است‬ ‫نزدیکتر‬.
‫ادام‬ ‫با‬ ‫بنابراین‬‫ه‬‫روند‬،‫باال‬‫دو‬‫خوش‬‫ه‬‫زیر‬‫به‬‫دست‬‫می‬‫آیند‬
Clustering customers based on KMeans algorithm
4
𝐶1 = {2, 3} 𝐶2 = {4, 10, 12, 20, 30, 11, 25}
‫گام‬2‫جدید‬ ‫مراکز‬ ‫گام‬ ‫این‬ ‫در‬ )‫تکرار‬ ‫(گام‬‫عمل‬ ‫دوباره‬ ،‫جدید‬ ‫مراکز‬ ‫به‬ ‫توجه‬ ‫با‬ ‫و‬ ‫کرده‬ ‫محاسبه‬ ‫را‬ ‫خوشه‬ ‫هر‬
‫جدید‬ ‫مراکز‬ ‫که‬ .‫میدهیم‬ ‫انجام‬ ‫را‬ ‫دادهها‬ ‫واگذاری‬2.5‫و‬16‫بود‬ ‫خواهند‬.
‫می‬ ‫مشاهده‬‫عدد‬ ‫شود‬4‫نز‬ ‫اول‬ ‫خوشه‬ ‫مرکز‬ ‫به‬ ‫مرحله‬ ‫این‬ ‫در‬ ‫شد‬ ‫داده‬ ‫نسبت‬ ‫دوم‬ ‫خوشه‬ ‫به‬ ‫قبل‬ ‫مرحله‬ ‫در‬ ‫که‬‫دیکتر‬
‫عدد‬ ‫باید‬ ‫نتیجه‬ ‫در‬ .‫است‬4‫بود‬ ‫خواهند‬ ‫زیر‬ ‫شکل‬ ‫به‬ ‫جدید‬ ‫های‬ ‫خوشه‬ ‫پس‬ .‫دهیم‬ ‫قرار‬ ‫اول‬ ‫خوشه‬ ‫در‬ ‫را‬:
𝐶1 = {2, 3, 4} 𝐶2 = {10, 12, 20, 30, 11, 25}
‫شود‬ ‫برقرار‬ ‫توقف‬ ‫شرط‬ ‫که‬ ‫میدهیم‬ ‫ادامه‬ ‫زمانی‬ ‫تا‬ ‫را‬ ‫باال‬ ‫روند‬
‫بود‬ ‫خواهند‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫بعدی‬ ‫مراحل‬.
𝜇1 = 3 𝜇2 = 18 → 𝐶1 = {2, 3, 4, 10 } 𝐶2 = {12, 20, 30, 11, 25}
‫بود‬ ‫خواهد‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫بعد‬ ‫مرحله‬
Clustering customers based on KMeans algorithm
5
‫نمیکنند‬ ‫تغییر‬ ‫ها‬ ‫خوشه‬ ‫و‬ ‫است‬ ‫شده‬ ‫ثابت‬ ‫مراکز‬ ‫ان‬ ‫در‬ ‫که‬ ‫است‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫نهایی‬ ‫مرحله‬ ‫و‬.
‫می‬ ‫نقطه‬ ‫سه‬ ‫انتخاب‬ ‫در‬ ‫مثال‬ .‫باشد‬ ‫می‬ ‫تصادفی‬ ‫کامال‬ ‫یا‬ ‫و‬ ‫دلخواه‬ ‫صورت‬ ‫به‬ ‫ابتدایی‬ ‫نقاط‬ ‫انتخاب‬ ‫حالت‬ ‫ترین‬ ‫ساده‬
( ‫مقادیر‬ ‫از‬ ‫توان‬0،0،0( ‫و‬ )1،1،1( ‫و‬ )2،2،2‫ممکن‬ ‫که‬ ‫آورد‬ ‫می‬ ‫وجود‬ ‫به‬ ‫را‬ ‫ریسک‬ ‫این‬ ‫انتخاب‬ ‫این‬ .‫نمود‬ ‫استفاده‬ )
‫داده‬ ‫های‬ ‫بازه‬ ‫در‬ ‫نقاط‬ ‫این‬ ‫است‬‫و‬ ‫نباشد‬ ‫ای‬‫دسته‬ ‫شدید‬ ‫شدن‬ ‫پخش‬ ‫باعث‬‫وجود‬ ‫به‬ ‫احتمال‬ ‫همچنین‬ ‫و‬ ‫شود‬ ‫ها‬
‫دسته‬ ‫آمدن‬‫می‬ ‫افزایش‬ ‫را‬ ‫خالی‬ ‫های‬.‫دهد‬
Clustering customers based on KMeans algorithm
6
‫این‬ ‫و‬ ‫کردیم‬ ‫محاسبه‬ ‫را‬ ‫مقادیر‬ ‫بیشینه‬ ‫و‬ ‫کمینه‬ ‫بازه‬ ‫بعد‬ ‫هر‬ ‫ازای‬ ‫به‬ ‫ابتدا‬ ‫پروژه‬ ‫این‬ ‫در‬ ‫اثر‬ ‫این‬ ‫کردن‬ ‫کمتر‬ ‫برای‬
‫به‬ ‫را‬ ‫بازه‬4‫نماد‬ ‫با‬ ‫که‬ ‫ها‬ ‫دسته‬ ‫تعداد‬ (k‫ا‬ ‫در‬ ‫شوند‬ ‫می‬ ‫مشخص‬‫برابر‬ ‫ینجا‬3‫تقسیم‬ ‫قسمت‬ ) ‫است‬ ‫شده‬ ‫داده‬ ‫قرار‬
‫که‬ ‫را‬ ‫بازه‬ ‫شکست‬ ‫هر‬ ‫نقاط‬ ‫سپس‬ .‫کردیم‬3.‫کردیم‬ ‫انتخاب‬ ‫اولیه‬ ‫نقاط‬ ‫عنوان‬ ‫به‬ ‫باشد‬ ‫می‬ ‫نقطه‬
‫کدام‬ ‫هر‬ .‫کنیم‬ ‫می‬ ‫محاسبه‬ ‫نقطه‬ ‫سه‬ ‫این‬ ‫تا‬ ‫را‬ ‫نقطه‬ ‫اقلیدسی‬ ‫فاصله‬ .‫کنیم‬ ‫می‬ ‫الگوریتم‬ ‫وارد‬ ‫را‬ ‫رکورد‬ ‫هر‬ ‫سپس‬
‫تر‬ ‫نزدیک‬ ‫شده‬ ‫وارد‬ ‫نقطه‬ ‫به‬ ‫که‬.‫گیریم‬ ‫می‬ ‫نظر‬ ‫در‬ ‫گروه‬ ‫آن‬ ‫در‬ ‫را‬ ‫رکورد‬ ، ‫بود‬
‫اصالح‬ ‫نشانه‬ ‫نقاط‬ ،‫قبل‬ ‫نقطه‬ ‫و‬ ‫دسته‬ ‫هر‬ ‫در‬ ‫جدید‬ ‫نقطه‬ ‫میانگین‬ ‫اساس‬ ‫بر‬ ‫و‬ ‫شود‬ ‫می‬ ‫بازنگری‬ ‫ابتدایی‬ ‫نقاط‬ ‫سپس‬
.‫شوند‬ ‫می‬
‫اینجا‬ ‫در‬ ( ‫باشد‬ ‫انتخابی‬ ‫تواند‬ ‫می‬ ‫تکرار‬ ‫دفعات‬ ‫تعداد‬ .‫شود‬ ‫تکرار‬ ‫بارها‬ ‫باید‬ ‫ها‬ ‫داده‬ ‫تمام‬ ‫برای‬ ‫الگوریتم‬ ‫این‬n‫که‬ ‫را‬
‫برابر‬ ‫باشد‬ ‫می‬ ‫تکرار‬ ‫دفعات‬ ‫تعداد‬10‫ادامه‬ ‫ها‬ ‫تکرار‬ ‫این‬ ‫جایی‬ ‫تا‬ ‫که‬ ‫داد‬ ‫قرار‬ ‫را‬ ‫شرط‬ ‫این‬ ‫توان‬ ‫می‬ ‫یا‬ ‫و‬ ) ‫دادیم‬ ‫قرار‬
.‫نکنند‬ ‫تغییری‬ ‫و‬ ‫باشد‬ ‫ثابت‬ ‫دسته‬ ‫هر‬ ‫نشانه‬ ‫نقاط‬ ‫مقدار‬ ‫متوالی‬ ‫تکرار‬ ‫دو‬ ‫در‬ ‫که‬ ‫کند‬ ‫پیدا‬
: ‫پردازیم‬ ‫می‬ ‫سازی‬ ‫پیاده‬ ‫های‬ ‫اسکریپت‬ ‫بررسی‬ ‫به‬ ‫حال‬
‫ابت‬‫نام‬ ‫به‬ ‫جدولی‬ ‫در‬ ‫را‬ ‫نظر‬ ‫مورد‬ ‫اطالعات‬ ‫دا‬KMean‫می‬ ‫قرار‬ ‫بندی‬ ‫گروه‬ ‫برای‬ ‫هم‬ ‫ستون‬ ‫یک‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫وارد‬
‫برابر‬ ‫را‬ ‫آن‬ ‫مقدار‬ ‫فرض‬ ‫پیش‬ ‫صورت‬ ‫به‬ ‫که‬ ‫دهیم‬0.‫دهیم‬ ‫می‬ ‫قرار‬
IF EXISTS (
SELECT *
FROM sys.sysobjects
WHERE NAME = 'KMean'
)
DROP TABLE dbo.KMean
SELECT CstmrRef,
COUNT(DISTINCT VchHdrRef) AS SaleNumber,
SUM(Qty) AS Qty,
SUM(Price) AS Price,
0 AS Class
INTO dbo.KMean
FROM sle.SLEFactItm
WHERE (YEAR = 95)
GROUP BY
Clustering customers based on KMeans algorithm
7
CstmrRef
‫کنیم‬ ‫می‬ ‫سازی‬ ‫پیاده‬ ‫را‬ ‫الگو‬ ‫این‬ ‫زیر‬ ‫اسکریپت‬ ‫کمک‬ ‫با‬ ‫آن‬ ‫از‬ ‫پس‬.
DECLARE @K INT
DECLARE @MaxRuns INT
DECLARE @X1 FLOAT,
@X2 FLOAT,
@X3 FLOAT
DECLARE @Y1 FLOAT,
@Y2 FLOAT,
@Y3 FLOAT
DECLARE @Z1 FLOAT,
@Z2 FLOAT,
@Z3 FLOAT
DECLARE @D1 FLOAT,
@D2 FLOAT,
@D3 FLOAT
DECLARE @n INT
DECLARE @CstmrRef INT,
@SaleNumber BIGINT,
@Qty BIGINT,
@Price BIGINT
DECLARE @DMin FLOAT
DECLARE @Class INT
SET @K = 3
SET @MaxRuns = 10
SET @n = 0
SELECT @X1 = MIN(SaleNumber) + 1 * ((MAX(SaleNumber) - MIN(SaleNumber)) / (@K +
1)),
Clustering customers based on KMeans algorithm
8
@X2 = MIN(SaleNumber) + 2 * ((MAX(SaleNumber) - MIN(SaleNumber)) / (@K +
1)),
@X3 = MIN(SaleNumber) + 3 * ((MAX(SaleNumber) - MIN(SaleNumber)) / (@K +
1)),
@Y1 = MIN(Qty) + 1 * ((MAX(Qty) - MIN(Qty)) / (@K + 1)),
@Y2 = MIN(Qty) + 2 * ((MAX(Qty) - MIN(Qty)) / (@K + 1)),
@Y3 = MIN(Qty) + 3 * ((MAX(Qty) - MIN(Qty)) / (@K + 1)),
@Z1 = MIN(Price) + 1 * ((MAX(Price) - MIN(Price)) / (@K + 1)),
@Z2 = MIN(Price) + 2 * ((MAX(Price) - MIN(Price)) / (@K + 1)),
@Z3 = MIN(Price) + 3 * ((MAX(Price) - MIN(Price)) / (@K + 1))
FROM KMean AS k
WHILE @n < @MaxRuns + 1
BEGIN
SELECT @n = @n + 1
DECLARE Cursor_Class CURSOR
FOR
SELECT CstmrRef,
SaleNumber,
Qty,
Price
FROM KMean
OPEN Cursor_Class
FETCH NEXT FROM Cursor_Class
INTO @CstmrRef,@SaleNumber,@Qty,@Price
WHILE @@FETCH_STATUS = 0
BEGIN
SET @D1 = (
SQRT(
POWER((@SaleNumber -@X1), 2) + POWER((@Qty -@Y1), 2) +
POWER((@Price -@Z1), 2)
)
)
SET @D2 = (
SQRT(
Clustering customers based on KMeans algorithm
9
POWER((@SaleNumber -@X2), 2) + POWER((@Qty -@Y2), 2) +
POWER((@Price -@Z2), 2)
)
)
SET @D3 = (
SQRT(
POWER((@SaleNumber -@X3), 2) + POWER((@Qty -@Y3), 2) +
POWER((@Price -@Z3), 2)
)
);
WITH CTE_Min AS (
SELECT @D1 AS D
UNION ALL SELECT @D2
UNION ALL SELECT @D3
)
SELECT @DMin = MIN(D)
FROM CTE_Min AS cm
SELECT @Class = (
SELECT CASE
WHEN @DMin = @D1 THEN 1
WHEN @DMin = @D2 THEN 2
WHEN @DMin = @D3 THEN 3
END AS C
)
UPDATE KMean
SET Class = @Class
WHERE CstmrRef = @CstmrRef
IF @Class = 1
BEGIN
SET @X1 = (@X1 + @SaleNumber) / 2
SET @Y1 = (@Y1 + @Qty) / 2
SET @Z1 = (@Z1 + @Price) / 2
END
Clustering customers based on KMeans algorithm
10
IF @Class = 2
BEGIN
SET @X2 = (@X2 + @SaleNumber) / 2
SET @Y2 = (@Y2 + @Qty) / 2
SET @Z2 = (@Z2 + @Price) / 2
END
IF @Class = 3
BEGIN
SET @X3 = (@X3 + @SaleNumber) / 2
SET @Y3 = (@Y3 + @Qty) / 2
SET @Z3 = (@Z3 + @Price) / 2
END
FETCH NEXT FROM Cursor_Class
INTO @CstmrRef,@SaleNumber,@Qty,@Price
END
CLOSE Cursor_Class
DEALLOCATE Cursor_Class
END
‫جدول‬ ‫در‬ ‫ها‬ ‫داده‬KMean‫ستون‬ ‫به‬ ‫توجه‬ ‫با‬Class.‫شوند‬ ‫می‬ ‫بندی‬ ‫خوشه‬ ‫آنها‬
‫اولیه‬ ‫اطالعات‬2679‫رکورد‬‫می‬‫باشد‬
:‫باشد‬ ‫می‬ ‫زیر‬ ‫اعضای‬ ‫تعداد‬ ‫با‬ ‫گروه‬ ‫سه‬ ، ‫بندی‬ ‫گروه‬ ‫از‬ ‫پس‬ ‫اطالعات‬ ‫این‬
SELECT Class,
COUNT(*)
FROM KMean AS k
GROUP BY
Class
ORDER BY Class
*****************
Class (No column name)
1 2654
2 22
Clustering customers based on KMeans algorithm
11
3 3
‫نرم‬ ‫با‬ ‫اطالعات‬ ‫این‬ ‫خروجی‬‫افزار‬Rapidminer‫که‬ ‫کند‬ ‫می‬ ‫بندی‬ ‫کالس‬ ‫را‬ ‫مشابهی‬ ‫تقریبا‬ ‫اعضای‬ ‫تعداد‬ ‫نیز‬
‫باشد‬ ‫می‬ ‫کالس‬ ‫هر‬ ‫نشانه‬ ‫نقاط‬ ‫شناسایی‬ ‫جهت‬ ‫اولیه‬ ‫نقاط‬ ‫انتخاب‬ ‫در‬ ‫تفاوت‬ ‫علت‬ ‫به‬ ‫اندک‬ ‫تفاوت‬.
Cluster Model
Cluster 0: 3 items
Cluster 1: 30 items
Cluster 2: 2646 items
Total number of items: 2679

More Related Content

Similar to Clustering customers based on kmeans algorithm

Clusterin k means
Clusterin k meansClusterin k means
Clusterin k meanssinaexe
 
الدالات الأساسية-في-برنامج-الإكسل
الدالات الأساسية-في-برنامج-الإكسلالدالات الأساسية-في-برنامج-الإكسل
الدالات الأساسية-في-برنامج-الإكسلMahmoud Abd Elrahman
 
مروری برتکنیکهای با اشکال و بدون اشکال نگاشت در شبکه روی تراشه- سیده مریم سلی...
مروری برتکنیکهای با اشکال و بدون اشکال نگاشت در شبکه روی تراشه- سیده مریم سلی...مروری برتکنیکهای با اشکال و بدون اشکال نگاشت در شبکه روی تراشه- سیده مریم سلی...
مروری برتکنیکهای با اشکال و بدون اشکال نگاشت در شبکه روی تراشه- سیده مریم سلی...tarasad
 
مقدمه ای بر هوش تجاری
مقدمه ای بر هوش تجاریمقدمه ای بر هوش تجاری
مقدمه ای بر هوش تجاریZahra Mansoori
 
نگار پژوه :: آموزش کاربردی بهینه سازی الگوریتم ازدحام ذرات چند هدفه
نگار پژوه :: آموزش کاربردی بهینه سازی الگوریتم ازدحام ذرات چند هدفهنگار پژوه :: آموزش کاربردی بهینه سازی الگوریتم ازدحام ذرات چند هدفه
نگار پژوه :: آموزش کاربردی بهینه سازی الگوریتم ازدحام ذرات چند هدفهMojtaba Hasanlu
 
Radmanesh c#-1
Radmanesh c#-1Radmanesh c#-1
Radmanesh c#-1neginrmn
 
Flb Introduce In Persian بالانس خط تولید
Flb Introduce In Persian بالانس خط تولیدFlb Introduce In Persian بالانس خط تولید
Flb Introduce In Persian بالانس خط تولیدkiapour4
 
avr project , sim808l, mmc card
avr project , sim808l, mmc cardavr project , sim808l, mmc card
avr project , sim808l, mmc cardPooriaKeihani
 
بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )
بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )
بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )tahereh sharafi
 
آموزش کوتاه و کاربردی Nmap
آموزش کوتاه و کاربردی Nmapآموزش کوتاه و کاربردی Nmap
آموزش کوتاه و کاربردی Nmapteknetir
 
طراحی سیستم های اطلاعاتی بر مبنای قابلیت های Nosql بانک های اطلاعاتی
طراحی سیستم های اطلاعاتی بر مبنای قابلیت های Nosql بانک های اطلاعاتی طراحی سیستم های اطلاعاتی بر مبنای قابلیت های Nosql بانک های اطلاعاتی
طراحی سیستم های اطلاعاتی بر مبنای قابلیت های Nosql بانک های اطلاعاتی عباس بني اسدي مقدم
 

Similar to Clustering customers based on kmeans algorithm (20)

Quantom
QuantomQuantom
Quantom
 
Clusterin k means
Clusterin k meansClusterin k means
Clusterin k means
 
الدالات الأساسية-في-برنامج-الإكسل
الدالات الأساسية-في-برنامج-الإكسلالدالات الأساسية-في-برنامج-الإكسل
الدالات الأساسية-في-برنامج-الإكسل
 
مروری برتکنیکهای با اشکال و بدون اشکال نگاشت در شبکه روی تراشه- سیده مریم سلی...
مروری برتکنیکهای با اشکال و بدون اشکال نگاشت در شبکه روی تراشه- سیده مریم سلی...مروری برتکنیکهای با اشکال و بدون اشکال نگاشت در شبکه روی تراشه- سیده مریم سلی...
مروری برتکنیکهای با اشکال و بدون اشکال نگاشت در شبکه روی تراشه- سیده مریم سلی...
 
Genetic
GeneticGenetic
Genetic
 
Genetic Algoritm
Genetic AlgoritmGenetic Algoritm
Genetic Algoritm
 
مقدمه ای بر هوش تجاری
مقدمه ای بر هوش تجاریمقدمه ای بر هوش تجاری
مقدمه ای بر هوش تجاری
 
MD5
MD5MD5
MD5
 
111
111111
111
 
نگار پژوه :: آموزش کاربردی بهینه سازی الگوریتم ازدحام ذرات چند هدفه
نگار پژوه :: آموزش کاربردی بهینه سازی الگوریتم ازدحام ذرات چند هدفهنگار پژوه :: آموزش کاربردی بهینه سازی الگوریتم ازدحام ذرات چند هدفه
نگار پژوه :: آموزش کاربردی بهینه سازی الگوریتم ازدحام ذرات چند هدفه
 
Radmanesh c#-1
Radmanesh c#-1Radmanesh c#-1
Radmanesh c#-1
 
Crisp dm.1.0
Crisp dm.1.0Crisp dm.1.0
Crisp dm.1.0
 
Flb Introduce In Persian بالانس خط تولید
Flb Introduce In Persian بالانس خط تولیدFlb Introduce In Persian بالانس خط تولید
Flb Introduce In Persian بالانس خط تولید
 
Time series
Time seriesTime series
Time series
 
avr project , sim808l, mmc card
avr project , sim808l, mmc cardavr project , sim808l, mmc card
avr project , sim808l, mmc card
 
Id3
Id3Id3
Id3
 
بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )
بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )
بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )
 
آموزش کوتاه و کاربردی Nmap
آموزش کوتاه و کاربردی Nmapآموزش کوتاه و کاربردی Nmap
آموزش کوتاه و کاربردی Nmap
 
طراحی سیستم های اطلاعاتی بر مبنای قابلیت های Nosql بانک های اطلاعاتی
طراحی سیستم های اطلاعاتی بر مبنای قابلیت های Nosql بانک های اطلاعاتی طراحی سیستم های اطلاعاتی بر مبنای قابلیت های Nosql بانک های اطلاعاتی
طراحی سیستم های اطلاعاتی بر مبنای قابلیت های Nosql بانک های اطلاعاتی
 
ATM
ATMATM
ATM
 

Clustering customers based on kmeans algorithm

  • 1. ‫الگوریتم‬ ‫اساس‬ ‫بر‬ ‫بندی‬ ‫خوشه‬KMeans Clustering customers based on KMeans algorithm Ehsan Kamali Email LinkedIn
  • 2. Clustering customers based on KMeans algorithm 1 ‫در‬‫بود‬ ‫شده‬ ‫اعالم‬ ‫شرکتی‬ ‫سوی‬ ‫از‬ ‫که‬ ‫نیازمندی‬ ‫یک‬ ‫به‬ ‫توجه‬ ‫با‬ ‫تا‬ ‫دارم‬ ‫تصمیم‬ ‫مقاله‬ ‫این‬‫خو‬‫شه‬‫و‬ ‫بندی‬‫الگوریتم‬ KMeans‫در‬ ‫را‬ ‫آن‬ ‫سازی‬ ‫پیاده‬ ‫نحوه‬ ‫همچنین‬ ‫و‬ ‫کنم‬ ‫تشریح‬ ‫را‬‫داده‬ ‫پایگاه‬SQL‫از‬ ‫استفاده‬ ‫بدون‬‫مکانیزم‬‫های‬ ‫دستورهای‬ ‫طریق‬ ‫از‬ ‫صرفا‬ ‫و‬ ‫آن‬ ‫کاوی‬ ‫داده‬SQL.‫دهم‬ ‫توضیح‬‫علت‬‫اصلی‬‫این‬ ‫کاوی‬ ‫داده‬ ‫امکانات‬ ‫از‬ ‫استفاده‬ ‫عدم‬ ‫داده‬ ‫پایگاه‬‫می‬ ‫این‬‫دستورات‬ ‫با‬ ‫راحتی‬ ‫به‬ ‫سازی‬ ‫گزارش‬ ‫ابزارهای‬ ‫اغلب‬ ‫که‬ ‫باشد‬SQL‫کنند‬ ‫برقرار‬ ‫ارتباط‬ ‫توانند‬ ‫می‬ ‫امکانات‬ ‫از‬ ‫استفاده‬ ‫و‬‫کاوی‬ ‫داده‬ ‫پیشرفته‬‫ساده‬ ‫گزارش‬ ‫یک‬ ‫صورت‬ ‫به‬ ‫اطالعات‬ ‫این‬ ‫سازی‬ ‫پیاده‬ ‫در‬ ‫دشواری‬ ‫باعث‬ ‫می‬.‫شد‬ ‫به‬‫دیتا‬ ‫از‬ ‫استفاده‬ ‫دلیل‬‫داده‬ ‫امنیت‬ ‫حفظ‬ ‫منظور‬ ‫به‬ ،‫شرکت‬ ‫یک‬ ‫واقعی‬ ‫ی‬‫معرفی‬ ‫برای‬ ‫سریال‬ ‫شماره‬ ‫یک‬ ‫از‬ ‫صرفا‬ ‫ها‬ ‫داده‬ ‫نمایش‬ ‫در‬ ‫مشتری‬‫می‬ ‫استفاده‬ ‫ها‬.‫شود‬ ‫شرکت‬‫ی‬‫ن‬‫ی‬‫از‬‫مشتر‬ ‫بتواند‬ ‫تا‬ ‫دارد‬‫ی‬‫ها‬‫ی‬‫سال‬ ‫در‬ ‫که‬ ‫را‬ ‫خود‬95‫ا‬ ‫از‬‫ی‬‫ن‬‫خر‬ ‫شرکت‬‫ی‬‫د‬‫و‬ ‫اساس‬ ‫بر‬ ‫اند‬ ‫کرده‬‫ی‬‫ژگ‬‫ی‬‫ها‬‫ی‬ ‫خر‬ ‫دفعات‬ ‫تعداد‬‫ی‬‫د‬‫خر‬ ‫مقدار‬ ‫و‬‫ی‬‫د‬‫خر‬ ‫مبلغ‬ ‫و‬‫ی‬‫د‬‫بند‬ ‫گروه‬‫ی‬‫نما‬‫ی‬‫د‬. ‫برا‬‫ی‬‫ا‬‫ی‬‫ن‬‫دنبال‬ ‫به‬ ‫منظور‬‫ی‬‫ک‬‫برا‬ ‫راهکار‬‫ی‬‫تقس‬ ‫مالک‬‫ی‬‫م‬‫بند‬‫ی‬‫م‬‫ی‬.‫باشد‬ ‫به‬‫و‬‫ی‬‫الگور‬‫ی‬‫تم‬KMean‫پ‬‫ی‬‫شنهاد‬‫ا‬ ‫از‬ ‫تا‬ ‫شد‬‫ی‬‫ن‬‫طر‬‫ی‬‫ق‬‫ا‬ ‫بتوان‬‫ی‬‫ن‬‫بند‬ ‫دسته‬‫ی‬.‫داد‬ ‫انجام‬ ‫را‬ ‫خوشه‬‫بند‬‫ی‬‫ی‬‫ا‬‫آنال‬‫ی‬‫ز‬( ‫خوشه‬Clustering‫و‬ ‫آمار‬ ‫در‬ )‫ی‬‫ادگ‬‫ی‬‫ر‬‫ی‬‫ماش‬‫ی‬‫ن‬‫ی‬،‫ی‬‫ک‬‫ی‬‫ها‬ ‫شاخه‬ ‫از‬‫ی‬‫ی‬‫ادگ‬‫ی‬‫ر‬‫ی‬‫ب‬‫ی‬‫نظارت‬ ‫م‬‫ی‬‫باشد‬‫فرآ‬ ‫و‬‫ی‬‫ند‬‫ی‬‫ط‬ ‫در‬ ‫که‬ ‫است‬‫ی‬‫نمونه‬ ،‫آن‬‫دسته‬ ‫به‬ ‫ها‬‫ها‬‫یی‬‫اعضا‬ ‫که‬‫ی‬‫مشابه‬ ‫آن‬‫ی‬‫کد‬‫ی‬‫گر‬‫م‬‫ی‬‫باشند‬‫تقس‬‫ی‬‫م‬ ‫م‬‫ی‬‫شوند‬‫ا‬ ‫به‬ ‫که‬‫ی‬‫ن‬‫م‬ ‫گفته‬ ‫خوشه‬ ‫ها‬ ‫دسته‬‫ی‬‫شود‬‫بنابرا‬ .‫ی‬‫ن‬‫مجموع‬ ‫خوشه‬‫ه‬‫ا‬‫ی‬‫اش‬ ‫از‬‫ی‬‫اء‬‫م‬‫ی‬‫باشد‬‫اش‬ ‫آن‬ ‫در‬ ‫که‬‫ی‬‫اء‬‫با‬ ‫ی‬‫کد‬‫ی‬‫گر‬‫اش‬ ‫با‬ ‫و‬ ‫بوده‬ ‫مشابه‬‫ی‬‫اء‬‫خوشه‬ ‫در‬ ‫موجود‬‫ها‬‫ی‬‫د‬‫ی‬‫گر‬‫غ‬‫ی‬‫ر‬‫م‬ ‫مشابه‬‫ی‬‫باشند‬. ‫ا‬‫ی‬‫ن‬‫عل‬ ‫روش‬‫ی‬‫رغم‬‫سادگ‬‫ی‬‫آن‬‫ی‬‫ک‬‫پا‬ ‫روش‬‫ی‬‫ه‬‫برا‬‫ی‬‫بس‬‫ی‬‫ار‬‫ی‬‫روش‬ ‫از‬‫ها‬‫ی‬‫خوشه‬‫بند‬‫ی‬‫د‬‫ی‬‫گر‬‫خوشه‬ ‫(مانند‬‫بند‬‫ی‬ ‫فاز‬‫ی‬‫م‬ ‫محسوب‬ )‫ی‬‫شود‬‫ا‬ .‫ی‬‫ن‬‫روش‬ ‫روش‬‫ی‬‫انحصار‬‫ی‬‫م‬ ‫محسوب‬ ‫مسطح‬ ‫و‬‫ی‬‫شود‬‫برا‬ .‫ی‬‫ا‬‫ی‬‫ن‬‫الگور‬‫ی‬‫تم‬‫شکل‬‫ها‬‫ی‬‫مختلف‬‫ی‬ ‫ب‬‫ی‬‫ان‬‫ول‬ .‫است‬ ‫شده‬‫ی‬‫دارا‬ ‫آنها‬ ‫همة‬‫ی‬‫روال‬‫ی‬‫تکرار‬‫ی‬‫برا‬ ‫که‬ ‫هستند‬‫ی‬‫تعداد‬‫ی‬‫ثا‬‫بت‬‫خوشه‬ ‫از‬‫سع‬ ‫ها‬‫ی‬‫تخم‬ ‫در‬‫ی‬‫ن‬‫موارد‬ ‫ز‬‫ی‬‫ر‬:‫دارند‬ •‫نقاط‬ ‫آوردن‬ ‫بدست‬‫ی‬‫خوشه‬ ‫مراکز‬ ‫عنوان‬ ‫به‬‫ا‬ ‫ها‬‫ی‬‫ن‬‫در‬ ‫نقاط‬‫م‬ ‫همان‬ ‫واقع‬‫ی‬‫انگ‬‫ی‬‫ن‬‫خوشه‬ ‫هر‬ ‫به‬ ‫متعلق‬ ‫نقاط‬ .‫هستند‬ •‫به‬ ‫داده‬ ‫نمونه‬ ‫هر‬ ‫دادن‬ ‫نسبت‬‫ی‬‫ک‬‫کمتر‬ ‫داده‬ ‫آن‬ ‫که‬ ‫خوشه‬‫ی‬‫ن‬.‫باشد‬ ‫دارا‬ ‫را‬ ‫خوشه‬ ‫آن‬ ‫مرکز‬ ‫تا‬ ‫فاصله‬ ‫در‬‫ساده‬ ‫نوع‬‫ا‬‫ی‬‫ا‬ ‫از‬‫ی‬‫ن‬‫خوشه‬ ‫تعداد‬ ‫به‬ ‫ابتدا‬ ‫روش‬‫ها‬‫ی‬‫ن‬ ‫مورد‬‫ی‬‫از‬‫نقاط‬‫ی‬‫تصادف‬ ‫صورت‬ ‫به‬‫ی‬‫م‬ ‫انتخاب‬‫ی‬‫شود‬‫سپس‬ . ‫داده‬ ‫در‬‫تو‬ ‫با‬ ‫ها‬‫م‬ ‫با‬ ‫جه‬‫ی‬‫زان‬‫نزد‬‫ی‬‫ک‬‫ی‬‫به‬ )‫(شباهت‬‫ی‬‫ک‬‫ی‬‫ا‬ ‫از‬‫ی‬‫ن‬‫خوشه‬‫داده‬ ‫نسبت‬ ‫ها‬‫م‬‫ی‬‫شوند‬‫بد‬ ‫و‬‫ی‬‫ن‬‫ترت‬‫ی‬‫ب‬‫خوشه‬‫ها‬‫ی‬
  • 3. Clustering customers based on KMeans algorithm 2 ‫جد‬‫ی‬‫د‬‫ی‬‫م‬ ‫حاصل‬‫ی‬‫شود‬‫هم‬ ‫تکرار‬ ‫با‬ .‫ی‬‫ن‬‫م‬ ‫روال‬‫ی‬‫توان‬‫در‬‫هر‬‫م‬ ‫با‬ ‫تکرار‬‫ی‬‫انگ‬‫ی‬‫ن‬‫گ‬‫ی‬‫ر‬‫ی‬‫داده‬ ‫از‬‫جد‬ ‫مراکز‬ ‫ها‬‫ی‬‫د‬‫ی‬‫برا‬‫ی‬ ‫داده‬ ‫مجدادأ‬ ‫و‬ ‫کرد‬ ‫محاسبه‬ ‫آنها‬‫خوشه‬ ‫به‬ ‫را‬ ‫ها‬‫ها‬‫ی‬‫جد‬‫ی‬‫د‬‫ا‬ .‫داد‬ ‫نسبت‬‫ی‬‫ن‬‫زمان‬ ‫تا‬ ‫روند‬‫ی‬‫پ‬ ‫ادامه‬‫ی‬‫دا‬‫م‬‫ی‬‫کند‬‫د‬ ‫که‬‫ی‬‫گر‬ ‫تغ‬‫یی‬‫ر‬‫ی‬‫داده‬ ‫در‬.‫نشود‬ ‫حاصل‬ ‫ها‬ ‫ا‬ ‫در‬‫ی‬‫ن‬‫با‬ ‫متناظر‬ ‫خوشه‬ ‫هر‬ ‫روش‬‫ی‬‫ک‬‫خوش‬ ‫به‬ ‫داده‬ ‫هر‬ ‫و‬ ‫است‬ ‫مرکز‬‫ه‬‫ا‬‫ی‬‫نزد‬ ‫با‬‫ی‬‫کتر‬‫ی‬‫ن‬‫م‬ ‫داده‬ ‫نسبت‬ ‫مرکز‬‫ی‬‫شود‬. ‫خوشه‬ ‫تعداد‬‫ها‬(K)‫با‬‫ی‬‫د‬‫تع‬ ‫قبل‬ ‫از‬‫یی‬‫ن‬‫الگور‬ ‫در‬ .‫باشد‬ ‫شده‬‫ی‬‫تم‬‫بند‬ ‫خوشه‬‫ی‬KMeans‫ابتدا‬k‫عضو‬(‫که‬k‫تعداد‬ ‫خوشه‬‫تصادف‬ ‫بصورت‬ )‫است‬ ‫ها‬‫ی‬‫م‬ ‫از‬‫ی‬‫ان‬n‫خوشه‬ ‫مراکز‬ ‫عنوان‬ ‫به‬ ‫عضو‬‫ها‬‫م‬ ‫انتخاب‬‫ی‬‫شود‬‫سپس‬ .n-k‫عضو‬ ‫باق‬‫ی‬‫مانده‬‫نزد‬ ‫به‬‫ی‬‫ک‬‫تر‬‫ی‬‫ن‬‫تخص‬ ‫خوشه‬‫ی‬‫ص‬‫م‬‫ی‬‫ی‬‫ابند‬‫تخص‬ ‫از‬ ‫بعد‬ .‫ی‬‫ص‬‫مجددا‬ ‫خوشه‬ ‫مراکز‬ ‫اعضا‬ ‫همه‬‫م‬ ‫محاسبه‬‫ی‬‫شوند‬ ‫جد‬ ‫مراکز‬ ‫به‬ ‫توجه‬ ‫با‬ ‫و‬‫ی‬‫د‬‫خوشه‬ ‫به‬‫تخص‬ ‫ها‬‫ی‬‫ص‬‫م‬‫ی‬‫ی‬‫ابند‬‫ا‬ ‫و‬‫ی‬‫ن‬‫زمان‬ ‫تا‬ ‫کار‬‫ی‬‫خوشه‬ ‫مراکز‬ ‫که‬‫ادامه‬ ‫بماند‬ ‫ثابت‬ ‫ها‬ ‫م‬‫ی‬‫ی‬‫ابد‬. ‫برخ‬‫ی‬‫و‬ ‫از‬‫ی‬‫ژگ‬‫ی‬‫ها‬‫ی‬‫بند‬ ‫خوشه‬ ‫مهم‬‫ی‬KMeans: ‫الگور‬ ‫عملکرد‬‫ی‬‫تم‬‫اول‬ ‫مراکز‬ ‫به‬ ‫وابسته‬‫ی‬‫ه‬‫است‬ ‫به‬ ‫در‬ ‫اغلب‬‫ی‬‫ن‬‫ه‬‫ها‬‫ی‬‫محل‬‫ی‬‫پ‬ ‫خاتمه‬‫ی‬‫دا‬‫م‬‫ی‬‫کند‬ ‫خوش‬‫ه‬‫ها‬‫شکل‬ ‫به‬‫ها‬‫ی‬‫هستند‬ ‫محدب‬ ‫الگور‬‫ی‬‫تم‬‫ی‬‫برا‬ ‫موثر‬‫ی‬‫داد‬‫ه‬‫ها‬‫یی‬‫ز‬ ‫حجم‬ ‫با‬‫ی‬‫اد‬‫است‬‫(دل‬‫ی‬‫ل‬‫ا‬‫ی‬‫ن‬‫و‬‫ی‬‫ژگ‬‫ی‬‫ا‬‫ی‬‫ن‬‫پ‬ ‫که‬ ‫است‬‫ی‬‫چ‬‫ی‬‫دگ‬‫ی‬‫زمان‬‫ی‬‫ا‬‫ی‬‫ن‬ ‫الگور‬‫ی‬‫تم‬O(nmkt)‫که‬ ‫است‬(n‫نمونه‬ ‫تعداد‬،‫ها‬m‫و‬ ‫تعداد‬‫ی‬‫ژگ‬‫ی‬،‫ها‬k‫خوشه‬ ‫تعداد‬‫و‬ ‫ها‬t‫تکرار‬ ‫تعداد‬ ‫تابع‬ ‫و‬ )‫است‬‫ی‬‫خط‬‫ی‬‫م‬ ‫نمونه‬ ‫حجم‬ ‫از‬‫ی‬‫باشد‬. ‫خوشه‬ ‫روش‬ ‫مشکالت‬‫بند‬‫ی‬K-Mean ‫عل‬‫ی‬‫رغم‬‫ا‬‫ی‬‫نکه‬‫خاتمه‬‫پذ‬‫ی‬‫ر‬‫ی‬‫الگور‬‫ی‬‫تم‬‫تضم‬ ‫باال‬‫ی‬‫ن‬‫ول‬ ‫است‬ ‫شده‬‫ی‬‫نها‬ ‫جواب‬‫یی‬‫جواب‬ ‫همواره‬ ‫و‬ ‫نبوده‬ ‫واحد‬ ‫آن‬‫ی‬‫به‬‫ی‬‫نه‬ ‫نم‬‫ی‬‫باشد‬‫کل‬ ‫طور‬ ‫به‬ .‫ی‬‫دارا‬ ‫باال‬ ‫ساده‬ ‫روش‬‫ی‬‫ز‬ ‫مشکالت‬‫ی‬‫ر‬.‫است‬ ‫نها‬ ‫جواب‬‫یی‬‫خوشه‬ ‫انتخاب‬ ‫به‬‫ها‬‫ی‬‫اول‬‫ی‬‫ه‬‫وابستگ‬‫ی‬.‫دارد‬ ‫روال‬‫ی‬‫برا‬ ‫مشخص‬‫ی‬‫اول‬ ‫محاسبة‬‫ی‬‫ة‬‫خوشه‬ ‫مراکز‬.‫ندارد‬ ‫وجود‬ ‫ها‬ ‫تکرار‬ ‫در‬ ‫اگر‬‫ی‬‫الگور‬ ‫از‬‫ی‬‫تم‬‫داده‬ ‫تعداد‬‫ها‬‫ی‬‫خوشه‬ ‫به‬ ‫متعلق‬‫ا‬‫ی‬‫راه‬ ‫شد‬ ‫صفر‬‫ی‬‫برا‬‫ی‬‫تغ‬‫یی‬‫ر‬‫ادامة‬ ‫بهبود‬ ‫و‬ .‫ندارد‬ ‫وجود‬ ‫روش‬ ‫در‬‫ا‬‫ی‬‫ن‬‫که‬ ‫است‬ ‫شده‬ ‫فرض‬ ‫روش‬‫خوشه‬ ‫تعداد‬‫کاربردها‬ ‫در‬ ‫معموال‬ ‫اما‬ .‫است‬ ‫مشخص‬ ‫ابتدا‬ ‫از‬ ‫ها‬‫ی‬‫ز‬‫ی‬‫اد‬‫ی‬‫تعداد‬ ‫خوشه‬‫نم‬ ‫مشخص‬ ‫ها‬‫ی‬‫باشد‬
  • 4. Clustering customers based on KMeans algorithm 3 ‫این‬ ‫برای‬ ‫زیادی‬ ‫بسیار‬ ‫های‬ ‫روش‬ ، ‫باشد‬ ‫می‬ ‫وابسته‬ ‫ابتدایی‬ ‫نقاط‬ ‫انتخاب‬ ‫به‬ ‫شدیدا‬ ‫الگوریتم‬ ‫این‬ ‫که‬ ‫آنجایی‬ ‫از‬ ‫آم‬ ‫وجود‬ ‫به‬ ‫انتخاب‬.‫است‬ ‫ده‬ ‫الگوریتم‬ ‫از‬ ‫کد‬ ‫شبه‬KMeans: ‫کنید‬ ‫توجه‬ ‫زیر‬ ‫مثال‬ ‫به‬ ‫موضوع‬ ‫شدن‬ ‫روشن‬ ‫برای‬ ‫سن‬ ‫کنید‬ ‫فرض‬9‫مجموعه‬ ‫صورت‬ ‫به‬ ‫نفر‬‫است‬ ‫شده‬ ‫آوری‬ ‫جمع‬ ‫زیر‬: {2, 4, 10, 12, 3, 20, 30, 11, 25} ‫روش‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫میخواهیم‬KMeans‫داده‬ ،‫کنیم‬ ‫تقسیم‬ ‫خوشه‬ ‫دو‬ ‫به‬ ‫را‬ ‫آمده‬ ‫دست‬ ‫به‬ ‫های‬ ‫گام‬1:‫خوشه‬ ‫مراکز‬ ‫عنوان‬ ‫به‬ ‫تصادفی‬ ‫عدد‬ ‫دو‬ ‫باید‬ ‫ابتدا‬ ‫گام‬ ‫این‬ ‫در‬‫اعداد‬ ‫کنید‬ ‫فرض‬ .‫کنیم‬ ‫تولید‬ ‫ها‬3‫و‬4‫مراکز‬ ‫باشند‬ ‫ها‬ ‫خوشه‬ ‫اولیه‬.‫داده‬ ‫از‬ ‫هریک‬ ‫حال‬‫فاصله‬ ‫به‬ ‫توجه‬ ‫با‬ ‫را‬ ‫ها‬‫ها‬ ‫خوشه‬ ‫از‬ ‫یکی‬ ‫به‬ ،‫مراکز‬ ‫این‬ ‫از‬ ‫آنها‬ ‫از‬ ‫هریک‬ ‫ی‬ .‫میدهیم‬ ‫نسبت‬‫عدد‬ ‫مثال‬ ‫عنوان‬ ‫به‬2‫مرکز‬ ‫به‬3‫عد‬ ‫و‬‫د‬10‫مرکز‬ ‫به‬4‫است‬ ‫نزدیکتر‬. ‫ادام‬ ‫با‬ ‫بنابراین‬‫ه‬‫روند‬،‫باال‬‫دو‬‫خوش‬‫ه‬‫زیر‬‫به‬‫دست‬‫می‬‫آیند‬
  • 5. Clustering customers based on KMeans algorithm 4 𝐶1 = {2, 3} 𝐶2 = {4, 10, 12, 20, 30, 11, 25} ‫گام‬2‫جدید‬ ‫مراکز‬ ‫گام‬ ‫این‬ ‫در‬ )‫تکرار‬ ‫(گام‬‫عمل‬ ‫دوباره‬ ،‫جدید‬ ‫مراکز‬ ‫به‬ ‫توجه‬ ‫با‬ ‫و‬ ‫کرده‬ ‫محاسبه‬ ‫را‬ ‫خوشه‬ ‫هر‬ ‫جدید‬ ‫مراکز‬ ‫که‬ .‫میدهیم‬ ‫انجام‬ ‫را‬ ‫دادهها‬ ‫واگذاری‬2.5‫و‬16‫بود‬ ‫خواهند‬. ‫می‬ ‫مشاهده‬‫عدد‬ ‫شود‬4‫نز‬ ‫اول‬ ‫خوشه‬ ‫مرکز‬ ‫به‬ ‫مرحله‬ ‫این‬ ‫در‬ ‫شد‬ ‫داده‬ ‫نسبت‬ ‫دوم‬ ‫خوشه‬ ‫به‬ ‫قبل‬ ‫مرحله‬ ‫در‬ ‫که‬‫دیکتر‬ ‫عدد‬ ‫باید‬ ‫نتیجه‬ ‫در‬ .‫است‬4‫بود‬ ‫خواهند‬ ‫زیر‬ ‫شکل‬ ‫به‬ ‫جدید‬ ‫های‬ ‫خوشه‬ ‫پس‬ .‫دهیم‬ ‫قرار‬ ‫اول‬ ‫خوشه‬ ‫در‬ ‫را‬: 𝐶1 = {2, 3, 4} 𝐶2 = {10, 12, 20, 30, 11, 25} ‫شود‬ ‫برقرار‬ ‫توقف‬ ‫شرط‬ ‫که‬ ‫میدهیم‬ ‫ادامه‬ ‫زمانی‬ ‫تا‬ ‫را‬ ‫باال‬ ‫روند‬ ‫بود‬ ‫خواهند‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫بعدی‬ ‫مراحل‬. 𝜇1 = 3 𝜇2 = 18 → 𝐶1 = {2, 3, 4, 10 } 𝐶2 = {12, 20, 30, 11, 25} ‫بود‬ ‫خواهد‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫بعد‬ ‫مرحله‬
  • 6. Clustering customers based on KMeans algorithm 5 ‫نمیکنند‬ ‫تغییر‬ ‫ها‬ ‫خوشه‬ ‫و‬ ‫است‬ ‫شده‬ ‫ثابت‬ ‫مراکز‬ ‫ان‬ ‫در‬ ‫که‬ ‫است‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫نهایی‬ ‫مرحله‬ ‫و‬. ‫می‬ ‫نقطه‬ ‫سه‬ ‫انتخاب‬ ‫در‬ ‫مثال‬ .‫باشد‬ ‫می‬ ‫تصادفی‬ ‫کامال‬ ‫یا‬ ‫و‬ ‫دلخواه‬ ‫صورت‬ ‫به‬ ‫ابتدایی‬ ‫نقاط‬ ‫انتخاب‬ ‫حالت‬ ‫ترین‬ ‫ساده‬ ( ‫مقادیر‬ ‫از‬ ‫توان‬0،0،0( ‫و‬ )1،1،1( ‫و‬ )2،2،2‫ممکن‬ ‫که‬ ‫آورد‬ ‫می‬ ‫وجود‬ ‫به‬ ‫را‬ ‫ریسک‬ ‫این‬ ‫انتخاب‬ ‫این‬ .‫نمود‬ ‫استفاده‬ ) ‫داده‬ ‫های‬ ‫بازه‬ ‫در‬ ‫نقاط‬ ‫این‬ ‫است‬‫و‬ ‫نباشد‬ ‫ای‬‫دسته‬ ‫شدید‬ ‫شدن‬ ‫پخش‬ ‫باعث‬‫وجود‬ ‫به‬ ‫احتمال‬ ‫همچنین‬ ‫و‬ ‫شود‬ ‫ها‬ ‫دسته‬ ‫آمدن‬‫می‬ ‫افزایش‬ ‫را‬ ‫خالی‬ ‫های‬.‫دهد‬
  • 7. Clustering customers based on KMeans algorithm 6 ‫این‬ ‫و‬ ‫کردیم‬ ‫محاسبه‬ ‫را‬ ‫مقادیر‬ ‫بیشینه‬ ‫و‬ ‫کمینه‬ ‫بازه‬ ‫بعد‬ ‫هر‬ ‫ازای‬ ‫به‬ ‫ابتدا‬ ‫پروژه‬ ‫این‬ ‫در‬ ‫اثر‬ ‫این‬ ‫کردن‬ ‫کمتر‬ ‫برای‬ ‫به‬ ‫را‬ ‫بازه‬4‫نماد‬ ‫با‬ ‫که‬ ‫ها‬ ‫دسته‬ ‫تعداد‬ (k‫ا‬ ‫در‬ ‫شوند‬ ‫می‬ ‫مشخص‬‫برابر‬ ‫ینجا‬3‫تقسیم‬ ‫قسمت‬ ) ‫است‬ ‫شده‬ ‫داده‬ ‫قرار‬ ‫که‬ ‫را‬ ‫بازه‬ ‫شکست‬ ‫هر‬ ‫نقاط‬ ‫سپس‬ .‫کردیم‬3.‫کردیم‬ ‫انتخاب‬ ‫اولیه‬ ‫نقاط‬ ‫عنوان‬ ‫به‬ ‫باشد‬ ‫می‬ ‫نقطه‬ ‫کدام‬ ‫هر‬ .‫کنیم‬ ‫می‬ ‫محاسبه‬ ‫نقطه‬ ‫سه‬ ‫این‬ ‫تا‬ ‫را‬ ‫نقطه‬ ‫اقلیدسی‬ ‫فاصله‬ .‫کنیم‬ ‫می‬ ‫الگوریتم‬ ‫وارد‬ ‫را‬ ‫رکورد‬ ‫هر‬ ‫سپس‬ ‫تر‬ ‫نزدیک‬ ‫شده‬ ‫وارد‬ ‫نقطه‬ ‫به‬ ‫که‬.‫گیریم‬ ‫می‬ ‫نظر‬ ‫در‬ ‫گروه‬ ‫آن‬ ‫در‬ ‫را‬ ‫رکورد‬ ، ‫بود‬ ‫اصالح‬ ‫نشانه‬ ‫نقاط‬ ،‫قبل‬ ‫نقطه‬ ‫و‬ ‫دسته‬ ‫هر‬ ‫در‬ ‫جدید‬ ‫نقطه‬ ‫میانگین‬ ‫اساس‬ ‫بر‬ ‫و‬ ‫شود‬ ‫می‬ ‫بازنگری‬ ‫ابتدایی‬ ‫نقاط‬ ‫سپس‬ .‫شوند‬ ‫می‬ ‫اینجا‬ ‫در‬ ( ‫باشد‬ ‫انتخابی‬ ‫تواند‬ ‫می‬ ‫تکرار‬ ‫دفعات‬ ‫تعداد‬ .‫شود‬ ‫تکرار‬ ‫بارها‬ ‫باید‬ ‫ها‬ ‫داده‬ ‫تمام‬ ‫برای‬ ‫الگوریتم‬ ‫این‬n‫که‬ ‫را‬ ‫برابر‬ ‫باشد‬ ‫می‬ ‫تکرار‬ ‫دفعات‬ ‫تعداد‬10‫ادامه‬ ‫ها‬ ‫تکرار‬ ‫این‬ ‫جایی‬ ‫تا‬ ‫که‬ ‫داد‬ ‫قرار‬ ‫را‬ ‫شرط‬ ‫این‬ ‫توان‬ ‫می‬ ‫یا‬ ‫و‬ ) ‫دادیم‬ ‫قرار‬ .‫نکنند‬ ‫تغییری‬ ‫و‬ ‫باشد‬ ‫ثابت‬ ‫دسته‬ ‫هر‬ ‫نشانه‬ ‫نقاط‬ ‫مقدار‬ ‫متوالی‬ ‫تکرار‬ ‫دو‬ ‫در‬ ‫که‬ ‫کند‬ ‫پیدا‬ : ‫پردازیم‬ ‫می‬ ‫سازی‬ ‫پیاده‬ ‫های‬ ‫اسکریپت‬ ‫بررسی‬ ‫به‬ ‫حال‬ ‫ابت‬‫نام‬ ‫به‬ ‫جدولی‬ ‫در‬ ‫را‬ ‫نظر‬ ‫مورد‬ ‫اطالعات‬ ‫دا‬KMean‫می‬ ‫قرار‬ ‫بندی‬ ‫گروه‬ ‫برای‬ ‫هم‬ ‫ستون‬ ‫یک‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫وارد‬ ‫برابر‬ ‫را‬ ‫آن‬ ‫مقدار‬ ‫فرض‬ ‫پیش‬ ‫صورت‬ ‫به‬ ‫که‬ ‫دهیم‬0.‫دهیم‬ ‫می‬ ‫قرار‬ IF EXISTS ( SELECT * FROM sys.sysobjects WHERE NAME = 'KMean' ) DROP TABLE dbo.KMean SELECT CstmrRef, COUNT(DISTINCT VchHdrRef) AS SaleNumber, SUM(Qty) AS Qty, SUM(Price) AS Price, 0 AS Class INTO dbo.KMean FROM sle.SLEFactItm WHERE (YEAR = 95) GROUP BY
  • 8. Clustering customers based on KMeans algorithm 7 CstmrRef ‫کنیم‬ ‫می‬ ‫سازی‬ ‫پیاده‬ ‫را‬ ‫الگو‬ ‫این‬ ‫زیر‬ ‫اسکریپت‬ ‫کمک‬ ‫با‬ ‫آن‬ ‫از‬ ‫پس‬. DECLARE @K INT DECLARE @MaxRuns INT DECLARE @X1 FLOAT, @X2 FLOAT, @X3 FLOAT DECLARE @Y1 FLOAT, @Y2 FLOAT, @Y3 FLOAT DECLARE @Z1 FLOAT, @Z2 FLOAT, @Z3 FLOAT DECLARE @D1 FLOAT, @D2 FLOAT, @D3 FLOAT DECLARE @n INT DECLARE @CstmrRef INT, @SaleNumber BIGINT, @Qty BIGINT, @Price BIGINT DECLARE @DMin FLOAT DECLARE @Class INT SET @K = 3 SET @MaxRuns = 10 SET @n = 0 SELECT @X1 = MIN(SaleNumber) + 1 * ((MAX(SaleNumber) - MIN(SaleNumber)) / (@K + 1)),
  • 9. Clustering customers based on KMeans algorithm 8 @X2 = MIN(SaleNumber) + 2 * ((MAX(SaleNumber) - MIN(SaleNumber)) / (@K + 1)), @X3 = MIN(SaleNumber) + 3 * ((MAX(SaleNumber) - MIN(SaleNumber)) / (@K + 1)), @Y1 = MIN(Qty) + 1 * ((MAX(Qty) - MIN(Qty)) / (@K + 1)), @Y2 = MIN(Qty) + 2 * ((MAX(Qty) - MIN(Qty)) / (@K + 1)), @Y3 = MIN(Qty) + 3 * ((MAX(Qty) - MIN(Qty)) / (@K + 1)), @Z1 = MIN(Price) + 1 * ((MAX(Price) - MIN(Price)) / (@K + 1)), @Z2 = MIN(Price) + 2 * ((MAX(Price) - MIN(Price)) / (@K + 1)), @Z3 = MIN(Price) + 3 * ((MAX(Price) - MIN(Price)) / (@K + 1)) FROM KMean AS k WHILE @n < @MaxRuns + 1 BEGIN SELECT @n = @n + 1 DECLARE Cursor_Class CURSOR FOR SELECT CstmrRef, SaleNumber, Qty, Price FROM KMean OPEN Cursor_Class FETCH NEXT FROM Cursor_Class INTO @CstmrRef,@SaleNumber,@Qty,@Price WHILE @@FETCH_STATUS = 0 BEGIN SET @D1 = ( SQRT( POWER((@SaleNumber -@X1), 2) + POWER((@Qty -@Y1), 2) + POWER((@Price -@Z1), 2) ) ) SET @D2 = ( SQRT(
  • 10. Clustering customers based on KMeans algorithm 9 POWER((@SaleNumber -@X2), 2) + POWER((@Qty -@Y2), 2) + POWER((@Price -@Z2), 2) ) ) SET @D3 = ( SQRT( POWER((@SaleNumber -@X3), 2) + POWER((@Qty -@Y3), 2) + POWER((@Price -@Z3), 2) ) ); WITH CTE_Min AS ( SELECT @D1 AS D UNION ALL SELECT @D2 UNION ALL SELECT @D3 ) SELECT @DMin = MIN(D) FROM CTE_Min AS cm SELECT @Class = ( SELECT CASE WHEN @DMin = @D1 THEN 1 WHEN @DMin = @D2 THEN 2 WHEN @DMin = @D3 THEN 3 END AS C ) UPDATE KMean SET Class = @Class WHERE CstmrRef = @CstmrRef IF @Class = 1 BEGIN SET @X1 = (@X1 + @SaleNumber) / 2 SET @Y1 = (@Y1 + @Qty) / 2 SET @Z1 = (@Z1 + @Price) / 2 END
  • 11. Clustering customers based on KMeans algorithm 10 IF @Class = 2 BEGIN SET @X2 = (@X2 + @SaleNumber) / 2 SET @Y2 = (@Y2 + @Qty) / 2 SET @Z2 = (@Z2 + @Price) / 2 END IF @Class = 3 BEGIN SET @X3 = (@X3 + @SaleNumber) / 2 SET @Y3 = (@Y3 + @Qty) / 2 SET @Z3 = (@Z3 + @Price) / 2 END FETCH NEXT FROM Cursor_Class INTO @CstmrRef,@SaleNumber,@Qty,@Price END CLOSE Cursor_Class DEALLOCATE Cursor_Class END ‫جدول‬ ‫در‬ ‫ها‬ ‫داده‬KMean‫ستون‬ ‫به‬ ‫توجه‬ ‫با‬Class.‫شوند‬ ‫می‬ ‫بندی‬ ‫خوشه‬ ‫آنها‬ ‫اولیه‬ ‫اطالعات‬2679‫رکورد‬‫می‬‫باشد‬ :‫باشد‬ ‫می‬ ‫زیر‬ ‫اعضای‬ ‫تعداد‬ ‫با‬ ‫گروه‬ ‫سه‬ ، ‫بندی‬ ‫گروه‬ ‫از‬ ‫پس‬ ‫اطالعات‬ ‫این‬ SELECT Class, COUNT(*) FROM KMean AS k GROUP BY Class ORDER BY Class ***************** Class (No column name) 1 2654 2 22
  • 12. Clustering customers based on KMeans algorithm 11 3 3 ‫نرم‬ ‫با‬ ‫اطالعات‬ ‫این‬ ‫خروجی‬‫افزار‬Rapidminer‫که‬ ‫کند‬ ‫می‬ ‫بندی‬ ‫کالس‬ ‫را‬ ‫مشابهی‬ ‫تقریبا‬ ‫اعضای‬ ‫تعداد‬ ‫نیز‬ ‫باشد‬ ‫می‬ ‫کالس‬ ‫هر‬ ‫نشانه‬ ‫نقاط‬ ‫شناسایی‬ ‫جهت‬ ‫اولیه‬ ‫نقاط‬ ‫انتخاب‬ ‫در‬ ‫تفاوت‬ ‫علت‬ ‫به‬ ‫اندک‬ ‫تفاوت‬. Cluster Model Cluster 0: 3 items Cluster 1: 30 items Cluster 2: 2646 items Total number of items: 2679