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

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

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

## لسو

روش LASSO براساس نرم یک، \|\omega\|_1 = \textstyle \sum_{j=1}^p |\omega_j| کار می‌کند و جریمه ای به همین شکل را به عبارتی که کمینه می‌کند، می‌افزاید. اینکار باعث می‌شود که مقادیر \omega به صفر نزدیک شوند و مقادیری بزرگ به خود نگیرند (به اصطلاح خلوت) و به این شکل از بیش برازش جلوگیری شود. در مسئله رگرسیون تابع خطا با استفاده از تنظیم LASSO، به شکل زیر تغییر می‌کند:
بندانگشتی|252x252پیکسل|شهود تنظیم لاسو
\frac{1}{2m} \Sigma_{i=1}^{m}{(y-Xw)^2} + \alpha \Sigma_{j=1}^{p}{\mid w_j\mid}که عبارت اول همان خطای کمترین مربعات و عبارت دوم ترم تعدیل ساز LASSO است. لازم است ذکر شود که \alpha ضریب تعدیل ساز نامیده می‌شود و با تغییر آن می‌توان مشخص کرد که تأثیر عبارت تعدیل ساز در تابع جریمه چقدر باشد. استفاده از این تابع جریمه محدودیت‌هایی دارد به عنوان مثال، در مواردی که تعداد داده‌ها از تعداد ویژگی‌ها بیشتر است استفاده از این روش موجب به صفر شدن بسیاری از ویژگی‌ها می‌شود.. همچنین اگر گروهی از متغیرهای بسیار همبسته وجود داشته باشد، LASSO تمایل دارد یک متغیر را از یک گروه انتخاب کند و بقیه را نادیده بگیرد.

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

بندانگشتی|253x253پیکسل|شهود تنظیم Ridge (نرم ۲)
در روش RIDGE از نرم دو \|\omega\|_2 = \textstyle \sum_{j=1}^p \omega_j^2 برای تعدیل سازی استفاده می‌شود، پس در مورد تابع خطای رگرسیون داریم:\Sigma_{i=1}^{m}{(y-Xw)^2} + \alpha \Sigma_{j=1}^{p}{w_j^2}در این روش برخلاف روش LASSO، وزن‌ها تمایل دارند به جای صفر شدن با هم کوچک شوند.

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

\Sigma_{i=1}^{m}{(y-Xw)^2} + \alpha * \lambda * \Sigma_{j=1}^{p}{\mid w_j\mid} + 0.5 * \alpha * (1-\lambda) * \Sigma_{j=1}^{p}{w_j^2}که ضریب \lambda مشخص می‌کند تأثیر RIGDE و LASSO در تابع خطا به چه صورت باشد. عبارت جریمه درجه دوم تابع ضرر را قویا محدب می‌کند و این تابع دارای یک کمینه منحصر به فرد است و خطر گیر افتادن در کمینه محلی (نسبی) در روش‌هایی مثل کاهش گرادیانی را به حداقل می‌رساند. تعدیل سازهایی مثل مواردی که ذکر شد مختص به یک الگوریتم خاص مثل رگرسیون نیستند بلکه به جهت جلوگیری از بیش برازش و تعمیم پذیری مدل مدل می‌توانند به هر الگوریتمی اضافه شوند. نمونه‌هایی از مواردی که از تعدیل ساز کشسان استفاده شده‌است عبارتند از:
* ماشین بردار پشتیبانی
* یادگیری متریک
* بهینه‌سازی سبد سرمایه‌گذاری
* پیش‌بینی سرطان

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

## پیاده‌سازی (پایتون)
با استفاده از کتابخانهٔ Scikit-Learn در زبان برنامه‌نویسی پایتون می‌توان مدل تنظیم کشسان را، به صورت زیر پیاده‌سازی کرد:
```python3
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)
```
در کد بالا مقدار \alpha برابر ۰٫۱ و مقدار \lambda برابر ۰٫۳ انتخاب شده‌است.

## منابع

رده:رگرسیون با ساختار سری زمانی
رده:رگرسیون لجستیک
رده:یادگیری بی‌نظارت
رده:یادگیری ماشین
رده:یادگیری نظارت‌شده
رده:الگوریتم‌های یادگیری ماشین