اسکریپت های ضروری پایتون برای متخصصان یادگیری ماشین متوسط
تصویر توسط نویسنده
مقدمه
به عنوان یک مهندس یادگیری ماشین، احتمالاً از کار بر روی کارهای جالب مانند آزمایش معماری مدل، تنظیم دقیق هایپرپارامترها و تجزیه و تحلیل نتایج لذت می برید. اما واقعاً چه مقدار از روز شما به کارهای نه چندان جالبی مانند پیش پردازش داده ها، مدیریت پیکربندی های آزمایشی، اشکال زدایی مشکلات عملکرد مدل، یا ردیابی اینکه کدام هایپرپارامترها در ده ها دوره آموزشی بهترین عملکرد را داشتند، می گذرد؟
اگر صادق باشید، احتمالاً بخش قابل توجهی از زمان مفید شما را می خورد. تمرینکنندگان یادگیری ماشین ساعتهای بیشماری را صرف کارهای تکراری میکنند – مدیریت مقادیر از دست رفته، عادیسازی ویژگیها، راهاندازی چینهای اعتبارسنجی متقابل، آزمایشهای ثبتنام – زمانی که میتوانند بر روی ساخت مدلهای بهتر تمرکز کنند.
این مقاله پنج اسکریپت پایتون را پوشش می دهد که به طور خاص برای مقابله با وظایف خط لوله یادگیری ماشینی تکراری طراحی شده اند که زمان آزمایش شما را مصرف می کنند. بیایید شروع کنیم!
🔗 می توانید کد را در GitHub پیدا کنید. رجوع به فایل README برای نیازمندی ها، شروع به کار، مثال های استفاده و موارد دیگر.
1. خط لوله مهندسی خودکار
نقطه درد: هر مجموعه داده جدید به همان مراحل پیش پردازش خسته کننده نیاز دارد. شما به صورت دستی مقادیر گمشده را بررسی میکنید، متغیرهای طبقهبندی را رمزگذاری میکنید، ویژگیهای عددی را مقیاسبندی میکنید، موارد پرت را کنترل میکنید و ویژگیهای خاص دامنه را مهندسی میکنید. وقتی بین پروژهها جابجا میشوید، مدام در حال بازنویسی منطق پیشپردازش مشابه با الزامات کمی متفاوت هستید.
کاری که فیلمنامه انجام می دهد: اسکریپت به طور خودکار وظایف مهندسی ویژگی های رایج را از طریق یک خط لوله قابل تنظیم انجام می دهد. انواع ویژگیها را شناسایی میکند، دگرگونیهای مناسب را اعمال میکند، ویژگیهای مهندسیشده را بر اساس استراتژیهای از پیش تعریفشده تولید میکند، دادههای از دست رفته را مدیریت میکند، و خطوط لوله پیشپردازش ثابتی را ایجاد میکند که میتوانند در پروژهها ذخیره و دوباره استفاده شوند. همچنین گزارش های مفصلی در مورد تغییرات اعمال شده و اهمیت ویژگی ها پس از مهندسی ارائه می دهد.
چگونه کار می کند: این اسکریپت به طور خودکار مجموعه داده های شما را نمایه می کند تا ستون های عددی، طبقه بندی، تاریخ و متن را شناسایی کند. برای هر نوع تبدیل های مناسبی را اعمال می کند:
- مقیاس بندی یا استانداردسازی قوی برای متغیرهای عددی،
- کدگذاری هدف یا کدگذاری یکطرفه برای متغیرهای طبقهبندی و
- رمزگذاری چرخه ای برای ویژگی های تاریخ
این اسکریپت برای مقادیر از دست رفته از انتساب تکراری استفاده می کند، نقاط پرت را با استفاده از IQR یا درج می کند. جنگل های ایزوله، و ویژگی های چند جمله ای و اصطلاحات تعاملی را برای ستون های عددی ایجاد می کند.
⏩ اسکریپت خط لوله مهندسی ویژگی خودکار را دریافت کنید
2. Hyperparameter Optimization Manager
نقطه درد: شما در حال اجرای جستجوهای شبکه ای یا جستجوهای تصادفی برای تنظیم هایپرپارامتر هستید، اما مدیریت همه پیکربندی ها، ردیابی ترکیب هایی که امتحان کرده اید و تجزیه و تحلیل نتایج یک آشفتگی است. احتمالاً نوتبوکهای Jupyter پر از دیکشنریهای فراپارامتر، گزارشهای دستی از آنچه کار میکردند، و هیچ روش سیستماتیکی برای مقایسه اجراها خواهید داشت. وقتی پارامترهای خوبی پیدا میکنید، مطمئن نیستید که میتوانید بهتر انجام دهید یا نه، و شروع دوباره به معنای از دست دادن مسیری است که قبلاً کاوش کردهاید.
کاری که فیلمنامه انجام می دهد: یک رابط یکپارچه برای بهینه سازی هایپرپارامتر با استفاده از چندین استراتژی ارائه می دهد: جستجوی شبکه ای، جستجوی تصادفی، بهینه سازی بیزی و نصف کردن پی در پی. به طور خودکار همه آزمایشها را با پارامترها، معیارها و ابرداده ثبت میکند. گزارشهای بهینهسازی را تولید میکند که اهمیت پارامتر، نمودارهای همگرایی و بهترین تنظیمات را نشان میدهد. از توقف اولیه و تخصیص منابع برای جلوگیری از هدر رفتن محاسبات در تنظیمات ضعیف پشتیبانی می کند.
چگونه کار می کند: اسکریپت کتابخانه های مختلف بهینه سازی را پوشش می دهد — scikit-یادگیری، Optuna، Scikit-Optimize – به یک رابط یکپارچه منابع محاسباتی را با استفاده از نصف کردن متوالی یا Hyperband برای حذف زودهنگام تنظیمات ضعیف تخصیص می دهد. همه آزمایشها در یک پایگاه داده یا فایل JSON با پارامترها، امتیازهای اعتبارسنجی متقابل، زمان آموزش و مهرهای زمانی ثبت میشوند. اسکریپت با استفاده از اهمیت پارامترها را محاسبه می کند ANOVA عملکردی و تجسم هایی را ایجاد می کند که همگرایی، توزیع پارامترها و همبستگی بین پارامترها و عملکرد را نشان می دهد. نتایج را می توان برای تجزیه و تحلیل محدوده پارامترهای خاص یا از سرگیری بهینه سازی از اجراهای قبلی جستجو و فیلتر کرد.
⏩ اسکریپت مدیریت بهینه سازی هایپرپارامتر را دریافت کنید
3. اشکال زدای عملکرد مدل
نقطه درد: عملکرد مدل شما به طور ناگهانی کاهش یافته است، یا در بخشهای داده خاصی مطابق انتظار عمل نمیکند. شما بهصورت دستی دادهها را بر اساس ویژگیهای مختلف برش میدهید، معیارهای هر برش را محاسبه میکنید، توزیعهای پیشبینی را بررسی میکنید و به دنبال جابجایی دادهها میگردید. این یک فرآیند زمان بر و بدون رویکرد سیستماتیک است. ممکن است مسائل مهمی را که در زیرگروههای خاص یا تعامل با ویژگیها پنهان میشوند، از دست بدهید.
کاری که فیلمنامه انجام می دهد: اشکالزدایی جامع مدل را با تجزیه و تحلیل عملکرد در بخشهای داده، شناسایی بخشهای مشکلساز که در آن مدل عملکرد ضعیفی دارد، شناسایی جابجایی ویژگی و پیشبینی، بررسی نشت برچسب و مشکلات کیفیت داده، و ایجاد گزارشهای تشخیصی دقیق با بینشهای عملی انجام میدهد. همچنین عملکرد مدل فعلی را با معیارهای پایه مقایسه می کند تا تخریب در طول زمان را تشخیص دهد.
چگونه کار می کند: اسکریپت تجزیه و تحلیل مبتنی بر برش را با تقسیم خودکار داده ها در امتداد هر بعد ویژگی و معیارهای محاسباتی برای هر برش انجام می دهد.
- از آزمون های آماری برای شناسایی بخش هایی استفاده می کند که عملکرد آنها به طور قابل توجهی بدتر از عملکرد کلی است.
- برای تشخیص رانش، توزیع ویژگیها را بین دادههای آموزشی و آزمایشی با استفاده از آن مقایسه میکند تست های کولموگروف-اسمیرنوف یا شاخص ثبات جمعیت.
این اسکریپت همچنین تجزیه و تحلیل اهمیت ویژگی خودکار را انجام می دهد و با بررسی ویژگی هایی با اهمیت مشکوک، نشت برچسب احتمالی را شناسایی می کند. همه یافته ها در یک گزارش تعاملی با تجسم جمع آوری می شوند.
⏩ اسکریپت اشکال زدایی عملکرد مدل را دریافت کنید
4. مدیر استراتژی اعتبارسنجی متقابل
نقطه درد: مجموعه داده های مختلف به استراتژی های اعتبار سنجی متقابل متفاوتی نیاز دارند:
- داده های سری زمانی نیاز به تقسیم های مبتنی بر زمان دارند،
- مجموعه داده های نامتعادل نیاز به تقسیم های طبقه بندی شده دارند، و
- داده های گروه بندی شده نیاز به تقسیم بندی آگاهانه از گروه دارد.
شما به صورت دستی این استراتژیها را برای هر پروژه پیادهسازی میکنید، کد سفارشی مینویسید تا از نشت دادهها اطمینان حاصل کنید، و تأیید میکنید که تقسیمهای شما منطقی است. مستعد خطا و تکراری است، به خصوص زمانی که شما نیاز به مقایسه چندین استراتژی تقسیم بندی دارید تا ببینید کدامیک قابل اطمینان ترین برآوردهای عملکرد را ارائه می دهد.
کاری که فیلمنامه انجام می دهد: راهبردهای اعتبارسنجی متقاطع از پیش پیکربندی شده را برای انواع مختلف داده و پروژه های یادگیری ماشین ارائه می دهد. به طور خودکار استراتژیهای تقسیم مناسب را بر اساس ویژگیهای داده شناسایی میکند، اطمینان میدهد که دادهها نشت نمیکنند، تقسیمهای طبقهبندی شده برای دادههای نامتعادل ایجاد میکند، سریهای زمانی را با ترتیب زمانی مناسب مدیریت میکند، و از تقسیم دادههای گروهبندی/خوشهای پشتیبانی میکند. کیفیت تقسیم را تأیید می کند و معیارهایی را در مورد توزیع و تعادل چین ارائه می دهد.
چگونه کار می کند: اسکریپت ویژگی های مجموعه داده را برای تعیین استراتژی های تقسیم مناسب تجزیه و تحلیل می کند.
- برای داده های زمانی، شکاف پنجره های در حال گسترش یا چرخشی ایجاد می کند که به ترتیب زمانی احترام می گذارد.
- برای مجموعه دادههای نامتعادل، از تقسیم طبقهای برای حفظ نسبتهای کلاس در بین چینها استفاده میکند.
- وقتی ستونهای گروه مشخص میشوند، اطمینان حاصل میشود که تمام نمونههای یک گروه در کنار هم در یک تا میمانند.
اسکریپت با بررسی نشت داده ها (اطلاعات آینده در مجموعه های آموزشی برای سری های زمانی)، آلودگی گروهی و عدم تعادل توزیع کلاس، تقسیم ها را تأیید می کند. این تکرار کننده های تقسیم سازگار با یادگیری scikit را فراهم می کند که با آنها کار می کنند cross_val_score و GridSearchCV.
⏩ اسکریپت مدیر استراتژی اعتبارسنجی متقابل را دریافت کنید
5. ردیاب آزمایش
نقطه درد: شما ده ها آزمایش با مدل ها، ویژگی ها و فراپارامترهای مختلف انجام داده اید، اما ردیابی همه چیز آشفته است. شما دارای دفترچه یادداشت های پراکنده در دایرکتوری ها، قراردادهای نامگذاری متناقض، و هیچ راه آسانی برای مقایسه نتایج نیست. وقتی کسی می پرسد “کدام مدل بهتر عمل کرد؟” یا «چه ویژگیهایی را امتحان کردیم؟»، باید فایلهایی را که سعی در بازسازی تاریخچه آزمایش خود دارند، بررسی کنید. بازتولید نتایج گذشته بسیار چالش برانگیز است زیرا مطمئن نیستید دقیقاً چه کد و داده ای استفاده شده است.
کاری که فیلمنامه انجام می دهد: اسکریپت ردیاب آزمایش، ردیابی آزمایشی سبک وزنی را ارائه میکند که تمام برنامههای آموزشی مدل را با پارامترها، معیارها، مجموعه ویژگیها، نسخههای داده و نسخههای کد ثبت میکند. این مصنوعات مدل، تنظیمات آموزشی و جزئیات محیط را ضبط می کند. جداول مقایسه و تجسمها را در آزمایشها ایجاد میکند. از برچسب گذاری و سازماندهی آزمایش ها بر اساس پروژه یا هدف پشتیبانی می کند. با ثبت هر چیزی که برای ایجاد مجدد نتایج لازم است، آزمایشها را کاملاً تکرارپذیر میکند.
چگونه کار می کند: این اسکریپت یک دایرکتوری ساختاریافته برای هر آزمایش ایجاد می کند که حاوی تمام ابرداده ها در قالب JSON است. کارهای زیر را انجام می دهد:
- فراپارامترهای مدل را با درون نگری اشیاء مدل می گیرد،
- تمام معیارهای ارسال شده توسط کاربر را ثبت می کند، مصنوعات مدل را با استفاده از آن ذخیره می کند joblib یا ترشی، و
- اطلاعات محیط را ثبت می کند (نسخه پایتون، نسخه های بسته).
این اسکریپت همه آزمایشها را در قالبی قابل پرس و جو ذخیره میکند و فیلتر کردن و مقایسه آسان را ممکن میسازد. این پانداها DataFrames را برای مقایسه جدولی و تجسم برای مقایسههای متریک در آزمایشها ایجاد میکند. پایگاه داده ردیابی می تواند باشد SQLite برای کارهای محلی یا در صورت نیاز با ذخیره سازی از راه دور یکپارچه شده است.
⏩ اسکریپت ردیاب آزمایش را دریافت کنید
بسته بندی
این پنج اسکریپت بر چالشهای عملیاتی اصلی تمرکز دارند که متخصصان یادگیری ماشین به طور منظم با آن مواجه میشوند. در اینجا خلاصه ای سریع از آنچه این اسکریپت ها انجام می دهند آورده شده است:
- خط لوله مهندسی ویژگی خودکار، پیش پردازش مکرر و ایجاد ویژگی را به طور مداوم انجام می دهد
- مدیر بهینه سازی Hyperparameter به طور سیستماتیک فضاهای پارامترها را بررسی می کند و همه آزمایش ها را ردیابی می کند
- اشکال زدای عملکرد مدل مشکلات عملکرد را شناسایی می کند و به طور خودکار خرابی های مدل را تشخیص می دهد
- مدیر استراتژی اعتبار سنجی متقابل اعتبار سنجی مناسب را بدون نشت داده برای انواع مختلف داده تضمین می کند
- ردیاب آزمایشی همه آزمایشهای یادگیری ماشین شما را سازماندهی میکند و نتایج را قابل تکرار میکند
نوشتن اسکریپت های پایتون برای حل اکثر نقاط دردناک می تواند تمرین مفید و جالبی باشد. اگر بخواهید، میتوانید بعداً به ابزارهایی مانند MLflow یا Weights & Biases برای ردیابی آزمایشی بروید. آزمایش مبارک!