Я читал, что регрессия гребня может быть достигнута простым добавлением строк данных в исходную матрицу данных, где каждая строка создается с использованием 0 для зависимых переменных и квадратного корня из или нуля для независимых переменных. Затем добавляется одна дополнительная строка для каждой независимой переменной.
Мне было интересно, можно ли получить доказательства для всех случаев, в том числе для логистической регрессии или других GLM.
Ответы:
Ридж регрессии минимизирует .ΣNя = 1( уя- хTяβ)2+ λ ∑пJ = 1β2J
(Часто требуется постоянная, но не сокращенная. В этом случае она включается в и предикторы - но если вы не хотите сокращать ее, у вас нет соответствующей строки для псевдонаблюдения. Или если вы хотите , чтобы уменьшить его, вы делаете иметь строку для него. Я напишу его , как будто это не учитывается в р , и не сморщенные, так как это более сложный случай. другой случай тривиальное изменение от этого. )β п
Мы можем записать второе слагаемое как псевдонаблюдения, если мы можем записать каждое «y» и каждый из соответствующих ( p + 1 ) -векторов «x» так, чтобып ( р + 1 )
потом
Это работает для линейной регрессии. Это не работает для логистической регрессии, потому что обычная логистическая регрессия не минимизирует сумму квадратов невязок.
[Регрессия хребта - не единственное, что можно сделать с помощью таких уловок псевдонаблюдения - они встречаются в ряде других контекстов]
источник
Обобщение этого рецепта для GLM действительно не сложно, поскольку GLM обычно подходят с использованием итеративно переоцененных наименьших квадратов . Следовательно, в каждой итерации можно заменить обычный шаг взвешенных наименьших квадратов на шаг взвешенных наименьших квадратов, наложенный на ребро, чтобы получить GLM, наложенный на ребро. Фактически, в сочетании с адаптивными штрафами гребня этот рецепт используется, чтобы соответствовать штрафованным L0 GLM (или лучшему подмножеству, то есть GLM, где штрафуется общее количество ненулевых коэффициентов). Это было реализовано, например, в пакете l0ara , см. Этот документ и этот для деталей.
Стоит также отметить, что самый быстрый способ решения правильной регрессии гребня в замкнутой форме использует
для случая, где
n>=p
или используякогда
p>n
и для модели без перехвата.Это быстрее, чем использование рецепта увеличения строки , т.е.
Если вам понадобятся ограничения неотрицательности для ваших установленных коэффициентов, тогда вы можете просто сделать
что затем дает чуть более точный результат, чем
(и, строго говоря, только решение
nnls(A=crossprod(X)+diag(lambdas), b=crossprod(X,Y))$x
является правильным).Я еще не выяснил, как можно оптимизировать кейс с ограничением неотрицательности
p > n
- дайте мне знать, если кто-нибудь узнает, как это сделать ... [lmridge_nnls_largep = function (X, Y, lambda) t(X) %*% nnls(A=tcrossprod(X)+lambda*diag(nrow(X)), b=Y)$x
не работает]источник