جهت تبدیل شدن به یک متخصص دادهکاوی و یادگیری ماشین در زبان برنامه نویسی پایتون، روش های گوناگوی وجود دارد
در این بین شناختِ اکوسیستم و برخی از کتابخانههای مهم و روشهای متداول در حوزهی دادهکاوی و یادگیری ماشین جهت تبدیل شدن به یک متخصص در این حوزه ضروری است. به همین دلیل در این نوشته قصد داریم با برخی از مشهورترین و پرکاربردترین روشها و کتابخانههای موجود با تمرکز بر زبان برنامهنویسی پایتون برای شروعِ راه در دنیای دادهکاوی آشنا شویم. برخی به این نقشهی راه، نقشهی راه تبدیل شدن به دانشمند داده نیز میگویند.
۱. آشنایی با سرفصلهای پایه و مباحث عمومی
در ابتدا بایستی با مباحث پایه یادگیری ماشین و دادهکاوی آشنا باشید. برای این کار میتوانید ۷ ترم اول مجموعه دورههای موجود در چیستیو را مطالعه نمایید و یا کتاب دادهکاوی برای برنامه نویسان را مطالعه کنید. میتوانید به صورت موازی به یادگیری پایتون هم بپردازید. ویدیوهای آموزش مقدماتی پایتون در این لینک برای شما قرار داده شده است. طبیعتاً خود را محدود به هیچ سایت یا منبعی نکنید. آموزشهای پایتون فارسی یا انگلیسی بسیار زیادی در سطح وب یا شهر شما موجود هستند که با توجه به نیازهای خود میتوانید از آنها استفاده کنید. همچنین کتابها، کورسها و منابع متعدد بسیار زیادی بر یادگیریِ مبانی دادهکاوی در سطح وب یا بازار فعلی برای شما آماده شده است.
در واقع در این مرحله بایستی به مباحث زیر تسلط نسبی پیدا کنید:
آشنایی با روشهای کشف و شناخت دادهها یا همان Exploratory Data Analysis که به اختصار به EDA نیز معروف است
Data Preprocessing یا پیش پردازش دادهها که یکی از مراحل اصلی دادهکاوی است و در این مرحله بایستی قبل از انجام عملیات بعدی، دادهها را پایش کرده و یا برای الگوریتمهای بعدی آماده کنید
Classification یا طبقهبندی نوعی یادگیری با ناظر است که در آن مجموعهی دادهها توسط یک ناظر، برچسب خورده است. وظیفهی الگوریتم طبقهبندی ،ساختِ یک مدل از روی دادهها است به گونهای که آن مدل برچسبِ نمونههای جدید را بتواند حدس بزند
Clustering نوعی یادگیری بدون ناظر است. وظیفه الگوریتمهای Clustering یا همان خوشهبندی، این است که از دادههایی که برچسب مشخصی ندارند الگوهای ذاتی را کشف کنند
۲. کتابخانههای پایهی مورد نیاز در پایتون
بعد از مرحلهی اول و آشنایی با مبانی و مفاهیم دادهکاوی و همچنین یادگیری مقدمات زبان برنامه نویسی پایتون، میتوانید کتابخانههای اصلی و پایهی این حوزه را برای پایتون یاد بگیرید. باید بتوانید از این کتابخانهها در حل مسائل مختلفِ EDA، پیش پردازش داده، طبقهبندی یا خوشهبندی استفاده کنید. برخی از مشهورتین این کتابخانهها در زیر لیست شده است:
Numpy مخصوص کار با آرایهها و محاسبات مختلف بر روی آنها است. عملیات مختلف ماتریسی (که خود نوعی از آرایه است) به صورت بهینه توسط این کتابخانه انجام میشود. در واقع کتابخانهی numpy پایهی بسیاری از کتابخانههای دیگر در یادگیری ماشین و دادهکاوی است
Pandas برای کار با مجموعه دادهها و عملیات مختلف بر روی آنها است. این کتابخانه قادر است دادههای مختلفِ اقتصادی و آماری را آمادهی تحلیل کند و قادر به انجام عملیاتِ مختلف بر روی مجموعه دادههایی دارای مقادیر ناکامل و همچنین دادههای سری زمانی است
Matplotlib جهت نمایش دادهها به صورت گرافیکی به کار میرود. یکی از بخشهای مهم در فرآیند دادهکاوی، نمایشدادهها و نتایج حال از فرآیندهاست. این کتابخانه قادر است شکل، فرمتها و نمودارهای مختلف را با استفاده از چارتهای متفاوت به نمایش در بیاورد
Scikit Learn یکی از معروفترین و پرکاربرترین کتابخانههای دادهکاوی و یادگیری ماشین در پایتون است. این
کتابخانه مجموعه ایست از الگوریتمها و روشهای مختلفِ پیشپردازش، طبقهبندی، خوشهبندی و کاهش ابعاد
Tensorflow که توسط گوگل ارائه شده است، قادر است پردازشها و محاسبات سنگین را بر بستری از از جنس
گرهها و یالها انجام دهد. این کتابخانه یک ابزار بسیار عالی جهتِ ساختِ شبکههای عصبی و شبکههای عصبی
عمیق است
۳. مفاهیم تکمیلی حوزهی دادهکاوی و یادگیری ماشین
بعد از یادگیری مباحث پایه، از یک متخصص دادهکاوی و یادگیری ماشین انتظار میرود که به مفاهیم زیر نیز تسلط نسبی داشته باشد و بتواند برای این مسائل راهکار ارائه دهد (که برای این کار باید منابع بیشتری را خوانده و دورههای بیشتری را بگذراند):
سریهای زمانی (time series): پردازش دادهها مبتنی بر سریها و توالیهای زمانی و توانایی پیشبینی دادههای آینده
کار با دادههای نامتوازن (imbalance data): متوازنسازی دادهها و کار با دادههایی که به صورت ملموس خطای غیر متوازن دارند
کاهش ابعاد و ویژگیها (dimensionality reduction): توانایی تغییر مدلها و کاهش ویژگیهایی که اثرِ کمتری در مسئله دارند
سیستمهای پیشنهاد دهنده (recommendation systems): توانایی کاوش بر روی دادههای موجود و پیشنهاد محصولات/خدمات به افراد یا هر موجودیت دیگری در سیستم
یادگیری عمیق (deep learning): الگوریتمهای شبکههای عصبی عمیق که میتوانند مسائل و الگوهای به مراتب پیچیدهتر را درک کرده و یاد بگیرند
کار با دادههای حجیم خارج از حافظه اصلی (out of core computing): در بسیاری از موارد دادههای موجود از مقدار حافظهی اصلی سیستم (RAM) بیشتر هستند و کار با آنها با استفاده از روشهای مرسوم غیر قابل انجام است. در این موارد بایستی از ابزارها و روشهایی کمک گرفت که بتوانند دادههای خارج از حافظهی اصلی را نیز مانند دادههای نرمال پردازش کنند
یادگیری افزایش (incremental learning): یادگیری مدل به صورت مداوم بر روی دادههای جدید و به روز رسانی مدلهای قبلی به صورت پویا
تولید مصنوعی دادهها (artificial data generation): در بسیاری از موارد حجم دادهها برای یادگیری توسط مدل پایین است. تکنیکهای تولید مصنوعی داده به ما کمک میکند تا بتوانیم از روی دادههای موجود، دادههای جدید را ایجاد کنیم
۴. انتخاب و تمرکز بر یک یا چند زیر حوزهی دادهکاوی و یادگیری ماشین
زیر رشتههای مختلفی در حوزههای دادهکاوی و یادگیری ماشین وجود دارند که یک متخصصِ این حوزه، میتواند در یک یا چندتا از این زیر حوزهها ورود کرده و مسائل مربوط به آنها را حل نماید. در زیر برخی از این حوزهها را مشاهده مینمایید:
متنکاوی (text mining): کاوش و پردازش زبان طبیعی و عملیات یادگیری ماشین بر روی دادههای از جنس متن
تصویرکاوی (image mining): یا همان پردازش تصویر که تمرکز خود را بر روی دادههای تصویری (عکسها) قرار میدهد
صداکاوی (audio mining): با استفاده از سیگنالهای صوتی و دادههای آنها الگوها را استخراج میکند
بازارهای مالی (financial data): به ما این امکان را میدهد که بتوانیم دادههای مالیِ آینده را پیشبینی نماییم
پزشکی: که ترکیب روشهای مختلف یادگیری ماشین بر روی دادههای پزشکی مانند تصاویر قفسهی سینه، نتیجهی آزمایش قلب بیمار و… است
صنایع و کارخانجات: حل مسائل موجود در خط تولید یا منابع انسانی و این دست از مسائل با توجه به دادههای موجود در آن صنعت میپردازد
۵. کتابخانههای تکمیلی پایتون برای دادهکاوی و یادگیری ماشین
فرآیند یادگیری در جهان معاصر هیچگاه متوقف نمیشود. از یک متخصص دادهکاوی و یادگیری ماشین نیز انتظار میرود که بسیاری دیگر از کتابخانهها و روشهای موجود دیگر را فراگرفته و از آنها در حل مسائل حوزهی داده، کمک بگیرد. در زیر برخی از مشهورترین کتابخانههای تکمیلی زبان پایتون قرار داده شده است که فراگیری آنها میتواند کمک شایانی به درک و حل مسائل دادهکاوی داشته باشد.
Statsmodels که به شما کمک میکند تا مدلهای مختلف آماری را با زبان پایتون پیادهسازی کنید. همچنین این کتابخانه قابلیت انجام آزمونهای آماری و فرآیندهای اکتشاف آماری را فراهم میکند. این در حالی است که وجود مثالهای متنوع در وبسایت این کتابخانه، میتواند به برنامهنویسانی که میخواهند پایهی آماریِ خود را قوی کنند نیز کمک کند
Bokeh یا همان بوکه، یکی از کتابخانههای بسیاری کاربردی در پایتون برای مصورسازی تعاملی است. به این منظور که میتوانید با بوکه، نمودارها و چارتهای متنوعی را طراحی کرده و به صورت پویا آنها را در زمان اجرا، مناسب با نیازها و تقاضاهای کاربر، تغییر دهید. این کتابخانه برای ساخت داشبوردهای مدیریتی نیز کاربرد فراوانی دارد
XGBoost یکی از کتابخانههای قدرتمند و کارا در حوزهی علوم داده، این کتابخانه است. این کتابخانه الگوریتمهای یادگیریماشین را بر اساس تقویت گرادیان (gradient boosting) به صورت توزیع شده طراحی کرده است. xgboost هدف خود را کارایی، انعطاف و انطباق با CPUهای مختلف گذاشته است
CatBoost نیز یکی دیگر از کتابخانههای قدرتمند دادهکاوی و یادگیری ماشین نظارت شده (طبقهبندی) است که توانایی کار با دادهها در حجم بالا و همچنین دادههای غیر عددی را دارد
Seaborn مانند کتابخانهی Matplotlib برای انجام عملیات مصورسازی دادهها به کار میرود. در واقع این کتابخانه بر اساس کتابخانهی Matplotlib نوشته است و میتواند عملیات طراحی نمودار را سادهتر کند
Imblearn برای کار با دادههای نامتوازن به کار میرود. این کتابخانه توانایی متوازنسازی دادههای نامتوازن (imbalance) را دارد
TSLearn یک کتابخانهی تخصصی برای کار با دادههای مبتنی بر سری زمانی است و میتواند پیشبینی دقیقی از دادهها در آینده را ارائه نماید
Theano یکی دیگر از کتابخانههای قدرتمند دادهکاوی و یادگیری ماشین برای زبان پایتون است. در این کتابخانه الگوریتم و روشهای مختلف دادهکاوی قرار داده شده است. یکی از ویژگیهای این کتابخانه توانایی پردازش بر روی GPU میباشد که برخی از عملیات دادهکاوی را تا ۱۰۰ برابر سریع تر انجام میدهد
Prophet یک کتابخانهی دیگر برای پیشبینی دادههای مبتنی بر سری زمانی است که توانایی تبدیل، مصورسازی و پیشبینی دادههای سری زمانی را داراست
NLTK یک کتابخانه برای کار با دادههای متنی است که توانایی تغییرات و بهبود فرآیندهای متن کاوی و پردازش زبان طبیعی را داراست
Gensim نیز یک کتابخانهی دیگر برای کار با دادههای مبتنی بر متن و مدلسازی آنهاست
Dask یک کتابخانهی پردازش توزیع شده و موازی دادههاست به گونهای که میتواند کتابخانههایی مانند Numpy، Pandas و Scikit Learn بر بستر توزیع شده گسترش میدهد
Scrapy اگر چه کتابخانهای برای جمعآوری دادهها از سطح وب هست، ولی در حوزهی یادگیری ماشین و تولید دادههای اولیه بسیار کمک میکند
در آخر همانطور که قبلاً نیز اشاره کردیم، نباید خود را به هیچ منبعی (حتی همین نقشهی راه) محدود کنیم و بایستی بتوانیم آرام آرام در این مسیر پیشروی کرده و با روشها، کتابخانهها، تکنیکها و مفاهیم دیگر آشنا شده و از آنها در حل مسائل موجود در حوزهی علم داده کمک بگیریم
عالی بود، ممنون
خیلی ممنون از مباحث مفید و ارزشمندتون.
در مورد data leakage و تاثیر اون در دقت مدل های یادگیری ماشین هم ممنون میشم مختصرا توضیحی بدید.