داده کاوی چیست؟ - نگاهی کلی به داده کاوی(Data Mining)

در مطلب هرم دانش در علم داده به بخش های مختلف این هرم پرداختم و ذکر کردم برای این که یک مساله دیتاساینسی حل بشه نیازمند این هست که مراحل این هرم به درستی طی شوند. برای این که مراحل این هرم طی بشه و داده به اطلاعات و سپس دانش تبدیل بشه نیازمند اجرای یک سری فرایند هست. فرایند هایی که به عنوان داده کاوی شناخته میشه و باید از ابزار ها و دانش به خصوصی در اون ها استفاده کنیم. در این مطلب قصد دارم داده کاوی(Data Mining) رو معرفی کنم.برای این که مراحل هرم دانش طی بشه نیازمند اجرای یک سری فرایند هایی است که به عنوان داده کاوی شناخته میشه و باید از ابزار ها و دانش به خصوصی در اون ها استفاده کنیم.فرایند داده تا دانش در هرم دانشقبل ازین که تعریفی از داده‌کاوی ارائه بدم بهتره اول به معنی داده، اطلاعات و دانش بپردازیم. البته که به همه این ها خیلی مفصل تر در مطلب هرم دانش در علم داده پرداخته شده؛ پس اینجا بهتره اول یک مثال از مجموعه داده و فرایند تبدیلش به اطلاعات و سپس دانش بیارم. خب یک مثال از فرایند داده تا دانش می‌تونه این باشه:فرض کنید یک رستوران می‌خواد کیفیت غذا ها رو بهتر کنه و به تبعیت از اون قیمت سفارشاتش بالاتر میره اما نمیدونه با این کار چقدر مشتری از دست می‌ده یا بدست میاره؛ برای همین از یک یا چند دیتاساینتیست کمک می‌گیره تا به این سوالش جواب داده بشه. دیتاساینتیست در مرحله اول کار برای این که بدونه گذشته رستوران به چه شکل بوده شروع به بدست اوردن داده میکنه. ممکنه این داده ها وجود داشته باشند یا نداشته باشند. برای مثال هر فروشی که رستوران انجام میده طی یک فاکتور فروش که متغیر هایی داره؛ در سیستم فروشگاه ثبت میشه؛ متغیر هایی مثل نوع غذا یا نوشیدنی، مبلغ پرداخت، تاریخ و ساعت سفارش و حتی شماره تماس مشتری. دیتاساینتیست ها برای داده هایی هم که وجود نداره شروع به جمع‌آوری اون ها می‌کنند. برای مثال سن و جنسیت مشتری، رضایت و نظر مشتری درباره کیفیت و مزه غذا و پیش غذا یا خدمات و فضای رستوران. این که چطور باید این داده ها جمع آوری بشه خودش یک فرایند جدایی هست که نیاز به دانش نمونه‌گیری آماری داره. درواقع از طرح پرسش نامه برای سنجش رضایت و نظر مشتری تا نحوه جمع‌آوری این پرسش‌نامه ها دانشی به نام نمونه‌گیری دخیل میشه که موضوع این مطلب نیست و در مطالب بعدی اگر فرصت شد حتما بهش می‌پردازم.در هرصورت در مرحله اول داده هایی توسط دیتاساینتیست ها جمع‌آوری میشه که فرمتش می‌تونه به شکل زیر باشه:تصویر 1: نمونه داده های مثال که دیتاساینتیست ها از سیستم ثبت شده رستوران بدست آوردند. تصویر 2: نمونه داده های مشتریان که توسط رضایت سنجی طراحی شده به وسیله دیتاساینتیست ها جمع‌آوری شده است.توجه داشته باشید که به هر یک از جدول هایی که تصویرشان در بالا موجود هست یک مجموعه داده یا دیتاست می‌گویند. درواقع:دیتاست مجموعه‌ای از مشاهدات است که هریک از متغیر های آنان مقادیری را اختیار کرده‌اند.مثلا در دیتاست اول در تصویر 1، ردیف 1 مربوط به مشاهده‌ای است که در تاریخ 27 اردیبهشت 1400 سفارش 1 سیخ کباب، دو سیخ جوجه و یک نوشابه خانواده داده و 78500 تومان را برای سفارشش پرداخت کرده. بنابراین هریک از متغیر های تاریخ سفارش، ساعت سفارش، سفارش، شماره تماس مشتری و مبلغ پرداخت شده برای هر یک از مشاهدات مقادیری را اختیار می‌کنند.پس در این مجموعه های داده و البته به صورت معمول در هر دیتاست یک ردیف مربوط به یک مشاهده است و یک ستون مربوط به یک متغیر است.بعد از بدست آوردن داده ها، دیتاساینتیست ها مجموعه هایی که به آن ها کمک می‌کند تا بهتر به مسئله مطرح شده پاسخ دهند را به منظور اجرای عملیات بر روی آن ها انتخاب می‌کنند. خب توی این مثال ساده و ساختگی ما فقط دو تا مجموعه داده داریم که ازشون استفاده می‌کنیم. به اصطلاح داده ها رو یک مرحله پروسس می‌کنیم و از خام بودن درشون میاریم. توی این مرحله داده ها رو تبدیل به اطلاعات می‌کنیم.برای این که داده ها رو تبدیل به اطلاعات کنیم از روش های مختلفی میشه استفاده کرد. از ساده‌ترین روش ها مثل میانگین گرفتن روی فروش روزانه در هر ماه که با فرمول نویسی در اکسل و یا دستور های SQL میشه بدستش اورد تا روش های پیشرفته‌تر. در اینجا فرایند داده کاوی با دوست شدن با داده ها و بعدش تمیز کردن اون ها یا به اصلاح دیتا کلینینگ شروع میشه و روش ها و ابزار هایی وجود داره که به وسیله اون ها می‌تونیم داده ها رو به اطلاعات تبدیل کنیم. توی این مطلب من به مساله دیتا کلینینگ نمیپردازم اما مبحث خیلی مهمی هست و بهتون پیشنهاد می‌کنم حتما بخونید دربارش. (توی پرانتز من معمولا وقتی میخوام دیتاست هایی رو بشناسم و باهاش سر و کله بزنم یه اصطلاحی درست کردم و میگم با دیتا دوست می‌شیم?)حتی توی این مرحله می‌تونیم از رابطه بین دیتاست ها هم کمک بگیریم و اون ها رو در کنار هم داشته باشیم تا اطلاعات جامع‌تری کسب کنیم. برای مثال اگر داده های نظرسنجی ما در تصویر دوم متغیری به اسم شماره تماس داشت می‌توانستیم بین دو دیتاست نظرسنجی و سفارش مشتریان رابطه برقرار کنیم و بفهمیم مثلا مشتری‌ای به اسم نیکان که مرد هم هست و سنش 19 ساله، در تاریخ 27 اردیبهشت ماه 1400 سفارش ردیف سوم در دیتاست اول رو ثبت کرده و نظرش درباره مزه و کیفیت غذا تقریبا خوبه.توی این مرحله باید بگم هرچی اطلاعات دم دستی‌تر باشه پروسس کمتری روش انجام شده و هرچی عمیق‌تر باشه کار بیشتری روش انجام گرفته. مثلا ما صرفا با داشتن دیتاست اول می‌تونیم بگیم پر فروش ترین غذای رستوران کدام غذا هست؟ درصورتی که این اطلاعی که بدست اوردیم ممکنه خود صاحب رستوران هم بدونه و نیاز نبود برای دانستن این مساله از چند تا دیتاساینتیست کمک بگیره...هنر دیتاساینتیست ها در این مرحله اینه که همزمان با اطلاعات سطحی‌ای که بدست میاد، اطلاعاتی رو بدست بیارند که کمک کننده‌تر باشه. همونطور که در مطلب هرم دانش در علم داده هم گفتم، داده و اطلاعات مربوط به گذشته هستند. طی کردن این مراحل لازمه ولی کافی نیست. گرچه این رو لازم میدونم بگم که در خیلی از سازمان ها و کسب و کار ها دانستن این گذشته خیلی حیاتی و مهم هست و به طور بدیهی این گذشته رو نمیدونن. این مساله‌ی بیشتر کسب و کار های متوسط و بزرگ در ایران هست و باهاش دست و پنجه نرم می‌کنند. کسب و کار هایی که از ابتدا به طور استاندارد پایگاه های داده خودشون رو بهینه نکردند و استخراج داده گذشته‌شون و وصل کردن و ارتباط بین این مجموعه داده ها کمی دشوار هست.هرم دانش در یک نگاهبه ادامه مثال بپردازیم؛ یک مرحله بیشتر مجموعه داده ها رو پروسس می‌کنیم. مرحله تبدیل اطلاعات به دانش دیتاماینینگ. از داده های جانبی کمک می‌گیریم و اون ها رو در کنار داده هایی می‌گذاریم که از قبل وجود داشته. اگه این مثال واقعی بود و من می‌خواستم روش کار کنم حتما و حتما تاریخ ها رو با تعطیلی هایی که وجود داره مطابقت میدادم و البته آب و هوای منطقه‌ای که رستوران هست رو هم در اون تاریخ به دیتاست اضافه می‌کردم. یعنی دو تا متغیر به دیتاست اولم اضافه می‌کردم: آیا اون روز تعطیل بوده یا نه و آب و هوای اون روز چطوری بوده؟ بارونی یا برفی؟ یا حتی آفتابی؟ توی این مرحله ممکنه متغیر هایی که فکر می‌کنیم به درد می‌خوره رو به دیتاست ها اضافه کنیم یا ممکنه برعکس کاهش بعد بدیم. یعنی انقدر تعداد متغیر ها زیاد باشه که برای پیاده سازی مدل های ریاضیاتی، آماری، ماشین لرنینگی و ... بهینه نباشه. در این صورت نیازه که کاهش بعد داده بشه. در مرحله تبدیل اطلاعات به دانش از روش های پیشرفته‌تری استفاده میشه. ممکنه مدل هایی روی دیتاست ها پیاده سازی بشند و این پیاده سازی به وسیله زبان های برنامه نویسی یا نرم افزار های به خصوصی انجام بشه. توی مثال ساده خودمون سوال رستوران‌دار این بود: «اگر قیمت غذا را به منظور بالاتر بردن کیفیت غذا افزایش دهم تعداد مشتری را از دست نمی‌دهم؟». فرض کنیم نتیجه های پیاده‌سازی مدل ها بر روی دیتاست های یک مرحله پروسس شده ما این موارد بود: مشتریان شما به فضای رستوران اهمیت بیشتری می‌دهند تا کیفیت غذا.در روز های تعطیل و برفی مشتریان نسبت به رفتار خدمه نارضایتی دارند.خب طبق این نتایج بدست اومده بهتره استراتژی رستوران تغییر کنه. این مرحله ای هست که دیتاساینتیست ها معمولا پیشنهاد میدن و تصمیم گیری نهایی باید توسط مدیر اون مجموعه صورت بگیره. مرحله‌ای که در هرم دانش به عنوان خرد یاد میشه. پیشنهادات میتونه به این صورت باشه:در تبلیغات رستوران، بر روی کمپین هایی تمرکز شود که محوریت آن فضای رستوران باشد.توزیع تعداد خدمه در روز های هفته تغییر کند؛ مثلا در روز های تعطیل و برفی افزایش یابد و در بقیه روز ها به نسبت کمتر شود.تمام این مثال رو پیش بردیم که به یک چیز بپردازیم: دیتاماینینگ چیست؟داده کاوی یا دیتاماینینگ چیست؟خیلی خلاصه بخوام بگم:به روند استخراج اطلاعات و دانش از داده ها داده کاوی یا data mining می‌گویند.در داده کاوی از روش های مختلف، ابزار ها و نرم افزار های متفاوت استفاده می‌کنند. در این جا می‌خوام رفرنس بدم به کتاب data mining for business analytics و مراحلی که تقریبا در بیشتر فرایند های داده کاوی انجام میشه رو بگم.مراحل روند داده کاویهدف داده­ کاوی درک شود (به چه منظور داده­ کاوی روی این داده صورت می ­­گیرد؟).مجموعه ­ی داده­ های مورد استفاده در تحلیل را به ­دست آورید.داده ­ها را اکتشاف، پاک­سازی و پیش­ پردازش کنید (در بعضی موارد ممکن است برخی داده­ ها نیاز به اصلاح داشته باشند، مثلاً پاسخ به این سوال که چگونه داده ­های گمشده را مدیریت کنیم؟).در صورت لزوم، بُعد داده ­ها را کاهش دهید (مانند حذف کردن متغیرهای غیر ضروری).کارها و مدل های مربوط به داده­ کاوی را تعیین کنید (طبقه ­بندی، پیش­گویی، خوشه­ بندی و ...).داده­ ها را افراز کنید (اگر لازم بود که از روش­ های یادگیری تحت نظارت استفاده شود، داده ­ها را به سه قسمت آموزش، اعتبارسنجی و مجموعه ­ی داده­ های آزمون تقسیم ­بندی می­ کنیم).تکنیک­ های داده­ کاوی که باید مورد استفاده قرار بگیرند را انتخاب کنید (رگرسیون، شبکه­ های عصبی و ...).الگوریتم ­های لازم برای انجام کار ها را به کار بگیرید.نتایج الگوریتم­ ها را تفسیر کنید.مدل­ ها را ارزیابی کنید و مدل نهایی را انتخاب کنید.مدل را پیاده کنید.این مبحثی که باز شده سر دراز دارد... درواقع دنیای داده کاوی خیلی بزرگه و من خودم هیچ ادعایی ندارم که توی همش حرفه‌ای ام. شاید فقط بتونم از هر کدوم یک نقطه استارت براتون بگم و آشنا کنم و در بعضی از مسائل عمیق تر بشیم. همونطور که قبل تر هم گفتم چون علم داده یک علم بین رشته‌ای هست؛ دیتاساینتیست باید دانش سطحی روی هرکدوم از حوزه ها داشته باشه و توی یک مبحث خیلی عمیق باشه.امیدوارم عمری باقی بمونه تا بتونم این رشته رو هم به خوبی ادامه بدم و مطالب مرتبط با داده کاوی رو باهاتون به اشتراک بگذارم. خوشحال میشم اگر نظری دارید حتما کامنت کنید.