دکتر محمد فزونی

چگونه دقت مدل یادگیری ماشین خودتان را افزایش دهید؟

اگر تا کنون، چند پروژه‌ی علم داده را خودتان انجام داده باشید، احتمالن متوجه شده‌اید که دستیابی به دقت 80 درصد چندان هم بد نیست! اما در دنیای واقعی، 80 درصد عدد چشمگیری نمی‌باشد، خصوصن از دید کارفرمایان. در واقع، اکثر شرکت‌هایی که برای آنها کار کرده‌ایم، حداقل دقت (یا هر معیاری که به آن نگاه می‌کنند) 90 درصد را انتظار دارند.

بنابراین، در ادامه، قصد داریم در مورد 5 روش فوق‌العاده صحبت کنیم که می‌تواند دقت مدل شما را تا حد بسیار زیادی افزایش دهد. به شدت توصیه می‌کنیم که تمام پنج نکته را به طور کامل بخوانید، زیرا جزئیات زیادی وجود دارد که درج شده‌اند و متاسفانه اکثر تازه‌واردان به این حوزه با آنها آشنا نیستند.

با این‌حال، توجه داشته باشید که متغیرهای بسیار بیشتری از آنچه که فکر می‌کنید در تعیین میزان عملکرد مدل یادگیری ماشین شما نقش دارند که به مرور زمان با تمامی آنها آشنا خواهید شد؛ شاید خود شما نیز روشی فوق‌العاده را برای این منظور به جهانیان معرفی نمائید.

مدیریت داده‌های گمشده

یکی از بزرگترین اشتباهاتی که مدام می‌بینیم، این است که چگونه مردم مقادیر از دست رفته (یا گمشده) را مدیریت می‌کنند و این لزومن تقصیر آنها نیست. بسیاری از مطالب موجود در وب می‌گویند که شما معمولن مقادیر گمشده را از طریق انتساب میانگین کنترل نمائید، و مقادیر تهی را با میانگین ویژگی داده شده جایگزین کنید، و صد البته که این بهترین روش ممکن نیست.

به عنوان مثال، تصور کنید جدولی داریم که نمره‌ی سن و تناسب اندام را نشان می‌دهد. همچنین تصور نمائید که برای یک فرد هشتاد ساله، نمره تناسب اندام را در دیتاست خود نداریم. اگر میانگین امتیاز تناسب اندام را از محدوده سنی 15 تا 80 در نظر بگیریم، به نظر می‌رسد که افراد هشتاد ساله دارای نمره‌ی تناسب اندام بسیار بالاتری هستند که در واقع باید داشته باشند.

بنابراین، اولین سوالی که از خود بپرسید این است که چرا داده‌ها در ابتدا از دست رفته‌اند یا وارد جدول نشده‌اند.

در مرحله‌ی بعد، روش‌های دیگری را برای مدیریت داده‌های گمشده، به غیر از محاسبه‌ی میانگین یا میانه در نظر بگیرید:

مهندسی ویژگی

راه دومی که می‌توانید مدل یادگیری ماشین خود را به‌طور قابل توجهی بهبود ببخشید، مهندسی ویژگی (Feature Engineering) است. مهندسی ویژگی، فرآیند تبدیل داده‌های خام به ویژگی‌هایی است که بهتر نشان‌دهنده‌ی مشکل اساسی است که فرد در تلاش برای حل آن می‌باشد. هیچ راه خاصی برای انجام این مرحله وجود ندارد. این همان چیزی است که علم داده را به همان اندازه که یک هنر است، به عنوان یک علم تبدیل به جهانیان شناسانده. با توجه به آنچه گفته شد، در اینجا مواردی وجود دارد که می‌توانید در نظر بگیرید:

انتخاب ویژگی

سومین حوزه‌ای که می‌توانید بوسیله‌ی آن، دقت مدل خود را به میزان قابل توجهی بهبود ببخشید، انتخاب ویژگی درست (Feature Selection) است؛ یعنی، انتخاب مرتبط‌ترین و یا ارزشمندترین ویژگی‌های دیتاست. تعداد زیاد ویژگی‌ها باعث می‌شود که الگوریتم شما دچار بیش‌برازش (Overfitting) گردد و ویژگی‌های بسیار کم می‌تواند باعث کم‌برازش (Underfitting) الگوریتم شما شود.

دو روش اصلی در انتخاب ویژگی‌های خوب دیتاست وجود دارند:

الگوریتم های یادگیری گروهی (Ensemble)

یکی از ساده‌ترین راه‌ها برای بهبود مدل یادگیری ماشینی، انتخاب الگوریتم یادگیری ماشینی بهتر است. اگر از قبل نمی‌دانستید که الگوریتم‌های یادگیری گروهی چه هستند، اکنون زمان یادگیری آن رسیده است.

یادگیری گروهی روشی است که در آن از چندین الگوریتم یادگیری همراه با هم استفاده می‌شود. این کار، این امکان را به شما می‌دهد که به عملکرد پیش‌بینی بالاتری نسبت به زمانی که می‌خواهید از یک الگوریتم فردی به تنهایی استفاده کنید، دست یابید.

الگوریتم‌های معروف یادگیری گروهی شامل جنگل‌های تصادفی، XGBoost، تقویت گرادیان (Gradiant Boost) و AdaBoost هستند. برای توضیح اینکه چرا الگوریتم‌های یادگیری گروهی بسیار قدرتمند هستند، مثالی با جنگل‌های تصادفی ارائه می‌دهیم:

در جنگل‌های تصادفی، بطور مکرر و با استفاده از انتخاب تصادفی بخش‌هایی از دیتاست، درخت‌های متعددی می‌سازیم و تصمیم هر درخت را در خصوص متغیر هدف بررسی می‌کنیم. در پایان به اکثریت آرا توجه نشان می‌دهیم.

به‌عنوان مثال، درخت تصمیم ایجاد شده در بالا را در نظر بگیرید. درخت سوم 0 را پیش بینی می‌کند. اما اگر به اکثریت آرا در هر 4 درخت تصمیم تکیه کنیم، مقدار پیش‌‎بینی شده برای ما قطعن 1 خواهد بود. این قدرت یادگیری گروهی است، چون بجای یک مغز از چند واحد پردازنده‌ی قوی استفاده می‌کنیم.

تنظیم فراپارامترها (Hyperparameter)

در نهایت، چیزی که اغلب در مورد آن صحبت نمی‌شود، اما همچنان بسیار مهم می‌باشد، تنظیم فراپارامترهای مدل شما است. اینجاست که صد در صد، مدل یادگیری ماشینی را که با آن در حال کار هستید را باید به‌وضوح درک کنید. در غیر این‌صورت، درک هر فراپارامتر ممکن است دشوار باشد.

به‌عنوان مثال، نگاهی به تمام فراپارامترهای جنگل‌های تصادفی بیندازید:

class sklearn.ensemble.RandomForestClassifier(n_estimators=100, *, criterion='gini', max_depth=None, 
min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', 
max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, 
oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, 
class_weight=None, ccp_alpha=0.0, max_samples=None

ایده‌ی بسیار خوبی است که به‌عنوان مثال بفهمید min_impurity_decrease چیست، به‌طوری که وقتی می‌خواهید مدل یادگیری ماشین شما زیاد سخت‌گیر نباشد، بتوانید این پارامتر را تنظیم کنید.

منبع:

https://towardsdatascience.com/how-i-consistently-improve-my-machine-learning-models-from-80-to-over-90-accuracy-6097063e1c9a

خروج از نسخه موبایل