فهرست مطالب
اگر زمان کافی نداشتیم ولی میخواستیم در کسری از ثانیه یک مدل یادگیری ماشین بسازیم، بهتر است یاد بگیریم PyCaret چیست.
PyCaret کتابخانه پایتونی بسیار مفیدی است که برای ایجاد همزمان انواع مدلهای یادگیری ماشین استفاده میشود. از مزایای مهم آن سرعت بالا و تعداد خطوط بسیار کم است که شما را از نوشتن کدهای طولانی و پیدرپی نجات میدهد.
در این مقاله آموزشی سعی میکنیم صفر تا صد اجرای یک پروژه عملی را بررسی کنیم. کتابخانه Pycaret ابزار قوی و مناسبی است و ارزش آن جایی نمایانتر میشود که زمان کمی داشته باشیم؛ ولی به دنبال نتیجه خوب باشیم.
ابتدا معرفی اولیه از کتابخانه Pycaret خواهیم داشت، سپس نحوه نصب آن را یاد میگیریم و در ادامه از PyCaret برای ساخت مدلهای یادگیری ماشین قابل تفسیر استفاده میکنیم.
PyCaret چیست و چرا باید از آن استفاده کنیم؟
اولین مدل یادگیری ماشین که به زبان پایتون برای یک مسابقه نوشتم، یک کد سنگین و پیچیده بود. هنوز هم خطوط زیادی از کد را که برای ساخت یک مدل کلی لازم بود بهخاطر میآورم – برای حل کردن آنهمه پیچیدگی به یک جادوگر احتیاج بود!
وقتی صحبت از ساخت مدلهای یادگیری ماشین بهخصوص در صنعت میشود، نوشتن کد مؤثر، رمز موفقیت است. به همین دلیل اکیداً توصیه میکنم از کتابخانه PyCaret استفاده کنید.
کاش PyCaret در روزهایی که تازه شروع به یادگیری ماشین کرده بودم در دسترسم بود! این کتابخانه فوقالعاده انعطافپذیر و مفید است که در ماههای اخیر همیشه از آن استفاده میکنم. کاملاً معتقدم هرکسی که آرزو دارد بهعنوان یک متخصص علوم داده یا تحلیل اطلاعات موفق شود، استفاده از PyCaret برایش سودمند خواهد بود.
مزایای Pycaret چیست؟
- PyCaret یک کتابخانه کم کد است که باعث کارایی بیشتر میشود و زمان کدنویسی را کاهش میدهد.
- این کتابخانه به شما در انجام پروژههای یادگیری ماشین مثل محاسبه مقادیر ازدسترفته، رمزگذاری دادههای طبقهبندیشده، مهندسی ویژگی، تنظیم پارامتر یا ساخت مدلهای کلی کمک میکند.
نصب کتابخانه Pycaret
نصب این کتابخانه ساده است کافی است با استفاده از pip آن را نصب کنیم. برای شروع، دستور زیر را در Jupyter Notebook خود اجرا میکنیم:
!pip install pycaret
هنوز منبع خوبی برای آموزش یادگیری ماشین پیدا نکردید؟ دوره آموزش رایگان یادگیری ماشین را رایگان در کانال یوتیوب دیتاهاب ببینید.
مثال کتابخانه PyCaret در یادگیری ماشین
در ادامه با حل یک مسئله طبقهبندی، با کتابخانه PyCaret بیشتر آشنا میشویم:
شرح مسئله و مجموعهداده
یک مجموعهداده بانکی با ویژگیهایی مانند سن مشتری، تجربه، درآمد، تحصیلات و اینکه آیا فرد کارت اعتباری دارد یا خیر، داریم. این بانک میخواهد یک مدل یادگیری ماشین برای شناسایی مشتریان بالقوهای که با احتمال بالایی در آینده درخواست وام میدهند، ایجاد کند.
مجموعهداده شامل 5000 ردیف است و ما 4000 مورد را برای آموزش مدل خود و 1000 مورد دیگر را برای آزمایش مدل نگه داشتهایم.
با استفاده از کتابخانه Pandas مجموعهداده را میخوانیم:
# importing pandas to read the CSV file
import pandas as pd
# read the data
data_classification = pd.read_csv('datasets/loan_train_data.csv')
# view the top rows of the data
data_classification.head()
قبل از شروع پروژه یادگیری ماشین در PyCaret ، باید تنظیمات اولیه را انجام دهیم که دو مرحله دارد:
- واردکردن ماژول: بسته به نوع مسئلهای که میخواهید حل کنید، ابتدا باید ماژول را وارد کنید. در نسخه اول کتابخانه PyCaret، تعداد 6 ماژول مختلف موجود است که شامل رگرسیون، طبقهبندی، خوشهبندی، پردازش زبان طبیعی (NLP)، تشخیص ناهنجاری و استخراج قوانین انجمنی است.
- راهاندازی اولیه: در این مرحله، PyCaret کارهای اساسی پیشپردازش داده را انجام میدهد، مثل چشمپوشی از شناسهها (id) و ستونهای تاریخ، محاسبه مقادیر ازدسترفته، رمزگذاری متغیرهای categorical و تقسیم مجموعهداده به آزمون و آموزشی. وقتی تابع setup را اجرا میکنیم، ابتدا انواع دادهها را تأیید میکند و سپس اگر enter را فشار دهیم، محیطی برای ادامه کار ایجاد میشود.
# import the classification module
from pycaret import classification
# setup the environment
classification_setup = classification.setup(data= data_classification, target='Personal Loan')
آموزش مدل یادگیری ماشین با کتابخانه PyCaret
آموزش یک مدل در کتابخانه PyCaret بسیار ساده است. کافی است از تابع create_model استفاده کنیم که این تابع فقط نام مدل را به عنوان پارامتر ورودی میگیرد. در اینجا، می خواهیم یک مدل درخت تصمیم بسازیم که باید مخفف آن یعنی “dt” را به عنوان ورودی قرار دهیم (dt مخفف decision tree است). خروجی آن جدولی با امتیازات اعتبار متقابل k-fold است. در این جدول معیارهای ارزیابی رایجی داریم که برای مدلهای دستهبندی استفاده میشوند.
موارد زیر معیارهای ارزیابی مورداستفاده برای یادگیری بانظارت هستند:
- طبقهبندی: Accuracy, AUC, Recall, Precision, F1, Kappa
- رگرسیون: MAE، MSE ، RMSE ، R2 ، RMSLE ، MAPE
# build the decision tree model
classification_dt = classification.create_model('dt')
به همین ترتیب، برای آموزش مدل XGBoost ، فقط باید رشته “xgboost” را اضافه کنیم:
# build the xgboost model
classification_xgb = classification.create_model('xgboost')
تنظیم ابرپارامتر در کتابخانه Pycaret
به راحتی میتوانیم پارامترهای مدل یادگیری ماشین را فقط با استفاده از تابع tune_model تنظیم کنیم که این تابع نیز فقط یک پارامتر میگیرد.
کتابخانه PyCaret قابلیتهای زیادی را برایمان فراهم میکند. بهعنوانمثال، میتوانیم تعداد folds را با استفاده از پارامتر fold در تابع tune_model تعریف کنیم، یا میتوانیم تعداد تکرارها را با استفاده از پارامتر n_iter تغییر دهیم. افزایش پارامتر n_iter بهوضوح باعث افزایش زمان آموزش میشود؛ اما در عوض عملکرد بهتری خواهد داشت.
در کد زیر یک مدل تنظیم شده CatBoost را یاد میگیریم:
# build and tune the catboost model
tune_catboost = classification.tune_model('catboost')
ساخت مدلهای گروهی با استفاده از PyCaret
مدلهای گروهی در یادگیری ماشین تصمیمات چندین مدل را برای بهبود عملکرد کلی ترکیب میکنند. در کتابخانه PyCaret، فقط با یک خط کد میتوانیم مدلهای blending، boosting، bagging و stacking ایجاد کنیم.
برای آشنایی با یادگیری گروهی مقاله روش های یادگیری جمعی را بخوانید.
ساخت مدل Boosting در پایتون با کتابخانه Pycaret
با کد زیر به راحتی یک مدل boosting آموزش میدهیم. خروجی این مدل نیز یک جدول است که امتیازات اعتبار متقابل k-fold را برای معیارهای ارزیابی نشان می دهد:
# ensemble boosting
boosting = classification.ensemble_model(classification_dt, method= 'Boosting')
مدل Blending در Pycaret
یکی دیگر از تکنیکهای بسیار معروف دستهبندی، blending است. کافی است مدلهایی که ایجاد کردهایم را در لیستی از تابع blend_models وارد کنیم:
# Ensemble: blending
blender=classification.blend_models(estimator_list=[classification_dt, classification_xgb])
برای انجام اکثر کارها در کتابخانه Pycaret فقط باید یک خط کد بنویسیم. به همین سادگی...
اگر میخواهید درباره مدلهای گروهی بیشتر بدانید، مقاله زیر را بخوانید:
مقایسه مدلها در کتابخانه PyCaret
یکی از توابع مفید کتابخانه PyCaret، مقایسه مدلها است. به جای اینکه مدلهای مختلف را یکییکی امتحان کنیم، از تابع مقایسه مدلها استفاده میکنیم.این تابع معیارهای ارزیابی رایج برای همه مدلهای موجود را آموزش داده و با هم مقایسه میکند.
این تابع فقط در ماژولهای pycaret.classification و pycaret.regression قابلدسترس است:
# compare performance of different classification models
classification.compare_models()
چطور نتایج Pycaret در یادگیری ماشین را تحلیل کنیم؟
پس از آموزش مدل، گام بعدی تحلیل نتایج است. مخصوصاً از دیدگاه تجارت بسیار مفید است، تحلیل مدل در PyCaret بسیار ساده است. فقط با یک خط کد میتوان کارهای زیر را انجام داد:
- نتایج مدل نمودار:
تحلیل عملکرد مدل در کتابخانه Pycaret بهسادگی نوشتن plot_model است. میتوانیم decision boundaries، منحنی precision-recall، منحنی اعتبارسنجی (validation) و غیره را رسم کنیم. برای نمایش مدلهای خوشهبندی، میتوانیم از elbow plot و silhouette plot استفاده کنیم. دادههای متنی را میتوانیم با word cloud، نمودارهای فرکانس bigram و trigram و غیره نشان دهیم.
- تفسیر نتایج:
تفسیر نتایج مدل با تحلیل ویژگیهای مهم آن، به اشکالزدایی مدل کمک میکند. این کار یک مرحله حیاتی در پروژههای یادگیری ماشین در صنعت است. در کتابخانه Pycaret، میتوانیم با مقادیر SHAP و نمودار همبستگی به سادگی مدل تفسیر میشود.
رسم نتایج مدل در کتابخانه Pycaret
برای رسم نتایج مدل از مدل آموزشدیده بهعنوان پارامتر استفاده کرده و نوع طرح موردنظر خود را رسم میکنیم. در ادامه منحنی AUC-ROC و Decision Boundary را ترسیم میکنیم:
# AUC-ROC plot
classification.plot_model(classification_dt, plot='auc')
# Decision Boundary
classification.plot_model(classification_dt, plot='boundary')
سپس منحنی Precision Recall و منحنی اعتبارسنجی مدل آموزشدیده را رسم میکنیم:
# Precision Recall Curve
classification.plot_model(classification_dt, plot='pr')
# Validation Curve
classification.plot_model(classification_dt, plot='vc')
برای یادگیری پایتون و رسم نمودارهای حرفهای با matplotlib، دوره آموزش رایگان پایتون را در کانال یوتیوب دیتاهاب مشاهده کنید.
نحوه ارزیابی مدل در Pycaret
اگر بخواهیم همه این تصویرها را بهصورت یکجا رسم کنیم، کتابخانه PyCaret تابع شگفتانگیز evaluate_model را معرفی کرده است. در این تابع، فقط باید شی مدل را وارد کنیم و PyCaret یک پنجره ارتباطی ایجاد میکند تا مدل را از همه روشهای ممکن بتوانیم مشاهده و تحلیل کنیم:
# evaluate model
classification.evaluate_model(classification_dt)
چطور در Pycaret، مدل را تفسیر کنیم؟
تفسیر مدلهای پیچیده در بیشتر پروژههای یادگیری ماشین بسیار مهم است. تحلیل آنچه که مدل فکر میکند مهم است؛ چون به ازبینبردن باگهای مدل کمک میکند. در PyCaret، این مرحله بهسادگی نوشتن interpre_model برای بهدستآوردن مقادیر Shapley ساده است.
برای آشنایی بیشتر با مقادیر Shapley لینک زیر را بخوانید: A Unique Method for Machine Learning Interpretability: Game Theory & Shapley Values
# interpret_model: SHAP
classification.interpret_model(classification_xgb)
با کد زیر نمودار همبستگی را رسم میکنیم:
# interpret model : Correlation
classification.interpret_model(classification_xgb,plot='correlation')
زمان پیشبینی با Pycaret رسیده!
در اینجا، دادههای مشاهده نشده را پیشبینی خواهیم کرد. کافی است مدل و مجموعهداده را وارد کنیم. کتابخانه Pycaret یک pipeline از تمام مراحل ایجاد میکند و دادههای مشاهده نشده را به آن منتقل کرده و نتایج را ارائه میدهد.
کد زیر نشان میدهد چگونه میتوان برچسبهای دادههای مشاهده نشده را پیشبینی کرد:
# read the test data
test_data_classification = pd.read_csv('datasets/loan_test_data.csv')
# make predictions
predictions = classification.predict_model(classification_dt, data=test_data_classification)
# view the predictions
Predictions
ذخیره و بارگذاری مدل در کتابخانه Pycaret
اکنون، هنگامیکه مدل ساخته و تست شد، میتوانیم با استفاده از تابع save_model آن را در فایل pickle ذخیره کنیم. مدل ذخیره شده و نام فایل را وارد میکنیم:
# save the model
classification.save_model(classification_dt, 'decision_tree_1')
بعداً میتوانیم این مدل را بارگیری کرده و برچسبهای دادههای مشاهده نشده را پیشبینی کنیم:
# load model
dt_model = classification.load_model(model_name='decision_tree_1')
استفاده از PyCaret بهشدت آسان است. بهراحتی هرچهتمامتر، انواع مختلف مسائل را تنها با یک خط کد، پیادهسازی میکنیم و در کسری از ثانیه نتایج را به ما نشان میدهد. طبیعتاً Pycaret ابزاری قوی و مناسب است؛ ولی ارزش آن جایی نمایانتر میشود که زمان کمی داشته باشیم؛ ولی به دنبال نتیجه خوب باشیم.
2 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام، کتابخونه جالبی بود ممنونم از به اشتراک گزاری چنین مطلبی، همیشه از مدل های خالص استفاده میکردم که استفاده ازشون زمانگیر بود.، بعد از برسی حتما نتایج رو به اشتراک میزارم.
سلام
متشکر از همراهی شما