exponenta event banner

lassoglm

Лассо или эластичная регуляризация сетки для обобщенных линейных моделей

Описание

пример

B = lassoglm(X,y) возвращает пенализованные коэффициенты с максимальным правдоподобием для обобщенных линейных моделей данных предиктора X и ответ y, где значения в y предполагается, что они имеют нормальное распределение вероятности. Каждый столбец B соответствует конкретному коэффициенту регуляризации в Lambda. По умолчанию lassoglm выполняет регуляризацию лассо с использованием геометрической последовательности Lambda значения.

B = lassoglm(X,y,distr) выполняет регуляризацию лассо в соответствии с моделями с использованием распределения вероятностей distr для y.

B = lassoglm(X,y,distr,Name,Value) соответствует регуляризованным обобщенным линейным регрессиям с дополнительными опциями, заданными одним или несколькими аргументами пары имя-значение. Например, 'Alpha',0.5 устанавливает эластичную сетку в качестве метода регуляризации с параметром Alpha равно 0,5.

пример

[B,FitInfo] = lassoglm(___) также возвращает структуру FitInfo, который содержит информацию о соответствии моделей, используя любой из входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

Создайте набор данных с избыточными предикторами и определите эти предикторы с помощью lassoglm.

Создание случайной матрицы X со 100 наблюдениями и 10 предикторами. Создание нормально распределенного ответа y используя только четыре из предикторов и небольшое количество шума.

rng default
X = randn(100,10);
weights = [0.6;0.5;0.7;0.4];
y = X(:,[2 4 5 7])*weights + randn(100,1)*0.1; % Small added noise

Выполните регуляризацию лассо.

B = lassoglm(X,y);

Найти вектор коэффициентов для 75-го Lambda значение в B.

B(:,75)
ans = 10×1

         0
    0.5431
         0
    0.3944
    0.6173
         0
    0.3473
         0
         0
         0

lassoglm идентифицирует и удаляет избыточные предикторы.

Создайте данные из модели Пуассона и определите важные предикторы с помощью lassoglm.

Создайте данные с помощью 20 предикторов. Создайте переменную отклика Пуассона, используя только три предиктора плюс константу.

rng default % For reproducibility
X = randn(100,20);
weights = [.4;.2;.3];
mu = exp(X(:,[5 10 15])*weights + 1);
y = poissrnd(mu);

Построить перекрестно проверенную регуляризацию лассо регрессионной модели Пуассона данных.

[B,FitInfo] = lassoglm(X,y,'poisson','CV',10);

Проверьте график перекрестной проверки, чтобы увидеть эффект Lambda параметр регуляризации.

lassoPlot(B,FitInfo,'plottype','CV'); 
legend('show') % Show legend

Figure contains an axes. The axes with title Cross-Validated Deviance of Lasso Fit contains 5 objects of type errorbar, line. These objects represent Deviance with Error Bars, LambdaMinDeviance, Lambda1SE.

Зеленый круг и пунктирная линия расположены Lambda с минимальной ошибкой перекрестной проверки. Синяя окружность и пунктирная линия определяют местоположение точки с минимальной ошибкой перекрестной проверки плюс одно стандартное отклонение.

Найдите ненулевые коэффициенты модели, соответствующие двум идентифицированным точкам.

idxLambdaMinDeviance = FitInfo.IndexMinDeviance;
mincoefs = find(B(:,idxLambdaMinDeviance))
mincoefs = 7×1

     3
     5
     6
    10
    11
    15
    16

idxLambda1SE = FitInfo.Index1SE;
min1coefs = find(B(:,idxLambda1SE))
min1coefs = 3×1

     5
    10
    15

Коэффициенты из стандартной точки ошибки «минимум плюс один» представляют собой именно те коэффициенты, которые используются для создания данных.

Предсказать, получили ли студенты B или выше на своем последнем экзамене, используя lassoglm.

Загрузить examgrades набор данных. Преобразование последних оценок ЕГЭ в логический вектор, где 1 представляет собой класс 80 или выше и 0 представляет собой класс ниже 80.

load examgrades
X = grades(:,1:4);
y = grades(:,5);
yBinom = (y>=80);

Разбейте данные на обучающие и тестовые наборы.

rng default    % Set the seed for reproducibility
c = cvpartition(yBinom,'HoldOut',0.3);
idxTrain = training(c,1);
idxTest = ~idxTrain;
XTrain = X(idxTrain,:);
yTrain = yBinom(idxTrain);
XTest = X(idxTest,:);
yTest = yBinom(idxTest);

Выполните регуляризацию лассо для обобщенной регрессии линейной модели с трехкратной перекрестной проверкой данных обучения. Предположим значения в y биномиально распределены. Выберите коэффициенты модели, соответствующие Lambda с минимальным ожидаемым отклонением.

[B,FitInfo] = lassoglm(XTrain,yTrain,'binomial','CV',3);
idxLambdaMinDeviance = FitInfo.IndexMinDeviance;
B0 = FitInfo.Intercept(idxLambdaMinDeviance);
coef = [B0; B(:,idxLambdaMinDeviance)]
coef = 5×1

  -21.1911
    0.0235
    0.0670
    0.0693
    0.0949

Прогнозирование оценок экзамена для тестовых данных с использованием коэффициентов модели, найденных на предыдущем шаге. Укажите функцию связи для биномиального ответа с помощью 'logit'. Преобразуйте прогнозируемые значения в логический вектор.

yhat = glmval(coef,XTest,'logit');
yhatBinom = (yhat>=0.5);

Определите точность прогнозов с помощью матрицы путаницы.

c = confusionchart(yTest,yhatBinom);

Figure contains an object of type ConfusionMatrixChart.

Функция правильно прогнозирует 31 балл ЕГЭ. Однако функция неверно предсказывает, что 1 студент получает B или выше и 4 учащиеся получают оценку ниже уровня B.

Входные аргументы

свернуть все

Данные предиктора, заданные как числовая матрица. Каждая строка представляет одно наблюдение, а каждый столбец представляет одну предикторную переменную.

Типы данных: single | double

Данные ответа, указанные как числовой вектор, логический вектор, категориальный массив или числовая матрица из двух столбцов.

  • Когда distr не является 'binomial', y - числовой вектор или категориальный массив длиной n, где n - количество строк в X. Ответ y(i) соответствует строке i в X.

  • Когда distr является 'binomial', y является одним из следующих:

    • Числовой вектор длиной n, где каждая запись представляет успех (1) или отказ (0)

    • Логический вектор длиной n, где каждая запись представляет успех или сбой

    • Категориальный массив длиной n, где каждая запись представляет успех или сбой

    • Числовая матрица из двух столбцов, где первый столбец содержит количество успешных результатов для каждого наблюдения, а второй столбец содержит общее количество испытаний

Типы данных: single | double | logical | categorical

Распределение данных ответа, указанных как одно из следующих:

  • 'normal'

  • 'binomial'

  • 'poisson'

  • 'gamma'

  • 'inverse gaussian'

lassoglm использует функцию связи по умолчанию, соответствующую distr. Укажите другую функцию связи с помощью Link аргумент пары имя-значение.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: lassoglm(X,y,'poisson','Alpha',0.5) выполняет эластичную регуляризацию сетки, предполагая, что значения отклика распределены Пуассоном. 'Alpha',0.5 аргумент пары имя-значение задает параметр, используемый при оптимизации упругой цепи.

Вес оптимизации лассо (L1) по отношению к гребню (L2), определяемый как разделенная запятыми пара, состоящая из 'Alpha' и положительное скалярное значение в интервале (0,1]. Стоимость Alpha = 1 представляет регрессию лассо, Alpha близко к 0 приближается к регрессии гребня, а другие значения представляют собой оптимизацию упругой сетки. См. Эластичная сетка.

Пример: 'Alpha',0.75

Типы данных: single | double

Спецификация перекрестной проверки для оценки отклонения, указанная как пара, разделенная запятыми, состоящая из 'CV' и одно из следующих:

  • 'resubstitution'lassoglm использование X и y чтобы соответствовать модели и оценить отклонение без перекрестной проверки.

  • Положительное скалярное целое число Klassoglm использование K-текстовая перекрестная проверка.

  • cvpartition объект cvplassoglm использует метод перекрестной проверки, выраженный в cvp. Нельзя использовать 'leaveout' раздел с lassoglm.

Пример: 'CV',10

Максимальное количество ненулевых коэффициентов в модели, указанное как разделенная запятыми пара, состоящая из 'DFmax' и положительный целочисленный скаляр. lassoglm возвращает результаты только для Lambda значения, удовлетворяющие этому критерию.

Пример: 'DFmax',25

Типы данных: single | double

Коэффициенты регуляризации, указанные как пара, разделенная запятыми, состоящая из 'Lambda' и вектор неотрицательных значений. Смотри Лассо.

  • Если вы не поставляете Lambda, то lassoglm оценивает наибольшее значение Lambda это дает модель nonnull. В этом случае LambdaRatio дает отношение наименьшего к наибольшему значению последовательности, и NumLambda задает длину вектора.

  • Если вы поставляете Lambda, то lassoglm игнорирует LambdaRatio и NumLambda.

  • Если Standardize является true, то Lambda - набор значений, используемых для соответствия моделей X данные стандартизированы, чтобы иметь нулевое среднее и дисперсию единицы.

По умолчанию используется геометрическая последовательность NumLambda значения, с только наибольшим значением, способным производить B = 0.

Типы данных: single | double

Отношение наименьшего к наибольшему Lambda значения, когда вы не поставляете Lambda, указанная как пара, разделенная запятыми, состоящая из 'LambdaRatio' и положительный скаляр.

Если установить LambdaRatio = 0, затем lassoglm генерирует последовательность по умолчанию Lambda значения и заменяет наименьшее на 0.

Пример: 'LambdaRatio',1e–2

Типы данных: single | double

Отображение между средним λ ответа и линейным предиктором Xb, указанным как пара, разделенная запятыми, состоящая из 'Link' и одно из значений в этой таблице.

СтоимостьОписание
'comploglog'

log (-log ((1 -

'identity', по умолчанию для распределения 'normal'

start= Xb

'log', по умолчанию для распределения 'poisson'

log (λ) = Xb

'logit', по умолчанию для распределения 'binomial'

log (в/( 1 - в/)) = Xb

'loglog'

log (-log (start)) = Xb

'probit'

Φ-1 (start) = Xb, где Λ - нормальная (гауссова) кумулятивная функция распределения

'reciprocal', по умолчанию для распределения 'gamma'

start-1 = Xb

p (число), по умолчанию для распределения 'inverse gaussian'p = -2)

мкр = Xb

Массив ячеек формы {FL FD FI}, содержащий три дескриптора функций, созданные с помощью @, определяющие ссылку (FL), производная звена (FD) и обратной линии связи (FI). Или структура функций обрабатывает поле Link содержа FL, поле Derivative содержа FD, и поле Inverse содержа FI.

Пользовательская функция связи (см. Пользовательская функция связи)

Пример: 'Link','probit'

Типы данных: char | string | single | double | cell

Максимальное допустимое количество итераций, указанное как пара, разделенная запятыми, состоящая из 'MaxIter' и положительный целочисленный скаляр.

Если алгоритм выполняется MaxIter итерации до достижения допуска сходимости RelTolзатем функция прекращает итерацию и возвращает предупреждающее сообщение.

Функция может возвращать более одного предупреждения, когда NumLambda больше, чем 1.

Пример: 'MaxIter',1e3

Типы данных: single | double

Количество повторений Монте-Карло для перекрестной проверки, указанное как пара, разделенная запятыми, состоящая из 'MCReps' и положительный целочисленный скаляр.

  • Если CV является 'resubstitution' или cvpartition типа 'resubstitution', то MCReps должно быть 1.

  • Если CV является cvpartition типа 'holdout', то MCReps должно быть больше, чем 1.

Пример: 'MCReps',2

Типы данных: single | double

Количество Lambda ценности lassoglm использует, когда вы не поставляете Lambda, указанная как пара, разделенная запятыми, состоящая из 'NumLambda' и положительный целочисленный скаляр. lassoglm может вернуть меньше, чем NumLambda подходит, если отклонение посадок падает ниже пороговой доли нулевого отклонения (отклонение посадок без каких-либо предикторов X).

Пример: 'NumLambda',150

Типы данных: single | double

Дополнительная предикторная переменная, указанная как пара, разделенная запятыми, состоящая из 'Offset' и числовой вектор с тем же количеством строк, что и X. lassoglm функция сохраняет значение коэффициента Offset фиксируется при 1.0.

Типы данных: single | double

Параметр для параллельной перекрестной проверки и указания случайных потоков, указанных как пара, разделенная запятыми, состоящая из 'Options' и структура. Для этого параметра требуется Toolbox™ параллельных вычислений.

Создать Options структура с statset. Поля опций:

  • UseParallel - Установить на true для параллельного вычисления. Значение по умолчанию: false.

  • UseSubstreams - Установить на true вычислять параллельно воспроизводимым образом. Для воспроизводимости, установка Streams к типу, допускающему субпотоки: 'mlfg6331_64' или 'mrg32k3a'. Значение по умолчанию: false.

  • Streams - A RandStream объект или массив ячеек, состоящий из одного такого объекта. Если не указать Streams, то lassoglm использует поток по умолчанию.

Пример: 'Options',statset('UseParallel',true)

Типы данных: struct

Имена переменных предиктора в порядке их появления в X, указанная как пара, разделенная запятыми, состоящая из 'PredictorNames' и строковый массив или массив ячеек символьных векторов.

Пример: 'PredictorNames',{'Height','Weight','Age'}

Типы данных: string | cell

Порог сходимости для алгоритма снижения координат [3], определяемый как разделенная запятыми пара, состоящая из 'RelTol' и положительный скаляр. Алгоритм завершается, когда последовательные оценки вектора коэффициентов отличаются в L2 норме на относительную величину, меньшую, чем RelTol.

Пример: 'RelTol',2e–3

Типы данных: single | double

Флаг для стандартизации данных предиктора X перед подгонкой моделей, указанных как пара, разделенная запятыми, состоящая из 'Standardize' и либо true или false. Если Standardize является true, то X данные масштабируются так, чтобы иметь нулевое среднее значение и дисперсию, равную единице. Standardize влияет на то, применяется ли регуляризация к коэффициентам в стандартизированной шкале или к исходной шкале. Результаты всегда представлены в исходной шкале данных.

Пример: 'Standardize',false

Типы данных: logical

Веса наблюдения, указанные как разделенная запятыми пара, состоящая из 'Weights' и неотрицательный вектор. Weights имеет длину n, где n - количество строк X. По крайней мере два значения должны быть положительными.

Типы данных: single | double

Выходные аргументы

свернуть все

Подгоняемые коэффициенты, возвращаемые в виде числовой матрицы. B - матрица p-by-L, где p - количество предикторов (столбцов) в X, и L - число Lambda значения. Можно указать количество Lambda значения с использованием NumLambda аргумент пары имя-значение.

Коэффициент, соответствующий члену перехвата, является полем в FitInfo.

Типы данных: single | double

Информация о соответствии обобщенных линейных моделей, возвращенная в виде структуры с полями, описанными в этой таблице.

Поле в FitInfoОписание
InterceptПересечение члена β0 для каждой линейной модели, 1-по-L вектору
LambdaЛямбда-параметры в порядке возрастания, 1-по-L вектору
AlphaЗначение Alpha параметр, скаляр
DFКоличество ненулевых коэффициентов в B для каждого значения Lambda, a 1-по-L вектору
Deviance

Отклонение установленной модели для каждого значения Lambda, a 1-по-L вектору

Если модель проходит перекрестную проверку, то значения для Deviance представляют предполагаемое отклонение модели, применяемой к новым данным, рассчитанное путем перекрестной проверки. В противном случае Deviance - отклонение подгоняемой модели, применяемое к данным, используемым для подгонки.

PredictorNamesЗначение PredictorNames параметр, хранящийся как массив ячеек символьных векторов

Если установить CV аргумент пары имя-значение для перекрестной проверки, FitInfo содержит эти дополнительные поля.

Поле в FitInfoОписание
SEСтандартная ошибка Deviance для каждого Lambda, как вычислено во время перекрестной проверки, 1-по-L вектору
LambdaMinDevianceLambda значение с минимальным ожидаемым отклонением, рассчитанное путем перекрестной проверки, скаляр
Lambda1SEСамый большой Lambda значение такое, что Deviance находится в пределах одной стандартной ошибки минимума, скаляра
IndexMinDevianceИндекс Lambda со значением LambdaMinDeviance, скаляр
Index1SEИндекс Lambda со значением Lambda1SE, скаляр

Подробнее

свернуть все

Функция связи

Функция связи f (λ) отображает распределение со средним λ на линейную модель с данными X и вектором коэффициентов b, используя формулу

f (λ) = Xb.

Формулы для функций связи можно найти в Link описание аргумента пары имя-значение. В этой таблице перечислены функции связи, которые обычно используются для каждого распределения.

Семейство дистрибуторовФункция связи по умолчаниюДругие типовые функции связи
'normal''identity' 
'binomial''logit''comploglog', 'loglog', 'probit'
'poisson''log' 
'gamma''reciprocal' 
'inverse gaussian'–2 

Лассо

Для неотрицательного значения λ, lassoglm решает проблему

minβ0, β (1NDeviance (β0, β) +λ∑j=1p'βj|).

  • Функция Deviance в этом уравнении является отклонением модели, подгоняемой под отклики с использованием перехвата β0 и коэффициентов предиктора β. Формула отклонения зависит от distr параметр, который вы предоставляете lassoglm. Минимизация λ-пенализованного отклонения эквивалентна максимизации λ-пенализованного логарифма.

  • N - количество наблюдений.

  • λ - неотрицательный параметр регуляризации, соответствующий одному значению Lambda.

  • Параметры β0 и β являются скаляром и вектором длины p соответственно.

По мере увеличения λ количество ненулевых компонентов β уменьшается.

Проблема лассо включает в себя L1 норму β, что контрастирует с алгоритмом упругой сетки.

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

Для α строго между 0 и 1 и неотрицательным λ упругая сетка решает проблему

minβ0, β (1NDeviance (β0, β) + λ Pα (β)),

где

(β) = (1 α) 2‖β‖22+α‖β‖1=∑j=1p ((1 α) 2βj2 + α 'βj |).

Эластичная сетка такая же, как у лассо, когда α = 1. Для других значений α штрафной член (β) интерполируется между L1 нормой β и квадратной L2 нормой β. Когда α сжимается к 0, эластичная сетка приближаетсяridge регрессия.

Ссылки

[1] Тибширани, Р. «Регрессионная усадка и отбор через Лассо». Журнал Королевского статистического общества. Серия B, т. 58, № 1, 1996, стр. 267-288.

[2] Цзоу, H. и Т. Хэсти. «Регуляризация и выбор переменных через эластичную сеть». Журнал Королевского статистического общества. Серия B, т. 67, № 2, 2005, стр. 301-320.

[3] Фридман, Дж., Р. Тибширани и Т. Хасти. «Пути регуляризации для обобщенных линейных моделей через спуск по координатам». Журнал статистического программного обеспечения. Том 33, № 1, 2010. https://www.jstatsoft.org/v33/i01

[4] Хасти, Т., Р. Тибширани и Дж. Фридман. Элементы статистического обучения. 2-е издание. Нью-Йорк: Спрингер, 2008.

[5] Добсон, А. Дж. Введение в обобщенные линейные модели. 2-е издание. Нью-Йорк: Chapman & Hall/CRC Press, 2002.

[6] Маккалла, П. и Дж. А. Нелдер. Обобщенные линейные модели. 2-е издание. Нью-Йорк: Chapman & Hall/CRC Press, 1989.

[7] Коллетт, D. Моделирование двоичных данных. 2-е издание. Нью-Йорк: Chapman & Hall/CRC Press, 2003.

Расширенные возможности

Представлен в R2012a