دسته بندی دودویی (Binary Classification) – راهنمای کاربردی

- روش بارگذاری دادههای آموزش و در دسترس قرار دادن آن برای کرس
- روش طراحی و آموزش یک شبکه عصبی برای دادههای جدولی
- روش ارزیابی کارایی یک مدل شبکه عصبی روی دادههای دیده نشده
- روش انجام آمادهسازی دادهها برای بهبود کار هنگام استفاده از شبکههای عصبی
- چگونگی تنظیم توپولوژی و پیکربندی یک شبکه عصبی در کرس
توضیحات پیرامون مجموعه داده
در واقع، این مجموعه داده، آواهای ردیابی شدهای که سیگنالهای گسیل شده گوناگون را باز میگرداند، توصیف میکند. ۶۰ متغیر ورودی، موارد بازگردانده شده را از زوایای گوناگون قوت میبخشند. این یک مسئله دستهبندی دودویی است و نیاز به آن دارد که مدل صخرهها را از استوانههای فلزی تفکیک کند. این مجموعه داده را میتوان به صورت رایگان دانلود و در پوشه کاری جاری با اسم sonar.csv ذخیره کرد. مجموعه داده سونار به خوبی قابل درک است. همه متغیرها پیوسته و عموما در طیف بین ۰ و ۱ هستند. متغیر خروجی، رشته «M» برای «Mine» و رشته «R» برای «Rock» است که به اعداد صحیح ۰ و ۱ تبدیل خواهد شد.
مدل شبکه عصبی خط مبنا برای دسته بندی دودویی
کار با «وارد کردن» (Import | ایمپورت) همه دستهها و توابعی که مورد نیاز است آغاز میشود.
برای استفاده از مدلهای کرس با سایکیتلِرن، باید از پوششدهنده KerasClassifier استفاده شود. این کلاس، تابعی را دریافت میکند که مدل شبکه عصبی را میسازد و باز میگرداند. همچنین، آرگومانهایی را دریافت میکند که در کنار فراخوانی به fit() پاس میدهد؛ از این جمله میتوان به تعداد «دورهها» (Epochs) و سایز دسته اشاره کرد.
اکنون، زمان آن فرا رسیده که این مدل را با استفاده از اعتبارسنجی متقابل طبقهبندی شده در چارچوب سایکیتلرن ارزیابی کرد. عدد دورههای آموزش مجددا با استفاده از مقادیر پیشفرض مناسب، به KerasClassifier پاس داده میشود. همچنین، خروجی طولانی نیز خاموش میشود که موجب میشود مدل ۱۰ بار برای انجام شدن اعتبارسنجی متقاطع ۱۰ لایه ساخته شود.
با قرار دادن کلیه این موارد در کنار هم، مثال کامل به صورت زیر حاصل میشود.
تذکر: خروجیهای حاصل در دفعات مختلف اجرا ممکن است متفاوت باشند. دلیل این امر، ماهیت تصادفی الگوریتم یادگیری مورد استفاده است. باید این موضوع را در نظر داشت که الگوریتم را باید چندین بار اجرا و میانگین خروجیها را محاسبه کرد.
Baseline: 81.68% (7.26%)
این یک امتیاز خوب است که بدون انجام دادن کارهای سخت، حاصل شد.
اجرای مجدد مدل مبنا با آمادهسازی دادهها
میتوان از سایکیتلرن برای انجام استانداردسازی مجموعه داده Sonar با استفاده از کلاس StandardScaler استفاده کرد. به جای انجام استانداردسازی روی کل مجموعه داده، بهتر است سعی شود که روال استانداردسازی روی دادههای آموزش، در طول اجرای اعتبارسنجی متقابل آموزش داده شود و از استانداردسازی آموزش دیده برای آمادهسازی لایه تست «دیده نشده» استفاده شود. این امر موجب میشود استانداردسازی یک گام در آمادهسازی مدل در فرایند اعتبارسنجی متقابل باشد و از آنکه الگوریتم دانشی پیرامون «دادههای دیده نشده» در طول ارزیابی داشته باشد، جلوگیری میکند؛ دانشی که ممکن است از شمای آموزش دادهها همچون توزیعی خرد، پاس داده شود.
میتوان این خواسته را با استفاده از «پایپلاین» (Pipeline) کتابخانه سایکیتلرن به دست آورد. این پایپلاین، پوششی است که یک یا تعداد بیشتری مدل را درون یک پاس از روال اعتبارسنجی متقابل اجرا کند. در اینجا، میتوان پایپلاینی را با StandardScaler که به وسیله مدل شبکه عصبی دنبال میشود، تعریف کرد.
با قرار دادن کلیه این موارد در کنار یکدیگر، خروجی به صورت زیر خواهد بود.
با اجرای مثال بالا، نتایج زیر حاصل میشود.
تذکر: نتایج ممکن است به دلیل ماهیت تصادفی الگوریتم در اجراهای مختلف متفاوت باشد. بنابراین، بهتر است که چندین بار خروجی گرفته شود و کارایی میانگین در نظر گرفته شود. میتوان بهبود اندک اما خیلی خوبی را در صحت میانگین مشاهده کرد.
Standardized: 84.56% (5.74%)
تنظیم لایهها و تعداد نورونها در مدل
چیزهای زیادی وجود دارد که باید در یک شبکه عصبی تنظیم شوند که از این جمله میتوان به مقداردهی اولیه وزنها، تابع فعالسازی، روال بهینهسازی و دیگر موارد اشاره کرد. جنبهای که ممکن است یک تاثیر بزرگ داشته باشد، ساختار خود شبکه است که به آن، توپولوژی شبکه گفته میشود. در این بخش، نگاهی به دو تجربه روی ساختار شبکه انداخته میشود: بزرگتر کردن و کوچکتر کردن آن. اینها تجربیات خوبی برای اجرا در هنگام تنظیم شبکه روی مسئله هستند.
ارزیابی یک شبکه کوچکتر
به نظر میرسد که «افزونگی» (Redundancy) زیادی در متغیرهای ورودی برای مسئله وجود دارد. دادهها سیگنال مشابهی را از زوایای گوناگون توصیف میکنند. ممکن است برخی از این زوایا نسبت به دیگر موارد مرتبطتر باشند. میتوان نوعی از استخراج ویژگی را در شبکه با محدود کردن فضای بازنمایی در اولین لایه پنهان انجام داد.
در این آزمایش، مدل مبنا با ۶۰ نورون در لایه پنهان و کاهش آن به ۳۰ گرفته میشود. این موجب میشود در طول آموزش، فشار روی شبکه قرار بگیرد تا مهمترین ساختارها در دادههای ورودی برای مدل انتخاب شوند.
همچنین، دادهها در آزمایش پیشین با آمادهسازی دادهها استانداردسازی میشوند و تلاش میشود تا از مزایای آن در بالا رفتن جزئی در کارایی استفاده شود.
با آزمودن کلیه این موارد با یکدیگر، مثال کامل به صورت زیر خواهد بود.
اجرای این مثال، نتایج زیر را به دست میدهد. میتوان مشاهده کرد که تقویت جزئی در صحت میانگین تخمین زده شده و کاهش مهمی در «انحراف معیار» (Standard Deviation) (توزیع میانگین) از امتیاز صحت برای مدل اتفاق افتاده است.
نکته: نتایج در اجراهای مختلف ممکن است به دلیل ماهیت تصادفی الگوریتم یادگیری، متفاوت باشد. بنابراین، توصیه میشود که چندین اجرا گرفته و کارایی میانگین در نظر گرفته شود. این نتیجه خوبی است زیرا کار با شبکهای با اندازه نصف، بهتر است و در نتیجه، نیمی زمان برای آموزش شبکه میبرد.
Smaller: 86.04% (4.00%)
ارزیابی یک شبکه بزرگتر
توپولوژی شبکه عصبی با لایههای بیشتر منجر به فرصتهای بیشتری برای شبکه عصبی به منظور استخراج ویژگیهای کلیدی و ترکیب مجدد آنها در راههای مفید غیر خطی میشود. میتوان ارزیابی کرد که افزودن لایههای بیشتر به شبکه، کارایی را به سادگی با انجام پیچش ناچیزی در تابع مورد استفاده برای ساخت مدل بهبود داد. در اینجا، یک لایه جدید (یک خط) به شبکه اضافه میشود که لایه پنهان دیگری با ۳۰ نورون را پس از لایه اول، معرفی میکند. شبکه اکنون دارای توپولوژی زیر است.
60 inputs -> [60 -> 30] -> 1 output
ایده در اینجا آن است که به شبکه فرصت آن که همه متغیرهای ورودی را پیش از قرار گرفتن در تنگنا و نصف کردن ظرفیت ارائه شود، مدل کند؛ درست مانند آنچه در مثال بالا و با شبکه کوچکتر انجام شد. به جای فشردهسازی نمایش خود ورودیها، لایه پنهان دیگری وجود دارد تا در فرایند کمک کند.
با آزمودن کلیه این موارد همراه با هم، خروجی کامل به صورت زیر خواهد بود.
با اجرای مثال بالا، خروجیهای زیر حاصل میشوند.
تذکر: به دلیل ماهیت تصادفی الگوریتم یادگیری، ممکن است نتایج در اجراهای مختلف متفاوت باشند. در نتیجه، باید مثال را چندین بار اجرا کرد و کارایی میانگین را در نظر گرفت.
Larger: 83.14% (4.52%)
با تنظیمات بیشتر جنبههایی مانند الگوریتم بهینهسازی و تعداد دورههای آموزش، انتظار میرود که بهبودهای بیشتری امکانپذیر باشند.
اگر مطلب بالا برای شما مفید بوده، آموزشهای زیر نیز به شما پیشنهاد میشود:
- مجموعه آموزشهای تصویر و پردازش سیگنال
- گنجینه آموزشهای برنامه نویسی پایتون (Python)
- مجموعه آموزشهای یادگیری ماشین و بازشناسی الگو
- زبان برنامهنویسی پایتون (Python) — از صفر تا صد
- یادگیری علم داده (Data Science) با پایتون — از صفر تا صد
- آموزش پایتون (Python) — مجموعه مقالات جامع وبلاگ فرادرس
^^
مطالب مجله فرادرس را در جستجوی گوگل سریعتر ببینید













