متعادل‌سازی کشسان

از testwiki
نسخهٔ تاریخ ۲۷ ژانویهٔ ۲۰۲۵، ساعت ۰۴:۵۶ توسط imported>Jeepubot (تغییر پارامتر ناشناختهٔ «dead-url» به «url-status» با استفاده از AWB)
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)
پرش به ناوبری پرش به جستجو

در آمار و به‌طور خاص در برازش مدل‌های رگرسیون خطی یا رگرسیون لجستیک، شبکه الاستیک الگو:به انگلیسی یک روش برای تنظیم (متعادل سازی) است که به‌طور خطی جریمه‌های نرم یک (L1-norm) و نرم دو (L2-norm) که به صورت جداگانه در روش‌های لسو و تنظیم تیخونوف استفاده می‌شوند را ترکیب می‌کند و به نوعی کاستی‌های این دو روش را پوشش می‌دهد.

مقدمه

به‌طور کلی در پیاده سازی الگوریتم‌های یادگیری ماشین و به‌طور خاص الگوریتم‌های مبتنی بر رگرسیون این امکان وجود دارد که مقادیر وزن‌ها و ایرپارامترهای مدل از کنترل خارج شوند به شکلی که یا خیلی بزرگ یا خیلی کوچک شوند یا به نوعی تمرین داده شوند که به مقادیر مجموعه تمرین بیش برازش کنند و در نتیجه عملکرد ضعیفی روی داده‌های تست نشان دهند. در این شرایط است که عموماً از روش‌های تعدیل سازی و عمومی سازی استفاده می‌شود تا از مشکلات گفته شده جلوگیری شود.

لسو

الگو:اصلی روش LASSO براساس نرم یک، ω1=j=1p|ωj| کار می‌کند و جریمه ای به همین شکل را به عبارتی که کمینه می‌کند، می‌افزاید. اینکار باعث می‌شود که مقادیر ω به صفر نزدیک شوند و مقادیری بزرگ به خود نگیرند (به اصطلاح خلوت) و به این شکل از بیش برازش جلوگیری شود. در مسئله رگرسیون تابع خطا با استفاده از تنظیم LASSO، به شکل زیر تغییر می‌کند:

شهود تنظیم لاسو

12mΣi=1m(yXw)2+αΣj=1pwjکه عبارت اول همان خطای کمترین مربعات و عبارت دوم ترم تعدیل ساز LASSO است. لازم است ذکر شود که α ضریب تعدیل ساز نامیده می‌شود و با تغییر آن می‌توان مشخص کرد که تأثیر عبارت تعدیل ساز در تابع جریمه چقدر باشد. استفاده از این تابع جریمه محدودیت‌هایی دارد[۱] به عنوان مثال، در مواردی که تعداد داده‌ها از تعداد ویژگی‌ها بیشتر است استفاده از این روش موجب به صفر شدن بسیاری از ویژگی‌ها می‌شود.. همچنین اگر گروهی از متغیرهای بسیار همبسته وجود داشته باشد، LASSO تمایل دارد یک متغیر را از یک گروه انتخاب کند و بقیه را نادیده بگیرد.

تنظیم تیخونوف

الگو:اصلی

شهود تنظیم Ridge (نرم ۲)

در روش RIDGE از نرم دو ω2=j=1pωj2 برای تعدیل سازی استفاده می‌شود، پس در مورد تابع خطای رگرسیون داریم:Σi=1m(yXw)2+αΣj=1pwj2در این روش برخلاف روش LASSO، وزن‌ها تمایل دارند به جای صفر شدن با هم کوچک شوند.

تعدیل‌ساز کشسان

برای غلبه بر محدودیت‌های دو روش قبلی، تعدیل ساز کشسان هردو عبارت را در تابع خطا استفاده می‌کند و رابطه زیر حاصل می‌شود:

Σi=1m(yXw)2+α*λ*Σj=1pwj+0.5*α*(1λ)*Σj=1pwj2که ضریب λ مشخص می‌کند تأثیر RIGDE و LASSO در تابع خطا به چه صورت باشد. عبارت جریمه درجه دوم تابع ضرر را قویا محدب می‌کند و این تابع دارای یک کمینه منحصر به فرد است و خطر گیر افتادن در کمینه محلی (نسبی) در روش‌هایی مثل کاهش گرادیانی را به حداقل می‌رساند. تعدیل سازهایی مثل مواردی که ذکر شد مختص به یک الگوریتم خاص مثل رگرسیون نیستند بلکه به جهت جلوگیری از بیش برازش و تعمیم پذیری مدل مدل می‌توانند به هر الگوریتمی اضافه شوند. نمونه‌هایی از مواردی که از تعدیل ساز کشسان استفاده شده‌است عبارتند از:

کاهش به ماشین بردار پشتیبانی

در اواخر سال ۲۰۱۴، ثابت شد که تعدیل ساز کشسان را می‌توان به دستگاه بردار پشتیبان خطی کاهش داد.[۶] کاهش مشابهی قبلاً برای LASSO در سال ۲۰۱۴ ثابت شده بود.[۷] نویسندگان نشان دادند که برای هر نمونه از تعدیل ساز کشسان، می‌توان یک مسئله معادل طبقه‌بندی باینری به گونه‌ای ساخت که ابرصفحه حاصل از حل یک ماشین بردار پشتیبان خطی (SVM) با جواب تعدیل ساز کشسان یعنی ω یکسان باشد. این اتفاق استفاده از الگوریتم‌ها و ابزارهای حل SVM را برای مسائل تعدیل ساز کشسان امکان‌پذیر می‌کند. همچنین استفاده از GPU را برای انجام بهینه تر محاسبات ممکن می‌کند که اغلب برای حل SVM در مقیاس بزرگ استفاده می‌شود.[۸]

پیاده‌سازی (پایتون)

با استفاده از کتابخانهٔ Scikit-Learn در زبان برنامه‌نویسی پایتون می‌توان مدل تنظیم کشسان را، به صورت زیر پیاده‌سازی کرد:

from sklearn.linear_model import ElasticNet

elasticNet = ElasticNet(alpha=0.1, l1_ratio=0.3)
elasticNet.fit(X_train, y_train)
prediction = elasticNet.predict(X_test)

در کد بالا مقدار

α

برابر ۰٫۱ و مقدار

λ

برابر ۰٫۳ انتخاب شده‌است.

منابع

الگو:پانویس