การถดถอยของสันเขาไร้ประโยชน์ในมิติที่สูง ( ) หรือไม่? OLS จะล้มเหลวได้อย่างไร


50

พิจารณาปัญหาการถดถอยที่ดีเก่ากับพยากรณ์และขนาดของกลุ่มตัวอย่างnภูมิปัญญาปกติคือตัวประมาณค่า OLS จะ overfit และโดยทั่วไปแล้วจะดีกว่าโดยตัวประมาณถดถอยสัน:มันเป็นมาตรฐานที่จะใช้การตรวจสอบข้ามที่จะหาที่ดีที่สุด regularization พารามิเตอร์\ที่นี่ฉันใช้ CV 10 เท่า ปรับปรุงการชี้แจง:เมื่อ , โดย "OLS ตัวประมาณ" ฉันเข้าใจ "ตัวประมาณค่าต่ำสุด - บรรทัดฐาน OLS" ที่กำหนดโดยpβ = ( X X + λ ฉัน) - 1 X Y λn

β^=(XX+λI)1Xy.
λβ OLS = ( X X ) + X Y = X + Yn<p
β^OLS=(XX)+Xy=X+y.

ฉันมีชุดข้อมูลที่มีและp>พยากรณ์ทั้งหมดอยู่ในมาตรฐานและมีค่อนข้างน้อยที่ (คนเดียว) สามารถทำผลงานที่ดีในการทำนายYถ้าฉันเลือก small-ish สุ่มพูดว่าจำนวนผู้ทำนายฉันจะได้กราฟ CV ที่สมเหตุสมผล: ค่ามากของให้ผลเป็นศูนย์ R-squared, ค่าเล็ก ๆ ของให้ผลลบ R-squared (เพราะ จาก overfitting) และมีบางสูงสุดในระหว่าง สำหรับเส้นโค้งจะมีลักษณะใกล้เคียงกัน อย่างไรก็ตามสำหรับมีขนาดใหญ่กว่านั้นเช่นฉันไม่ได้รับค่าสูงสุดเลย: เส้นโค้งที่ราบสูงซึ่งหมายความว่า OLS ด้วยn=80p>1000yp=50<nλλp=100>npp=1000λ0ประสิทธิภาพดีเท่าที่ถดถอยสันกับที่ดีที่สุด\λ

ป้อนคำอธิบายรูปภาพที่นี่

เป็นไปได้อย่างไรและมันพูดเกี่ยวกับชุดข้อมูลของฉันอย่างไร ฉันขาดอะไรบางอย่างที่เห็นได้ชัดหรือไม่ วิธีการอาจจะมีความแตกต่างเชิงคุณภาพระหว่างและระบุว่าทั้งสองมีขนาดใหญ่กว่า ?p=100p=1000n

OLS แบบ norm น้อยที่สุดภายใต้เงื่อนไขใดสำหรับไม่เหมาะ?n<p


อัปเดต:มีความไม่เชื่อในความคิดเห็นดังนั้นนี่คือตัวอย่างการใช้glmnetซ้ำ ฉันใช้ Python แต่ผู้ใช้ R จะปรับเปลี่ยนรหัสได้อย่างง่ายดาย

%matplotlib notebook

import numpy as np
import pylab as plt
import seaborn as sns; sns.set()

import glmnet_python    # from https://web.stanford.edu/~hastie/glmnet_python/
from cvglmnet import cvglmnet; from cvglmnetPlot import cvglmnetPlot

# 80x1112 data table; first column is y, rest is X. All variables are standardized
mydata = np.loadtxt('../q328630.txt')   # file is here https://pastebin.com/raw/p1cCCYBR
y = mydata[:,:1]
X = mydata[:,1:]

# select p here (try 1000 and 100)
p = 1000

# randomly selecting p variables out of 1111
np.random.seed(42)
X = X[:, np.random.permutation(X.shape[1])[:p]]

fit = cvglmnet(x = X.copy(), y = y.copy(), alpha = 0, standardize = False, intr = False, 
               lambdau=np.array([.0001, .001, .01, .1, 1, 10, 100, 1000, 10000, 100000]))
cvglmnetPlot(fit)
plt.gcf().set_size_inches(6,3)
plt.tight_layout()

ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่


2
@Dohnson ไม่มีการล้อเล่น CV แบบ 10 เท่าปกติหมายถึงชุดฝึกอบรมแต่ละชุดมี n = 72 และชุดทดสอบแต่ละชุดมี n = 8
อะมีบากล่าวว่า Reinstate Monica

2
นั่นอยู่ไกลจากประวัติย่อปกติ ระบุว่าจะมีใครคาดหวังอะไรเช่นผลลัพธ์ที่ตรวจพบ
Mike Hunter

3
@Dohnson ฉันไม่เข้าใจว่าทำไมคุณถึงพูดแบบนี้อยู่ไกลจากปกติ นี่คือสิ่งที่ CV 10 เท่า
อะมีบาพูดว่า Reinstate Monica

2
@ seanv507 ฉันเห็น ฉันแนะนำให้นิยาม "solution with lambda = 0" เป็น "minimal-norm solution กับ lambda = 0" ฉันเดาว่าคำถามของฉันสามารถจัดรูปแบบใหม่ได้ดังนี้: ภายใต้เงื่อนไขใดโซลูชัน OLS แบบนอร์มัลน้อยที่สุดที่มี n <p overfit เปรียบเทียบกับไม่มากเกินไป?
อะมีบาพูดว่า Reinstate Monica

3
@amoeba: ขอบคุณสำหรับคำถามนี้ มันได้ให้คำแนะนำและน่าสนใจอย่างมากจนถึงขณะนี้
usεr11852พูดว่า Reinstate Monic

คำตอบ:


23

กูธรรมชาติที่เกิดขึ้นเพราะการปรากฏตัวขององค์ประกอบขนาดเล็กจำนวนมากในทางทฤษฎี PCA ของxส่วนประกอบขนาดเล็กเหล่านี้ถูกใช้โดยปริยายเพื่อให้พอดีกับเสียงโดยใช้ค่าสัมประสิทธิ์ขนาดเล็ก เมื่อใช้ norm norm ต่ำสุด OLS คุณจะพอดีกับเสียงที่มีส่วนประกอบอิสระขนาดเล็กจำนวนมากและสิ่งนี้มีเอฟเฟ็กต์การทำให้เป็นมาตรฐานเทียบเท่ากับการทำให้เป็นสันปกติ กูนี้มักจะเป็นแรงเกินไปและมันก็เป็นไปได้ที่จะชดเชยโดยใช้ "ต่อต้านกู" รู้ว่าเป็นเชิงลบริดจ์ ในกรณีที่คุณจะเห็นต่ำสุดของเส้นโค้ง MSE ปรากฏขึ้นสำหรับค่าลบของ\λxλ

ตามทฤษฎี PCA ฉันหมายถึง:

ให้การกระจายตัวแบบหลายตัวแปร มี isometry เชิงเส้นเช่นโดยที่คือเส้นทแยงมุม: ส่วนประกอบของเป็นอิสระ จะได้รับเพียงโดย diagonalizing \f u = f ( x ) N ( 0 , D ) D u D ΣxN(0,Σ)fu=f(x)N(0,D)DuDΣ

ตอนนี้แบบจำลองสามารถเขียนได้ (เชิงเส้นแบบเชิงเส้นเก็บรักษาผลิตภัณฑ์ dot) ถ้าคุณเขียนรุ่นที่สามารถเขียน การ yนอกจากนี้วิธีการจึงเหมาะสมเช่นริดจ์หรือ OLS บรรทัดฐานขั้นต่ำ isomorphic อย่างสมบูรณ์แบบ: ประมาณการของ เป็นภาพโดย ของประมาณการของการ yy=β.x+ϵy=f(β).f(x)+ϵγ=f(β)y=γ.u+ϵβ=γy=γ.u+ϵfy=β.x+ϵ

ทฤษฎี PCA แปลงตัวทำนายที่ไม่เป็นอิสระให้เป็นตัวทำนายอิสระ มันมีความสัมพันธ์อย่างหลวม ๆ กับ PCA เชิงประจักษ์ซึ่งคุณใช้เมทริกซ์ความแปรปรวนร่วมเชิงประจักษ์ (ซึ่งแตกต่างจากทฤษฎีที่มีขนาดตัวอย่างน้อยมาก) Theoretical PCA นั้นไม่สามารถคำนวณได้จริง แต่ใช้เพื่อตีความโมเดลในพื้นที่ทำนายมุมฉากเท่านั้น

มาดูกันว่าจะเกิดอะไรขึ้นเมื่อเราผนวกตัวทำนายเล็ก ๆ น้อย ๆ หลายตัวเข้ากับโมเดล

ทฤษฎีบท

สันเขาสม่ำเสมอด้วยสัมประสิทธิ์เทียบเท่า (เมื่อ ) ไปที่:λp

  • เพิ่มปลอมพยากรณ์อิสระ (ศูนย์กลางและกระจายเหมือนกัน) แต่ละคนมีความแปรปรวนpλp
  • เหมาะสมกับรูปแบบการตกแต่งด้วยตัวประมาณค่ามาตรฐาน OLS ขั้นต่ำ
  • การรักษาเฉพาะพารามิเตอร์สำหรับตัวทำนายที่แท้จริง

(ร่างของ) พิสูจน์

เราจะพิสูจน์ว่าฟังก์ชันต้นทุนมีความเท่าเทียมกันเชิงเส้นกำกับ ขอแบ่งรูปแบบการเข้าพยากรณ์จริงและปลอม:x ฟังก์ชันต้นทุนของ Ridge (สำหรับตัวทำนายที่แท้จริง) สามารถเขียนได้:y=βx+βx+ϵ

costλ=β2+1λyXβ2

เมื่อใช้ norm norm ขั้นต่ำ OLS การตอบสนองจะได้รับการติดตั้งอย่างสมบูรณ์แบบ: ข้อผิดพลาดคือ 0 ฟังก์ชันต้นทุนนั้นเกี่ยวกับบรรทัดฐานของพารามิเตอร์เท่านั้น สามารถแบ่งออกเป็นพารามิเตอร์จริงและของปลอม:

costλ,p=β2+inf{β2Xβ=yXβ}

ในการแสดงออกที่ถูกต้องแก้ปัญหาบรรทัดฐานขั้นต่ำจะได้รับจาก:

β=X+(yXβ)

ตอนนี้ใช้ SVD สำหรับ :X

X=UΣV

X+=VΣ+U

เราจะเห็นว่าบรรทัดฐานของเป็นหลักขึ้นอยู่กับค่าเอกพจน์ที่มีส่วนกลับของค่าเอกพจน์ของ X'รุ่นปกติคือX' ฉันได้ดูวรรณกรรมและค่าเอกพจน์ของเมทริกซ์สุ่มขนาดใหญ่เป็นที่รู้จักกันดี สำหรับและใหญ่พอและสูงสุด ค่าเอกพจน์เป็นค่าประมาณ (ดูทฤษฎีบท 1.1 ):βX+XXp/λXpnsminsmax

smin(p/λX)p(1n/p)
smax(p/λX)p(1+n/p)

ตั้งแต่ขนาดใหญ่ ,มีแนวโน้มต่อ 0, เราก็สามารถพูดได้ว่าค่าเอกพจน์ทั้งหมดจะถูกห้วงพี ดังนั้น:pn/pp

β1λyXβ

สุดท้าย:

costλ,pβ2+1λyXβ2=costλ

หมายเหตุ : ไม่สำคัญว่าคุณเก็บค่าสัมประสิทธิ์ของตัวทำนายปลอมในแบบจำลองของคุณหรือไม่ ความแปรปรวนที่แนะนำโดยคือ เบต้า) ดังนั้นคุณจะเพิ่ม MSE ของคุณด้วยตัวคูณเท่านั้นซึ่งมีแนวโน้มไปที่ 1 อยู่ดี ยังไงก็เถอะคุณไม่จำเป็นต้องปฏิบัติต่อผู้ทำนายที่แตกต่างไปจากของจริงβxλpβ21pyXβ2npMSE(β)1+n/p

ตอนนี้กลับไปที่ข้อมูลของ @ amoeba หลังจากใช้ทฤษฎีเชิง PCA ถึง (ถือว่าเป็นเรื่องปกติ)จะถูกแปลงโดย isometry เชิงเส้นเป็นตัวแปรซึ่งส่วนประกอบมีความเป็นอิสระและเรียงลำดับตามลำดับความแปรปรวนลดลง ปัญหาเทียบเท่าปัญหาเปลี่ยนUxxuy=βx+ϵy=γu+ϵ

ทีนี้ลองนึกถึงความแปรปรวนของส่วนประกอบต่าง ๆ :

ป้อนคำอธิบายรูปภาพที่นี่

พิจารณาหลายของส่วนประกอบที่ผ่านมาเรียกผลรวมของความแปรปรวนของพวกเขา\พวกเขาแต่ละคนมีความแปรปรวนโดยประมาณเท่ากับและเป็นอิสระ พวกเขาเล่นบทบาทของผู้ทำนายปลอมในทฤษฎีบทpλλ/p

ความจริงนี้ชัดเจนในแบบจำลองของ @ jonny: มีเพียงองค์ประกอบแรกของ PCA เชิงทฤษฎีที่มีความสัมพันธ์กับ (เป็นสัดส่วน ) และมีความแปรปรวนอย่างมาก ส่วนประกอบอื่น ๆ ทั้งหมด (สัดส่วนกับ ) มีความแปรปรวนค่อนข้างน้อยมาก (เขียนเมทริกซ์ความแปรปรวนร่วมและทแยงมุมเพื่อดูสิ่งนี้) และเล่นบทบาทของนักทำนายปลอม ผมคำนวณว่ากูที่นี่สอดคล้อง (ประมาณ.) ไปก่อนบนในขณะที่ความจริง{p} นี่มันเกินจริงไปแน่ ๆ นี่คือความจริงที่ว่า MSE สุดท้ายนั้นใหญ่กว่า MSE ในอุดมคติมาก ผลการทำให้เป็นมาตรฐานนั้นแรงเกินไปyx¯xix¯N(0,1p2)γ1γ12=1p

บางครั้งเป็นไปได้ที่จะปรับปรุงการทำให้เป็นมาตรฐานตามธรรมชาติของริดจ์ ครั้งแรกที่คุณต้องใช้ในทฤษฎีบทนั้นมีขนาดใหญ่มาก (1,000, 10,000 ... ) เพื่อต่อสู้กับ Ridge อย่างจริงจังและความละเอียดของก็เหมือนการไม่แน่ชัด แต่มันก็ยังแสดงให้เห็นว่าริดจ์เป็นการทำให้เป็นมาตรฐานเพิ่มเติมผ่านการทำให้เป็นปกติโดยปริยายที่มีอยู่ตามธรรมชาติและสามารถมีผลเพียงเล็กน้อยเท่านั้น บางครั้งการทำให้เป็นธรรมชาติตามธรรมชาตินี้แรงเกินไปและริดจ์อาจไม่ได้รับการปรับปรุง มากกว่านี้จะดีกว่าที่จะใช้ต่อต้านการทำให้เป็นปกติ: สันเขาที่มีค่าสัมประสิทธิ์เชิงลบ สิ่งนี้แสดง MSE สำหรับโมเดลของ @ jonny ( ) โดยใช้ :ppp=1000λR

ป้อนคำอธิบายรูปภาพที่นี่


2
+1 ดีมากขอบคุณที่เขียนสิ่งนี้ ฉันคิดว่ามันเป็นสิ่งสำคัญที่จะต้องชี้แจงว่าเมื่อคุณพูดว่า "การทำให้เป็นมาตรฐาน" คุณหมายถึงการ (เช่นสันเขา) ใคร ๆ ก็หวังว่าเชือกลวดหรือยางยืดสามารถทำตัวได้ดีกว่าและนั่นคือสิ่งที่ผู้คนใช้ในสถานการณ์ไม่มีใครใช้สันเขาบริสุทธิ์ในสภาพแวดล้อมเช่นนี้และคำแนะนำมาตรฐานคือการใช้การทำให้เป็นระเบียบบังคับใช้การจัดเรียง ดังนั้นพฤติกรรมของสันเขาบริสุทธิ์อาจมีผลประโยชน์ทางวิชาการเท่านั้น ถึงกระนั้นมันก็ค่อนข้างน่าอัศจรรย์ที่เราดูเหมือนจะค้นพบที่นี่ ทำไมถึงไม่รู้จักกันดี? L2np
อะมีบาพูดว่า Reinstate Monica

1
ไม่ดียากรหัสสัดส่วนกับ 2 ขอโทษฉันไม่ได้เวลาสำหรับสิ่งที่เหมาะสม จุดสนใจหลักของฉันคือพฤติกรรมของ min-norm OLS เพื่อดูว่ามันแตกต่างจากตัวอย่างของคุณและ "การทำให้เป็นมาตรฐานไม่ดีเท่า" ใน 40 ครั้งแรกนั้นดีกว่าอย่างรุนแรง λσ2
เบอนัวต์ซานเชซ

3
ฉันคิดว่าฉันเข้าใจความลึกลับแล้ว: การทำให้เป็นแนวสันเขาด้วยสัมประสิทธิ์เทียบเท่ากับ min-norm OLS เพิ่มตัวทำนายปลอมแต่ละตัวที่มีความแปรปรวน (asymptotically สำหรับขนาดใหญ่) ในข้อมูลของคุณและโมเดลของ Johny มันเกิดขึ้นโดยไม่ต้องทำอะไรเลยเพราะส่วนประกอบความแปรปรวนต่ำสุดจาก PCA ตอนนี้ผมต้องใช้เวลาที่จะหาวิธีที่จะอธิบายเรื่องนี้อย่างชัดเจน ...λpλ/pp
เบอนัวต์ Sanchez

1
ฉันชี้แจงประเด็นเล็ก ๆ : ค่าสัมประสิทธิ์ของผู้ทำนายปลอมไม่เพิ่มข้อผิดพลาดมากนัก (ดูหมายเหตุท้ายบทพิสูจน์) เป็นสิ่งสำคัญเพราะใน data / jonny ของคุณจะถูกเก็บไว้อย่างหลีกเลี่ยงไม่ได้
เบอนัวต์ซานเชซ

3
ฉันลองริดจ์เชิงลบ ฉันไม่อยากจะเชื่อเลย แต่มันใช้งานได้ !!! (และไม่เพียง แต่ในรุ่นของจอนนี่ ... )
เบอนัวต์ซานเชซ

16

ขอบคุณทุกคนสำหรับการสนทนาที่ยอดเยี่ยม ประเด็นสำคัญของเรื่องนี้ดูเหมือนจะเป็นไปได้ว่าOLS แบบขั้นต่ำนั้นกำลังทำการหดตัวได้อย่างมีประสิทธิภาพซึ่งคล้ายกับการถดถอยของสันเขา นี้ดูเหมือนว่าจะเกิดขึ้นเมื่อใดก็ตามที่n กระแทกแดกดันเพิ่มบริสุทธิ์ทำนายเสียงสามารถใช้เป็นรูปแบบแปลกมากหรือ normalizationpn


ส่วนที่ 1 การสาธิตด้วยข้อมูลเทียมและ CV วิเคราะห์

@ จอนนี่ (+1) มาพร้อมกับตัวอย่างง่ายๆจริง ๆ ที่ฉันจะปรับตัวที่นี่เล็กน้อย ของขนาดและจะมีการสร้างดังกล่าวว่าตัวแปรทั้งหมดจะเสียนกับหน่วยความแปรปรวนและความสัมพันธ์ระหว่างแต่ละทำนายและการตอบสนองเป็น\ฉันจะแก้ไข\Xn×pyρρ=.2

ฉันจะใช้ CV แบบปล่อยครั้งเดียวเพราะมีการแสดงออกเชิงวิเคราะห์สำหรับข้อผิดพลาดกำลังสอง: มันถูกเรียกว่า PRESS "ผลรวมของสี่เหลี่ยมที่ทำนาย" ที่เป็นส่วนที่เหลือและคือ หมวกเมทริกซ์ในแง่ของ SVD Xสิ่งนี้อนุญาตให้ทำซ้ำผลลัพธ์ของ @ Jonny โดยไม่ต้องใช้และไม่มีการตรวจสอบข้ามจริง (ฉันวางแผนอัตราส่วนของ PRESS ต่อผลรวมของกำลังสองของ ):

PRESS=i(ei1Hii)2,
ei
e=yy^=yHy,
H
H=X(XX+λI)1X=US2S2+λU
X=USVglmnety

ป้อนคำอธิบายรูปภาพที่นี่

วิธีการวิเคราะห์นี้จะช่วยให้การคำนวณวงเงินที่0 การเสียบเข้ากับสูตร PRESS นั้นไม่ทำงาน: เมื่อและ , ค่าตกค้างทั้งหมดจะเป็นศูนย์และเมทริกซ์ของหมวกเป็นเมทริกซ์เอกลักษณ์กับตัวบนเส้นทแยงมุมซึ่งหมายความว่าเศษส่วนใน PRESS สมการไม่ได้กำหนด แต่ถ้าเราคำนวณวงเงินที่แล้วมันจะสอดคล้องกับการแก้ปัญหาขั้นต่ำบรรทัดฐาน OLS กับ 0λ0λ=0n<pλ=0λ0λ=0

เคล็ดลับคือการขยายตัวของหมวกเมทริกซ์เทย์เลอร์เมื่อ : นี่ผมแนะนำแกรมเมทริกซ์USλ0

H=U11+λ/S2UU(1λ/S2)U=IλUS2U=IλG1.
G=XX=US2U

เราใกล้จะเสร็จแล้ว:แลมบ์ดาถูกยกเลิกไปดังนั้นที่นี่เรามีค่า จำกัด ฉันพล็อตมันด้วยจุดสีดำขนาดใหญ่บนรูปด้านบน (บนพาเนลที่ ) และมันจับคู่อย่างสมบูรณ์แบบ

PRESS=i(λ[G1y]iλGii1)2=i([G1y]iGii1)2.
p>n

อัปเดต 21 ก.พ.สูตรข้างต้นแน่นอน แต่เราสามารถรับข้อมูลเชิงลึกโดยทำการประมาณเพิ่มเติม ดูเหมือนว่ามีค่าประมาณเท่ากันในแนวทแยงแม้ว่าจะมีค่าไม่เท่ากันมาก (อาจเป็นเพราะผสมค่าลักษณะเฉพาะทั้งหมดเข้าด้วยกัน) ดังนั้นสำหรับแต่ละคนเรามีโดยที่วงเล็บเหลี่ยมแสดงถึงค่าเฉลี่ย การใช้การประมาณนี้เราสามารถเขียนใหม่ได้:การประมาณนี้แสดงในรูปด้านบนด้วยวงกลมเปิดสีแดงG1SUiGii1S2

PRESSS2S2Uy2.

ไม่ว่าจะมีขนาดใหญ่กว่าหรือเล็กกว่าขึ้นอยู่กับค่าเอกพจน์Sในการจำลองนี้มีความสัมพันธ์กับพีซีเครื่องแรกของดังนั้นมีขนาดใหญ่และเงื่อนไขอื่น ๆ ทั้งหมดมีขนาดเล็ก (ในข้อมูลจริงของฉันยังถูกทำนายโดยพีซีชั้นนำด้วย) ตอนนี้ในกรณีหากคอลัมน์ของสุ่มแบบสุ่มเพียงพอค่าเอกพจน์ทั้งหมดจะค่อนข้างใกล้กัน (แถวประมาณ มุมฉาก) คำว่า "main"y2=Uy2SyXU1yypnXU1yจะถูกคูณด้วยปัจจัยที่มีค่าน้อยกว่า 1 คำต่อท้ายจะได้รับการคูณด้วยปัจจัยที่มีขนาดใหญ่กว่า 1 แต่ไม่ใหญ่กว่ามาก โดยรวมจะลดลงตามปกติ ในทางตรงกันข้ามในกรณีจะมีค่าเอกพจน์น้อยมาก หลังจากผกผันพวกเขาจะกลายเป็นปัจจัยใหญ่ที่จะเพิ่มบรรทัดฐานโดยรวมpn

[ข้อโต้แย้งนี้เป็นคลื่นมาก ฉันหวังว่ามันจะแม่นยำยิ่งขึ้น]

ตามการตรวจสอบสติถ้าฉันสลับลำดับของค่าเอกพจน์จากS = diag(flipud(diag(S)));นั้น MSE ที่คาดการณ์จะสูงกว่าทุกที่ในแผงที่ 2 และ 31

figure('Position', [100 100 1000 300])
ps = [10, 100, 1000];

for pnum = 1:length(ps)
    rng(42)
    n = 80;
    p = ps(pnum);
    rho = .2;
    y = randn(n,1);
    X = repmat(y, [1 p])*rho + randn(n,p)*sqrt(1-rho^2);

    lambdas = exp(-10:.1:20);
    press = zeros(size(lambdas));
    [U,S,V] = svd(X, 'econ');
    % S = diag(flipud(diag(S)));   % sanity check

    for i = 1:length(lambdas)
        H = U * diag(diag(S).^2./(diag(S).^2 + lambdas(i))) * U';
        e = y - H*y;
        press(i) = sum((e ./ (1-diag(H))).^2);
    end

    subplot(1, length(ps), pnum)
    plot(log(lambdas), press/sum(y.^2))
    hold on
    title(['p = ' num2str(p)])
    plot(xlim, [1 1], 'k--')

    if p > n
        Ginv = U * diag(diag(S).^-2) * U';
        press0 = sum((Ginv*y ./ diag(Ginv)).^2);
        plot(log(lambdas(1)), press0/sum(y.^2), 'ko', 'MarkerFaceColor', [0,0,0]);

        press0approx = sum((diag(diag(S).^-2/mean(diag(S).^-2)) * U' * y).^2);
        plot(log(lambdas(1)), press0approx/sum(y.^2), 'ro');
    end
end

ส่วนที่สอง การเพิ่มเครื่องทำนายเสียงบริสุทธิ์เป็นรูปแบบของการทำให้เป็นมาตรฐาน

การโต้เถียงที่ดีเกิดขึ้นโดย @Jonny, @Benoit, @Paul, @Dikran และคนอื่น ๆ ที่การเพิ่มจำนวนผู้ทำนายจะหดตัวลง OLS norm ขั้นต่ำ แน่นอนเมื่อตัวทำนายใหม่ใด ๆ สามารถลดบรรทัดฐานของวิธีแก้ปัญหาขั้นต่ำสุดได้ ดังนั้นการเพิ่มผู้ทำนายจะผลักดันบรรทัดฐานลงค่อนข้างคล้ายกับวิธีการถดถอยของสันเขาเป็นการลงโทษบรรทัดฐานp>n

สิ่งนี้สามารถใช้เป็นกลยุทธ์การทำให้เป็นมาตรฐานได้หรือไม่? เราเริ่มต้นด้วยและจากนั้นให้เพิ่มตัวทำนายเสียงบริสุทธิ์เป็นความพยายามในการทำให้เป็นปกติ ฉันจะทำ LOOCV และเปรียบเทียบกับ LOOCV สำหรับสันเขา (คำนวณตามข้างต้น) โปรดทราบว่าหลังจากได้รับบนตัวพยากรณ์ฉัน "ตัดทอน" ที่เพราะฉันสนใจเฉพาะตัวทำนายดั้งเดิมเท่านั้นn=80p=40qβ^p+qp

ป้อนคำอธิบายรูปภาพที่นี่

มันได้ผล!!!

อันที่จริงแล้วเราไม่จำเป็นต้อง "ตัดทอน" เบต้า แม้ว่าฉันจะใช้ตัวทดสอบเบต้าเต็มและตัวคาดเดาแบบเต็มฉันก็จะได้ประสิทธิภาพที่ดี (เส้นประบนแผนย่อยด้านขวา) สิ่งนี้ฉันคิดว่าเลียนแบบข้อมูลจริงของฉันในคำถาม: มีผู้ทำนายเพียงไม่กี่คนเท่านั้นที่คาดการณ์จริง ๆแล้วพวกเขาส่วนใหญ่เป็นเสียงที่บริสุทธิ์และพวกเขาใช้เป็นเกณฑ์ ในระบอบการปกครองนี้การทำให้เป็นแนวปกติเพิ่มเติมไม่ได้ช่วยอะไรเลยp+qy

rng(42)
n = 80;
p = 40;
rho = .2;
y = randn(n,1);
X = repmat(y, [1 p])*rho + randn(n,p)*sqrt(1-rho^2);

lambdas = exp(-10:.1:20);
press = zeros(size(lambdas));
[U,S,V] = svd(X, 'econ');

for i = 1:length(lambdas)
    H = U * diag(diag(S).^2./(diag(S).^2 + lambdas(i))) * U';
    e = y - H*y;
    press(i) = sum((e ./ (1-diag(H))).^2);
end

figure('Position', [100 100 1000 300])
subplot(121)
plot(log(lambdas), press/sum(y.^2))
hold on
xlabel('Ridge penalty (log)')
plot(xlim, [1 1], 'k--')
title('Ridge regression (n=80, p=40)')
ylim([0 2])

ps = [0 20 40 60 80 100 200 300 400 500 1000];
error = zeros(n, length(ps));
error_trunc = zeros(n, length(ps));
for fold = 1:n
    indtrain = setdiff(1:n, fold);
    for pi = 1:length(ps)
        XX = [X randn(n,ps(pi))];
        if size(XX,2) < size(XX,1)
            beta = XX(indtrain,:) \ y(indtrain,:);
        else
            beta = pinv(XX(indtrain,:)) * y(indtrain,:);
        end
        error(fold, pi) = y(fold) - XX(fold,:) * beta;
        error_trunc(fold, pi) = y(fold) - XX(fold,1:size(X,2)) * beta(1:size(X,2));
    end
end

subplot(122)
hold on
plot(ps, sum(error.^2)/sum(y.^2), 'k.--')
plot(ps, sum(error_trunc.^2)/sum(y.^2), '.-')
legend({'Entire beta', 'Truncated beta'}, 'AutoUpdate','off')
legend boxoff
xlabel('Number of extra predictors')
title('Extra pure noise predictors')
plot(xlim, [1 1], 'k--')
ylim([0 2])

@MartijnWeterings ในการทดลองนี้ฉันเริ่มต้นด้วย n = 80 และ p = 40 เมื่อจำนวนทั้งหมดของตัวทำนาย (p + q) เข้าใกล้ n = 80 ปัญหาจะกลายเป็นปัญหาที่ไม่ดี มีข้อผิดพลาดจำนวนมากอย่างมากรอบ ๆ q = 40 ทันทีที่ p + q> n ข้อ จำกัด "ขั้นต่ำ - ปกติ" จะเริ่มต้นขึ้นและข้อผิดพลาดจะเริ่มลดลง แต่จะใช้เวลาสักครู่จนกว่าจะกลับไปที่ที่เดิมเป็น q = 0 มันเกิดขึ้นประมาณ q = 70 คือ p + q = 130 หลังจากนั้นข้อผิดพลาดจะลดลงยิ่งขึ้นและส่วนนี้ของพล็อตจะคล้ายกับพล็อตการถดถอยสัน มันสมเหตุสมผลหรือไม่
อะมีบาพูดว่า Reinstate Monica

@MartijnWeterings ในความคิดเห็นที่ 1: เราอยู่ในหน้าเดียวกัน ในความคิดเห็นที่ 2: ในคำถามของฉันฉันไม่ได้ตัดทอนเบต้านั่นถูกต้อง แต่ที่จริงแล้วถ้าฉันไม่ตัดทอนเบต้าในแบบจำลองของฉัน (ใช้y(fold) - XX(fold,:) * betaแทนXX(fold,1:size(X,2)) * beta(1:size(X,2))) ผลลัพธ์ก็จะไม่เปลี่ยนแปลงมากเกินไป ฉันเดาว่าฉันควรจะเพิ่มคำตอบของฉัน ฉันคิดว่าข้อมูลดั้งเดิมของฉันแสดงพฤติกรรมแบบนี้
อะมีบาพูดว่า Reinstate Monica

(1/2): ฉันยังคงดำเนินการผ่านความคิดเห็นและรหัสทั้งหมดเพื่อทำความเข้าใจ แต่มีความคิดเกิดขึ้นกับฉัน: มีความสัมพันธ์ระหว่างปรากฏการณ์นี้ที่เรากำลังสังเกตอยู่หรือไม่และความสัมพันธ์ระหว่างการถดถอยสันและผลแบบสุ่มหรือไม่
Ryan Simmons

(2/2): ตามคำตอบของRandelionsที่นี่ ( stats.stackexchange.com/questions/122062/ … ) เราจะเห็นการประเมินที่เทียบเท่าระหว่างเอฟเฟกต์แบบสุ่มและการถดถอยริดจ์โดยที่แลมบ์ดาเท่ากับอัตราส่วนของส่วนที่เหลือต่อความแปรปรวนของ ผลแบบสุ่ม ที่นี่ตามคำตอบของเบอนัวต์ซานเชซเราจะเห็นว่าการถดถอยของสันเขานั้นเทียบเท่ากับการเพิ่มจำนวนผู้ทำนายอิสระปลอมแต่ละคนที่มีความแปรปรวนเท่ากับฟังก์ชั่นแลมบ์ดาและจำนวนพารามิเตอร์ ดูเหมือนว่าฉันจะมีความสัมพันธ์ทางความคิด
Ryan Simmons

@ amoeba มันเป็นความผิดพลาด การเพิ่มเวกเตอร์สเกล y ในเมทริกซ์ X จะทำให้ปกติค่อนข้าง แต่ไม่เหมือนกับการถดถอยของริดจ์หรือเวกเตอร์เสียง แต่มันทำให้ฉันสงสัยว่าเกิดอะไรขึ้นเมื่อเราลบเล็กน้อยจากแต่ละ x เพื่อให้ตัวแปรทุกตัวมีความสัมพันธ์เชิงลบเล็กน้อย (หรือบวกน้อยกว่า) ด้วย y เวกเตอร์ นี้เพื่อดำเนินการปกติ 'ลบ' บางอย่าง เพื่อที่จะ 'เลิกทำ' การทำให้เป็นมาตรฐานของเวกเตอร์ 1000 ครั้ง (ในบางจุดมันอาจมากเกินไปดังที่คุณเห็นด้วยค่าสัมประสิทธิ์การปรับยอดสูงสุด / การปรับสมดุลที่เหมาะสมซึ่งตอนนี้เกือบจะอยู่นอกช่วง) y
Sextus Empiricus

15

นี่คือสถานการณ์ประดิษฐ์ที่เกิดขึ้น สมมติว่าตัวแปรทำนายแต่ละตัวเป็นสำเนาของตัวแปรเป้าหมายที่มีการใช้เสียงรบกวนแบบเกาส์จำนวนมาก แบบจำลองที่ดีที่สุดคือค่าเฉลี่ยของตัวแปรทำนายทั้งหมด

library(glmnet)
set.seed(1846)
noise <- 10
N <- 80
num.vars <- 100
target <- runif(N,-1,1)
training.data <- matrix(nrow = N, ncol = num.vars)
for(i in 1:num.vars){
  training.data[,i] <- target + rnorm(N,0,noise)
}
plot(cv.glmnet(training.data, target, alpha = 0,
               lambda = exp(seq(-10, 10, by = 0.1))))

MSE สำหรับแลมบ์ดาต่างๆพร้อมตัวทำนาย 100 ตัว

ตัวแปร 100 ตัวทำงานในลักษณะ "ปกติ": ค่าบวกของแลมบ์ดาบางค่าน้อยที่สุดจากข้อผิดพลาดตัวอย่าง

แต่เพิ่ม num.vars ในโค้ดด้านบนเป็น 1,000 และนี่คือพา ธ MSE ใหม่ (ฉันขยายไปสู่การเข้าสู่ระบบ (แลมบ์ดา) = -100 เพื่อโน้มน้าวตัวเอง

MSE สำหรับแลมบ์ดาต่างๆพร้อมตัวทำนาย 1,000 ตัว

สิ่งที่ฉันคิดว่าเกิดขึ้น

เมื่อทำการปรับพารามิเตอร์จำนวนมากด้วยการทำให้เป็นมาตรฐานต่ำค่าสัมประสิทธิ์จะถูกกระจายแบบสุ่มรอบค่าที่แท้จริงด้วยความแปรปรวนสูง

เมื่อจำนวนผู้ทำนายมีขนาดใหญ่มาก "ค่าเฉลี่ยความคลาดเคลื่อน" จึงมีค่าเป็นศูนย์และจะดีกว่าถ้าปล่อยให้สัมประสิทธิ์ตกไปตรงจุดที่พวกมันอาจสรุปและรวมทุกอย่างได้มากกว่าที่จะให้อคติต่อ 0

ฉันแน่ใจว่าสถานการณ์ของการทำนายที่แท้จริงนี้เป็นค่าเฉลี่ยของการคาดการณ์ทั้งหมดไม่ใช่ครั้งเดียวที่เกิดขึ้น แต่ฉันไม่รู้ว่าจะเริ่มระบุเงื่อนไขที่จำเป็นที่สุดที่นี่ได้อย่างไร

แก้ไข:

พฤติกรรม "แบน" สำหรับแลมบ์ดาที่ต่ำมากจะเกิดขึ้นเสมอเนื่องจากโซลูชันกำลังแปรสภาพเป็นโซลูชั่น OLS ขั้นต่ำ ในทำนองเดียวกันเส้นโค้งจะแบนสำหรับแลมบ์ดาที่สูงมากเนื่องจากวิธีการแปลงเป็น 0 จะไม่มีขั้นต่ำถ้าหนึ่งในสองวิธีนั้นเหมาะสมที่สุด

เหตุใดโซลูชั่น OLS ขั้นต่ำสุดจึงเป็นสิ่งที่ดีในกรณีนี้ ฉันคิดว่ามันเกี่ยวข้องกับพฤติกรรมดังต่อไปนี้ที่ฉันพบว่าตอบโต้ได้ง่ายมาก แต่จากการไตร่ตรองทำให้มีเหตุผลอย่างมาก

max.beta.random <- function(num.vars){
  num.vars <- round(num.vars)
  set.seed(1846)
  noise <- 10
  N <- 80
  target <- runif(N,-1,1)
  training.data <- matrix(nrow = N, ncol = num.vars)

  for(i in 1:num.vars){
    training.data[,i] <- rnorm(N,0,noise)
  }
  udv <- svd(training.data)

  U <- udv$u
  S <- diag(udv$d)
  V <- udv$v

  beta.hat <- V %*% solve(S) %*% t(U) %*% target

  max(abs(beta.hat))
}


curve(Vectorize(max.beta.random)(x), from = 10, to = 1000, n = 50,
      xlab = "Number of Predictors", y = "Max Magnitude of Coefficients")

abline(v = 80)

พล็อตที่มีขนาดสูงสุดของสัมประสิทธิ์เป็นจำนวนของการทำนายที่เพิ่มขึ้น

ด้วยการทำนายที่สร้างแบบสุ่มซึ่งไม่เกี่ยวข้องกับการตอบสนองเมื่อ p เพิ่มค่าสัมประสิทธิ์จะมีขนาดใหญ่ขึ้น แต่เมื่อ p ใหญ่กว่า N มากพวกมันจะหดตัวเป็นศูนย์ สิ่งนี้เกิดขึ้นในตัวอย่างของฉัน วิธีแก้ปัญหาที่ไม่สม่ำเสมอสำหรับปัญหาเหล่านั้นไม่ต้องการการหดตัวเพราะมันมีขนาดเล็กมาก!

สิ่งนี้เกิดขึ้นด้วยเหตุผลเล็กน้อย สามารถแสดงออกตรงตามที่มีการรวมกันเชิงเส้นของคอลัมน์ของXเป็นเวกเตอร์ขั้นต่ำของค่าสัมประสิทธิ์ ในฐานะที่เป็นคอลัมน์ที่มีการเพิ่มบรรทัดฐานของต้องลดลงหรือคงที่เพราะการรวมกันเชิงเส้นที่เป็นไปได้คือการเก็บค่าสัมประสิทธิ์ก่อนหน้านี้เหมือนกันและตั้งค่าสัมประสิทธิ์ใหม่เพื่อ0yXβ^β^0


1
(+1) ปรากฏการณ์ดังกล่าวดูเหมือนจะเกิดขึ้นเมื่อตัวทำนายมีความสัมพันธ์กัน มันไม่ได้หมายความว่าเป็นทางการว่าเส้นโค้งข้อผิดพลาดไม่มีค่าต่ำสุดสำหรับค่าบวกและค่าขีด จำกัด ที่ 0 ไม่ใหญ่ มันก็หมายความว่าเส้นโค้งมีแนวโน้มที่จะกลายเป็นแบนและเกณฑ์สำหรับวิธีการขนาดเล็กจะต้องเป็นกูจะหยุดการทำงานที่มีแนวโน้มต่อ 0 ขนาดใหญ่หน้าที่นี่ขีด จำกัด นี้เกินขีด จำกัด การคำนวณ แต่คำตอบของ Firebug แนะนำว่าอาจมีอยู่เสมอ λλp
เบอนัวต์ซานเชซ

1
ทำไมคุณต้องมีการglmnetอัพเดท หากคุณต้องการโซลูชัน OLS norm ขั้นต่ำเท่านั้นมีสูตรโดยตรง (ดูสูตรที่ 2 ในคำถามของฉัน) และถ้ามีใครคำนวณ SVD ของสูตรนี้จะกลายเป็น . อาจมีฟังก์ชั่นใน R ที่คำนวณคำตอบนี้ แต่ฉันไม่รู้ R :)X=USVβ^=VS1Uy
amoeba พูดว่า Reinstate Monica

2
คิดเกี่ยวกับมันมากขึ้นก็ไม่น่าแปลกใจเลย สามารถแสดงออกตรงตามที่มีการรวมกันเชิงเส้นของเวกเตอร์ในXเป็นเวกเตอร์ของสัมประสิทธิ์ที่มีบรรทัดฐานที่เล็กที่สุด เมื่อคุณเพิ่มเวกเตอร์บรรทัดฐานของจะต้องลดลงหรือมีขนาดเท่าเดิมเพราะคุณสามารถรักษาค่าสัมประสิทธิ์เก่าไว้เหมือนเดิมและตั้งค่าใหม่เป็นศูนย์ yXβ^β^
จอนนี่โลมอนด์

3
ตัวอย่างเช่นจอนนี่เป็นหนึ่งที่ดีเพราะจะได้รับการวิเคราะห์แล้วดูเจมส์-Stein ประมาณการ เมื่อประมาณค่าเฉลี่ยของเวกเตอร์คงที่มีขนาด 3 ขึ้นไปเราสามารถปรับปรุงค่าเฉลี่ยอย่างง่ายโดยการให้น้ำหนักเฉลี่ยต่อศูนย์ซึ่งมากหรือน้อยกว่าการถดถอยของสันเขา ฉันสงสัยว่าอาจจะมีการปรับปรุงเล็กน้อยในกรณีนี้หรือไม่ θ
พอล

3
มันเป็นความจริงที่รู้จักกันดีว่าการถดถอยของสันเขานั้นเทียบเท่ากับการเพิ่มตัวอย่าง "ปลอม"พิเศษลงในชุดข้อมูลด้วยแต่ละตัวอย่างที่มีค่าในคุณลักษณะหนึ่งและศูนย์ทุกแห่งและการตอบสนองที่สอดคล้องกันทั้งหมดเป็นศูนย์ (มันไม่ค่อยสำคัญที่จะเขียนฟังก์ชั่นต้นทุน RR ใหม่ในแบบฟอร์มนี้) ตอนนี้ฉันสงสัยว่ามีวิธีเพิ่มฟีเจอร์พิเศษ(เช่นเสียงรบกวนที่บริสุทธิ์หรือไม่) ที่จะมีผลคล้ายกัน แน่นอนว่าการเพิ่มฟีเจอร์พิเศษหมายความว่าจะเพิ่มมิติของมัน แต่เราสามารถดูค่าของมันได้ที่ตัวทำนาย "ดั้งเดิม" เท่านั้น @Paulpλβ^
อะมีบาพูดว่า Reinstate Monica

6

ดังนั้นฉันจึงตัดสินใจใช้การตรวจสอบข้ามแบบซ้อนโดยใช้mlrแพ็คเกจเฉพาะใน R เพื่อดูว่าอะไรมาจากวิธีการสร้างแบบจำลอง

รหัส (ใช้เวลาสองสามนาทีในการเรียกใช้บนสมุดบันทึกธรรมดา)

library(mlr)
daf = read.csv("https://pastebin.com/raw/p1cCCYBR", sep = " ", header = FALSE)

tsk = list(
  tsk1110 = makeRegrTask(id = "tsk1110", data = daf, target = colnames(daf)[1]),
  tsk500 = makeRegrTask(id = "tsk500", data = daf[, c(1,sample(ncol(daf)-1, 500)+1)], target = colnames(daf)[1]),
  tsk100 = makeRegrTask(id = "tsk100", data = daf[, c(1,sample(ncol(daf)-1, 100)+1)], target = colnames(daf)[1]),
  tsk50 = makeRegrTask(id = "tsk50", data = daf[, c(1,sample(ncol(daf)-1, 50)+1)], target = colnames(daf)[1]),
  tsk10 = makeRegrTask(id = "tsk10", data = daf[, c(1,sample(ncol(daf)-1, 10)+1)], target = colnames(daf)[1])
)

rdesc = makeResampleDesc("CV", iters = 10)
msrs = list(mse, rsq)
configureMlr(on.par.without.desc = "quiet")
bm3 = benchmark(learners = list(
    makeLearner("regr.cvglmnet", alpha = 0, lambda = c(0, exp(seq(-10, 10, length.out = 150))),
    makeLearner("regr.glmnet", alpha = 0, lambda = c(0, exp(seq(-10, 10, length.out = 150))), s = 151)
    ), tasks = tsk, resamplings = rdesc, measures = msrs)

ผล

getBMRAggrPerformances(bm3, as.df = TRUE)
#   task.id    learner.id mse.test.mean rsq.test.mean
#1    tsk10 regr.cvglmnet     1.0308055  -0.224534550
#2    tsk10   regr.glmnet     1.3685799  -0.669473387
#3   tsk100 regr.cvglmnet     0.7996823   0.031731316
#4   tsk100   regr.glmnet     1.3092522  -0.656879104
#5  tsk1110 regr.cvglmnet     0.8236786   0.009315037
#6  tsk1110   regr.glmnet     0.6866745   0.117540454
#7    tsk50 regr.cvglmnet     1.0348319  -0.188568886
#8    tsk50   regr.glmnet     2.5468091  -2.423461744
#9   tsk500 regr.cvglmnet     0.7210185   0.173851634
#10  tsk500   regr.glmnet     0.6171841   0.296530437

โดยทั่วไปแล้วพวกเขาจะทำสิ่งเดียวกัน

แล้วลูกแกะที่ดีที่สุดล่ะ?

sapply(lapply(getBMRModels(bm3, task.ids = "tsk1110")[[1]][[1]], "[[", 2), "[[", "lambda.min")
# [1] 4.539993e-05 4.539993e-05 2.442908e-01 1.398738e+00 4.539993e-05
# [6] 0.000000e+00 4.539993e-05 3.195187e-01 2.793841e-01 4.539993e-05

สังเกตุว่าลูกแกะนั้นถูกแปลงสภาพแล้ว บางเท่าแม้กระทั่งเลือกแลมบ์ดาน้อยที่สุด0λ=0

ฉันเล่นเพิ่มอีกนิดด้วยglmnetและค้นพบว่าไม่มีแลมบ์ดาน้อยหยิบขึ้นมา ตรวจสอบ:

แก้ไข:

หลังจากความคิดเห็นของอะมีบามันก็ชัดเจนว่าเส้นทางการทำให้เป็นปกติเป็นขั้นตอนสำคัญในการglmnetประมาณค่าดังนั้นรหัสในตอนนี้จึงสะท้อนให้เห็น วิธีนี้ความแตกต่างส่วนใหญ่หายไป

cvfit = cv.glmnet(x = x, y = y, alpha = 0, lambda = exp(seq(-10, 10, length.out = 150)))
plot(cvfit)

ป้อนคำอธิบายรูปภาพที่นี่

ข้อสรุป

ดังนั้นโดยทั่วไปแล้วช่วยเพิ่มความพอดี ( แก้ไข: แต่ไม่มาก! )λ>0

เป็นไปได้อย่างไรและมันพูดเกี่ยวกับชุดข้อมูลของฉันอย่างไร? ฉันขาดอะไรบางอย่างที่เห็นได้ชัดหรือไม่

เราน่าจะใกล้เคียงกับการกระจายตัวจริงของการตั้งค่าข้อมูลให้มีค่าน้อยกว่าศูนย์ แม้ว่าจะไม่มีสิ่งใดที่ต่อต้านได้ง่ายเกี่ยวกับเรื่องนี้λ

แก้ไข: โปรดทราบว่าเส้นทางการทำให้เป็นมาตรฐานของสันเขาใช้การประมาณการพารามิเตอร์ก่อนหน้านี้เมื่อเราเรียกใช้glmnetแต่สิ่งนี้อยู่นอกเหนือความเชี่ยวชาญของฉัน หากเราlambdaแยกส่วนที่ต่ำมากออกไปก็จะทำให้ประสิทธิภาพลดลง

แก้ไข: การเลือกแลมบ์ดาพูดอะไรเพิ่มเติมเกี่ยวกับข้อมูลของคุณ เมื่อลูกแกะที่มีขนาดใหญ่ขึ้นลดประสิทธิภาพลงนั่นหมายถึงมีสิทธิพิเศษมากกว่าเช่นค่าสัมประสิทธิ์ในแบบจำลองของคุณเนื่องจากลูกแกะขนาดใหญ่หดตัวค่าสัมประสิทธิ์ทั้งหมดเป็นศูนย์ แม้ว่าหมายความว่าองศาอิสระที่มีประสิทธิผลในแบบจำลองของคุณนั้นเล็กกว่าองศาอิสระอย่างชัดเจน .λ0p

จะมีความแตกต่างเชิงคุณภาพระหว่าง p = 100 และ p = 1,000 อย่างไรทั้งสองมีขนาดใหญ่กว่า n

p=1000คงเส้นคงวามีอย่างน้อยเดียวกันของข้อมูลหรือแม้กระทั่งมากกว่าpp=100


ความคิดเห็น

ดูเหมือนว่าคุณจะได้รับขั้นต่ำเล็กน้อยสำหรับแลมบ์ดาที่ไม่ใช่ศูนย์ (ฉันกำลังดูรูปของคุณ) แต่เส้นโค้งยังคงแบนอยู่ทางด้านซ้ายของมัน ดังนั้นคำถามหลักของฉันยังคงเป็นสาเหตุที่λ→ 0 ไม่เหมาะอย่างเห็นได้ชัด ฉันยังไม่เห็นคำตอบที่นี่ คุณคาดหวังว่าสิ่งนี้จะเป็นปรากฏการณ์ทั่วไปหรือไม่? เช่นเดียวกับข้อมูลใด ๆ ที่มี n≪p แลมบ์ดา = 0 จะทำงานได้ดีและดีที่สุดแลมบ์ดาเกือบ หรือเป็นสิ่งที่พิเศษเกี่ยวกับข้อมูลเหล่านี้? หากคุณดูด้านบนในความคิดเห็นคุณจะเห็นว่าหลายคนไม่เชื่อฉันว่าเป็นไปได้

ฉันคิดว่าคุณกำลังตรวจสอบความถูกต้องของประสิทธิภาพการตรวจสอบกับประสิทธิภาพการทดสอบและการเปรียบเทียบดังกล่าวไม่ได้รับประกัน

แก้ไข: โปรดสังเกตว่าเมื่อเราตั้งค่าlambdaเป็น 0 หลังจากเรียกใช้ประสิทธิภาพของพา ธ การทำให้เป็นมาตรฐานทั้งหมดไม่ลดลงดังนั้นเส้นทางการทำให้เป็นมาตรฐานคือกุญแจสำคัญในการทำความเข้าใจว่าเกิดอะไรขึ้น!

นอกจากนี้ฉันไม่เข้าใจบรรทัดสุดท้ายของคุณ ดูที่เอาต์พุต cv.glmnet สำหรับ p = 100 มันจะมีรูปร่างที่แตกต่างกันมาก ดังนั้นสิ่งที่มีผลต่อรูปร่างนี้ (เส้นกำกับด้านซ้ายและไม่มีเส้นกำกับ) เมื่อ p = 100 หรือ p = 1,000

ลองเปรียบเทียบเส้นทางปกติสำหรับทั้งสอง:

fit1000 = glmnet(x, y, alpha = 0, lambda = exp(seq(-10,10, length.out = 1001)))
fit100 = glmnet(x[, sample(1000, 100)], y, alpha = 0, lambda = exp(seq(-10,10, length.out = 1001)))
plot(fit1000, "lambda")

ป้อนคำอธิบายรูปภาพที่นี่

x11()
plot(fit100, "lambda")

ป้อนคำอธิบายรูปภาพที่นี่

มันจะกลายเป็นชัดเจน affords สัมประสิทธิ์ขนาดใหญ่ที่เพิ่มแม้ว่าจะมีสัมประสิทธิ์ขนาดเล็กสำหรับสัน asymptotically-OLS ที่ด้านซ้ายของแปลงทั้งสอง โดยทั่วไปแล้วชุดที่ด้านซ้ายของกราฟและนั่นอาจอธิบายความแตกต่างในพฤติกรรมระหว่างพวกเขาp=1000λp=100

เป็นเรื่องยากสำหรับจะให้น้ำหนักมากเกินไปเพราะแม้ว่า Ridge จะลดค่าสัมประสิทธิ์เป็นศูนย์ แต่ก็ไม่เคยถึงศูนย์ นี่หมายความว่าพลังการทำนายของโมเดลนั้นใช้ร่วมกันระหว่างส่วนประกอบอื่น ๆ อีกมากมายทำให้ง่ายต่อการคาดเดาค่าเฉลี่ยแทนที่จะถูกรบกวนด้วยเสียงp=1000


+1 ขอบคุณที่ทำการทดลองเหล่านี้! ดูเหมือนว่าคุณจะได้รับขั้นต่ำเล็กน้อยสำหรับแลมบ์ดาที่ไม่ใช่ศูนย์ (ฉันกำลังดูรูปของคุณ) แต่เส้นโค้งยังคงแบนอยู่ทางด้านซ้ายของมัน ดังนั้นคำถามหลักของฉันยังคงเป็นเหตุผลว่าทำไมไม่เห็นด้วย ฉันยังไม่เห็นคำตอบที่นี่ คุณคาดหวังว่าสิ่งนี้จะเป็นปรากฏการณ์ทั่วไปหรือไม่? เช่นสำหรับข้อมูลใด ๆ ที่มีแลมบ์ดา = 0 จะทำงานได้ดีเกือบแลมบ์ดาหรือไม่ หรือเป็นสิ่งที่พิเศษเกี่ยวกับข้อมูลเหล่านี้? หากคุณดูด้านบนในความคิดเห็นคุณจะเห็นว่าหลายคนไม่เชื่อฉันว่าเป็นไปได้ λ0np
อะมีบาพูดว่า Reinstate Monica

นอกจากนี้ฉันไม่เข้าใจบรรทัดสุดท้ายของคุณ ดูที่cv.glmnetเอาต์พุตสำหรับ p = 100 มันจะมีรูปร่างที่แตกต่างกันมาก ดังนั้นสิ่งที่มีผลต่อรูปร่างนี้ (เส้นกำกับด้านซ้ายและไม่มีเส้นกำกับ) เมื่อ p = 100 หรือ p = 1,000
อะมีบาพูดว่า Reinstate Monica

คุณรู้หรือไม่ถ้าmlrเลือกlambda.minหรือlambda.1se(ในcv.glmnetคำศัพท์)?
อะมีบาพูดว่า Reinstate Monica

lambda.min@amoeba นอกจากนี้ยังมีregr.cvglmnetผู้เรียนซึ่งอาจอนุญาตให้หนึ่งเลือกกฎอื่น ๆ
Firebug

ขอบคุณ พูดตามตรงฉันไม่เข้าใจผลลัพธ์ของมาตรฐาน 1e-100 ของคุณ เช่น p = 1100 มันให้ MSE = 1.45 แต่ที่นี่ไม่มีการปรับพารามิเตอร์ไฮเปอร์พารามิเตอร์ในลูปภายในดังนั้นโดยทั่วไปเราไม่ต้องการลูป CV ภายในเลย หมายความว่าผลลัพธ์ควรเหมือนกับ CV ที่ไม่ซ้อนกันที่ lambda = 1e-100 แต่เราเห็นตัวเลขแรกว่า MSE มีประมาณ 0.7 มันไม่สมเหตุสมผลสำหรับฉัน
อะมีบาพูดว่า Reinstate Monica

5

OLS (มาตรฐานขั้นต่ำ) จะล้มเหลวได้อย่างไร?

ในระยะสั้น:

พารามิเตอร์การทดลองที่มีความสัมพันธ์กับพารามิเตอร์ (ไม่ทราบ) ในโมเดลจริงจะมีแนวโน้มที่จะถูกประเมินด้วยค่าสูงในขั้นตอนวิธี OLS fitting ขั้นต่ำที่น้อยที่สุด นั่นเป็นเพราะพวกเขาจะพอดีกับ 'รุ่น + เสียง' ในขณะที่พารามิเตอร์อื่น ๆ จะพอดีกับ 'เสียง' (ดังนั้นพวกเขาจะพอดีส่วนใหญ่ของรูปแบบที่มีค่าต่ำกว่าค่าสัมประสิทธิ์และมีแนวโน้มที่จะมีค่าสูง ใน norm น้อยที่สุด OLS)

ผลกระทบนี้จะช่วยลดปริมาณการบรรจุเกินในกระบวนการ OLS fitting ขั้นต่ำสุด เอฟเฟกต์เด่นชัดมากขึ้นหากมีพารามิเตอร์มากขึ้นนับตั้งแต่นั้นมามีแนวโน้มที่ส่วนใหญ่ของ 'โมเดลจริง' จะถูกรวมเข้าในการประมาณ

ส่วนอีกต่อไป:
(ฉันไม่แน่ใจว่าจะทำอะไรที่นี่เนื่องจากปัญหาไม่ชัดเจนสำหรับฉันหรือฉันไม่รู้ว่าคำตอบที่แม่นยำต้องตอบคำถามนี้อย่างไร)

ด้านล่างเป็นตัวอย่างที่สามารถสร้างได้ง่ายและแสดงให้เห็นถึงปัญหา ผลที่ได้ไม่แปลกและตัวอย่างง่าย ๆ

  • ฉันเอาฟังก์ชันบาป (เพราะมันตั้งฉาก) เป็นตัวแปรp=200
  • สร้างโมเดลสุ่มด้วยการวัด n=50
    • ตัวแบบถูกสร้างขึ้นด้วยเท่านั้นของตัวแปรดังนั้น 190 ของ 200 ตัวแปรกำลังสร้างความเป็นไปได้ในการสร้างการปรับตัวที่มากเกินไปtm=10
    • สัมประสิทธิ์รูปแบบจะถูกกำหนดแบบสุ่ม

ในกรณีตัวอย่างนี้เราสังเกตว่ามีบางส่วนที่เกินความเหมาะสม แต่ค่าสัมประสิทธิ์ของพารามิเตอร์ที่เป็นของตัวแบบที่แท้จริงมีค่าสูงกว่า ดังนั้น R ^ 2 อาจมีค่าเป็นบวก

ภาพด้านล่าง (และรหัสที่ใช้สร้าง) แสดงให้เห็นว่าอุปกรณ์มีข้อ จำกัด มากเกินไป จุดที่เกี่ยวข้องกับตัวแบบการประมาณค่าของพารามิเตอร์ 200 ตัว จุดสีแดงเกี่ยวข้องกับพารามิเตอร์เหล่านั้นที่มีอยู่ใน 'แบบจำลองที่แท้จริง' และเราเห็นว่ามีค่าสูงกว่า ดังนั้นจึงมีระดับของการเข้าใกล้โมเดลจริงและรับ R ^ 2 ด้านบน 0

  • โปรดทราบว่าฉันใช้โมเดลที่มีตัวแปรมุมฉาก (ฟังก์ชันไซน์) หากพารามิเตอร์มีความสัมพันธ์กันพวกเขาอาจเกิดขึ้นในรูปแบบที่มีค่าสัมประสิทธิ์ค่อนข้างสูงมากและกลายเป็นถูกลงโทษมากขึ้นในบรรทัดฐานน้อยที่สุด OLS
  • โปรดทราบว่า 'ตัวแปรมุมฉาก' ไม่ใช่มุมฉากเมื่อเราพิจารณาข้อมูล ผลิตภัณฑ์ภายในของเป็นเพียงศูนย์เมื่อเรารวมพื้นที่ทั้งหมดของและไม่ได้เมื่อเรามีเพียงไม่กี่ตัวอย่างxผลที่ตามมาคือถึงแม้จะไม่มีสัญญาณรบกวนก็ตามการปรับแต่งที่มากเกินไปจะเกิดขึ้น (และค่า R ^ 2 ดูเหมือนจะขึ้นอยู่กับปัจจัยหลายอย่างนอกเหนือจากสัญญาณรบกวนแน่นอนว่ามีความสัมพันธ์และแต่สิ่งสำคัญคือจำนวนตัวแปร ในรูปแบบที่แท้จริงและจำนวนของพวกเขาอยู่ในรูปแบบที่เหมาะสม)sin(ax)sin(bx)xxnp

ตัวอย่างของการกระชับที่ลดลง

library(MASS)

par(mar=c(5.1, 4.1, 9.1, 4.1), xpd=TRUE)

p <- 200       
l <- 24000
n <- 50
tm <- 10

# generate i sinus vectors as possible parameters
t <- c(1:l)
xm <- sapply(c(0:(p-1)), FUN = function(x) sin(x*t/l*2*pi))

# generate random model by selecting only tm parameters
sel <- sample(1:p, tm)
coef <- rnorm(tm, 2, 0.5)

# generate random data xv and yv with n samples
xv <- sample(t, n)
yv <- xm[xv, sel] %*% coef + rnorm(n, 0, 0.1)

# generate model
M <- ginv(t(xm[xv,]) %*% xm[xv,])

Bsol <- M %*% t(xm[xv,]) %*% yv
ysol <- xm[xv,] %*% Bsol

# plotting comparision of model with true model
plot(1:p, Bsol, ylim=c(min(Bsol,coef),max(Bsol,coef)))
points(sel, Bsol[sel], col=1, bg=2, pch=21)
points(sel,coef,pch=3,col=2)

title("comparing overfitted model (circles) with true model (crosses)",line=5)
legend(0,max(coef,Bsol)+0.55,c("all 100 estimated coefficients","the 10 estimated coefficients corresponding to true model","true coefficient values"),pch=c(21,21,3),pt.bg=c(0,2,0),col=c(1,1,2))

เทคนิคเบต้าที่ถูกตัดทอนเกี่ยวกับการถดถอยของสันเขา

ฉันได้แปลงรหัสไพ ธ อนจากอะมีบาเป็น R และรวมกราฟสองตัวเข้าด้วยกัน สำหรับการประมาณค่า OLS ของ norm norm ขั้นต่ำแต่ละอันพร้อมกับเพิ่มเสียงรบกวนฉันจับคู่ค่าประมาณการถดถอยแบบ ridge ด้วยค่าเดิม (โดยประมาณ) -norm สำหรับ vector vectorl2β

  • ดูเหมือนว่าแบบจำลองเสียงที่ถูกตัดทอนจะทำแบบเดียวกันมาก (คำนวณได้ช้ากว่านิดหน่อยและอาจจะดีขึ้นอีกเล็กน้อย)
  • อย่างไรก็ตามหากไม่มีการตัดทอนผลกระทบจะรุนแรงน้อยลง
  • การติดต่อกันระหว่างการเพิ่มพารามิเตอร์และการปรับริดจ์แบบนี้ไม่จำเป็นต้องเป็นกลไกที่แข็งแกร่งที่สุดหากไม่มีการกระชับ สิ่งนี้สามารถเห็นได้โดยเฉพาะในโค้ง 1,000p (ในภาพของคำถาม) ไปเกือบ 0.3 ในขณะที่อีกเส้นโค้งที่มี p แตกต่างกันไม่ถึงระดับนี้ไม่ว่าพารามิเตอร์การถดถอยของสันคืออะไร พารามิเตอร์เพิ่มเติมในกรณีที่ใช้งานจริงนั้นไม่เหมือนกับการเปลี่ยนแปลงของพารามิเตอร์สัน (และฉันเดาว่านี่เป็นเพราะพารามิเตอร์พิเศษจะสร้างแบบจำลองที่ดีกว่าสมบูรณ์มากขึ้น)

  • พารามิเตอร์เสียงรบกวนลดบรรทัดฐานในมือข้างหนึ่ง (เช่นเดียวกับการถดถอยสัน) แต่ยังแนะนำเสียงเพิ่มเติม เบอนัวต์ซานเชซแสดงให้เห็นว่าในขีด จำกัด การเพิ่มพารามิเตอร์เสียงจำนวนมากที่มีความเบี่ยงเบนน้อยลงในที่สุดมันก็จะกลายเป็นเช่นเดียวกับการถดถอยของสันเขา แต่ในขณะเดียวกันก็ต้องใช้การคำนวณมากขึ้น (ถ้าเราเพิ่มความเบี่ยงเบนของเสียงเพื่ออนุญาตให้ใช้พารามิเตอร์น้อยลงและเร่งความเร็วในการคำนวณความแตกต่างก็จะยิ่งใหญ่ขึ้น)

Rho = 0.2 การเปรียบเทียบเสียงที่ถูกตัดทอนกับการถดถอยของสัน

Rho = 0.4 การเปรียบเทียบเสียงที่ถูกตัดทอนกับการถดถอยของสัน

Rho = 0.2 เพิ่มความแปรปรวนของพารามิเตอร์เสียงเป็น 2 การเปรียบเทียบเสียงที่ถูกตัดทอนกับการถดถอยของสัน

ตัวอย่างรหัส

# prepare the data
set.seed(42)
n = 80
p = 40
rho = .2
y = rnorm(n,0,1)
X = matrix(rep(y,p), ncol = p)*rho + rnorm(n*p,0,1)*(1-rho^2)

# range of variables to add
ps = c(0, 5, 10, 15, 20, 40, 45, 50, 55, 60, 70, 80, 100, 125, 150, 175, 200, 300, 400, 500, 1000)
#ps = c(0, 5, 10, 15, 20, 40, 60, 80, 100, 150, 200, 300) #,500,1000)

# variables to store output (the sse)
error   = matrix(0,nrow=n, ncol=length(ps))
error_t = matrix(0,nrow=n, ncol=length(ps))
error_s = matrix(0,nrow=n, ncol=length(ps))

# adding a progression bar
pb <- txtProgressBar(min = 0, max = n, style = 3)

# training set by leaving out measurement 1, repeat n times 
for (fold in 1:n) {
    indtrain = c(1:n)[-fold]

    # ridge regression
    beta_s <- glmnet(X[indtrain,],y[indtrain],alpha=0,lambda = 10^c(seq(-4,2,by=0.01)))$beta
    # calculate l2-norm to compare with adding variables
    l2_bs <- colSums(beta_s^2)

    for (pi in 1:length(ps)) {
        XX = cbind(X, matrix(rnorm(n*ps[pi],0,1), nrow=80))
        XXt = XX[indtrain,]

        if (p+ps[pi] < n) {
            beta = solve(t(XXt) %*% (XXt)) %*% t(XXt) %*% y[indtrain]
        }
        else {
            beta = ginv(t(XXt) %*% (XXt)) %*% t(XXt) %*% y[indtrain]
        }

        # pickout comparable ridge regression with the same l2 norm      
        l2_b <- sum(beta[1:p]^2)
        beta_shrink <- beta_s[,which.min((l2_b-l2_bs)^2)] 

        # compute errors
        error[fold, pi] = y[fold] - XX[fold,1:p] %*% beta[1:p]
        error_t[fold, pi] = y[fold] - XX[fold,] %*% beta[]
        error_s[fold, pi] = y[fold] - XX[fold,1:p] %*% beta_shrink[]
    }
    setTxtProgressBar(pb, fold) # update progression bar
}

# plotting
plot(ps,colSums(error^2)/sum(y^2) , 
     ylim = c(0,2),
     xlab ="Number of extra predictors",
     ylab ="relative sum of squared error")
lines(ps,colSums(error^2)/sum(y^2))
points(ps,colSums(error_t^2)/sum(y^2),col=2)
lines(ps,colSums(error_t^2)/sum(y^2),col=2)
points(ps,colSums(error_s^2)/sum(y^2),col=4)
lines(ps,colSums(error_s^2)/sum(y^2),col=4)

title('Extra pure noise predictors')

legend(200,2,c("complete model with p + extra predictors",
               "truncated model with p + extra predictors",
               "ridge regression with similar l2-norm",
               "idealized model uniform beta with 1/p/rho"),
       pch=c(1,1,1,NA), col=c(2,1,4,1),lt=c(1,1,1,2))

# idealized model (if we put all beta to 1/rho/p we should theoretically have a reasonable good model)
error_op <- rep(0,n)
for (fold in 1:n) {
  beta = rep(1/rho/p,p)
    error_op[fold] = y[fold] - X[fold,] %*% beta
}
id <- sum(error_op^2)/sum(y^2)
lines(range(ps),rep(id,2),lty=2)

1
(+1) ขอบคุณ ฉันคิดว่าอาร์กิวเมนต์ที่ใช้งานง่ายในการเริ่มต้นคำตอบของคุณเหมาะสม
อะมีบาพูดว่า Reinstate Monica

1

หากคุณคุ้นเคยกับตัวดำเนินการเชิงเส้นคุณอาจต้องการคำตอบของฉันว่าเป็นเส้นทางที่ตรงที่สุดในการทำความเข้าใจปรากฏการณ์: ทำไมการถดถอยเชิงบรรทัดฐานอย่างน้อยก็ล้มเหลวทันที เหตุผลก็คือปัญหาของคุณ ( ) เป็นปัญหาการผกผันที่ไม่ถูกต้องและการปลอมแปลงเป็นวิธีหนึ่งในการแก้ปัญหา การทำให้เป็นมาตรฐานเป็นการปรับปรุงnp

บทความนี้น่าจะเป็นคำอธิบายที่กระชับและเกี่ยวข้องที่สุด: Lorenzo Rosasco et al, การเรียนรู้, การทำให้เป็นมาตรฐานและปัญหาผกผันที่ไม่ดี พวกเขาตั้งค่าปัญหาการถดถอยของคุณเป็นการเรียนรู้ดู Eq.3. ซึ่งจำนวนพารามิเตอร์เกินจำนวนการสังเกต: ที่เป็นตัวดำเนินการเชิงเส้นบนพื้นที่ฮิลแบร์ตและ - ข้อมูลที่มีเสียงดัง

Ax=gδ,
Agδ

เห็นได้ชัดว่านี่เป็นปัญหาการผกผันที่ไม่ดี ดังนั้นคุณสามารถแก้มันด้วย SVD หรือ Moore-Penrose Inverse ซึ่งจะทำให้แก้ปัญหาบรรทัดฐานน้อยที่สุดแน่นอน ดังนั้นจึงไม่น่าแปลกใจเลยที่วิธีแก้ปัญหาน้อยที่สุดของคุณคือไม่ล้มเหลวทันที

อย่างไรก็ตามหากคุณปฏิบัติตามกระดาษคุณจะเห็นว่าการถดถอยของสันเขาจะเป็นการปรับปรุงตามข้างต้น การปรับปรุงเป็นพฤติกรรมที่ดีขึ้นของตัวประมาณเนื่องจากโซลูชัน Moore-Penrose ไม่จำเป็นต้องมีขอบเขต

UPDATE

ฉันรู้ว่าฉันไม่ได้อธิบายอย่างชัดเจนว่าปัญหาที่ไม่ดีนำไปสู่การทำเกินกำลัง นี่คือคำพูดจากกระดาษGábor A, Banga JR ที่แข็งแกร่งและมีประสิทธิภาพประมาณค่าพารามิเตอร์ในรูปแบบไดนามิกของระบบชีวภาพ BMC Systems Biology 2015; 9: 74 ดอย: 10.1186 / s12918-015-0219-2:

อาการที่ไม่ดีของปัญหาเหล่านี้มักเกิดจากโมเดล (i) ที่มีพารามิเตอร์จำนวนมาก ด้วยเหตุนี้เรามักจะได้รับโมเดลของจลน์ศาสตร์มากเกินไปเช่นโมเดลสอบเทียบที่เหมาะสมกับข้อมูลที่มีอยู่ แต่ความสามารถที่ไม่ดีสำหรับการวางนัยทั่วไป (ค่าการทำนายต่ำ)

ดังนั้นข้อโต้แย้งของฉันสามารถระบุได้ดังนี้:

  • ปัญหาที่ถูกวางไม่ดีนำไปสู่การ overfitting
  • (n <p) เคสเป็นปัญหาการผกผันที่ไม่ดีอย่างยิ่ง
  • Moore-Penrose psudo-inverse (หรือเครื่องมืออื่น ๆ เช่น SVD) ซึ่งคุณอ้างถึงในคำถามเป็นแก้ปัญหาที่ไม่ดีX+
  • ดังนั้นจึงดูแล overfitting อย่างน้อยในระดับหนึ่งและมันก็ไม่น่าแปลกใจที่มันจะไม่ล้มเหลวโดยสิ้นเชิงซึ่งแตกต่างจาก OLS ปกติ

การทำให้เป็นมาตรฐานอีกครั้งยังคงเป็นโซลูชันที่แข็งแกร่งยิ่งขึ้น


1
(+1) ขอบคุณ แต่ฉันไม่ค่อยเห็นว่าบทความนี้เกี่ยวข้องกันอย่างไร ฉันจะดูรายละเอียดเพิ่มเติมในวันพรุ่งนี้ พวกเขาจะบอกได้อย่างไรว่าวิธีการแก้ปัญหาค่า norm มาตรฐานขั้นต่ำของ OLS จะไม่เหมาะสมหรือว่าข้อกำหนดมาตรฐานขั้นต่ำนั้นสามารถมองเห็นได้ว่าเป็นการทำให้เป็นมาตรฐาน?
อะมีบาพูดว่า Reinstate Monica

1
มาพูดคุยกันเมื่อคุณอ่านบทความ พวกเขาไม่ได้บอกว่า psudo inverse เป็นการทำให้เป็นมาตรฐาน สิ่งที่พวกเขาพูดคือการแก้ปัญหาที่ไม่ดี สิ่งที่ฉันพูดคือ overfitting เกิดจากปัญหาที่ไม่ดีดังนั้นโดยการพูดถึงสิ่งที่คุณดูแลอดีตแม้ว่าจะไม่ดีเท่ากับการทำให้เป็นระเบียบ
Aksakal

1
ฉันคิดว่าสิ่งที่น่าสงสัยไม่ใช่ว่าวิธีแก้ปัญหาเชิงบรรทัดฐานขั้นต่ำนั้นไม่ได้ช่วยแก้ปัญหาให้เกินขอบเขต แต่การเพิ่มการทำให้เป็นมาตรฐานมากขึ้นนั้นไม่ได้ช่วยให้สิ่งต่าง ๆ ดีขึ้นอีก ด้วยเหตุนี้วิธีการแก้ปัญหา norm มาตรฐานขั้นต่ำจึงมีประสิทธิภาพมากกว่าเนื่องจากจำนวนของคุณลักษณะที่เพิ่มขึ้น ปรีชาญาณของฉันคือปัญหาเกี่ยวกับพารามิเตอร์เพิ่มเติมต้องการการทำให้เป็นมาตรฐานมากขึ้น (ทุกสิ่งเท่ากันเสมอ) แทนที่จะน้อยกว่า นี่เป็นปัญหาที่น่าสนใจมากและอาจช่วยอธิบายได้ว่าทำไมเช่นแม้แต่เครือข่ายประสาทที่ไม่สม่ำเสมอก็ไม่ได้ทำให้พอดีเท่าที่คุณคาดหวัง
Dikran Marsupial

1
@Dikran ที่จริงแล้วรูปแบบอื่นหรือการทำให้เป็นมาตรฐานยังสามารถปรับปรุงประสิทธิภาพได้เช่นฉันสามารถปรับปรุงประสิทธิภาพได้ (เทียบกับ OLS ขั้นต่ำ) ด้วยการถดถอยส่วนประกอบหลักหรือด้วยความยืดหยุ่นสุทธิ มันก็แค่การทำให้เป็นแนวปกติกลายเป็นสิ่งที่ไร้ประโยชน์ การเปรียบเทียบกับเครือข่ายนิวรัลเป็นความคิดที่น่าสนใจที่ไม่ได้ผ่านใจของฉัน สิ่งที่ผมไม่คิดเกี่ยวกับเมื่อเร็ว ๆ นี้ แต่เป็นที่น่าแปลกใจที่ไม่มีใครไม่เข้าใจว่าทำไมหากินสิ่งที่เรียนรู้ลึกเช่นการฟื้นฟูชุดทำงานจริงๆระบุว่าแม้การถดถอยเชิงเส้นสันเขาจากสถิติ 101 สามารถเพื่อทำให้งง :-)
อะมีบากล่าวว่าคืนสถานะโมนิกา

2
นี่ไม่ใช่คำถามหลักที่อยู่ในมือ แต่ฉันคิดว่าชุดคำถามคำตอบและความคิดเห็นที่ยอดเยี่ยมนี้เป็นสิ่งที่ไม่ถูกต้องในการนำมาใช้ในการตรวจสอบข้าม สำหรับการสนทนานี้มันจะง่ายกว่าที่จะคำนวณตัวทำนายเชิงเส้นตรงจาก s ที่ใช้ในการจำลองข้อมูลและคำนวณ MSE ของตัวประมาณของตัวทำนายเชิงเส้น และฉันได้เห็นกรณีที่สำหรับฉันไม่สามารถหา AIC ที่ถูกต้องที่เหมาะสมสำหรับการถดถอยสันเขา ( ฟังก์ชั่นแพคเกจR ) แต่ฉันต้องเรียกใช้อีกครั้งโดยใช้ตัวทำนายเชิงเส้นที่แท้จริงเป็นมาตรฐานทองคำ βn<<prmsols
Frank Harrell
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.