همانطور که میدانید از دادهکاوی برای کاوش در اطلاعات و کشف دانش استفاده میشود. برای اینکار الگوریتمهای متعددی وجود دارد که هر یک برای هدف خاصی کاربرد دارند. در SQL Server Business Intelligence Development Studio تعداد 9 الگوریتم مختلف برای انجام عمل دادهکاوی وجود دارد که از هر یک در شرایط خاص و در جهت رسیدن به اهداف مشخصی استفاده میشود. خوشه بندی از مهمترین الگوریتمهای داده کاوی است و کاربرد بسیاری در کشف دانش دارد به همین دلیل در این مقاله به الگوریتم خوشه بندی که یکی از مهمترین الگوریتمهای دادهکاوی است، خواهیم پرداخت.
کلاسترینگ (Clustering) یا خوشهبندی از جمله الگوریتمهای قطعه بندی به حساب میآید. الگوریتم خوشهبندی اطلاعاتی را که ویژگیهای نزدیک به هم و مشابه دارند را در دستههای جداگانه که به آن خوشه گفته میشود قرار میدهد. به بیان دیگر خوشهبندی همان دستهبندیهای سادهای است که در کارهای روزانه انجام میدهیم. وقتی با یک مجموعه کوچک از صفات روبرو باشیم دسته بندی به سادگی قابل اجرا است، برای مثال در یک مجموعه از خودکارهای آبی، مشکی، قرمز و سبز به راحتی میتوانیم آنها را در 4 دسته قرار دهیم اما اگر در همین مجموعه ویژگیهای دیگری مثل سایز، شرکت سازنده، وزن، قیمت و... مطرح باشد کار کمی پیچیده میشود. حال فرض کنید در یک مجموعه متشکل از هزاران رکورد و صدها ویژگی قصد دسته بندی دارید، چگونه باید این کار را انجام دهید؟!
بخش بندی دادهها به گروهها یا خوشههای معنادار به طوری که محتویات هر خوشه ویژگیهای مشابه و در عین حال نسبت به اشیاء دیگر در سایر خوشهها غیر مشابه باشند را خوشهبندی میگویند. از این الگوریتم در مجموعه دادههای بزرگ و در مواردی که تعداد ویژگیهای داده زیاد باشد استفاده میشود.
تعریف خوشه بندی
فرض کنید کودکی هستید که به همراه یک کیسه پر از تیله در اتاقی نشسته اید. اکنون کیسه را باز میکنید و اجازه میدهید تا تیلهها روی زمین حرکت کنند. متوجه میشوید که تیله ها رنگهای متفاوتی دارند: قرمز، آبی، زرد، سبز. تیله ها را برحسب رنگ جدا میکنید تا اینکه چهار گروه تیله داشته باشید. سپس متوجه میشوید که برخی از تیله ها بزرگ، بعضی کوچک و بعضی، متوسط هستند. حال تصمیم میگیرید که تیلههای بزرگ و کوچک را با هم و تیلههای متوسط را به گروهی مجزا دسته بندی کنید. شما به این تقسیم بندی نگاه میکنید و از این کار راضی هستید. اکنون یک عملیات خوشهبندی انجام دادهاید.
دوباره نگاهی به خوشهها میکنید و میبینید که نه تنها تیله هایی با رنگهای یکپارچه دارید، بلکه تیلههای چشم گربهای، شرابی، شیشهای و احتمالا انواع دیگری نیز دارید. برخی از تیلهها دارای سائیدگی هستند. برخی از آنها دارای زوایایی هستند که بطور مستقیم حرکت نمیکنند. اکنون سر درگم هستید، شما گروه بندی خود را براساس کدام خصوصیت انجام میدهید؟ اندازه، رنگ یا فاکتورهای دیگر از قبیل شکل یا جنس؟ به احتمال زیاد شما دوست دارید فقط بازی کنید!
زمانی که با یک مجموعه کوچک از خصوصیات سروکار داریم، خوشهبندی یک عمل ساده ای است که می توانیم آن را انجام دهیم. اما زمانی که خصوصیات رشد میکنند مشکلات خوشهبندی افزایش پیدا کرده و حتی ممکن است از طریق ذهن آدمی غیر ممکن باشد. عمل خوشهبندی فقط در 5 یا 6 بٌعد برای افراد نظریه پرداز که فهم عمیقی از دادهها دارند امکان پذیر است. اما مجموعه دادههای مدرن، عموماً شامل دهها (اگر نگوییم صدها) بٌعد هستند و زمانی که ما نمیتوانیم روابط ممکن بین خصوصیات را درک کنیم، عمل خوشهبندی غیر ممکن میشود.
توجه: در این مقاله منظور از بٌعد تعداد خصوصیات اشیاء میباشد. به عنوان مثال، نقاط در صفحه دکارتی دارای دو بعد X و Y هستند.
کلاسترینگ، اشیاء را براساس ویژگیهایی که با هم دارند گروهبندی میکند. هدف اصلی در خوشه بندی تقسیم بندی اشیاء به گونهای است که بیشترین شباهت در یک گروه و بیشترین تفاوت با اشیاء گروههای دیگر را دارا باشد. بعنوان تعریف سادهتر میتوان گفت که اشیاء در خوشه مخصوص خود دارای بیشترین شباهت و در برابر اشیای متعلق به خوشههای دیگر دارای بیشترین تفاوت هستند.
در برنامههای کاربردی، عمل خوشهبندی بصورت کاملا متمایز انجام نمیگیرد. جدا از مسائل فوق خوشهبندی دادهها را از هم جدا میکند و هر خوشه دادههای مخصوص خود را دارد و از تداخل داده در خوشه جلوگیری میشود. البته خوشه بندی فازی جدا از مسئله فوق میباشد و اجازه میدهد که یک شیء متعلق به چند گروه وابسته باشد.
با توجه به شکل ممکن است که گرفتن چهار خوشه عقلانی نباشد (به علت شباهت نزدیک دو گروه)، به همین علت تاکید میکنیم که اشیاء خوشه را با توجه به وابستگی نوع دادهها و نتایج آن میتوان بدست آورد.
چه تحلیل و آنالیزهایی خوشه بندی نیستند؟
در این قسمت به طور خلاصه تفاوت تجزیه و تحلیل خوشهای با دیگر تکنیک های گروهبندی را بیان میکنیم. در واقع گروهبندی اشیاء، داده را به کلاسهای نام گذاری شده تخصیص میدهد. در گروه بندی هر شیء دارای یک سرپرست و یا ناظر میباشد. میتوان گفت خوشه بندی یک نوع طبقه بندی بدون سرپرست است یعنی اشیاء بر اساس شباهتهایی که باهم دارند تقسیم میشوند و نه بر اساس معیارهای از پیش تعیین شده. به همین دلیل به خوشهبندی گاهی اوقات طبقه بندی بدون سرپرست نیز میگویند. در دادهکاوی هنگامی که از اصطلاح طبقه بندی استفاده میشود منظور همان طبقه بندی بصورت با سرپرست میباشد و همچنین واژههای قطعه بندی و پارتیشن بندی مترادف خوشه بندی هستند. این لغات بارها در روش های سنتی استفاده شده است. در واقع استفاده از قطعه بندی، استفاده از تکنیک های ساده ای برای گروهبندی دادهها میباشد.
بعنوان مثال تقسیم بندی پیکسلهای عکس به دو قسمت رنگ و شدت رنگ و یا تقسیم بندی مردم به گروهایی بر اساس درآمد و یا نام خانوادگی؛ با این وجود بعضی از تقسیمبندیهای عکس و تجزیه و تحلیل بازار خوشه میباشد و از یک چارچوب ریاضی برای دادهکاوی استفاده میکنند. قوانین زیادی از دادهکاوی روی مشکلات تقسیم بندی فعالیت و نظارت دارد و به همین ترتیب روشهای فراوانی برای پارتیشن بندی مجموعهای از داده وجود دارد اما هیچ کدام در سطح تجزیه و تحلیل خوشهبندی نمیباشند.
ارتباط محکمی میان پارتیشنبندی و گراف خوشه بندی وجود دارد. برای درک بهتر تفاوت میان خوشه بندی و سایر تکنیکهای گروهبندی اشیاء به مثال زیر توجه کنید.
تفاوت خوشه بندی با بانک اطلاعاتی یا درخواست از موتور جستجو: اگرچه یک کوئری مجموعهای از رکوردها را به دو گروه تقسیم می کند ( و فقط قسمت مورد نیاز پرس و جو بازیابی میشود) این دو نتیجه به علت نداشتن ارتباط، خوشه بندی نیستند. یک پرس و جو مجموعه ای از اشیاء را نمایش میدهد در حالی که خوشه بندی تلاش میکند اشیاء را براساس شباهت ها و تفاوتها سازماندهی کند.
نکته: شاید به نظر برسد که پاسخ های کوئری دارای شباهت هایی هستند، اما باید توجه داشت که در پرس و جو عموما تمام ابعاد درخواست نمیشوند و ممکن است شباهت ها فقط در چند بٌعد کوچک باشد.
الگوریتم خوشه بندی
زمانی که روابط بین دادهها به خوبی آشکار نباشند، این الگوریتم یک گروه بندی طبیعی میان دادهها انجام میدهد. یا به عبارت دیگر این الگوریتم متغیرهای پنهانی را پیدا میکند که دقیقا دادههای شما را دستهبندی کرده است. برای مثال ممکن است با دیدن بخشی از مردم که عازم سفر هستند متوجه شوید که درصد قابل توجهای از مسافرین لباس های نازک پوشیدهاند در حالیکه بقیه افراد گرمکن و کت به تن دارند. در این حالت میتوان یک متغیر پنهانی را نتیجه گرفت که آن متغیر بیان می کند یک گروه افراد از آب و هوای گرمسیری می آیند و گروه دیگر از ناحیه سرد و بارانی بازمی گردند. این توانایی که رشته مشترکی از ارتباطات را به یکدیگر متصل میکند باعث میشود که خوشهبندی تبدیل به یک تکنیک استخراج دادهی رایج، در بازاریابی شود.
شناسایی گروههای طبیعی دادهها، انسان را از تحلیل های ساده تجارت مبتنی بر سازمان موجود رها میسازد در غیر اینصورت با گروهای محدودی روبرو میشویم که خودمان تصور کردهایم و ممکن است چگونگی مسیری که باعث کمک به مشتریان نشود را انتخاب کرده باشیم. منظور از تحلیل ساده، تحلیلهایی است که به نظر درست و دقیق میآید اما در واقع ممکن است چنین نباشد. بعنوان مثال به علت استفاده زیاد از چای و قند شاید خیلی از افکار فروشندهها نیز به این مطلب جلب گردد که قرار دادن قند و چای در کنار هم گزینه مناسبی است، اما باید توجه داشت که نسبت اتمام قند به چای خیلی بیشتر است. حال اگر فرض کنیم خانوادهها عموما زیاد چای مصرف میکنند میتوان نتیجه گرفت به علت شستن زیاد ظروف مربوط به چای، مصرف مایع ظرفشویی و قند دارای تناسب مصرفی کمتری است. پس میتوان نتیجه گرفت گذاشتن مایع ظرفشویی در کنار قند از گذاشتن چای در کنار قند منطقیتر میرسد. البته توجه کنید که رابطه فوق به صورت نظری میباشد و ممکن است پس از دادهکاوی نتیجه مناسبتری بدست آید.
برای شناخت بیشتر و بهتر رفتار پیرامون مشتریان جهت ارسال پیامهای مناسب به گروه های خاص می توان از خوشه بندی استفاده نمود. برای مثال یک ویدئو کلوپ ممکن است دریابد که گروهی از مشتریان فیلمهای خانوادگی را بر پایه یک نظم خاصی خریداری می کنند و گروه دیگر علاقه کمتری نسبت به خرید فیلمهای مستند دارند. ظاهرا ارسال کارت تبلیغاتی فیلمهای دیسنی (نام یک شرکت فیلمسازی در آمریکا) برای گروه دوم گزینه عاقلانهای نمیباشد.
توانایی تعریف و شناسایی بخشهای بازار ابزاری قوی برای اداره بهتر کسب و کار فراهم می کند. فیلمهای خانوادگی برای فروش مطلوب هستند یا فیلمهای مستند؟ سود بیشتر در ناحیه شمال غرب است یا جنوب شرق؟ سود اجارهکنندگان بیشتر است یا خریداران؟ تقریبا راه های بیشماری برای گروهبندی دادهها وجود دارد. اما برای گروهبندی با یک دید عمیق در کسب و کار راههای کمی وجود دارد.
دادههای مخفی درون سازمانی برای تحلیل تجارت بسیار سودمند میباشد. خرده فروشی که میداند مشتریانش در چه گروهی قرار دارند، میتواند فروش را بر یک اساس منظم هدایت کند.
در مقاله SSIS و کاربرد آن در پروژه به معرفی SSIS پرداخته شد و همچنین در مقالات دیگری (اینجا) با چند نمونه عملی به شرح بهتر و بیشتر آن پرداخته شد. اما اگر نیاز به آموزش قدم به قدم مفاهیم ابتدایی SSIS دارید می توانید از ماکروسافت کمک بگیرید.
با کمی جستجو در اینترنت مشاهده خواهید کرد که توابع زیادی برای تبدیل تاریخ وجود دارد اما برخی از آنها یا کامل نیستند و یا اشکالاتی دارند. در این پست توابع تبدیل تاریخ شمسی به میلادی، میلادی به شمسی و میلادی به قمری را در کنار هم قرار دادهام. در نهایت نیز یک تابع جهت بدست آوردن سن افراد از تاریخ تولدشان معرفی شده است. این توابع برای تبدیل در بعضی تاریخ ها مشکلاتی داشتند که با یادآوری خوانندگان بلاگ رفع شد.
لازم به ذکر است که تابع تبدیل تاریخ میلادی به شمسی توسط آقای رضا راد نوشته شده است.
توابع تبدیل تاریخ میلادی به شمسی و شمسی به میلادی را از اینجا دریافت کنید.
پس از دانلود و اجرای کوئری ها، از طریق دستورات زیر میتوانید تبدیل تارخ میلادی به شمسی و شمسی به میلادی را انجام دهید.
از کوئری زیر برای مشاهده نتیجه استفاده کنید.
select dbo.GregorianToPersian('1980/01/01')
select dbo.ShamsitoMiladi('1358/10/11')
تبدیل تاریخ میلادی به قمری
از دستور زیر برای تبدلی تاریخ میلادی به قمری استفاده کنید.
SELECT CONVERT (nvarchar(30),GETDATE(),130) as Date
برای بدست آوردن سن از دستور زیر استفاده کنید.
SELECT DateDiff(yy , (select dbo.ShamsitoMiladi ('1365/01/01') ), GetDate())
تکنیکهای بسیاری جهت جمع آوری ، پالایش و آنالیز داده ها نظیر OLAP و Data Mining با هدف استخراج اطلاعات از رکوردهای عملیاتی سازمان و نظم دهی آن به منظور انجام تحلیل های مختلف وجود دارد.
یکی از متداولترین سوالات در حوزه پردازش دادهها به صورت حرفهای در مورد تفاوت داده کاوی و OLAP میباشد. این دو ابزار در عین حال که تفاوتهایی با هم دارند مکمل یکدیگر نیز میباشند.
کاربر در مورد یک رابطه و تائید آن با مجموعهای از پرس و جوها در مقابل دادهها، به شکل یک فرضیه روبرو است. به عنوان مثال ممکن است تحلیلگر بخواهد تا عواملی که سبب ناتوانی در بازپرداخت بدهی وام منجر میگردد را تجزیه و تحلیل نماید.
در تجزیه و تحلیل پایگاه داده OLAP ابتدا ممکن است این گونه فرض شود که افرادی که در اعتبارات مالی درآمد پایین و ریسک بالا دارند، نتوانند بدهی خود را پرداخت کنند و فرضیه افراد کم درآمد و کم اعتبار تائید (و یا رد) شود.
اگر فرضیه توسط دادهها تصدیق نشد تحلیلگر ممکن است به بدهی بالا به عنوان عامل منجر به ریسک نگاه کند. اگر این مطلب را دادهها نیز تایید نکنند او ممکن است بدهی و درآمد را با هم به عنوان بهترین نمایانگر ریسک اعتبار مالی بد در نظر بگیرد.
به عبارت دیگر OLAP یک تجزیه و تحلیلی از مجموعهای از فرضیهها تولید کرده و پارامترها و ارتباطات را برای استفاده به سمت کوئری های پایگاه داده برای تائید یا رد آنها ارسال میکند. تجزیه و تحلیلهای OLAP برای پردازشهای استنتاجی یک ضرورت است.
داده کاوی با OLAP تفاوت دارد زیرا الگوهای فرضیهها را سریعتر تائید میکند، با استفاده از همان دادهها به کشف الگوهای همانند میپردازد و همچنین برای پردازشهای استنتاجی ضروری میباشد. برای مثال فرض کنید شخصی قصد داشته باشد تا فاکتورهای همراه با ریسک جهت وام گرفتن را با استفاده از داده کاوی تجزیه و تحلیل و شناسایی کند. ممکن است ابزارهای داده کاوی اشخاص با بدهی بالا، درآمد پایین و اعتبار مالی بد را کشف کنند. این نوع تجزیه و تحلیل ممکن است از موارد تاثیرگذار دیگری چشم پوشی کند. بعنوان مثال سن می تواند یک عامل تعیین کننده در بازپرداخت وام باشد.
اینجا جایی است که داده کاوی و OLAP میتوانند یکدیگر را کامل کنند. قبل از کار بر روی الگو و تجزیه و تحلیل بر روی اطلاعات، نیاز به دانستن پیامدهای مالی و همچنین خواستار کشف الگوهایی برای کنترل اعتبار کافی اشخاص میباشیم. تکنولوژی OLAP میتواند به این قسمت از سوال پاسخ دهد. در OLAP با استفاده از MDX و با دقت و تمرکز خود بر روی مقادیر مهم میتواند استثناها را شناسایی و یا تعاملات را کشف کند.