Apakah regresi ridge tidak berguna dalam dimensi tinggi ( )? Bagaimana OLS gagal berpakaian berlebihan?


50

Pertimbangkan masalah regresi lama yang baik dengan prediktor dan ukuran sampel n . Kebijaksanaan yang biasa adalah bahwa penaksir OLS akan melampaui batas dan umumnya akan dikalahkan oleh penaksir regresi ridge: \ hat \ beta = (X ^ \ X atas + + lambda I) ^ {- 1} X ^ \ atas y. Merupakan standar untuk menggunakan validasi silang untuk menemukan parameter regularisasi optimal \ lambda . Di sini saya menggunakan CV 10 kali lipat. Pembaruan klarifikasi: ketika n <p , oleh "penaksir OLS" Saya mengerti "penaksir OLS norma minimum" yang diberikan oleh \ hat \ beta_ \ text {OLS} = (X ^ \ top X) ^ + X ^ \ top y = X ^ + y.pβ = ( X X + λ I ) - 1 X y . λn

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

Saya memiliki dataset dengan n=80 dan p>1000 . Semua prediktor distandarisasi, dan ada beberapa yang (sendiri) dapat melakukan pekerjaan dengan baik dalam memprediksi y . Jika saya secara acak memilih ish kecil, katakan p=50<n , jumlah prediktor, saya mendapatkan kurva CV yang masuk akal: nilai besar λ menghasilkan nol R-kuadrat, nilai kecil λ menghasilkan negatif R-kuadrat (karena overfitting) dan ada beberapa maksimum di antaranya. Untuk p=100>n kurva terlihat serupa. Namun, untuk p jauh lebih besar dari itu, misalnya p=1000 , saya tidak mendapatkan maksimum sama sekali: kurva dataran tinggi, yang berarti bahwa OLS denganλ0 berkinerja sebaik regresi ridge dengan optimal λ .

masukkan deskripsi gambar di sini

Bagaimana mungkin dan apa yang dikatakan tentang dataset saya? Apakah saya kehilangan sesuatu yang jelas atau itu memang kontra-intuitif? Bagaimana bisa ada perbedaan kualitatif antara p=100 dan p=1000 mengingat keduanya lebih besar dari n ?

Dalam kondisi apa solusi OLS minimum-normal untuk n<hal tidak overfit?


Pembaruan: Ada beberapa ketidakpercayaan dalam komentar, jadi di sini adalah contoh menggunakan glmnet. Saya menggunakan Python tetapi pengguna R akan dengan mudah mengadaptasi kode.

%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()

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini


2
@ Johnson Tidak bercanda. CV 10 kali lipat, artinya setiap set pelatihan memiliki n = 72 dan setiap set tes memiliki n = 8.
Amuba kata Reinstate Monica

2
Itu jauh dari CV biasa . Mengingat bahwa bagaimana orang bisa mengharapkan sesuatu seperti hasil yang dapat dideteksi?
Mike Hunter

3
@ Johnson Saya tidak mengerti mengapa Anda mengatakan ini jauh dari biasanya. Inilah CV 10 kali lipat.
Amuba kata Reinstate Monica

2
@ seanv507 Begitu. Yah, saya sarankan untuk mendefinisikan "solusi dengan lambda = 0" sebagai "solusi minimal-norma dengan lambda = 0". Saya kira pertanyaan saya dapat dirumuskan ulang sebagai berikut: Dalam kondisi apa solusi OLS minimal-normal dengan n <p overfit vs tidak overfit?
Amuba kata Reinstate Monica

3
@amoeba: Terima kasih atas pertanyaan ini. Sejauh ini sangat instruktif dan menarik.
usεr11852 mengatakan Reinstate Monic

Jawaban:


23

Regulator alami terjadi karena adanya banyak komponen kecil dalam PCA teoretis . Komponen kecil ini secara implisit digunakan untuk menyesuaikan kebisingan menggunakan koefisien kecil. Saat menggunakan norma minimum OLS, Anda menyesuaikan kebisingan dengan banyak komponen kecil yang independen dan ini memiliki efek regularisasi yang setara dengan regularisasi Ridge. Regulatorisasi ini seringkali terlalu kuat, dan dimungkinkan untuk mengkompensasinya menggunakan "anti-regularisasi" yang dikenal sebagai Ridge negatif . Dalam hal ini, Anda akan melihat minimum kurva MSE muncul untuk nilai negatif .λxλ

Secara teoritis PCA, maksud saya:

Biarkan distribusi normal multivarian. Ada isometri linier seperti mana adalah diagonal: komponen independen. hanya diperoleh dengan mendiagonalisasi .f u = f ( x ) N ( 0 , D ) D u D ΣxN(0,Σ)fkamu=f(x)N(0,D)DkamuDΣ

Sekarang model dapat ditulis (isometri linier mempertahankan produk titik). Jika Anda menulis , model dapat ditulis . Selanjutnyamaka metode pas seperti Ridge atau OLS norma minimum adalah isomorfik sempurna: penaksir adalah gambar dengan dari penaksir .y = f ( β ) . f ( x ) + ϵ γ = f ( β ) y = γ . u + ϵ β = γ y=β.x+ϵy=f(β).f(x)+ϵγ=f(β)y=γ.kamu+ϵβ=γf y = β . x + ϵy=γ.kamu+ϵfy=β.x+ϵ

PCA teoretis mengubah prediktor non-independen menjadi prediktor independen. Ini hanya terkait longgar dengan PCA empiris di mana Anda menggunakan matriks kovarians empiris (yang berbeda banyak dari yang teoritis dengan ukuran sampel kecil). PCA teoretis tidak dapat dihitung secara praktis tetapi hanya digunakan di sini untuk menafsirkan model dalam ruang prediktor ortogonal.

Mari kita lihat apa yang terjadi ketika kita menambahkan banyak prediktor independen varian kecil ke model:

Dalil

Regularisasi punggungan dengan koefisien setara (ketika ) untuk:p λhal

  • menambahkan prediktor independen palsu (terpusat dan terdistribusi secara identik) masing-masing dengan varianλhalλhal
  • menyesuaikan model yang diperkaya dengan penduga OLS norma minimum
  • hanya menyimpan parameter untuk prediktor yang sebenarnya

(sketsa) Bukti

Kami akan membuktikan bahwa fungsi biaya secara asimptotik sama. Mari kita bagi model menjadi prediktor nyata dan palsu: . Fungsi biaya Ridge (untuk prediktor sejati) dapat ditulis:y=βx+βx+ϵ

cHaistλ=β2+1λy-Xβ2

Saat menggunakan norma minimum OLS, responsnya dipasangkan dengan sempurna: istilah kesalahannya adalah 0. Fungsi biaya hanya tentang norma parameter. Ini dapat dibagi menjadi parameter yang benar dan yang palsu:

cHaistλ,hal=β2+inf{β2Xβ=y-Xβ}

Dalam ungkapan yang benar, solusi norma minimum diberikan oleh:

β=X+(y-Xβ)

Sekarang menggunakan SVD untuk :X

X=UΣV

X+=VΣ+U

Kita melihat bahwa norma pada dasarnya tergantung pada nilai singular yang merupakan kebalikan dari nilai singular . Versi normal dari adalah . Saya telah melihat literatur dan nilai-nilai tunggal dari matriks acak besar sudah dikenal. Untuk dan cukup besar, nilai minimum dan maksimum didekati oleh (lihat teorema 1.1 ):β X X X+XXhal/λXn s min s makshalnsminsmaks

smax(

smin(hal/λX)hal(1-n/hal)
smaks(hal/λX)hal(1+n/hal)

Karena, untuk besar , cenderung ke 0, kita bisa mengatakan bahwa semua nilai singular didekati oleh . Jadi:haln/halhal

β1λy-Xβ

Akhirnya:

cHaistλ,halβ2+1λy-Xβ2=cHaistλ

Catatan : tidak masalah jika Anda menyimpan koefisien prediksi palsu dalam model Anda. Varians yang diperkenalkan oleh adalah . Dengan demikian Anda meningkatkan MSE Anda hanya dengan faktor yang cenderung ke 1. Entah bagaimana Anda tidak perlu memperlakukan prediktor palsu secara berbeda dari yang asli.λβxλhalβ21haly-Xβ2nhalM.SE(β)1+n/hal

Sekarang, kembali ke data @ amoeba. Setelah menerapkan PCA teoritis ke (diasumsikan normal), ditransformasikan oleh isometri linier menjadi variabel yang komponennya independen dan diurutkan dalam mengurangi urutan varians. Masalah setara dengan masalah yang ditransformasikan .x u y = β x + ϵ y =xxkamuy=βx+ϵy=γkamu+ϵ

Sekarang bayangkan varians komponennya terlihat seperti:

masukkan deskripsi gambar di sini

Pertimbangkan banyak komponen terakhir, panggil jumlah variansnya . Mereka masing-masing memiliki varian kurang lebih sama dengan dan independen. Mereka memainkan peran sebagai prediktor palsu dalam teorema.halλ / pλλ/hal

Fakta ini lebih jelas dalam model @ jonny: hanya komponen pertama PCA teoretis yang berkorelasi dengan (proporsional ) dan memiliki varian yang sangat besar. Semua komponen lainnya (sebanding dengan ) memiliki varians yang relatif sangat kecil (tulis matriks kovarians dan didiagonalisasi untuk melihatnya) dan memainkan peran sebagai prediktor palsu. Saya menghitung bahwa regularisasi di sini sesuai (kira-kira) dengan sebelumnya pada sedangkan sebenarnya . Ini pasti terlalu menyusut. Ini terlihat oleh fakta bahwa MSE final jauh lebih besar daripada MSE ideal. Efek regularisasi terlalu kuat.¯ x x i - ¯ xyx¯xsaya-x¯γ1γN(0,1hal2)γ1γ12=1hal

Kadang-kadang mungkin untuk meningkatkan regularisasi alami ini oleh Ridge. Pertama, Anda kadang-kadang membutuhkan dalam teorema yang sangat besar (1000, 10000 ...) untuk menyaingi Ridge secara serius dan keterbatasan seperti sebuah ketidaktepatan. Tetapi juga menunjukkan bahwa Ridge adalah regularisasi tambahan atas regularisasi implisit yang ada secara alami dan dengan demikian hanya dapat memiliki efek yang sangat kecil. Terkadang regularisasi alami ini sudah terlalu kuat dan Ridge mungkin bahkan tidak menjadi perbaikan. Lebih dari ini, lebih baik menggunakan anti-regularisasi: Ridge dengan koefisien negatif. Ini menunjukkan MSE untuk model @ jonny ( ), menggunakan :p p = 1000 λ Rhalhalhal=1000λR

masukkan deskripsi gambar di sini


2
+1 Sangat bagus, terima kasih telah menulis ini. Saya pikir penting untuk menjelaskan bahwa ketika Anda mengatakan "regularisasi" yang Anda maksud adalah regularisasi (yaitu ridge). Salah satu akan berharap bahwa net lasso atau elastis dapat bersikap lebih baik dan memang itulah yang orang gunakan dalam situasi. Tidak ada yang menggunakan punggungan murni dalam pengaturan seperti itu dan saran standarnya adalah menggunakan regularisasi yang memberlakukan sparsity; jadi perilaku punggungan murni mungkin hanya memiliki minat akademis. Tetap saja, sungguh menakjubkan bahwa kita sepertinya menemukannya di sini. Kenapa ini tidak terkenal ?? n hlmL.2nhal
Amoeba berkata Reinstate Monica

1
Kode dengan hard-code tidak sebanding dengan . Maaf saya tidak punya waktu untuk sesuatu yang pantas. Fokus utama saya adalah perilaku OLS min-norma, untuk melihat bahwa itu berbeda dari contoh Anda dan bahwa "beberapa regularisasi tidak terlalu buruk" pada 40 pertama adalah kekerasan yang lebih baik. σ 2λσ2
Benoit Sanchez

3
Saya pikir saya sudah mengerti misterinya: Regularisasi punggungan dengan koefisien sama dengan min-norm OLS menambahkan prediktor palsu masing-masing dengan varians (asimptotik untuk besar ). Dalam data Anda dan model Johny, hal itu terjadi tanpa melakukan apa pun berkat komponen varian terendah dari PCA. Sekarang saya perlu waktu untuk menemukan cara untuk menjelaskan ini dengan jelas ...p λ / p pλhalλ/halhal
Benoit Sanchez

1
Saya mengklarifikasi poin kecil: koefisien dari prediktor palsu tidak meningkatkan kesalahan terlalu banyak (lihat catatan di akhir buktinya). Ini penting karena dalam data Anda / jonny mereka tidak dapat dihindari disimpan.
Benoit Sanchez

3
Saya mencoba negatif Ridge. Aku tidak percaya tapi itu berhasil !!! (dan tidak hanya pada model Jonny ...)
Benoit Sanchez

16

Terima kasih semuanya atas diskusi yang luar biasa ini. Inti dari masalah ini tampaknya adalah bahwa OLS norma minimum secara efektif melakukan penyusutan yang mirip dengan regresi ridge. Ini tampaknya terjadi setiap kali . Ironisnya, menambahkan prediktor kebisingan murni bahkan dapat digunakan sebagai bentuk atau regularisasi yang sangat aneh.pn


Bagian I. Demonstrasi dengan data buatan dan analitik CV

@Jonny (+1) muncul dengan contoh buatan yang sangat sederhana yang saya akan sedikit beradaptasi di sini. dari ukuran dan yang dihasilkan sehingga semua variabel Gaussian dengan satuan varians, dan korelasi antara masing-masing prediktor dan respon adalah . Saya akan memperbaiki .n × p y ρ ρ = .2Xn×pyρρ=.2

Saya akan menggunakan CV cuti-keluar karena ada ekspresi analitik untuk kesalahan kuadrat: dikenal sebagai PRESS , "prediksi jumlah kuadrat". mana adalah residual dan adalah matriks hat dalam hal SVD . Ini memungkinkan untuk mereplikasi hasil @ Jonny tanpa menggunakan dan tanpa benar-benar melakukan cross-validation (saya merencanakan rasio PRESS dengan jumlah kuadrat dari ):eie=y-y=y-Hy

PRESS=i(ei1Hii)2,
eiH H = X ( X X + λ I ) - 1 X = U S 2
e=yy^=yHy,
HX=USVy
H=X(XX+λI)1X=US2S2+λU
X=USVglmnety

masukkan deskripsi gambar di sini

Pendekatan analitik ini memungkinkan untuk menghitung batas pada . Cukup dengan memasukkan ke dalam rumus PRESS tidak berfungsi: ketika dan , residual semuanya nol dan matriks topi adalah matriks identitas dengan yang ada di diagonal, artinya fraksi dalam PRESS Persamaan tidak terdefinisi. Tetapi jika kita menghitung batas pada , maka itu akan sesuai dengan solusi OLS norma-minimum dengan .λ0λ=0n<pλ=0λ0λ=0

Caranya adalah dengan melakukan ekspansi Taylor dari matriks topi ketika : Di sini saya memperkenalkan matriks Gram .λ0

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

Kita hampir selesai:Lambda dibatalkan, jadi di sini kita memiliki nilai pembatas. Saya memplotnya dengan titik hitam besar pada gambar di atas (pada panel di mana ), dan cocok dengan sempurna.

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

Perbarui 21 Feb. Formula di atas tepat, tetapi kita dapat memperoleh beberapa wawasan dengan melakukan perkiraan lebih lanjut. Sepertinya memiliki nilai yang kira-kira sama pada diagonal bahkan jika memiliki nilai yang sangat tidak sama (mungkin karena mencampur semua nilai eigen dengan cukup baik). Jadi untuk setiap kita memiliki mana kurung sudut menunjukkan rata-rata. Dengan menggunakan perkiraan ini, kita dapat menulis ulang:Perkiraan ini ditunjukkan pada gambar di atas dengan lingkaran terbuka merah.G1SUiGii1S2

PRESSS2S2Uy2.

Apakah ini akan menjadi lebih besar atau lebih kecil dari tergantung pada nilai-nilai singular . Dalam simulasi ini, dikorelasikan dengan PC pertama sehingga besar dan semua istilah lainnya kecil. (Dalam data saya yang sebenarnya, juga diprediksi dengan baik oleh PC terkemuka.) Sekarang, dalam kasus , jika kolom cukup acak, maka semua nilai singular akan agak dekat satu sama lain (baris sekitar ortogonal). Istilah "utama" S y X p ny2=Uy2SyXU1yypnXU1yakan dikalikan dengan faktor kurang dari 1. Istilah menjelang akhir akan dikalikan dengan faktor lebih besar dari 1 tetapi tidak jauh lebih besar. Secara keseluruhan, norma menurun. Sebaliknya, dalam kasus , akan ada beberapa nilai singular yang sangat kecil. Setelah inversi mereka akan menjadi faktor besar yang akan meningkatkan norma keseluruhan.pn

[Argumen ini sangat bergelombang; Saya harap ini bisa dibuat lebih tepat.]

Sebagai pemeriksaan kewarasan, jika saya menukar urutan nilai singular pada S = diag(flipud(diag(S)));saat itu, MSE yang diprediksi berada di atas mana-mana di panel 2 dan 3.1

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

Bagian II. Menambahkan prediktor derau murni sebagai bentuk regularisasi

Argumen yang bagus dibuat oleh @Jonny, @Benoit, @Paul, @Dikran, dan lainnya yang meningkatkan jumlah prediktor akan mengecilkan solusi OLS norma-minimum. Memang, sekali , setiap prediktor baru hanya dapat mengurangi norma dari solusi norma minimum. Jadi menambahkan prediktor akan mendorong norma turun, agak mirip dengan bagaimana regresi ridge menghukum norma.hal>n

Jadi, bisakah ini digunakan sebagai strategi regularisasi? Kita mulai dengan dan dan kemudian terus menambahkan murni prediktor kebisingan sebagai upaya regularisasi. Saya akan melakukan LOOCV dan membandingkannya dengan LOOCV untuk punggungan (dihitung seperti di atas). Perhatikan bahwa setelah mendapatkan pada prediktor , saya "memotong" di karena saya hanya tertarik pada prediktor asli.p = 40 q β p + q pn=80hal=40qβ^hal+qhal

masukkan deskripsi gambar di sini

BERHASIL!!!

Faktanya, seseorang tidak perlu "memotong" beta; bahkan jika saya menggunakan full beta dan penuh prediktor, saya bisa mendapatkan kinerja yang baik (garis putus-putus di subplot kanan). Ini saya pikir meniru data aktual saya dalam pertanyaan: hanya sedikit prediktor yang benar-benar memprediksi , kebanyakan dari mereka adalah noise murni, dan mereka berfungsi sebagai regularisasi. Dalam rezim ini, regularisasi punggungan tambahan tidak membantu sama sekali.yhal+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 Dalam percobaan ini, saya mulai dengan n = 80 dan p = 40. Ketika jumlah total prediktor (p + q) mendekati n = 80, masalahnya menjadi tidak terkondisi dan solusi OLS cocok secara drastis. Ada puncak kesalahan yang sangat besar di sekitar q = 40. Segera setelah p + q> n, batasan "norma minimum" muncul dan kesalahannya mulai berkurang tetapi butuh waktu sampai kembali ke tempatnya semula dengan q = 0. Ini terjadi sekitar q = 70, yaitu p + q = 130. Setelah itu, kesalahan semakin menurun dan bagian plot ini mirip dengan plot regresi ridge. Apakah masuk akal?
Amuba kata Reinstate Monica

@ MartijnWeterings Pada komentar pertama: kita berada di halaman yang sama. Pada komentar ke-2: dalam pertanyaan saya, saya tidak memotong beta, itu benar. Tetapi sebenarnya jika saya tidak memotong beta dalam simulasi saya (gunakan y(fold) - XX(fold,:) * betabukan XX(fold,1:size(X,2)) * beta(1:size(X,2))), maka hasilnya tidak berubah terlalu banyak. Saya kira saya harus menambahkan ini ke jawaban saya. Saya pikir data asli saya menunjukkan perilaku semacam ini.
Amoeba berkata Reinstate Monica


(2/2): Per jawaban Randel di sini ( stats.stackexchange.com/questions/122062/... ), kami melihat estimasi yang ekuivalen antara efek acak dan regresi ridge, di mana lambda sama dengan rasio residu dengan varian dari efek acak. Di sini, sesuai jawaban Benoit Sanchez, kita melihat bahwa regresi ridge setara dengan menambahkan sejumlah prediktor independen independen yang sewenang-wenang, masing-masing dengan varians yang sama dengan fungsi lambda dan jumlah parameter. Menurut saya ada hubungan konseptual.
Ryan Simmons

@amoeba itu adalah kesalahan. menambahkan vektor skala y ke matriks X agak mengatur tetapi tidak sama dengan regresi ridge atau vektor kebisingan. Namun itu membuat saya bertanya-tanya apa yang terjadi ketika kita mengurangi sedikit dari setiap x untuk membuat setiap variabel sedikit berkorelasi negatif (atau kurang positif) dengan vektor y. Ini untuk melakukan beberapa regularisasi 'negatif'. Bahwa untuk 'membatalkan' regularisasi 1000 vektor (pada titik tertentu mungkin menjadi terlalu banyak, seperti yang Anda lihat dengan koefisien regularisasi puncak / optimal yang sekarang hampir di luar jangkauan). y
Sextus Empiricus

15

Berikut adalah situasi buatan tempat ini terjadi. Misalkan setiap variabel prediktor adalah salinan dari variabel target dengan sejumlah besar noise gaussian yang diterapkan. Model terbaik yang mungkin adalah rata-rata semua variabel prediktor.

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 untuk berbagai lambda dengan 100 prediktor

100 variabel berperilaku dengan cara "normal": Beberapa nilai positif lambda meminimalkan kesalahan sampel.

Tetapi tingkatkan num.vars dalam kode di atas menjadi 1000, dan inilah jalur MSE baru. (Saya memperluas ke log (Lambda) = -100 untuk meyakinkan diri saya sendiri.

MSE untuk berbagai lambda dengan 1000 prediktor

Apa yang saya pikirkan sedang terjadi

Ketika mencocokkan banyak parameter dengan regularisasi rendah, koefisien didistribusikan secara acak di sekitar nilai sebenarnya dengan varians tinggi.

Karena jumlah prediktor menjadi sangat besar, "kesalahan rata-rata" cenderung ke nol, dan menjadi lebih baik untuk membiarkan koefisien jatuh di mana mereka dapat dan jumlah semuanya daripada membiaskannya ke 0.

Saya yakin situasi prediksi yang sebenarnya ini adalah rata-rata dari semua prediktor bukan satu-satunya saat ini terjadi, tetapi saya tidak tahu bagaimana memulai dengan tepat menunjukkan kondisi yang paling diperlukan di sini.

SUNTING:

Perilaku "flat" untuk lambda yang sangat rendah akan selalu terjadi, karena solusi konvergen ke solusi OLS norma-minimum. Demikian pula kurva akan datar untuk lambda yang sangat tinggi karena solusinya konvergen ke 0. Tidak akan ada minimum jika salah satu dari dua solusi itu optimal.

Mengapa solusi OLS minimum-norma begitu (sebanding) bagus dalam kasus ini? Saya pikir ini terkait dengan perilaku berikut yang saya temukan sangat berlawanan dengan intuisi, tetapi pada refleksi sangat masuk akal.

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)

Plot besaran maksimum koefisien seiring dengan meningkatnya jumlah prediktor

Dengan prediktor yang dihasilkan secara acak yang tidak terkait dengan respons, karena p meningkatkan koefisien menjadi lebih besar, tetapi begitu p jauh lebih besar dari N mereka menyusut ke nol. Ini juga terjadi dalam contoh saya. Jadi dengan sangat longgar, solusi yang tidak diatur untuk masalah-masalah itu tidak perlu susut karena mereka sudah sangat kecil!

Ini terjadi karena alasan sepele. dapat dinyatakan persis seperti kombinasi linear dari kolom . adalah vektor koefisien norma-minimum. Semakin banyak kolom yang ditambahkan, norma harus menurun atau tetap konstan, karena kombinasi linear yang memungkinkan adalah menjaga koefisien sebelumnya tetap sama dan mengatur koefisien baru ke .X ß ß 0yXβ^β^0


1
(+1). Fenomena demikian tampaknya terjadi ketika prediktor berkorelasi. Itu tidak berarti secara formal bahwa kurva kesalahan tidak memiliki minimum untuk positive , juga bahwa batas pada 0 tidak besar. Ini hanya berarti bahwa kurva cenderung menjadi datar, dan bahwa ambang untuk seberapa kecil harus untuk regularisasi untuk berhenti bekerja cenderung ke arah 0 untuk besar . Di sini ambang batas ini melampaui batas komputasi tetapi jawaban Firebug menyarankannya selalu ada. λ pλλhal
Benoit Sanchez

1
Mengapa Anda perlu glmnetmemperbarui? Jika Anda hanya membutuhkan solusi norma OLS minimum, maka ada rumus langsung (lihat rumus 2 dalam pertanyaan saya) dan jika seseorang menghitung SVD dari maka rumus ini menjadi hanya . Mungkin juga ada fungsi dalam R yang menghitung solusi ini, tetapi saya tidak benar-benar tahu R :)ß = V S - 1 U yX=USVβ^=VS-1Uy
amoeba mengatakan Reinstate Monica

2
Memikirkannya lagi tidak mengherankan sama sekali. dapat dinyatakan persis seperti kombinasi linear dari vektor di . adalah vektor koefisien dengan norma terkecil. Ketika Anda menambahkan vektor, norma harus mengurangi atau tetap dengan ukuran yang sama, karena Anda bisa menjaga koefisien yang lama tetap sama dan mengatur yang baru ke nol. X ß ßyXβ^β^
Jonny Lomond

3
Misalnya Jonny adalah satu yang baik karena telah dianalisis: melihat James-Stein estimator . Ketika memperkirakan rata-rata vektor tetap dengan dimensi 3 atau lebih besar, kita selalu dapat meningkatkan rata-rata sederhana dengan membiaskan ke nol, yang kurang lebih sama dengan apa yang dilakukan regresi ridge. Saya bertanya-tanya apakah mungkin perbaikannya terlalu kecil untuk diamati dalam kasus ini? θ
Paul

3
Adalah fakta yang diketahui bahwa regresi ridge sama dengan menambahkan "tambahan" sampel tambahan ke dataset dengan setiap sampel memiliki nilai dalam satu fitur dan nol di tempat lain, dan semua respons terkait menjadi nol. (Ini sepele untuk menulis ulang fungsi biaya RR dalam formulir ini.) Saya sekarang bertanya-tanya apakah ada cara untuk menambahkan fitur tambahan (mis. Kebisingan murni?) Yang akan memiliki efek yang sama. Tentu saja menambahkan ekstra fitur berarti bahwa akan meningkatkan dimensi tetapi satu hanya bisa melihat nilai-nilai di "asli" prediktor. @ Paulhalßλβ^
amoeba berkata

6

Jadi saya memutuskan untuk menjalankan validasi silang bersarang menggunakan mlrpaket khusus dalam R untuk melihat apa yang sebenarnya datang dari pendekatan pemodelan.

Kode (dibutuhkan beberapa menit untuk berjalan di notebook biasa)

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)

Hasil

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

Mereka pada dasarnya melakukan hal yang sama di seluruh tugas.

Jadi, bagaimana dengan lambda yang optimal?

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

Saya mengutak-atik sedikit lebih glmnetdan menemukan tidak ada lambda minimal yang diambil. Memeriksa:

SUNTING:

Setelah komentar oleh amuba, menjadi jelas bahwa jalur regularisasi adalah langkah penting dalam glmnetestimasi, sehingga kode sekarang mencerminkannya. Dengan cara ini, sebagian besar perbedaan hilang.

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

masukkan deskripsi gambar di sini

Kesimpulan

λ>0

Bagaimana mungkin dan apa yang dikatakan tentang dataset saya? Apakah saya kehilangan sesuatu yang jelas atau itu memang kontra-intuitif?

λ

Sunting: Ingatlah, jalur regularisasi ridge memanfaatkan perkiraan parameter sebelumnya saat kita menelepon glmnet, tapi ini di luar keahlian saya. Jika kita menetapkan lambdaisolasi yang sangat rendah , kemungkinan akan menurunkan kinerja.

λ0hal

Bagaimana bisa ada perbedaan kualitatif antara p = 100 dan p = 1000 mengingat keduanya lebih besar dari n?

hal=1000hal=100


Komentar

Tampaknya Anda mendapatkan minimum kecil untuk beberapa lambda non-nol (saya melihat gambar Anda), tetapi kurva masih benar-benar datar di sebelah kiri itu. Jadi pertanyaan utama saya tetap mengapa mengapa λ → 0 tidak terlalu terasa. Saya belum melihat jawaban di sini. Apakah Anda berharap ini menjadi fenomena umum? Yaitu untuk setiap data dengan n≪p, lambda = 0 akan melakukan [hampir] sebaik lambda optimal? Atau apakah ini sesuatu yang istimewa tentang data ini? Jika Anda melihat di atas di komentar, Anda akan melihat bahwa banyak orang bahkan tidak percaya bahwa itu mungkin.

Saya pikir Anda menggabungkan kinerja validasi dengan kinerja tes, dan perbandingan seperti itu tidak dibenarkan.

Sunting: perhatikan ketika kita menetapkan lambdake 0 setelah menjalankan seluruh kinerja jalur regularisasi tidak menurun seperti itu, oleh karena itu jalur regularisasi adalah kunci untuk memahami apa yang terjadi!

Juga, saya tidak begitu mengerti kalimat terakhir Anda. Lihatlah output cv.glmnet untuk p = 100. Ini akan memiliki bentuk yang sangat berbeda. Jadi apa yang memengaruhi bentuk ini (asimtot di sebelah kiri vs tidak ada asimtot) ketika p = 100 atau p = 1000?

Mari kita bandingkan jalur regularisasi untuk keduanya:

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")

masukkan deskripsi gambar di sini

x11()
plot(fit100, "lambda")

masukkan deskripsi gambar di sini

hal=1000λhal=100

hal=1000


λ0nhal

Juga, saya tidak begitu mengerti kalimat terakhir Anda. Lihatlah cv.glmnetoutput untuk p = 100. Ini akan memiliki bentuk yang sangat berbeda. Jadi apa yang mempengaruhi bentuk ini (asimtot di sebelah kiri vs tidak ada asimtot) ketika p = 100 atau p = 1000?
Amuba kata Reinstate Monica

Apakah Anda tahu jika mlrmemilih lambda.minatau lambda.1se(dalam cv.glmnetterminologi)?
Amuba mengatakan Reinstate Monica

@amoeba lambda.min. Ada juga regr.cvglmnetpembelajar, yang mungkin memungkinkan seseorang untuk memilih aturan lain.
Firebug

Terima kasih. Sejujurnya saya tidak mengerti output benchmark 1e-100 Anda. Misalnya untuk p = 1100 itu memberi MSE = 1,45. Tetapi di sini tidak ada penyetelan hyperparameter di loop dalam jadi pada dasarnya orang tidak perlu loop CV dalam sama sekali. Berarti hasilnya harus sama dengan CV non-bersarang di lambda = 1e-100. Tetapi kita melihat pada gambar pertama bahwa MSE ada sekitar 0,7. Itu tidak masuk akal bagi saya.
Amoeba berkata Reinstate Monica

5

Bagaimana OLS (norma minimal) gagal untuk berpakaian berlebihan?

Pendeknya:

Parameter eksperimental yang berkorelasi dengan parameter (tidak diketahui) dalam model sebenarnya akan lebih cenderung diperkirakan dengan nilai tinggi dalam prosedur pemasangan OLS norma minimal. Itu karena mereka akan cocok dengan 'model + noise' sedangkan parameter lain hanya akan cocok dengan 'noise' (sehingga mereka akan cocok dengan bagian yang lebih besar dari model dengan nilai koefisien yang lebih rendah dan lebih cenderung memiliki nilai tinggi dalam OLS norma minimal).

Efek ini akan mengurangi jumlah overfitting dalam prosedur pemasangan OLS norma minimal. Efeknya lebih jelas jika lebih banyak parameter tersedia sejak saat itu sehingga menjadi lebih mungkin bahwa sebagian besar 'model sebenarnya' dimasukkan dalam perkiraan.

Bagian yang lebih panjang:
(Saya tidak yakin apa yang harus ditempatkan di sini karena masalah ini tidak sepenuhnya jelas bagi saya, atau saya tidak tahu ketepatan apa yang dibutuhkan jawaban untuk menjawab pertanyaan)

Di bawah ini adalah contoh yang dapat dengan mudah dibangun dan menunjukkan masalah. Efeknya tidak begitu aneh dan contohnya mudah dibuat.

  • hal=200
  • n=50
    • tm=10
    • koefisien model ditentukan secara acak

Dalam contoh kasus ini kami mengamati bahwa ada beberapa over-fitting tetapi koefisien parameter yang termasuk dalam model sebenarnya memiliki nilai yang lebih tinggi. Jadi R ^ 2 mungkin memiliki beberapa nilai positif.

Gambar di bawah ini (dan kode untuk menghasilkannya) menunjukkan bahwa pemasangan berlebihan terbatas. Titik-titik yang terkait dengan model estimasi 200 parameter. Titik-titik merah berhubungan dengan parameter-parameter yang juga ada dalam 'model sebenarnya' dan kami melihat bahwa mereka memiliki nilai yang lebih tinggi. Jadi, ada beberapa tingkat mendekati model nyata dan mendapatkan R ^ 2 di atas 0.

  • Perhatikan bahwa saya menggunakan model dengan variabel ortogonal (fungsi sinus). Jika parameter berkorelasi maka mereka dapat terjadi dalam model dengan koefisien yang relatif sangat tinggi dan menjadi lebih dihukum dalam norma OLS minimal.
  • ssayan(Sebuahx)ssayan(bx)xxnhal

contoh over-fitting dikurangi

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))

Teknik beta terpotong dalam kaitannya dengan regresi ridge

l2β

  • Sepertinya model kebisingan terpotong melakukan hal yang sama (hanya menghitung sedikit lebih lambat, dan mungkin sedikit lebih sering kurang baik).
  • Namun tanpa pemotongan efeknya jauh kurang kuat.
  • Korespondensi antara menambahkan parameter dan penalti ridge ini tidak selalu merupakan mekanisme terkuat di belakang tidak adanya over-fitting. Ini dapat dilihat terutama pada kurva 1000p (pada gambar pertanyaan) akan hampir 0,3 sedangkan kurva lainnya, dengan p yang berbeda, tidak mencapai level ini, tidak peduli apa parameter regresi ridge. Parameter tambahan, dalam kasus praktis itu, tidak sama dengan pergeseran parameter punggungan (dan saya rasa ini karena parameter tambahan akan membuat model yang lebih baik, lebih lengkap,).

  • Parameter kebisingan mengurangi norma di satu sisi (seperti regresi ridge) tetapi juga memperkenalkan kebisingan tambahan. Benoit Sanchez menunjukkan bahwa dalam batas tersebut, menambahkan banyak banyak parameter kebisingan dengan deviasi yang lebih kecil, pada akhirnya akan sama dengan regresi ridge (semakin banyak parameter kebisingan membatalkan satu sama lain). Tetapi pada saat yang sama, itu membutuhkan lebih banyak perhitungan (jika kita meningkatkan penyimpangan kebisingan, untuk memungkinkan untuk menggunakan lebih sedikit parameter dan mempercepat perhitungan, perbedaannya menjadi lebih besar).

Rho = 0,2 membandingkan kebisingan terpotong dengan regresi ridge

Rho = 0,4 membandingkan kebisingan terpotong dengan regresi ridge

Rho = 0,2 meningkatkan varians dari parameter kebisingan ke 2 membandingkan kebisingan terpotong dengan regresi ridge

contoh kode

# 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) Terima kasih. Saya pikir argumen intuitif di awal jawaban Anda masuk akal.
Amuba mengatakan Reinstate Monica

1

nhal

SEBUAHx=gδ,
SEBUAHgδ

Jelas, ini adalah masalah terbalik yang keliru. Jadi, Anda dapat menyelesaikannya dengan invers SVD atau Moore-Penrose, yang akan memberikan solusi paling tidak normal. Dengan demikian seharusnya tidak mengherankan bahwa solusi norma Anda yang paling tidak langsung gagal.

Namun, jika Anda mengikuti makalah ini, Anda dapat melihat bahwa regresi punggungan akan menjadi peningkatan pada hal di atas. Peningkatan ini benar-benar perilaku yang lebih baik dari estimator, karena solusi Moore-Penrose tidak harus dibatasi.

MEMPERBARUI

Saya menyadari bahwa saya tidak menjelaskan bahwa masalah yang keliru menyebabkan overfitting. Ini kutipan dari makalah Gábor A, Banga JR. Estimasi parameter yang kuat dan efisien dalam model dinamis sistem biologis . Biologi Sistem BMC. 2015; 9: 74. doi: 10.1186 / s12918-015-0219-2:

Kelemahan dari masalah ini biasanya muncul dari (i) model dengan sejumlah besar parameter (over-parametrization), (ii) kelangkaan data eksperimental dan (iii) kesalahan pengukuran yang signifikan [19, 40]. Sebagai akibatnya, kita sering mendapatkan overfitting dari model kinetik seperti itu, yaitu model terkalibrasi dengan kecocokan yang wajar dengan data yang tersedia tetapi kemampuan yang buruk untuk generalisasi (nilai prediksi rendah)

Jadi, argumen saya dapat dinyatakan sebagai berikut:

  • masalah yang ditimbulkan menyebabkan overfitting
  • (n <p) kasus adalah masalah terbalik yang sangat buruk
  • X+
  • oleh karena itu, itu menangani overfitting setidaknya sampai taraf tertentu, dan seharusnya tidak mengherankan bahwa itu tidak sepenuhnya gagal, tidak seperti OLS biasa seharusnya

Sekali lagi, regularisasi masih merupakan solusi yang lebih kuat.


1
(+1) Terima kasih, tapi saya tidak mengerti bagaimana makalah ini relevan. Saya akan melihatnya besok secara lebih rinci. Di mana tepatnya mereka mengatakan bahwa norma minimum solusi OLS tidak akan overfit atau bahwa persyaratan norma minimum dapat dilihat sebagai regularisasi?
Amoeba berkata Reinstate Monica

1
Mari kita bahas ketika Anda membaca koran. Mereka tidak mengatakan invers psudo adalah regularisasi. Apa yang mereka katakan adalah bahwa itu adalah solusi untuk masalah yang diajukan. Apa yang saya katakan adalah bahwa overfitting adalah karena masalah yang ditimbulkan masalah, jadi dengan mengatasi yang terakhir Anda merawat mantan meskipun tidak serta dengan regularisasi.
Aksakal

1
Saya pikir hal yang membingungkan bukanlah bahwa solusi norma minimum tidak memperbaiki over-fitting sampai batas tertentu, tetapi menambahkan lebih banyak regularisasi tidak meningkatkan hal-hal lebih lanjut. Juga mengapa solusi norma minimum lebih efektif karena jumlah fitur bertambah besar. Intuisi saya adalah bahwa masalah dengan lebih banyak parameter memerlukan lebih banyak regularisasi (semua hal dinyatakan sama) daripada kurang. Ini adalah masalah yang sangat menarik, dan dapat membantu menjelaskan mengapa mis. Bahkan jaringan saraf yang tidak diregulasi tidak terlalu sesuai dengan yang Anda harapkan.
Dikran Marsupial

1
@Dikran Sebenarnya bentuk lain atau regularisasi masih dapat meningkatkan kinerja: misalnya saya dapat meningkatkan kinerja (dibandingkan dengan OLS norma minimum) dengan regresi komponen utama atau dengan jaring elastis. Hanya saja regularisasi punggungan menjadi tidak berguna. Analogi untuk jaringan saraf adalah pemikiran yang menarik yang belum terlintas di benak saya. Apa yang saya lakukan berpikir tentang baru-baru ini meskipun, adalah bahwa tidak heran tidak ada yang mengerti hal pembelajaran yang mendalam mengapa rumit seperti normalisasi batch yang benar-benar bekerja, mengingat bahwa bahkan linear ridge regresi dari Statistik 101 bisa begitu membingungkan :-)
amuba kata mengembalikan Monica

2
βn<<halrmsols
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.