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

Зеленая круговая и пунктирная линия определяет местоположение 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);

Функция правильно предсказывает 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

Вес лассо (L 1) по сравнению с гребнем (L 2) оптимизация в виде разделенной запятой пары, состоящей из '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.

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

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

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

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

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

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

Порог сходимости для координатного алгоритма спуска [3] в виде разделенной запятой пары, состоящей из 'RelTol' и положительная скалярная величина. Алгоритм останавливается, когда последовательные оценки вектора коэффициентов отличаются по L 2 нормы относительной суммой меньше, чем 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, соответственно.

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

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

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

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

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

где

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

Эластичная сеть совпадает с лассо когда α = 1. Для других значений α термин штрафа (β) интерполирует между L 1 норму β и 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