Эластичная сеть
Материал из MachineLearning.
Эластичная сеть — модель регрессии с двумя регуляризаторами L1, L2.
Содержание |
Определение
Пусть известны измерения n-объектов. Каждый объект представим в виде пары , , . Для удобства будем записывать это в матричном виде: . Классическая задача регрессии ставится следующим образом: . В силу неточности измерений данных или каких либо еще ошибок с целью построения наилучшей модели вводят регуляризатор или несколько регуляризаторов. Тогда получается следующая задача оптимизации: . Из достоинств такой модели можно выделить следующее: для каждого фиксированного L2-регуляризатора можно перебрать все возможные значения параметра (Поскольку по этому параметру это кусочно-линейная функция с конечным числом точек, в которых она не дифференцируема). Частным случаем этой модели являются модели Lasso() и Ridge() регрессий.
Реализации
- Matlab: Функция lasso, для задания L2 регуляризации есть дополнительный аргумент Alpha.
- Python: В пакете sklearn есть библиотека linear_model в которой есть класс ElasticNet.
- R: Пакет glmnet.
Во всех реализациях используется подход LARS, который как раз и позволяет найти все точки перегиба функционала по .
Также в Matlab и Python есть соответсвующие функции для выбора оптимальных значений параметров по кроссвалидации, в matlab это все та же функция lasso, в Python это класс ElasticNetCV
Пример
Пример использования Lasso и ElasticNet в Python на основе данных о диабете. Строится две модели L2 = 0(Lasso), L2 = 0.7(Elastic). На графике изображены значения соответсвующих весов обученной модели в зависимости от L1 регуляризатора.
Ссылки
- The Annals of Statistics 2004, Vol. 32, No. 2, 407–499, Institute of Mathematical Statistics, 2004, LARS
- Matlab lasso
- R glmnet
- Python пример с lasso and elastic
- Подробное описание ElasticNet и Lasso [http://www.stanford.edu/~hastie/Papers/B67.2%20(2005)%20301-320%20Zou%20&%20Hastie.pdf Regularization and variable selection via the
elastic net]