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


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 λλ=0∑i=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)=p−dfdf

λ(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 =−1001e−16
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.