स्वतंत्रता और इनपुट मैट्रिक्स की डिग्री दी गई रिज रिग्रेशन में नियमितीकरण पैरामीटर की गणना कैसे करें?


11

आज्ञा देना एक मैट्रिक्स का स्वतंत्र चर और B निर्भर मूल्यों का इसी n × 1 मैट्रिक्स है। रिज प्रतिगमन में, हम एक पैरामीटर को परिभाषित λ : इतना है कि β = ( ए टी ए + λ मैं ) - 1 ए टी बी । अब चलो [usv] = svd (A) और d i = i t h विकर्ण 's' का प्रवेश। हम स्वतंत्रता (DF) = की डिग्री को परिभाषित Σ n मैं = 1 ( घ मैं ) 2n×pn×1λβ=(ATA+λI)−1ATBdi=ith । रिज प्रतिगमन निम्न-विचरण घटकों के गुणांक को सिकोड़ता है और इसलिए पैरामीटरλस्वतंत्रता की डिग्री को नियंत्रित करता है।λ=0 के लिए। जो सामान्य प्रतिगमन, df = n का मामला है, और इसलिए सभी स्वतंत्र चर पर विचार किया जाएगा। मैं जिस समस्या का सामना कर रहा हूं वह हैλदिए गए 'df' और मैट्रिक्स 's'का मान ज्ञात करना। मैंने उपरोक्त समीकरण को फिर से व्यवस्थित करने की कोशिश की है, लेकिन एक बंद फॉर्म समाधान नहीं मिल रहा है। कृपया कोई मददगार संकेत प्रदान करें।∑i=1n(di)2(di)2+λλλ=0λ


वैसे मुझे इसका जवाब देने के लिए समय चाहिए (शायद अन्य लोग आपकी सहायता करने के लिए तेज होंगे), लेकिन अधिकांश अंतर्दृष्टि stat.lsa.umich.edu/~kshedden/Courses/Stat600/Notes/… से ली जा सकती है और इसकी परिभाषा में क्या है स्वतंत्रता की डिग्री, क्योंकि मैं किसी भी तरह λ को याद करता हूं । kλ
— पापेल सेलोव

@Dmitrij: जवाब के लिए Thnx, मैंने सवालों को अद्यतन किया है, और साथ 'k' को प्रतिस्थापित किया हैλ
— अमित

हाय अमित, आप कैसे जान सकते हैं कि नियमितीकरण पैरामीटर की गणना करने से पहले स्वतंत्रता की डिग्री क्या है?
— बाज

जवाबों:


9

न्यूटन-रफसन / फिशर-स्कोरिंग / टेलर-सीरीज़ एल्गोरिथ्म इसके अनुकूल होगा।

आप को हल करने के लिए समीकरण है ज ( λ ) = पी Σ मैं = 1 घ 2 मैंλ व्युत्पन्न साथ ∂ज

h(λ)=∑i=1pdi2di2+λ−df=0
फिर आप मिल: ज(λ)≈ज(λ(0))+(λ-λ(0))∂ज
∂h∂λ=−∑i=1pdi2(di2+λ)2
h(λ)≈h(λ(0))+(λ−λ(0))∂h∂λ|λ=λ(0)=0

λ

λ=λ(0)−[∂h∂λ|λ=λ(0)]−1h(λ(0))
di2=1λ(0)=p−dfdf

λ(j+1)=λ(j)+[∑i=1pdi2(di2+λ(j))2]−1[∑i=1pdi2di2+λ(j)−df]

λλ


di2=1

λ(0)λ(0)=0

(+1) मैं वैसे भी एक ही संख्यात्मक समाधान दूंगा।
— पापेल सेलोव

6

यहाँ छोटा Matlab कोड है जो प्रायोरैसोलॉजिक द्वारा सिद्ध किए गए सूत्र पर आधारित है:

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
टीम चलो!
— probabilityislogic

एक प्रयास संपादक का तर्क है कि जबकि स्थिति होनी चाहिए while ( abs(diff)>threshold )।
— गूँग - मोनिका

while( abs(diff) > threshold )−1001e−16
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.