Эластичная сеть

Материал из MachineLearning.

Версия от 12:16, 5 января 2014; Gavr (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Эластичная сеть — модель регрессии с двумя регуляризаторами L1, L2.

Содержание

Определение

Пусть известны измерения n-объектов. Каждый объект представим в виде пары (x_i, y_i),  x_i \in \mathbb{R}^k,  y_i \in \mathbb{R} . Для удобства будем записывать это в матричном виде: (X, y) . Классическая задача регрессии ставится следующим образом: \|y - Xw\|^2 \to \min_w. В силу неточности измерений данных или каких либо еще ошибок с целью построения наилучшей модели вводят регуляризатор или несколько регуляризаторов. Тогда получается следующая задача оптимизации: \|y - Xw\|^2_2 + \lambda_1 \|w\|_1 + \lambda_2 \|w\|^2_2 \to \min_w. Из достоинств такой модели можно выделить следующее: для каждого фиксированного L2-регуляризатора можно перебрать все возможные значения параметра \lambda_1(Поскольку по этому параметру это кусочно-линейная функция с конечным числом точек, в которых она не дифференцируема). Частным случаем этой модели являются модели Lasso(\lambda_2 = 0) и Ridge(\lambda_1 = 0 ) регрессий.

Реализации

  • Matlab: Функция lasso, для задания L2 регуляризации есть дополнительный аргумент Alpha.
  • Python: В пакете sklearn есть библиотека linear_model в которой есть класс ElasticNet.
  • R: Пакет glmnet.

Во всех реализациях используется подход LARS, который как раз и позволяет найти все точки перегиба функционала по  \lambda_1.

Также в Matlab и Python есть соответсвующие функции для выбора оптимальных значений параметров по кроссвалидации, в matlab это все та же функция lasso, в Python это класс ElasticNetCV

Пример

Изображение: Lasso_and_elastic_net_example.png


Пример использования Lasso и ElasticNet в Python на основе данных о диабете. Строится две модели L2 = 0(Lasso), L2 = 0.7(Elastic). На графике изображены значения соответсвующих весов обученной модели в зависимости от L1 регуляризатора.

Ссылки

elastic net]

Личные инструменты