Serbestlik derecesi ve girdi matrisi verilen sırt regresyonunda düzenlenme parametresi nasıl hesaplanır?


11

A bağımsız değişkenlerin matrisi, B bağımlı değerlerin karşılık gelen matrisi olsun. Sırt regresyon olarak, bir parametre tanımlamak böylece: . Şimdi [usv] = svd (A) ve 's' diyagonal girişini yapalım . serbestlik derecelerini (df) = . Ridge regresyon düşük varyans bileşenlerinin katsayıları ve dolayısıyla parametre küçülür için kontroller freedom.So derecelerinxpnx1λβ=(birTbir+λben)-1birTBdben=benthΣben=1n(dben)2(dben)2+λλλ=0normal regresyon söz konusu olduğunda, df = n ve dolayısıyla tüm bağımsız değişkenler dikkate alınacaktır. Karşılaştığım sorun 'df' ve matris 's' verilen değerini bulmaktır . Yukarıdaki denklemi yeniden düzenlemeye çalıştım ama kapalı bir form çözümü elde edemedim. Lütfen yararlı işaretçiler sağlayın.λ


Eh ihtiyaç zamanı (muhtemelen başkalarının size yardım etmek için daha hızlı olacaktır) bu cevap, ancak çoğu anlayışlar alınabilir stat.lsa.umich.edu/~kshedden/Courses/Stat600/Notes/... Ve ne tanımında bir şekilde özlediğim için özgürlük dereceleri . λkλ
Dmitrij Celov

@Dmitrij: Yanıt için teşekkürler, soruları güncelledim ve 'k' yerineλ
Amit

Merhaba Amit, düzenlenme parametresini hesaplamadan önce serbestlik derecelerinin ne olduğunu nasıl bilebilirsiniz?
Baz

Yanıtlar:


9

Bir Newton-Raphson / Fisher-puanlama / Taylor-serisi algoritması buna uygundur.

Bu çözme denklemi sahip için ile türevi Sonra şunu elde edersiniz: h ( λ ) = p i = 1 d 2 iλ sa

h(λ)=Σben=1pdben2dben2+λ-df=0
sa(λ)sa(λ(0))+(λ-λ(0))sa
hλ=-Σben=1pdben2(dben2+λ)2
h(λ)h(λ(0))+(λ-λ(0))hλ|λ=λ(0)=0

için yeniden düzenleme : Bu yinelemeli aramayı ayarlar. İlk başlangıç ​​değerleri için, toplamda olduğunu varsayalım , elde edersiniz .λ = λ ( 0 ) - [ saλ

λ=λ(0)-[hλ|λ=λ(0)]-1h(λ(0))
dben2=1λ(0)=p-dfdf

λ(j+1)=λ(j)+[Σben=1pdben2(dben2+λ(j))2]-1[Σben=1pdben2dben2+λ(j)-df]

Bu doğru yönde "gider" ( toplama çok büyük olduğunda artırın , çok küçük olduğunda azaltın) ve tipik olarak çözülmesi için sadece birkaç tekrarlama gerekir. Ayrıca işlev monotoniktir ( bir artış / azalma her zaman toplamı azaltır / artırır), böylece benzersiz bir şekilde birleşir (yerel maksimum yok).λλ


thnx çok, ama şüphesiz neden varsaymalıyız , çünkü onların doğru değerleri zaten var ... Bir matlab kodu yazarak bu formülü kontrol ettim ve bu varsayımı almadım , ama iyi çalışıyor ve doğru çözüm veriyordben2=1
Amit

Varsayım sadece ' nın başlangıç ​​değerini doğru değere getirmektir. Daha iyi bir tahmininiz varsa, bununla başlayın. D'leriniz sıfırdan büyük olduğu sürece bile yapabilirsiniz . D algoritmaları sadece algoritmayı başlatmak için iterasyonlarda 1 kabul edilmez. λ(0)λ(0)=0
olasılık

(+1) Yine de aynı sayısal çözümü verirdim.
Dmitrij Celov

6

Olasılıkla kanıtlanmış formüle dayanan küçük Matlab kodu:

function [lamda] = calculate_labda(Xnormalised,df)
    [n,p] = size(Xnormalised);   

    %Finding SVD of data
    [u s v]=svd(Xnormalised);
    Di=diag(s);
    Dsq=Di.^2;

    %Newton-rapson method to solve for lamda
    lamdaPrev=(p-df)/df;
    lamdaCur=Inf;%random large value
    diff=lamdaCur-lamdaPrev;   
    threshold=eps(class(XstdArray));    
    while (diff>threshold)          
        numerator=(sum(Dsq ./ (Dsq+lamdaPrev))-df);        
        denominator=sum(Dsq./((Dsq+lamdaPrev).^2));        
        lamdaCur=lamdaPrev+(numerator/denominator);        
        diff=lamdaCur-lamdaPrev;        
        lamdaPrev=lamdaCur;        
    end
    lamda=lamdaCur;
end

2
Yürü be!
olasılık

Deneme girişimi, while durumunun olması gerektiğini savunur while ( abs(diff)>threshold ).
gung - Monica'yı eski

while( abs(diff) > threshold )-1001e-16
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.