วิธีการคำนวณพารามิเตอร์การทำให้เป็นมาตรฐานในการถดถอยริดจ์ที่กำหนดองศาอิสระและเมทริกซ์อินพุต?


11

ให้ A เป็น matrix ของตัวแปรอิสระและ B เป็น matrix ที่สอดคล้องกันของค่าที่ขึ้นต่อกัน ในการถดถอยสันเขาเรากำหนดพารามิเตอร์เพื่อให้: B ตอนนี้ให้ [usv] = svd (A) และรายการแนวทแยงมุมของ 's' เรากำหนดองศาอิสระ (DF) =แลมบ์ดา} การถดถอยของริดจ์ลดขนาดของค่าสัมประสิทธิ์ของส่วนประกอบความแปรปรวนต่ำดังนั้นพารามิเตอร์จะควบคุมองศาอิสระดังนั้นสำหรับn×pλ บีตา= ( T + λ ฉัน) - 1 T B วันที่ฉัน = ฉันทีเอช Σ n ฉัน= 1 ( d ฉัน ) 2n×1λβ=(ATA+λI)1ATBdi=ith λλ=0i=1n(di)2(di)2+λλλ=0ซึ่งเป็นกรณีของการถดถอยปกติ df = n และดังนั้นตัวแปรอิสระทั้งหมดจะถูกพิจารณา ปัญหาที่ฉันเผชิญคือการหาค่าของได้รับ 'df' และเมทริกซ์ 's' ฉันพยายามจัดเรียงสมการใหม่อีกครั้ง แต่ไม่ได้รับการแก้ปัญหาแบบปิด โปรดระบุพอยน์เตอร์ที่เป็นประโยชน์ใด ๆλ


ดีฉันจำเป็นต้องใช้เวลาในการตอบคำถามนี้ (คนอื่น ๆ อาจจะได้เร็วขึ้นเพื่อช่วยให้คุณ) แต่ข้อมูลเชิงลึกมากที่สุดอาจจะนำมาจากstat.lsa.umich.edu/~kshedden/Courses/Stat600/Notes/...และสิ่งที่ในความหมายของ ดีกรีอิสระเนื่องจากฉันคิดถึงอย่างใด λkλ
Dmitrij Celov

@Dmitrij: ขอบคุณสำหรับการตอบกลับฉันได้อัปเดตคำถามและแทนที่ 'k' ด้วยλ
Amit

สวัสดี Amit คุณจะรู้ได้อย่างไรว่าองศาอิสระคืออะไรก่อนการคำนวณพารามิเตอร์การทำให้เป็นมาตรฐาน
Baz

คำตอบ:


9

อัลกอริทึมของ Newton-Raphson / Fisher-score / Taylor-series จะเหมาะสมกับสิ่งนี้

คุณมีสมการที่แก้สำหรับ มีอนุพันธ์ จากนั้นคุณจะได้รับ: h ( λ ) = p i = 1 d 2 iλ h

h(λ)=i=1pdi2di2+λdf=0
ชั่วโมง(λ)h(λ(0))+(λ-λ(0))h
hλ=i=1pdi2(di2+λ)2
h(λ)h(λ(0))+(λλ(0))hλ|λ=λ(0)=0

จัดใหม่สำหรับคุณได้รับ: นี่เป็นการตั้งค่าการค้นหาซ้ำ สำหรับค่าเริ่มต้นเริ่มต้นสมมติในผลบวกแล้วคุณจะได้รับ{}λ = λ ( 0 ) - [ ชั่วโมงλd 2 i =1λ(0)=p-df

λ=λ(0)[hλ|λ=λ(0)]1h(λ(0))
di2=1λ(0)=pdfdf

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

"ไป" ในทิศทางที่ถูกต้อง (เพิ่มเมื่อผลรวมมีขนาดใหญ่เกินไปลดลงเมื่อเล็กเกินไป) และโดยทั่วไปใช้เวลาเพียงไม่กี่ครั้งในการแก้ปัญหา ฟังก์ชั่นเพิ่มเติมคือเสียงโมโนโทนิก (การเพิ่ม / ลดในจะลด / เพิ่มผลรวมเสมอ) ดังนั้นมันจะมาบรรจบกันโดยไม่ซ้ำกัน (ไม่มี maxima ท้องถิ่น)λλ


ขอบคุณมาก แต่ฉันมีข้อสงสัยว่าทำไมเราต้องถือว่าเนื่องจากเรามีค่าที่ถูกต้องแล้ว ... ฉันตรวจสอบสูตรนี้ด้วยการเขียนโค้ด matlab และไม่ได้สันนิษฐานว่า แต่มันใช้งานได้ดีและให้ทางออกที่ถูกต้องdi2=1
Amit

สมมติฐานคือการรับค่าเริ่มต้นของ "ใกล้พอ" ถึงค่าที่ถูกต้อง หากคุณมีการคาดเดาที่ดีกว่าให้เริ่มจากตรงนั้น คุณสามารถตั้งค่าตราบใดที่ค่าของคุณมากกว่าศูนย์ d จะไม่ถือว่า 1 ในการวนซ้ำเพียงเพื่อให้ได้อัลกอริทึมเริ่มต้น λ(0)λ(0)=0
ความน่าจะเป็นทาง

(+1) ฉันจะให้วิธีแก้ปัญหาเชิงตัวเลขแบบเดียวกันอยู่ดี
Dmitrij Celov

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


while ( abs(diff)>threshold )บรรณาธิการพยายามระบุว่าสภาพในขณะที่ควรจะเป็น
gung - Reinstate Monica

ฉันกำลังโพสต์ข้อความนี้เป็นคำตอบอื่นสำหรับรหัสที่โพสต์โดย @Amit ฉันขอแนะนำให้เปรียบเทียบการเกณฑ์ในwhile( abs(diff) > threshold )เพราะความอดทนสำหรับความแตกต่างควรสามารถเข้าถึงได้จากทั้งด้านซ้ายและด้านขวา ตัวอย่างเช่นสมมติ diff =และ threshold =1001e16
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.