راه افزایش دقت مدل یادگیری ماشین چیست؟ ایجاد مدلهای یادگیری ماشین (Machine Learning) فرایند پیچیدهای است که حتی باتجربهترین دانشمندان داده (Data Scientists) اغلب در آن اشتباه میکنند. اگر میخواهید مدلهای یادگیری ماشین شما تا حد امکان دقیق باشند، باید از راههایی که میتوانید آنها را بهبود ببخشید آگاه باشید. در این مطلب ۵ راه برای بهبود دقت مدلهای یادگیری ماشین را بررسی خواهیم کرد! اگر شما هم به دنبال راهی برای افزایش دقت مدل یادگیری ماشین خود هستید، تا انتهای این مطلب همراه باشید!
- 1. یادگیری ماشین چیست؟
- 2. ۱. رسیدگی به مقادیر ازدسترفته (Missing Values) و اوتلایرها (Outlier)
- 3. ۲. مهندسی ویژگی (Feature Engineering)
- 4. ۳. انتخاب ویژگی (Feature Selection)
- 5. ۴. الگوریتمهای چندگانه (Multiple Algorithm) را امتحان کنید!
- 6. ۵. تنظیم هایپرپارامترها (Hyper Parameters)
- 7. حرف آخر دربارهٔ مجموعه راه بهبود دقت مدل یادگیری ماشین
- 8. یادگیری ماشین لرنینگ با کلاسهای آنلاین آموزش علم داده و یادگیری ماشین کافهتدریس
یادگیری ماشین چیست؟
یادگیری ماشین (ML) زیرشاخهای از هوش مصنوعی (AI) است که بر توسعه الگوریتمها و مدلهایی تمرکز دارد که به رایانهها اجازه میدهد از دادهها یاد بگیرند و بدون برنامهریزی صریح، پیشبینی کنند یا تصمیم بگیرند. ماشینلرنینگ یا یادگیری ماشین شامل ساخت مدلها و الگوریتمهای ریاضی است که میتوانند الگوها و روابط را از مجموعه دادههای بزرگ بیاموزند. در اصل، یادگیری ماشین ماشینها را قادر میسازد تا با تجزیهوتحلیل و پردازش دادهها، عملکرد خود را در یک کار خاص بهبود بخشند. این فرآیند یادگیری تکراری شامل آموزش مدل بر روی دادههای برچسبگذاریشده، استخراج ویژگیها و بهینهسازی پارامترهای مدل برای به حداقل رساندن خطاها یا به حداکثر رساندن عملکرد است. تکنیکهای یادگیری ماشین طیف گستردهای از الگوریتمها، از جمله یادگیری تحت نظارت، یادگیری بدون نظارت، یادگیری تقویتی و یادگیری عمیق را در بر میگیرد. یادگیری ماشین با توانایی خود در کشف بینشهای پنهان و پیشبینیهای دقیق، به ابزاری قدرتمند در حوزههای مختلف از جمله مالی، مراقبتهای بهداشتی، بازاریابی، تشخیص تصویر، پردازش زبان طبیعی و سیستمهای توصیه تبدیل شده است. به پیشرفت و یافتن کاربردها در حل مشکلات پیچیده و هدایت نوآوری در عصر دیجیتال ادامه میدهد.
۱. رسیدگی به مقادیر ازدسترفته (Missing Values) و اوتلایرها (Outlier)
یکی از سادهترین راهها برای بهبود و افزایش دقت مدل یادگیری ماشین مدیریت مقادیر ازدسترفته و اوتلایرهاست.
اگر دادههایی دارید که مقادیری ندارند یا حاوی مقادیر پرت (اوتلایر) هستند، مدل شما احتمالاً دقت کمتری خواهد داشت. این بهاین دلیل است که مقادیر ازدسترفته و مقادیر پرت میتوانند کاری کنند که مدل درمورد دادههای شما فرضیههای نادرستی داشته باشد.
برای مثال، تصور کنید مجموعه دادهای با اطلاعات قد و وزن برای افرادی دارید که همگی تقریباً همسن هستند. اگر یکی از آنها مقدار وزن نداشته باشد، درحالیکه وزن شخص دیگری بهطور غیرعادی بالا یا پایین است، مدل شما فقط براساس قد آنان فرضیههای نادرستی درمورد این دو فرد خواهد داشت.
همچنین مهم است که توجه کنید که مقادیر ازدسترفته و نقاط پرت میتوانند به این بینجامند که مدلهای شما دچار بیشبرازش (overfitting) یا کمبزرازش (underfitting) شود. حال سؤال اینجاست که چطور میتوان این مشکل را حل کرد؟
روشهای مختلفی وجود دارد که میتوانید مقادیر پرت و مقادیر ازدسترفته را مدیریت کنید. چند مورد آن عبارت است از:
- نقاط دادهای را که حاوی مقادیر ازدسترفته یا نقاط پرت هستند از مجموعه دادهی آموزشی خود حذف کنید.
- مقادیر ازدسترفته را با استفاده از تکنیکی مانند k نزدیکترین همسایه (KNN) یا رگرسیون خطی (Linear regression) پر کنید.
- از تکنیکی مانند bootstrapping برای حذف تأثیر دادههای پرت استفاده کنید.
پیشنهاد میکنیم با مفاهیم بیشبرازش و کمبرازش و راههای جلوگیری از آنها بیشتر آشنا شویم.
۲. مهندسی ویژگی (Feature Engineering)
مهندسی ویژگی هنر ایجاد ویژگیها یا فیچرهای جدید از فیچرهای موجود است. این کار یک راه افزایش دقت مدل یادگیری ماشین است.
برای مثال، میتوانید فیچری (feature) را ایجاد کنید که نشاندهندهی میزان دوری فرد از محل کار خود براساس دو فیچر دیگر، یعنی «آدرس منزل» و «محل محل کار»، باشد. مهندسی ویژگی به بهبود دقت مدلهای یادگیری ماشین کمک میکند و به آنها اجازه میدهد پیشبینیهای دقیقتری انجام دهند.
یکی از رایجترین راهها برای ایجاد فیچرهای جدید ترکیب چند فیچر موجود در یک یا چند فیچر جدید است.
برای مثال، ممکن است «سن» را با «وزن» و «قد» ترکیب کنید تا فیچری به نام شاخص توده بدن (BMI) ایجاد کنید. این به مدل شما اجازه میدهد پیش بینیهای بهتری انجام دهد؛ زیرا فیچرهای کمتر و نویز (noise) کمتری در مدل شما وجود دارد.
راههای مختلفی برای مهندسی ویژگی وجود دارد و بهترین راه برای انجامدادن آن اغلب به مجموعه دادهای بستگی دارد که با آن کار میکنید.
بااینحال چند نکته که ممکن است در این مورد مفید باشد از این قرار است:
- سعی کنید همبستگیهایی (correlation) میان فیچرهای مختلف پیدا کنید و موارد جدیدی ایجاد کنید که این روابط را به تصویر میکشد.
- از تبدیلهایی (transforms) مانند تبدیل لگاریتمی یا استانداردسازی استفاده کنید تا فیچرهای خود را قابلمقایسهتر و آسانتر کنید.
- از تکنیکهای پیشپردازش داده، مانند استخراج ویژگی (feature extraction) و انتخاب ویژگی (feature selection)، استفاده کنید تا به شما کمک کند مهمترین فیچرها را در مجموعه دادهی خود پیدا کنید.
۳. انتخاب ویژگی (Feature Selection)
انتخاب ویژگی یا انتخاب فیچر فرایندی است که به شما کمک میکند مفیدترین فیچرها را در مجموعه دادهی خود شناسایی کنید. این کار هم یک راه افزایش دقت مدل یادگیری ماشین محسوب میشود.
هدف آن کاهش یا حذف نویز و بهبود دقت مدلهای یادگیری ماشین با حذف اطلاعات اضافی از آنها، یعنی نقاط داده حاوی تنها یک فیچر، است.
راههای مختلفی برای انتخاب فیچرها وجود دارد، اما همگی استفاده از نوعی تجزیهوتحلیل آماری یا فیلترکردن ویژگیهایی با امتیازات کماهمیت را شامل هستند (یعنی مواردی که کمک زیادی به دقت مدل شما نمیکنند).
برخی از تکنیکهای رایج برای انتخاب ویژگی عبارتاند از:
- رتبهبندی فیچرها براساس همبستگی آنها با دیگر متغیرهای مجموعه داده، سپس حذف آنها که همبستگی کمتری در مقایسه با دارند؛ برای مثال، میتوانید از ضریب همبستگی پیرسون (Pearson Corellation Coefficient) برای اندازهگیری قدرت رابطه میان دو متغیر استفاده کنید.
- فیلترکردن فیچرها براساس امتیازهای اهمیت آنها که معمولاً با استفاده از تکنیکی، مانند گرادیان کاهشی (Gredient Descent) یا جنگل تصادفی (Random Forest)، محاسبه میشوند.
- انتخاب زیرمجموعهای از فیچرهایی که همبستگی بالایی با متغیر هدف دارند، اما میان خودشان همبستگی پایینی دارند (یعنی غیرهمبسته یا مستقل از یکدیگر هستند).
۴. الگوریتمهای چندگانه (Multiple Algorithm) را امتحان کنید!
یک اشتباه رایج این است که هنگام آموزش مدل خود فقط یک الگوریتم را امتحان کنید. ممکن است اگر دادههای زیادی داشته باشید و یادگیری الگوریتم از آن بهاندازه کافی آسان باشد، این روش کار کند، اما اکثر مجموعه دادههای دنیای واقعی بسیار پیچیدهتر از آن هستند. یک راه افزایش دقت مدل یادگیری ماشین استفاده از الگوریتمهای چندگانه است.
احتمالاً برخی از فیچرها در مجموعه داده شما وجود خواهد داشت که کمک زیادی به دقت مدل شما نمیکند و حذف آنها فقط اوضاع را بدتر میکند. اینجاست که استفاده از چندین الگوریتم میتواند مفید باشد.
با آزمایش الگوریتمهای مختلف میتوانید تشخیص دهید که کدامیک برای دادههای شما بهتر عمل میکنند و سپس از آن اطلاعات برای بهبود دقت مدلهای خود استفاده کنید.
انواع مختلفی از الگوریتمهای یادگیری ماشین وجود دارد؛ بنابراین تشخیص اینکه کدامیک برای دادههای شما مناسب هستند دشوار است. یک راه خوب برای شروع استفاده از اعتبارسنجی متقاطع (Cross Validation) با الگوریتمهای متعدد در یک مجموعه داده و سپس مقایسه امتیازهای دقت آنها با یکدیگر است.
اگر با زبان برنامهنویسی پایتون (Python) کار میکنید، scikit-learn فهرست خوبی از مدلهای رایج یادگیری ماشین دارد که میتوانید روی دادههای خود امتحان کنید؛ ازجمله این مدلها میتوان به این موارد اشاره کرد:
- رگرسیون خطی (Linear Regression)
- ماشینهای بردار پشتیبان (Support Vector Machine / SVM)
- درخت تصمیم (Decision Tree)
- جنگل تصادفی (Random Forest)
- شبکههای عصبی (Neural Networks)
پیشنهاد میکنیم با کاربرد پایتون در علم داده بیشتر آشنا شوید.
مدلهای Ensemble
روش دیگر استفاده از روشیای است که دو یا چند الگوریتم را با هم در یک مدل ترکیب میکند. Ensembleها اغلب از هر الگوریتم دیگری دقیقتر هستند؛ زیرا از نقاط قوت هر یک استفاده میکنند و نقاط ضعف آنها را جبران میکنند.
بهعبارت دیگر، اگر چندین یادگیرنده ضعیف (یعنی مدلهایی که بهتنهایی عملکرد ضعیفی دارند) را در یک گروه ترکیب کنید، میتوانید یک یادگیرنده قویتر (یعنی مدلی که بهعنوان یک فرد خوب عمل میکند) به دست آورید.
۵. تنظیم هایپرپارامترها (Hyper Parameters)
هایپرپارامترها پارامترهایی در مدلهای یادگیری ماشین هستند که نحوهی عملکرد آنها را تعیین میکنند. دیگر راه افزایش دقت مدل یادگیری ماشین تنظیم آنهاست. این پارامترها میتوانند شامل مواردی مانند تعداد لایههای یک شبکه عصبی عمیق یا تعداد درخت در یک مدل Ensemble باشند.
معمولاً باید خودتان این هایپرپارامترها را تنظیم کنید؛ زیرا هنگام آموزش مدل خود بهطور خودکار تنظیم نمیشوند.
اینجاست که اعتبارسنجی متقابل (Cross Validation) میتواند مفید باشد. با تقسیم دادههای خود به مجموعههای آموزشی (Train set) و آزمایشی (Test Set)، میتوانید ترکیبهای مختلفی از هایپرپارامترها را امتحان کنید و سپس ببینید که آنها در مجموعه آزمایشی چقدر خوب عمل میکنند. این کار به شما کمک میکند بهترین ترکیب هایپرپارامترها را برای مدل خود پیدا کنید.
راه دیگر برای انجامدادن این کار استفاده از جستوجوی شبکهای (grid search) است که روشی برای یافتن ترکیب بهینه هایپرپارامترها برای دادههای شماست. جستوجوی شبکهای با آزمایش هر ترکیب ممکنی از پارامترها پیش میرود تا زمانی که یکی از پارامترها را پیدا کند که بهترین عملکرد را در معیار مدنظر شما مثلاً accuracy به شما ارائه کند. سپس میتوانید از این ترکیب از هایپراپارامترها برای آموزش مدل خود استفاده کنید. برای این کار میتوانید ازطریق کتابخانه scikit-learn در پایتون از Grid Search استفاده کنید.
حرف آخر دربارهٔ مجموعه راه بهبود دقت مدل یادگیری ماشین
همانطور که در این مطلب خواندید، راههای زیادی برای بهبود دقت مدلهای یادگیری ماشین وجود دارد. با استفاده از روشهایی مانند مهندسی ویژگی، تنظیم هایپرپارامترها و آزمایش الگوریتمهای متعدد، امکان ایجاد یک مدل واقعاً دقیق را به خود میدهید. مهمترین چیز این است که به آزمایشکردن ادامه دهید و از اشتباههای خود درس بگیرید. هر چه بیشتر درمورد دادهها و الگوریتمهایی که استفاده میکنید بدانید، مدل شما عملکرد بهتری خواهد داشت.
یادگیری ماشین لرنینگ با کلاسهای آنلاین آموزش علم داده و یادگیری ماشین کافهتدریس
اگر به یادگیری ماشین علاقهمندید، شرکت در کلاسهای آنلاین علم داده و ماشین لرنینگ کافهتدریس را به شما پیشنهاد میکنیم.
شرکت در این کلاسها به شما امکان میدهد از هر نقطهی جغرافیایی به بهترین و جامعترین آموزش علم داده و یادگیری ماشین دسترسی داشته باشید.
کلاسهای آنلاین آموزش علم داده و یادگیری ماشین کافهتدریس بهشکلی کاملاً پویا و تعاملی برگزار میشود و مبنای آن هم کار روی پروژههای واقعی است.
برای آشنایی بیشتر با کلاسهای آنلاین آموزش علم داده و یادگیری ماشین کافهتدریس و مشاورهی رایگان برای شروع یادگیری روی این لینک کلیک کنید:
سلام در رابطه با اعتبار سنجی از طریق ماشین لرنینگ هم مقاله ای دارید ؟
سلام ، آقا کانال یوتیوب برای معرفی علم داده دارید که رایگان آموزش ببینیم ؟
سلام بله، میتونید به این لینک مراجعه کنید: https://www.youtube.com/@RezaShokrzad
Multiple Algorithm v رو خیلی خوب توضیح دادین
من چند تا مقاله دیگه خونده بودم ، ممنون از شما
سلام یه سوال از حضورتون داشتم جایی هست که بتونیم در رابطه با underfitting بیشتر بدونیم ؟
سلام بله در این مورد مطلبی رو در وبلاگ داریم: http://ctdrs.ir/ds0017
بدون زمینه مهندسی هم میشه سراغ ماشین لرنینگ اومد؟
بله، این امکان وجود داره. مخصوصا به این دلیل که یادگیری ماشین تو حوزههای مختلف کاربرد داره و افراد با زمینههای تحصیلی مختلف سراغ این حوزه میرن.