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 идентифицирует и удаляет избыточные предикторы.

Создайте данные из модели Poisson и идентифицируйте важные предикторы при помощи 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 object. The axes object 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

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

Предскажите, получили ли студенты 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);

Выполните регуляризацию лассо для обобщенной линейной регрессии модели с 3-кратной перекрестной проверкой на обучающих данных. Примите значения в 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

Данные об ответе в виде числового вектора, логического вектора, категориального массива или 2D столбца числовая матрица.

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

  • Когда distr 'binomial'Y одно из следующего:

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

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

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

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

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

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

  • 'normal'

  • 'binomial'

  • 'poisson'

  • 'gamma'

  • 'inverse gaussian'

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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 это дает непустую модель. В этом случае, 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'

журнал (-журнал ((1 – µ))) = Xb

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

µ = Xb

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

регистрируйте (µ) = Xb

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

журнал (µ / (1 – µ)) = Xb

'loglog'

журнал (-журнал (µ)) = Xb

'probit'

Φ–1(µ) = Xb, где Φ является нормальной (Гауссовой) кумулятивной функцией распределения

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

µ–1 = Xb

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

µp = 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' и структура. Эта опция требует Parallel Computing 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

Типы данных: логический

Веса наблюдения в виде разделенной запятой пары, состоящей из '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Параметры lambda в порядке возрастания, 1- L вектор
AlphaЗначение Alpha параметр, скаляр
DFКоличество ненулевых коэффициентов в B для каждого значения Lambda, 1- L вектор
Deviance

Отклонение подобранной модели для каждого значения Lambda, 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 (μ) = X b.

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

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

Лассо

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

minβ0,β(1NОтклонение(β0,β)+λj=1p|βj|).

  • Функциональное Отклонение в этом уравнении является отклонением подгонки модели к ответам с помощью точки пересечения β 0 и коэффициенты предиктора β. Формула для Отклонения зависит от distr параметр вы предоставляете к lassoglm. Минимизация λ - оштрафованное отклонение эквивалентна максимизации λ - оштрафованная логарифмическая правдоподобность.

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

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

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

Когда λ увеличивается, количество ненулевых компонентов уменьшений β.

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

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

Для α строго между 0 и 1, и неотрицательный λ, эластичная сеть решает задачу

minβ0,β(1NОтклонение(β0,β)+λPα(β)),

где

Pα(β)=(1α)2β22+αβ1=j=1p((1α)2βj2+α|βj|).

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

Ссылки

[1] Tibshirani, R. “Уменьшение регрессии и Выбор через Лассо”. Журнал Королевского Статистического Общества. Серии B, Издание 58, № 1, 1996, стр 267–288.

[2] Цзоу, H. и Т. Хэсти. “Регуляризация и Выбор переменной через Эластичную Сеть”. Журнал Королевского Статистического Общества. Серии B, Издание 67, № 2, 2005, стр 301–320.

[3] Фридман, J., Р. Тибширэни и Т. Хэсти. “Пути к регуляризации для Обобщенных линейных Моделей через Координатный Спуск”. Журнал Статистического программного обеспечения. Издание 33, № 1, 2010. https://www.jstatsoft.org/v33/i01

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

[5] Добсон, A. J. Введение в Обобщенные линейные Модели. 2-й выпуск. Нью-Йорк: Chapman & Hall/CRC Press, 2002.

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

[7] Collett, D. Моделирование Двоичных данных. 2-й выпуск. Нью-Йорк: Chapman & Hall/CRC Press, 2003.

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

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