تا این جای کار آموختههای من توی چهارچوب دانشگاه و استادهام بود و بیشتر روی سیستمهای توزیع شده و به ویژه روی محاسبات ابری مطالعه و تحقیق کردم.
همیشه دوست داشتم درباره داده کاوی هم مطالعه داشته باشم و حتّی یه روزی دانشمند داده بشم و الآن که دوره کارشناسی ارشدم به پایان رسیده، تا شروع دوره سربازی یه فرصت آزادی دارم که قصد دارم توی اون داده کاوی رو یاد بگیرم.
امّا داده کاوی چیه و به چه درد میخوره؟ دانشمند داده کیه و برای دانشمند داده شدن باید چه چیزهایی رو بدونیم؟
تعریف:
تعریفی که ویکیپدیا از داده کاوی ارائه میده به این صورت هست که:
“داده کاوی (به انگلیسی: Data Mining) به مفهوم استخراج اطلاعات نهان و یا الگوها و روابط مشخص در حجم زیادی از دادهها در یک یا چند بانک اطلاعاتی بزرگ است.”
به زبون ساده اگه بخوام داده کاوی رو تعرف کنم باید بگم که:
“داده کاوی علمی هست که به کمک اون و الگوریتمهایی که پیشنهاد میده میتونیم دادههایی که از قبل موجود بوده رو بررسی کنیم و الگوهای جالبی رو از دل اونا بیرون بکشیم که قبلا از اونها اطلاعی نداشتیم و از این الگوها در جهت منافع خودمون استفاده کنیم.”
کاربرد:
داده کاوی در خیلی از زمینهها مثل پزشکی، فروش محصولات، تشخیص اختلاص، بررسی ریسک اعطای وام به مشتریان بانکها، بورس و غیره استفاده میشه. مثلاً در یک فروشگاه به کمک داده کاوی میتونیم دادههای مربوط به اطلاعات خرید در سالهای گذشته رو بررسی کنیم و متوجه بشیم که ۹۰٪ از مشتریانی که جوان بودن و لپتاپ خریداری کردن، موس بیسیم هم خریداری کردن. با استفاده از این الگو از این به بعد میتونیم به جوانانی که لپتاپ خریداری میکنن، موس بیسیم هم پیشنهاد بدیم. چون که میدونیم به احتمال زیاد موس بیسیم رو هم میخرن. این کار به افزایش فروش و سود فروشگاه کمک خواهد کرد.
دانشمند داده کیست؟
با رشد تکنولوژیهای Big Data نقش جدیدی در شرکتهای بزرگ به نام دانشمند داده (Data Scientist) ایجاد شده است که در حقیقت نسخه جدیدی از نقش تحلیلگر داده یا تحلیلگر تجارت/بازار است. در حقیقت دانشمند داده با دسترسی به حجم زیادی داده، استفاده از حس کنجکاوی و زیر سوال بردن پیش فرضهای فکری سعی میکند تا مواردی را بیابد که برای سازمان مزیت رقابتی ایجاد کند. به طور خلاصه میتوان گفت:
یک دانشمند داده شخصی است که در زمینههای مهندسی کامپیوتر، داده کاوی و آمار اطلاعات کافی دارد.
در واقع به کمک داده کاوی به کشف دانش پنهانی که در یک یا چند منبع بزرگ داده وجود داره پرداخته میشه و باعث شده تا کشف دانش یا (KDD: Knowledge Discovery) اسم دیگه داده کاوی باشه.
فرآیند کشف دانش از چند گام مهم تشکیل میشه که داده کاوی یکی از اونهاست و در ادامه به اونا اشاره میکنم.
- انبارش دادهها: وجود اطلاعات صحیح و منسجم یکی از ملزوماتی هست که در داده کاوی به اون نیاز داریم. اشتباه و عدم وجود اطلاعات صحیح باعث نتیجهگیری غلط و در نتیجه اخذ تصمیمات اشتباه در سازمانها میشه و میتونه موجب تولید نتایج خطرناکی بشه که نمونههاش هم کم نیستن.
اکثر سازمانها دچار یک خلا اطلاعاتی هستن. در این گونه سازمانها معمولا سیستمهای اطلاعاتی در طول زمان و با معماری و مدیریتهای گوناگون ساخته شدن، به طوری که سازمان اطلاعاتی یکپارچه و مشخصی مشاهده نمیشه. علاوه بر این برای فرآیند داده كاوی به اطلاعات خلاصه و مهم در زمینه تصمیمگیریهای حیاتی نیاز داریم.
هدف از فرآیند انبارش دادهها فراهم کردن یک محیط یکپارچه جهت پردازش اطلاعات هست. در این فرآیند، اطلاعات تحلیلی در دورههای زمانی، سازماندهی و ذخیره میشن تا بتوان از اونا در فرآیندهای تصمیمگیری که از ملزومات آن داده کاوی است، استفاده بشن. بطور کلی تعریف زیر برای انبار داده ها ارائه میشه:
انبار دادهها، مجموعهای است موضوعی، مجتمع، متغیر در زمان و پایدار از دادهها که به منظور پشتیبانی از فرآیند مدیریت تصمیمگیری مورد استفاده قرار می گیرن.
- انتخاب دادهها: انبار دادهها شامل انواع مختلف و گوناگونی از داده هست که همه اونا در داده کاوی مورد نیاز نیستن. برای فرآیند داده کاوی باید دادههای مورد نیاز انتخاب بشن. به عنوان مثال در پایگاه دادههای مربوط به سیستم فروشگاهی، اطلاعاتی در مورد خرید مشتریان، خصوصیات آماری آنها، تأمین کنندگان، خرید، حسابداری و غیره وجود دارن. برای تعیین نحوه چیدن قفسهها تنها به دادههایی در مورد خرید مشتریان و خصوصیات آماری اونا نیاز داریم. حتی در مواردی نیاز به کاوش در تمام محتویات پایگاه نیست، بلکه ممکن است به منظور کاهش هزینه عملیات، نمونههایی از عناصر انتخاب و کاوش بشن.
- تبدیل دادهها: زمانی که دادههای مورد نیاز انتخاب و دادههای مورد کاوش مشخص شدن، معمولا به تبدیلهای خاصی روی دادهها نیاز است. نوع تبدیل به عملیات و تکنیک داده کاوی مورد استفاده بستگی داره. تبدیلاتی ساده همچون تبدیل یک نوع دادهای به نوع دیگر تا تبدیلات پیچیدهتر همچون تعریف صفات جدید با انجام عملیاتهای ریاضی و منطقی روی صفات موجود.
- کاوش در دادهها: دادههای تبدیل شده با استفاده از تکنیکها و عملیاتهای داده کاوی مورد کاوش قرار میگیرن تا الگو های مورد نظر کشف شوند.
- تفسیر نتایج: تبدیل و نمایش نتایج یافت شده به صورتی که کاربرپشند و قابل فهم باشن.(استفاده از نمودارها، اینفوگرافیکها و غیره.)
با داشتن هدف کلی در مطالعه، انتخاب مجموعه داده های اصلی برای تحلیل، اولین ضرورت هست. رکوردهای لازم میتونن از انبار دادهها و یا بانک اطلاعاتی عملیاتی استخراج بشن. ولی این رکوردهای داده جمعآوری شده، اغلب از آنچه آلودگی دادهها نامگذاری شده رنج میبرن. بنابراین لازمه که پاکسازی بشن تا از یکدستی فرمت (شکلی) آنها اطمینان حاصل بشه، موارد تکراری حذف بشن و کنترل سازگاری دامنه به عمل بیاد.
البته این امکان هم هست که دادههای گردآوری شده از نظر جنبههای خاصی ناقص یا ناکافی باشند.
در این صورت دادههای مشخصی باید گردآوری بشن تا بانک اطلاعات اصلی را تکمیل کنن. منابع مناسب برای این منظور باید از قبل شناسایی بشن.
این فرایندها مرحله غنیسازی دادهها را تکمیل میکنن. البته معمولا یک سیستم کدگذاری مناسب جهت انتقال دادهها به فرم ساختاربندی شده جدید متناسب، برای عملیات داده كاوی تعبیه میشه.
تکنیکهای آماری: مشخصات اصلی دادهها لازم است با انواع مختلفی از تحلیلهای آماری شامل جدولبندی ساده و متقاطع دادهها و محاسبه پارامترهای آماری مهم محاسبه شوند.
مصورسازی: با نمایش دادهها در قالب نمودارها و عکسها مانند نمودار پراکندگی، گروهبندی دادهها در خوشههای متناسب تسهیل میشود. استنباط عمیقتر ممکن است با بهکارگیری تکنیکهای گرافیکی پیشرفته حاصل شود.
درختهای تصمیم: این تکنیک بخشهای مختلف فهرست پاسخهای موفق داده شده مربوط به یک پرس و جو را بازیابی میکند و به این ترتیب به ارزیابی صحیح گزینههای مختلف کمک میکند.
قوانین وابستگی: اغلب مشاهده میشود که یک وابستگی نزدیک (مثبت یا منفی) بین مجموعهای از دادههای معین وجود دارد. بنابراین قوانین رسمی وابستگی برای تولید الگوهای جدید ساخته و بهکار گرفته میشوند.
یادگیری مبتنی بر مورد: این تکنیک مشخصات گروههای دادهها را تحلیل میکند و به پیشبینی نهادهای واقع شده در همسایگیشان کمک میکند. الگوریتمهایی که از استراتژی یادگیری تعاملی برای کاوش در یک فضای چندین بعدی استفاده میکنند برای این منظور مفید هستند.
شبکههای عصبی: این یک الگوریتم یادگیری ماشینی است که عملکرد خودش را بر اساس کاربرد و ارزیابی نتایج بهبود میبخشد.
الگوریتم ژنتیک: این هم تکنیک مفید دیگری برای پیشبینی هدف است. به این ترتیب که با یک گروه یا خوشه شروع میشود و رشدش در آینده را با حضور در برخی مراحل فرایند محاسبه احتمال بهبود میدهد و جوابی نزدیک به جواب بهینه را تولید میکند.
گزارشگیری: گزارشها شامل نتیجههای تحلیلها برای بهکارگیری آنها است و میتواند شامل متن مناسب، جدولها و محتوای گرافیکی باشد.
چه ابزارهایی که در داده کاوی استفاده میشوند؟
اینجا چندتا از ابزارهایی که در داده کاوی بیشتر استفاده میشن رو معرفی میکنم.(البته خودم همشون رو هنوز یاد نگرفتم)
- زبان برنامهنویسی R و Python: اگر شما قصد فعالیت در حوزه داده کاوی رو دارید لازمه که برنامه نویسی هم بدونید. زبانهای برنامهنویسی R و Python در این حوزه بیشتر استفاده میشن. با یه گوگل کردن ساده میتونید کلی ویدئو کلیپ و کتاب آموزشی خوب در مورد این دو زبان پیدا کنید. البته به عنوان یه راه سریع برای یادگیری پایتون این اپلیکیشن و سایت https://www.sololearn.com/Course/Pythonآموزشی رو به شما توصیه میکنم. قصد تبلیغ کردن ندارم ولی خودم از آموزشهای سایت فرادرس برای یادگیری زبان R استفاده میکنم .
- آمار و احتمالات: بسیاری از روشها و الگوریتمهای داده کاوی مبتنی بر محاسبات آماری هستن. پس به شما پیشنهاد میکنم پیشزمینه خوبی راجع به آمار و احتمالات و به خصوص آمار و احتمال شرطی داشته باشید. خودم از آموزشهای سایت فرادرس برای درس آمار و احتمالات مهندسیاستفاده میکنم.
- مفاهیم داده کاوی: کتاب داده کاوی مفاهیم و تکنیکها نوشتهژیاوی هان (Jiawei Han) هست که خیلی از مطالب این پست هم برگرفته از همین کتابه و به عنوان مرجع در بسیاری از دانشگاهها تدریس میشه. پس به این معنی هست که خوندنش خیلی میتونه مفید باشه. نسخه ترجمه شده این کتاب رو میتونید تهیه کنید. خرید این کتاب
- مصورسازی به کمک ابزارJS: این ابزار یکی از رایجترین ابزارهای مورد استفاده در زمینه نمایش اطلاعات و رسم نمودارها هست که یاد گرفتنش خیلی میتونه مفید باشه. ولی همونطور که از اسمش میشه فهمید یه ابزار مبتنی برا جاوا اسکریپت هستش پس نیاز داریم که قبلش با CSS و HTML هم آشنا باشیم. برای یادگرفتن کار با این ابزار میتونید از این آموزش سایت PluralSightاستفاده کنید.
- شبکههای عصبی، الگوریتمهای تکاملی و فرا تکاملی، الگوریتم ژنتیک، یادگیری ماشینی، تشخیص الگو، سیستمهای فازی وابزارهای مختلف دیگهای هم در حوزه داده کاوی استفاده میشن که بیشتر اونا رو میتونید به کمک پکیج کامل آموزشهای داده کاوی و یادگیری ماشینی سایت فرادرس یاد بگیرید.
- Wekaو RapidMiner: دو نمونه از ابزارهای پر کاربرد در حوزه داده کاوی هستن که هر دو به کمک زبان جاوا توسعه داده شدن. برای یادگیری رپیدماینر من ازآموزشی که در سایت فرادرس موجوده استفاده میکنم. البته هم درمورد وکا و هم درمورد رپیدماینر آموزشهای خوب دیگهای رو میشه با یه گوگل کردن ساده پیدا کرد.
ابزارها و تکنیکهایی که در گامهای داده کاوی استفاده میشن خیلی متنوع هستن(مثل BigData) که من در این پست به دلیل این که هر کدوم از اونا برای خودشون دنیایی دارن صحبت نکردم. ولی این موارد به صورت خیلی کامل در عکسی که این پایین هست بیان شدن. در واقع این عکس نقشه راه خیلی کامل و خوبی هست برای کسی که میخواد مسیر دانشمند داده شدن رو طی کنه.
امیدوارم خودم به زودی بتونم بیشتر این موارد رو یاد بگیرم و به سطحی برسم که بتونم پستهای تخصصیتر و فنّیتری رو بنویسم.
شاد باشید.
مراجع: