Ridge, satır büyütme kullanarak GLM'leri cezalandırdı mı?


12

Sırtı regresyonunun, her veri bağımlı değişkenler için 0 ve bağımsız değişkenler için k veya sıfırın kare kökü kullanılarak oluşturulduğu orijinal veri matrisine veri satırları eklenerek elde edilebileceğini okudum . Daha sonra her bağımsız değişken için bir satır eklenir.

Lojistik regresyon veya diğer GLM'ler de dahil olmak üzere tüm vakalar için bir kanıt elde etmenin mümkün olup olmadığını merak ediyordum.


Hayır, ben aldım ncss.com/wp-content/themes/ncss/pdf/Procedures/NCSS/... ve sayfa 335-4 kısaca bahsedildi
Kar tanesi

1
Orada yaptığınız yorumu sildiğim için üzgünüm. Cevabınızı görmeden ve silmeden önce yanılmış olduğuma karar verdim.
Glen_b

2
Statistics.stackexchange.com/questions/15991 adresinde bu sorunun hafif bir genellemesi sorulur ve yanıtlanır . Bu sorunun lojistik regresyon kısmına değinmediği için iki konuyu birleştirmek için oy vermiyorum.
whuber

GLMs olarak, tekrarlı yeniden ağırlıklandırmalı en küçük kareler kullanılarak uygun olan bwlewis.github.io/GLM ve böylece her bir yineleme biri içinde ağırlıklı en küçük kareler, bir sırt ceza GLM elde etmek için aşama ceza bir dişlisi ile normal ağırlıklı en küçük kareler adım subsitute olabilir. Aslında, adaptif sırt cezaları ile birlikte bu, L0 l0ara paketinde olduğu gibi GLMs cezalandırılmış sığacak görmek için kullanılır biodatamining.biomedcentral.com/articles/10.1186/... ve journals.plos.org/plosone/article?id=10.1371 /…
Tom Wenseleers

Yanıtlar:


14

Ridge regresyon minimize .i=1n(yixiTβ)2+λj=1pβj2

(Genellikle bir sabit gereklidir, ancak küçülmez. Bu durumda ve öngörücülere dahil edilir - ancak küçültmek istemiyorsanız, sahte gözlem için karşılık gelen bir satırınız yoktur. Eğer, bunu küçültmek istiyorsun yapmak bunun için bir satır var. içeri sayılmaz sanki ben bunu yazacağım p ve çekmiş değil daha karmaşık bir dava gibi. diğer bir husus bundan önemsiz bir değişikliktir. )βp

Her "y" yi ve karşılık gelen ( p + 1 ) -vektörlerin "x" her birini yazabiliyorsak, ikinci terimi sözde gözlem olarak yazabiliriz .p(p+1)

(yn+jxn+jTβ)2=λβj2,j=1,,p

Ancak muayene ile olsun, x n + j , j = √ olsunyn+j=0 ve diğer tümx n + j , k =0(tipik olarakx n + j , 0 =0 dahil) olsun.xn+j,j=λxn+j,k=0xn+j,0=0

Sonra

(yn+j-[xn+j,0β0+xn+j,1β1+xn+j,2β2+...+xn+j,pβp])2=λβj2

Bu doğrusal regresyon için çalışır. Lojistik regresyon için işe yaramaz, çünkü sıradan lojistik regresyon, toplam kare artıklarını en aza indirmez.

[Ridge regresyon, böyle sahte gözlem hileleriyle yapılabilecek tek şey değil - bir dizi başka bağlamda ortaya çıkıyorlar]


Teşekkürler, zaten lojistik regresyondan her şeyi yeniden yazmakla uğraşıyordum, ancak sadece sahte veri yöntemini uygulayamadım. Ve imkansız olduğunu söyleyebilmek için kendi yeteneklerime yeterince güvenmiyorum.
Kar Tanesi

En azından öyle olduğunu sanmıyorum. Olabilirlik fonksiyonuna bir kez daha bakacağım.
Glen_b

3
+1 Diğer ilgili regresyon hileleri , diğerleri arasında stats.stackexchange.com/a/32753 ve stats.stackexchange.com/a/26187 adreslerindeki yanıtlarda tanıtılmaktadır .
whuber

GLM'ler, bwlewis.github.io/GLM'de olduğu gibi, yinelemeli olarak yeniden ağırlıklandırılmış en küçük kareler kullanılarak uygundur ve böylece her bir yinelemede, bir sırt cezalandırılmış GLM elde etmek için düzenli ağırlıklı en küçük kareler adımı, bir sırt cezalandırılmış ağırlıklı en az kareler adımı ile alt üstlenebilir. Aslında, adaptif sırt cezaları ile birlikte bu, L0 l0ara paketinde olduğu gibi GLMs cezalandırılmış sığacak görmek için kullanılır biodatamining.biomedcentral.com/articles/10.1186/... ve journals.plos.org/plosone/article?id=10.1371 /…
Tom Wenseleers

@TomWenseleers teşekkürler, evet, bu tam mantıklı
Glen_b -Restate Monica

0

Bu tarifi GLM'lere genellemek zor değildir çünkü GLM'ler genellikle tekrarlı olarak yeniden ağırlıklandırılmış en küçük kareler kullanılarak sığar . Bu nedenle, her bir yinelemede, bir sırt cezalandırılan GLM elde etmek için bir sırt cezalandırılan ağırlıklı en küçük kareler adımı ile düzenli ağırlıklı en küçük kareler adımı azaltılabilir. Aslında, uyarlanabilir sırt cezalarıyla birlikte bu tarif L0 cezalandırılmış GLM'lerine (en iyi alt küme, yani toplam sıfır olmayan katsayı sayısının cezalandırıldığı GLM'ler) sığdırmak için kullanılır. Bu, örneğin l0ara paketinde uygulanmıştır , ayrıntılar için bu belgeye ve buna bakın.

Ayrıca düzenli bir sırt regresyonunu çözmenin en hızlı kapalı form yolunun kullandığını da belirtmek gerekir.

lmridge_solve = function (X, y, lambda, intercept = TRUE) {
  if (intercept) {
    lambdas = c(0, rep(lambda, ncol(X)))
    X = cbind(1, X)
  } else { lambdas = rep(lambda, ncol(X)) }
  solve(crossprod(X) + diag(lambdas), crossprod(X, y))[, 1]
}

nerede n>=pveya kullanıldığında

lmridge_solve_largep = function (X, Y, lambda) (t(X) %*% solve(tcrossprod(X)+lambda*diag(nrow(X)), Y))[,1]

p>nkesişme olmadan bir model için ne zaman ve ne için.

Bu, satır büyütme tarifini kullanmaktan daha hızlıdır , yani

lmridge_rbind = function (X, y, lambda, intercept = TRUE) {
  if (intercept) {
    lambdas = c(0, rep(lambda, ncol(X)))
    X = cbind(1, X)
  } else { lambdas = rep(lambda, ncol(X)) }
  qr.solve(rbind(X, diag(sqrt(lambdas))), c(y, rep(0, ncol(X))))
}

Takılı katsayılarınızda olumsuzluk kısıtlamalarına ihtiyaç duyarsanız,

library(nnls)

nnlmridge_solve = function (X, y, lambda, intercept = TRUE) {
  if (intercept) {
    lambdas = c(0, rep(lambda, ncol(X)))
    X = cbind(1, X)
  } else { lambdas = rep(lambda, ncol(X)) }
  nnls(A=crossprod(X)+diag(lambdas), b=crossprod(X,Y))$x
}

bu da btw'den biraz daha doğru sonuç verir.

nnlmridge_rbind = function (X, y, lambda, intercept = TRUE) {
  if (intercept) {
    lambdas = c(0, rep(lambda, ncol(X)))
    X = cbind(1, X)
  } else { lambdas = rep(lambda, ncol(X)) }
  nnls(A=rbind(X,diag(sqrt(lambdas))), b=c(Y,rep(0,ncol(X))))$x 
}

(ve kesinlikle çözüm nnls(A=crossprod(X)+diag(lambdas), b=crossprod(X,Y))$x o zaman doğru çözümdür ).

Olumsuzluk sınırlaması olan davanın dava için nasıl daha da optimize edilebileceğini henüz p > nanlamadım - bunun nasıl yapılacağını bilen biri olursa bana bildirin ... [ lmridge_nnls_largep = function (X, Y, lambda) t(X) %*% nnls(A=tcrossprod(X)+lambda*diag(nrow(X)), b=Y)$xişe yaramaz]

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.