Est une régression de crête inutile dans les dimensions élevées (


50

Considérons un bon vieux problème de régression avec prédicteurs et taille d’échantillon . La sagesse habituelle est que l’estimateur OLS va sur-adapter et sera généralement surperformé par l’estimateur de régression de crête:Il est standard d’utiliser la validation croisée pour trouver un paramètre de régularisation optimal . Ici, j'utilise un CV 10 fois. Mise à jour de clarification: lorsque , par "estimateur OLS", je comprends "estimateur OLS à norme minimale" donné parpβ = ( X X + λ I ) - 1 X y . λn

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

J'ai un jeu de données avec et . Tous les prédicteurs sont standardisés, et il y en a beaucoup qui (seuls) peuvent faire du bon travail en prédisant . Si je sélectionne au hasard une petite valeur, disons , nombre de prédicteurs, je reçois une courbe de CV raisonnable: les grandes valeurs de donnent zéro R-carré, les petites valeurs de donnent un R-carré négatif (car overfitting) et il y a un maximum entre les deux. Pour la courbe est similaire. Cependant, pour beaucoup plus grand que cela, par exemple , je n’obtiens pas de maximum du tout: les plateaux de courbes, ce qui signifie que MCO avecn=80p>1000yp=50<nλλp=100>npp=1000λ0 effectue aussi bien que la régression de crête avec optimale .λ

entrez la description de l'image ici

Comment est-ce possible et que dit-il de mon jeu de données? Est-ce que je manque quelque chose d'évident ou est-ce vraiment contre-intuitif? Comment peut-il y avoir une différence qualitative entre et étant donné que les deux sont plus grands que ?p = 1000 np=100p=1000n

Dans quelles conditions la solution OLS de norme minimale pour n'est- t-elle pas surajustée?n<p


Mise à jour: Il y avait une certaine incrédulité dans les commentaires, voici donc un exemple reproductible utilisant glmnet. J'utilise Python mais les utilisateurs de R adapteront facilement le code.

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

entrez la description de l'image ici entrez la description de l'image ici


2
@DJohnson Sans blague. Le CV 10 fois habituel, ce qui signifie que chaque jeu d'apprentissage a n = 72 et que chaque jeu de test a n = 8.
amibe dit de réintégrer Monica

2
C'est loin d'être un CV habituel . Dans ce cas, comment peut-on espérer un résultat détectable?
Mike Hunter

3
@DJohnson Je ne comprends pas pourquoi vous dites que c'est loin d'être habituel. C'est ce qu'est un CV 10 fois.
amibe dit de réintégrer Monica

2
@ seanv507 je vois. Eh bien, je suggère de définir "solution avec lambda = 0" comme "solution de norme minimale avec lambda = 0". Je suppose que ma question peut être reformulée comme suit: Dans quelles conditions une solution MLS à norme minimale avec n <p overfit vs non overfit?
amibe dit de réintégrer Monica le

3
@ amoeba: Merci pour cette question. Cela a été extrêmement instructif et intéressant jusqu'à présent.
usεr11852 dit Rétablir Monic

Réponses:


23

Une régularisation naturelle se produit du fait de la présence de nombreux petits composants dans l’ACP théorique de . Ces petits composants sont utilisés implicitement pour ajuster le bruit à l’aide de petits coefficients. Lorsque vous utilisez la norme OLS de norme minimale, vous adaptez le bruit à de nombreux petits composants indépendants, ce qui a un effet de régularisation équivalent à celui de la régularisation de la crête. Cette régularisation est souvent trop forte et il est possible de la compenser en utilisant une "anti-régularisation" connue sous le nom de Crête négative . Dans ce cas, vous verrez que le minimum de la courbe MSE apparaît pour les valeurs négatives de .λxλ

Par ACP théorique, j'entends:

Soit une distribution normale multivariée. Il existe une isométrie linéaire telle que où est diagonale: les composantes de sont indépendantes. est simplement obtenu en diagonalisant .f u = f ( x ) ~ N ( 0 , D ) D u D ΣxN(0,Σ)fu=f(x)N(0,D)DuDΣ

Maintenant, le modèle peut être écrit (une isométrie linéaire préserve le produit scalaire). Si vous écrivez , le modèle peut être écrit . De plusles méthodes d'ajustement telles que la crête ou la norme minimale OLS sont donc parfaitement isomorphes: l'estimateur de est l'image par de l'estimateur de .y=β.x+ϵy=f(β).f(x)+ϵγ=f(β)y=γ.u+ϵy = γ . u + ϵ f y = β . x + ϵβ=γy=γ.u+ϵfy=β.x+ϵ

La PCA théorique transforme des prédicteurs non indépendants en prédicteurs indépendants. Il n’ya qu’une relation approximative avec l’ACP empirique dans laquelle vous utilisez la matrice de covariance empirique (qui diffère beaucoup de la théorie théorique avec un petit échantillon). La PCA théorique n'est pas pratiquement calculable, elle n'est utilisée ici que pour interpréter le modèle dans un espace prédicteur orthogonal.

Voyons ce qui se passe lorsque nous ajoutons de nombreux petits prédicteurs indépendants de la variance à un modèle:

Théorème

La régularisation de la crête avec le coefficient est équivalente (quand ) à:p λp

  • ajouter faux prédicteurs indépendants (centrés et identiquement répartis) chacun avec varianceλpλp
  • ajustement du modèle enrichi avec l'estimateur MLS à la norme minimale
  • ne garder que les paramètres des vrais prédicteurs

(croquis de) preuve

Nous allons prouver que les fonctions de coût sont asymptotiquement égales. le modèle en prédicteurs réels et factices: . La fonction de coût de Ridge (pour les vrais prédicteurs) peut être écrite:y=βx+βx+ϵ

costλ=β2+1λyXβ2

Lorsque vous utilisez la norme minimale OLS, la réponse est parfaitement adaptée: le terme d'erreur est 0. La fonction de coût ne concerne que la norme des paramètres. Il peut être divisé en vrais paramètres et faux:

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

Dans la bonne expression, la solution de norme minimale est donnée par:

β=X+(yXβ)

Maintenant, en utilisant SVD pour :X

X=UΣV

X+=VΣ+U

Nous voyons que la norme de dépend essentiellement des valeurs singulières de qui sont les inverses des valeurs singulières de . La version normalisée de est . J'ai étudié la littérature et les valeurs singulières des grandes matrices aléatoires sont bien connues. Pour et suffisamment grand, minimum et maximum valeurs singulières sont approchées par (voir théorème 1.1 ):βX+XXp/λXpnsminsmax

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

Puisque, pour les grands , tend vers 0, on peut simplement dire que toutes les valeurs singulières sont approximées par . Ainsi:pn/pp

β1λyXβ

Finalement:

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

Remarque : peu importe si vous conservez les coefficients des prédicteurs factices dans votre modèle. La variance introduite par est . Ainsi, vous augmentez votre MSE d'un facteur seulement, ce qui tend vers 1 de toute façon. D'une manière ou d'une autre, vous n'avez pas besoin de traiter les faux prédicteurs différemment des vrais.βxλpβ21pyXβ2npMSE(β)1+n/p

Revenons maintenant aux données de @ amoeba. Après application de la ACP théorique à (supposée normale), est transformé par une isométrie linéaire en une variable dont les composantes sont indépendantes et triées par ordre de variance décroissant. Le problème est équivalent au problème transformé .xxuy=βx+ϵy=γu+ϵ

Maintenant, imaginez la variance des composants comme suit:

entrez la description de l'image ici

Considérons plusieurs des derniers composants, appelez la somme de leur variance . Ils ont chacun une variance approximativement égale à et sont indépendants. Ils jouent le rôle de faux prédicteurs dans le théorème.pλλ/p

Ce fait est plus clair dans le modèle de @ jonny: seule la première composante de l'ACP théorique est corrélée à (elle est proportionnelle ) et présente une variance énorme. Toutes les autres composantes (proportionnelles à ) ont une variance comparativement très faible (écrivez la matrice de covariance et diagonalisez-la pour le voir) et jouez le rôle de faux prédicteurs. J'ai calculé que la régularisation correspond ici (environ) à la précédente sur alors que le vrai . C'est vraiment trop rétréci. Ceci est visible par le fait que la MSE finale est beaucoup plus grande que la MSE idéale. L'effet de régularisation est trop fort.yx¯xix¯N(0,1p2)γ1γ12=1p

Il est parfois possible d'améliorer cette régularisation naturelle par Ridge. D'abord, vous avez parfois besoin de dans le théorème vraiment grand (1000, 10000 ...) pour rivaliser sérieusement avec Ridge et la finitude de est comme une imprécision. Mais cela montre aussi que Ridge est une régularisation supplémentaire par rapport à une régularisation implicite existant naturellement et qu’elle ne peut donc avoir qu’un très faible effet. Parfois, cette régularisation naturelle est déjà trop forte et Ridge peut même ne pas être une amélioration. Plus que cela, il vaut mieux utiliser un anti-régularisation: Ridge à coefficient négatif. Ceci montre MSE pour le modèle de @ jonny ( ), en utilisant :ppp=1000λR

entrez la description de l'image ici


2
+1 Très bien, merci d'avoir écrit ça. Je pense qu'il est important de préciser que lorsque vous parlez de «régularisation», vous entendez une régularisation de (c.-à-d. Une arête). On peut espérer que le lasso ou le réseau élastique peut se comporter mieux et c’est bien ce que les gens utilisent dans situations. Personne n'utilise une crête pure dans un tel contexte et le conseil standard consiste à utiliser des régularisations pour réduire la pauvreté; le comportement de pure crête pourrait donc n'avoir qu'un intérêt théorique. Pourtant, il est assez étonnant que nous semblions le découvrir ici. Pourquoi est-ce pas connu ?? L2np
amibe dit de réintégrer Monica

1
Mal codé en dur proportionnel à . Désolé, je n'ai pas eu le temps de faire quelque chose de bien. Mon objectif principal était le comportement de la norme OLS min-norme, de voir qu'il diffère de votre exemple et que "certaines régularisations pas trop mauvaises" sur 40 premières étaient violemment meilleures. λσ2
Benoit Sanchez

3
Je pense avoir compris le mystère: la régularisation de la crête avec le coefficient équivaut à la méthode MLS de norme minimale en ajoutant faux prédicteurs, chacun avec une variance (asymptotiquement pour les grands ). Dans vos données et le modèle de Johny, cela se passe sans rien faire, grâce aux composants de variance les plus faibles de PCA. Maintenant, j'ai besoin de temps pour trouver un moyen d'expliquer cela clairement ...λpλ/pp
Benoit Sanchez

1
J'ai clarifié un petit point: les coefficients des faux prédicteurs n'augmentent pas beaucoup l'erreur (voir la note à la fin de la preuve). C'est important parce que dans vos données / jonny, ils sont inévitablement conservés.
Benoit Sanchez

3
J'ai essayé négatif Ridge. Je ne peux pas croire mais ça marche !!! (et pas seulement sur le modèle de Jonny ...)
Benoit Sanchez

16

Merci à tous pour la bonne discussion en cours. Le nœud du problème semble être que la méthode MLS à la norme minimale effectue effectivement un retrait similaire à la régression de la crête. Cela semble se produire chaque fois que . Ironiquement, l' ajout de prédicteurs de bruit purs peut même être utilisé comme une forme ou une régularisation très étrange.pn


Partie I. Démonstration avec données artificielles et CV analytique

@ Jonny (+1) a proposé un exemple artificiel très simple que je vais adapter légèrement ici. de taille de et sont générés de sorte que toutes les variables soient gaussiennes avec une variance unitaire et que la corrélation entre chaque prédicteur et la réponse soit . Je vais réparer .Xn×pyρρ=.2

J'utiliserai le CV non part un parce qu'il existe une expression analytique pour l'erreur au carré: on l'appelle PRESS , "somme prédite des carrés". où sont des résidus et est le chapeau matrice en termes de SVD . Cela permet de reproduire les résultats de @ Jonny sans utiliser et sans effectuer de validation croisée (je trace le rapport entre PRESS et la somme des carrés de ):

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

entrez la description de l'image ici

Cette approche analytique permet de calculer la limite . Il ne suffit pas de brancher dans la formule PRESS: lorsque et , les résidus sont tous égaux à zéro et hat matrix est la matrice identité avec les uns sur la diagonale, ce qui signifie que les fractions dans PRESS les équations sont indéfinies. Mais si nous calculons la limite à , alors elle correspondra à la solution MLS à norme minimale avec .λ0λ=0n<pλ=0λ0λ=0

L'astuce consiste à faire une expansion de Taylor de la matrice de chapeau lorsque : Ici, j'ai introduit la matrice de Grammes .λ0

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

Nous avons presque terminé:Lambda a été annulé, nous avons donc la valeur limite. Je l'ai tracé avec un gros point noir sur la figure ci-dessus (sur les panneaux où ), et il correspond parfaitement.

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

Mise à jour du 21 février. La formule ci-dessus est exacte, mais nous pouvons obtenir un aperçu en faisant d’autres approximations. Il semble que ait des valeurs approximativement égales sur la diagonale même si a des valeurs très inégales (probablement parce que mélange assez bien toutes les valeurs propres). Nous avons donc pour chaque que où les parenthèses angulaires indiquent une moyenne. En utilisant cette approximation, nous pouvons réécrire:Cette approximation est montrée sur la figure ci-dessus avec des cercles ouverts rouges.G1SUiGii1S2

PRESSS2S2Uy2.

Que ce sera plus grande ou plus petite que dépend de la valeur singulière . Dans cette simulation, est corrélé avec le premier PC de donc est grand et tous les autres termes sont petits. (Dans mes données réelles, est également bien prédit par les principaux PC.) Maintenant, dans le cas , si les colonnes de sont suffisamment aléatoires, toutes les valeurs singulières seront assez proches les unes des autres (lignes approximativement orthogonal). Le terme "principal"y2=Uy2SyXU1yypnXU1ysera multiplié par un facteur inférieur à 1. Les termes à la fin seront multipliés par des facteurs supérieurs à 1 mais pas beaucoup plus grands. Globalement, la norme diminue. En revanche, dans le cas , il y aura de très petites valeurs singulières. Après inversion, ils deviendront des facteurs importants qui augmenteront la norme globale.pn

[Cet argument est très vague. J'espère que cela pourra être rendu plus précis.]

En guise de vérification, si j'échange l'ordre des valeurs singulières d'ici S = diag(flipud(diag(S)));là, le MSE prédit est supérieur à partout sur les 2e et 3e panneaux.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

Partie II. Ajout de prédicteurs de bruit purs comme forme de régularisation

@Jonny, @Benoit, @Paul, @Dikran et d'autres ont fait valoir les arguments en faveur d'une augmentation du nombre de prédicteurs afin de réduire la solution MLS à norme minimale. En effet, une fois que , tout nouvel prédicteur ne peut que réduire la norme de la solution de norme minimale. Ainsi, l'ajout de prédicteurs fera baisser la norme, ce qui est un peu similaire à la manière dont la régression de crête pénalise la norme.p>n

Cela peut-il être utilisé comme stratégie de régularisation? Nous commençons avec et , puis ajoutons prédicteurs de bruit purs en tant que tentative de régularisation. Je vais faire LOOCV et le comparer avec LOOCV pour la crête (calculé comme ci-dessus). Notez qu'après avoir obtenu sur les prédicteurs , je le "tronque" en car je ne m'intéresse qu'aux prédicteurs d'origine.n=80p=40qβ^p+qp

entrez la description de l'image ici

ÇA MARCHE!!!

En fait, il n'est pas nécessaire de "tronquer" la version bêta; même si j'utilise les prédicteurs bêta complet et , je peux obtenir de bonnes performances (ligne pointillée sur la sous-parcelle à droite). Ceci, je pense, imite mes données réelles dans la question: seuls quelques prédicteurs prédisent réellement , la plupart d’entre eux sont du bruit pur et ils servent de régularisation. Dans ce régime, une régularisation supplémentaire des crêtes n'aide pas du tout.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 Dans cette expérience, je commence par n = 80 et p = 40. Au fur et à mesure que le nombre total de prédicteurs (p + q) approche n = 80, le problème devient mal conditionné et la solution MCO surajustement en profondeur. L’erreur autour de q = 40 est énorme. Dès que p + q> n, la contrainte "minimum-norm" se déclenche et l'erreur commence à diminuer, mais il faut un certain temps pour revenir à l'état où elle était avec q = 0. Cela se produit autour de q = 70, soit p + q = 130. Après cela, l'erreur diminue encore plus et cette partie du graphique est similaire au graphique de régression de la crête. Est-ce que ça fait du sens?
amibe dit de réintégrer Monica le

@ MartijnWeterings Au 1er commentaire: nous sommes sur la même page. Deuxième commentaire: dans ma question, je ne tronque pas la version bêta, c'est vrai. Mais en réalité, si je ne tronque pas la version bêta dans ma simulation (utiliser y(fold) - XX(fold,:) * betaau lieu de XX(fold,1:size(X,2)) * beta(1:size(X,2))), les résultats ne changent pas trop. Je suppose que je devrais ajouter ceci à ma réponse. Je pense que mes données d'origine montrent ce genre de comportement.
amibe dit de réintégrer Monica le

(1/2): Je suis toujours en train de parcourir tous les commentaires et le code pour comprendre, mais une idée me vient à l'esprit: existe-t-il une relation entre ce phénomène que nous observons et la relation entre la régression de la crête et les effets aléatoires?
Ryan Simmons

(2/2): Selon la réponse de Randel ici ( stats.stackexchange.com/questions/122062/… ), nous voyons une estimation équivalente entre les effets aléatoires et la régression de crête, où lambda est égal au rapport des résidus à la variance de l'effet aléatoire. Selon la réponse de Benoit Sanchez, nous voyons ici que la régression de l'arête équivaut à l'ajout d'un nombre arbitraire de faux prédicteurs indépendants ayant chacun une variance égale à une fonction de lambda et au nombre de paramètres. Il me semble qu’il existe une relation conceptuelle.
Ryan Simmons

@ amoeba c'était une erreur. l'ajout d'un vecteur mis à l'échelle à la matrice X régularise quelque peu, mais pas la même chose que les vecteurs de régression de crête ou de bruit. Cependant, je me demande bien ce qui se passe lorsque nous soustrayons un peu de de chaque x afin de rendre chaque variable légèrement négativement corrélée (ou moins positive) avec le vecteur y. Ceci afin d'effectuer une régularisation «négative». Cela afin de "défaire" la régularisation des 1000 vecteurs (à un moment donné, cela peut devenir trop, comme vous le voyez avec le coefficient de régularisation maximum / optimal étant maintenant presque hors limites). y
Sextus Empiricus

15

Voici une situation artificielle où cela se produit. Supposons que chaque variable prédictive est une copie de la variable cible dans laquelle une grande quantité de bruit gaussien est appliquée. Le meilleur modèle possible est une moyenne de toutes les variables prédictives.

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 pour divers lambda avec 100 prédicteurs

100 variables se comportent de manière "normale": Une valeur positive de lambda minimise les erreurs d'échantillonnage.

Mais augmentez num.vars dans le code ci-dessus à 1 000 et voici le nouveau chemin MSE. (J'ai étendu pour me connecter (Lambda) = -100 pour me convaincre.

MSE pour divers lambda avec 1000 prédicteurs

Ce que je pense se passe

Lors de l'ajustement de nombreux paramètres avec une faible régularisation, les coefficients sont répartis de manière aléatoire autour de leur valeur réelle avec une variance élevée.

Lorsque le nombre de prédicteurs devient très important, l '"erreur moyenne" tend vers zéro et il est préférable de laisser les coefficients baisser là où ils peuvent et de tout résumer plutôt que de les biaiser vers 0.

Je suis sûr que la situation selon laquelle la vraie prédiction est la moyenne de tous les prédicteurs n'est pas le seul cas où cela se produit, mais je ne sais pas comment commencer à identifier la plus grande condition nécessaire ici.

MODIFIER:

Le comportement "à plat" pour un très bas niveau lambda se produira toujours, car la solution converge vers la solution MLS à norme minimale. De même, la courbe sera plate pour un lambda très élevé, car la solution converge vers 0. Il n'y aura pas de minimum si et seulement si l'une de ces deux solutions est optimale.

Pourquoi la solution MLS à norme minimale est-elle si (comparativement) bonne dans ce cas? Je pense que cela est lié au comportement suivant que je trouvais très contre-intuitif, mais à la réflexion, cela a beaucoup de sens.

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)

Tracé de la magnitude maximale des coefficients lorsque le nombre de prédicteurs augmente

Avec des prédicteurs générés aléatoirement et sans lien avec la réponse, lorsque p augmente, les coefficients deviennent plus grands, mais une fois que p est beaucoup plus grand que N, ils se contractent vers zéro. Cela se produit également dans mon exemple. Les solutions non régularisées pour ces problèmes ne nécessitent donc pas de réduction, car elles sont déjà très petites!

Cela se produit pour une raison triviale. peut être exprimée exactement comme une combinaison linéaire des colonnes de . est le vecteur de coefficients de la norme minimale. Au fur et à mesure que de nouvelles colonnes sont ajoutées, la norme de doit diminuer ou rester constante, car une combinaison linéaire possible consiste à conserver les coefficients précédents identiques et à définir les nouveaux coefficients sur .yXβ^β^0


1
(+1). Le phénomène semble donc se produire lorsque les prédicteurs sont corrélés. Cela ne signifie pas formellement que la courbe d'erreur n'a pas de minimum pour positif , ni que la limite à 0 n'est pas grande. Cela signifie simplement que la courbe a tendance à devenir plate et que le seuil déterminant la taille pour que la régularisation cesse de fonctionner se rapproche de 0 pour les grands . Ici, ce seuil dépasse les limites de calcul, mais la réponse de Firebug suggère qu'il peut toujours exister. λλp
Benoit Sanchez

1
Pourquoi avez-vous besoin glmnetde votre mise à jour? Si vous n'avez besoin que de la solution OLS à norme minimale, il existe une formule directe (voir la deuxième formule de ma question) et si l'on calcule la SVD de cette formule devient simplement . Il existe probablement aussi une fonction dans R qui calcule cette solution, mais je ne connais pas vraiment R :)X=USVβ^=VS1Uy
Amibe dit Reinstate Monica

2
En y réfléchissant un peu plus, ce n’est pas surprenant du tout. peut être exprimée exactement comme une combinaison linéaire de vecteurs dans . est le vecteur des coefficients avec la plus petite norme. Lorsque vous ajoutez un vecteur, la norme de doit diminuer ou rester identique, car vous pouvez conserver les anciens coefficients et définir les nouveaux coefficients à zéro. yXβ^β^
Jonny Lomond

3
L'exemple de Jonny est bon car il a déjà été analysé: voir l' estimateur de James-Stein . Lors de l'estimation de la moyenne d'un vecteur fixe de dimension supérieure ou égale à 3, nous pouvons toujours améliorer le calcul de la moyenne simple en biaisant vers zéro, ce qui correspond plus ou moins à la régression par la crête. Je me demande si l'amélioration est trop légère pour être observée dans ce cas? θ
Paul

3
Il est bien connu que la régression de la crête équivaut à ajouter supplémentaire des échantillons « faux » à l'ensemble de données avec chaque échantillon ayant valeur dans une caractéristique et des zéros partout ailleurs, et toutes les réponses correspondantes étant nul. (Il est facile de réécrire la fonction de coût RR sous cette forme.) Je me demande maintenant s'il existe un moyen d'ajouter des fonctionnalités supplémentaires (par exemple du bruit pur?) Qui auraient un effet similaire. Bien sûr, l'ajout de fonctionnalités supplémentaires signifie que augmentera sa dimensionnalité, mais on ne peut que regarder ses valeurs au niveau des prédicteurs "d'origine". @Paulpλβ^
dit

6

J'ai donc décidé d'exécuter une validation croisée imbriquée à l'aide du mlrpackage spécialisé de R afin de voir ce qui découle réellement de l'approche de modélisation.

Code (cela prend quelques minutes pour fonctionner sur un ordinateur portable ordinaire)

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)

Résultats

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

Ils font fondamentalement la même chose d'une tâche à l'autre.

Alors, qu'en est-il des lambdas optimales?

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

Remarquez que les lambdas sont déjà transformés. Certains ont même choisi le minimum lambda .λ=0

Je tripotai un peu plus glmnetet découvris que ni la lambda minimale n’était choisie. Vérifier:

MODIFIER:

Après les commentaires de l'amibe, il est apparu que le chemin de régularisation était une étape importante de l' glmnetestimation, le code le reflète maintenant. De cette façon, la plupart des divergences ont disparu.

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

entrez la description de l'image ici

Conclusion

Donc, fondamentalement, améliore vraiment l'ajustement ( edit: mais pas beaucoup! ).λ>0

Comment est-ce possible et que dit-il de mon jeu de données? Est-ce que je manque quelque chose d'évident ou est-ce vraiment contre-intuitif?

Nous sommes probablement plus proches de la vraie distribution du paramètre de données à une petite valeur supérieure à zéro. Il n'y a rien de contre-intuitif à ce sujet cependant.λ

Edit: n'oubliez pas que le chemin de régularisation de la crête utilise les estimations de paramètres précédentes lorsque nous appelons glmnet, mais cela dépasse mon expertise. Si nous établissons une valeur très basse lambdaen isolation, cela dégradera probablement les performances.

EDIT: La sélection lambda en dit plus sur vos données. Lorsque les performances des lambdas diminuent, cela signifie que votre modèle contient des coefficients préférentiels, c’est -à- dire plus grands. En effet, les lambdas de grande taille réduisent tous les coefficients vers zéro. Bien que signifie que les degrés de liberté effectifs dans votre modèle sont inférieurs aux degrés de liberté apparents, .λ0p

Comment peut-il y avoir une différence qualitative entre p = 100 et p = 1000 étant donné que les deux sont plus grands que n?

p=1000 contient invariablement au moins le même nombre d’informations, voire plus que .p=100


commentaires

Il semble que vous obteniez un minimum minime pour un lambda non nul (je regarde votre figure), mais la courbe est toujours très plate à gauche. Donc, ma question principale reste de savoir pourquoi λ → 0 ne semble pas trop surajustement. Je ne vois pas encore de réponse ici. Vous attendez-vous à ce que ce soit un phénomène général? C'est-à-dire que pour toutes les données avec nambp, lambda = 0 donnera [presque] autant que l'optimum de lambda? Ou est-ce quelque chose de spécial à propos de ces données? Si vous regardez ci-dessus dans les commentaires, vous verrez que beaucoup de gens ne m'ont même pas cru que c'était possible.

Je pense que vous associez performances de validation et performances de test, et une telle comparaison n'est pas justifiée.

Remarque: notez cependant que lorsque nous mettons lambdaà 0 après l'exécution du chemin de régularisation complet, les performances ne se dégradent pas en tant que telles, le chemin de régularisation est donc la clé pour comprendre ce qui se passe!

De plus, je ne comprends pas bien votre dernière ligne. Regardez la sortie cv.glmnet pour p = 100. Il aura une forme très différente. Alors, qu'est-ce qui affecte cette forme (asymptote à gauche vs aucune asymptote) lorsque p = 100 ou p = 1000?

Comparons les chemins de régularisation pour les deux:

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

entrez la description de l'image ici

x11()
plot(fit100, "lambda")

entrez la description de l'image ici

Il devient clair que donne des coefficients plus grands pour augmenter , même s'il a des coefficients plus petits pour la crête asymptotique-MCO, à gauche des deux courbes. Donc, fondamentalement, overfits à gauche du graphique, ce qui explique probablement la différence de comportement entre eux.p=1000λp=100

Il est plus difficile pour sur-adapter car, même si Ridge réduit les coefficients à zéro, ils ne sont jamais nuls. Cela signifie que le pouvoir prédictif du modèle est partagé entre de nombreuses autres composantes, ce qui facilite la prévision autour de la moyenne au lieu d'être emportée par le bruit.p=1000


+1 Merci d'avoir fait ces expériences! Il semble que vous obteniez un minimum minime pour un lambda non nul (je regarde votre figure), mais la courbe est toujours très plate à gauche. Donc, ma question principale reste de savoir pourquoi ne semble pas excessif. Je ne vois pas encore de réponse ici. Vous attendez-vous à ce que ce soit un phénomène général? C'est-à-dire que pour toutes les données avec , lambda = 0 donnera [presque] autant que l'optimum de lambda? Ou est-ce quelque chose de spécial à propos de ces données? Si vous regardez ci-dessus dans les commentaires, vous verrez que beaucoup de gens ne m'ont même pas cru que c'était possible. λ0np
amibe dit de réintégrer Monica le

De plus, je ne comprends pas bien votre dernière ligne. Regardez la cv.glmnetsortie pour p = 100. Il aura une forme très différente. Alors, qu'est-ce qui affecte cette forme (asymptote à gauche ou sans asymptote) lorsque p = 100 ou p = 1000?
Amibe dit de réintégrer Monica le

Savez-vous si mlrchoisit lambda.minou lambda.1se(dans la cv.glmnetterminologie)?
amibe dit de réintégrer Monica le

@ amoeba lambda.min. Il y a aussi un regr.cvglmnetapprenant, ce qui permet probablement de choisir d'autres règles.
Firebug

Merci. Pour être honnête, je ne comprends pas le résultat de votre repère 1e-100. Par exemple, pour p = 1100, MSE = 1,45. Mais ici, il n'y a pas de réglage hyperparamètre dans la boucle interne, donc, fondamentalement, on n'a pas besoin de boucle CV interne. Cela signifie que le résultat devrait être identique à celui obtenu avec un CV non imbriqué à lambda = 1e-100. Mais nous voyons sur le premier chiffre que le MSE est autour de 0,7. ça n'a pas de sens pour moi.
amibe dit de réintégrer Monica le

5

Comment une norme minimale peut-elle omettre de surcharger?

En bref:

Les paramètres expérimentaux en corrélation avec les paramètres (inconnus) du modèle réel auront plus de chances d'être estimés avec des valeurs élevées dans une procédure d'ajustement MLS à norme minimale. En effet, ils correspondent au "modèle + bruit" alors que les autres paramètres s’adaptent uniquement au "bruit" (ils correspondent donc à une plus grande partie du modèle avec une valeur inférieure du coefficient et sont plus susceptibles d’avoir une valeur élevée.) dans la norme minimale OLS).

Cet effet réduira le nombre de surajustements lors d’une procédure d’ajustement MOL normalisée. L'effet est plus prononcé si davantage de paramètres sont disponibles, car il devient alors plus probable qu'une plus grande partie du «modèle réel» soit intégrée à l'estimation.

Partie plus longue:
(je ne suis pas sûr de ce qu'il faut placer ici car la question n'est pas tout à fait claire pour moi, ou je ne sais pas à quelle précision une réponse doit répondre pour répondre à la question)

Vous trouverez ci-dessous un exemple facile à construire et qui illustre le problème. L'effet n'est pas si étrange et les exemples sont faciles à faire.

  • J'ai pris fonctions-sin (car elles sont perpendiculaires) comme variablesp=200
  • créé un modèle aléatoire avec mesures. n=50
    • Le modèle est construit avec seulement des variables, de sorte que 190 des 200 variables créent la possibilité de générer un sur-ajustement.tm=10
    • les coefficients du modèle sont déterminés aléatoirement

Dans cet exemple, nous observons qu'il existe un sur-ajustement, mais que les coefficients des paramètres appartenant au modèle réel ont une valeur plus élevée. Ainsi, le R ^ 2 peut avoir une valeur positive.

L'image ci-dessous (et le code pour le générer) démontrent que le sur-ajustement est limité. Les points relatifs au modèle d’estimation de 200 paramètres. Les points rouges correspondent aux paramètres également présents dans le "vrai modèle" et nous voyons qu'ils ont une valeur plus élevée. Il existe donc un certain degré d'approche du modèle réel et d'obtention du R ^ 2 supérieur à 0.

  • Notez que j'ai utilisé un modèle avec des variables orthogonales (les fonctions sinusoïdales). Si les paramètres sont corrélés, ils peuvent apparaître dans le modèle avec un coefficient relativement très élevé et devenir plus pénalisés dans la norme minimale MCO.
  • Notez que les «variables orthogonales» ne sont pas orthogonales quand on considère les données. Le produit intérieur du n’est nul que lorsque nous intégrons tout l’espace de et non lorsque nous n’avons que quelques échantillons . La conséquence est que même avec un bruit nul, le sur-ajustement se produira (et la valeur R ^ 2 semble dépendre de nombreux facteurs, mis à part le bruit. Bien sûr, il existe la relation et , mais le nombre de variables est également important. dans le vrai modèle et combien d’entre eux sont dans le modèle approprié).x x n psin(ax)sin(bx)xxnp

exemple de sur-ajustement réduit

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

Technique beta tronquée en relation avec la régression de crête

J'ai transformé le code python d'Amoeba en R et combiné les deux graphiques. Pour chaque estimation MLS de norme minimale additionnée de variables de bruit, je fais correspondre une estimation de régression de crête avec la même (approximativement) norm pour le vecteur . βl2β

  • Il semble que le modèle de bruit tronqué fasse à peu près la même chose (calcule seulement un peu plus lentement et peut-être un peu plus souvent moins bien).
  • Cependant, sans la troncature, l'effet est beaucoup moins fort.
  • Cette correspondance entre l'ajout de paramètres et la pénalité de crête n'est pas nécessairement le mécanisme le plus puissant derrière l'absence de sur-ajustement. Cela se voit en particulier dans la courbe 1000p (dans l'image de la question) atteignant presque 0,3 alors que les autres courbes, avec p différent, n'atteignent pas ce niveau, quel que soit le paramètre de régression de la crête. Les paramètres supplémentaires, dans ce cas pratique, ne sont pas identiques à un décalage du paramètre de crête (et je suppose que cela est dû au fait que les paramètres supplémentaires créeront un modèle meilleur, plus complet).

  • Les paramètres de bruit réduisent la norme d'une part (tout comme la régression de crête) mais introduisent également du bruit supplémentaire. Benoit Sanchez montre que dans la limite, en ajoutant de nombreux paramètres de bruit avec une déviation plus petite, cela deviendra éventuellement la même chose que la régression de crête (le nombre croissant de paramètres de bruit s’annulent). Mais en même temps, cela nécessite beaucoup plus de calculs (si on augmente l'écart du bruit pour permettre d'utiliser moins de paramètres et accélérer les calculs, la différence devient plus grande).

Rho = 0,2 comparer le bruit tronqué à la régression de crête

Rho = 0,4 comparer le bruit tronqué à la régression de crête

Rho = 0,2 augmentant la variance des paramètres de bruit à 2 comparer le bruit tronqué à la régression de crête

exemple de code

# 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) Merci. Je pense que l'argument intuitif au début de votre réponse a du sens.
amibe dit de réintégrer Monica le

1

Si vous êtes familier avec les opérateurs linéaires, vous apprécierez peut-être que ma réponse soit le moyen le plus direct de comprendre le phénomène: pourquoi la moindre régression de norme échoue-t-elle? La raison en est que votre problème ( ) est le problème inverse mal posé et que le pseudo-inverse est l’un des moyens de le résoudre. La régularisation est une amélioration cependant.np

Cet article constitue probablement l'explication la plus compacte et la plus pertinente: Lorenzo Rosasco et al, Learning, Regularization and Problèmes inverses mal posés . Ils définissent votre problème de régression comme un apprentissage, voir Eq.3., Où le nombre de paramètres dépasse le nombre d'observations: où est un opérateur linéaire sur l'espace de Hilbert et - données bruitées.A g δ

Ax=gδ,
Agδ

De toute évidence, il s’agit d’un problème inverse mal posé. Donc, vous pouvez le résoudre avec SVD ou l'inverse de Moore-Penrose, ce qui rendrait la solution de moindre norme en effet. Ainsi, il ne devrait pas être surprenant que votre solution la moins normative n’échoue pas immédiatement.

Cependant, si vous suivez les instructions, vous constaterez que la régression de la crête constitue une amélioration par rapport à ce qui précède. L'amélioration est vraiment un meilleur comportement de l'estimateur, puisque la solution de Moore-Penrose n'est pas nécessairement bornée.

MISE À JOUR

Je me suis rendu compte que je ne disais pas clairement que des problèmes mal posés entraînaient un surapprentissage. Voici la citation du journal Gábor A, Banga JR. Estimation de paramètres robuste et efficace dans les modèles dynamiques de systèmes biologiques . BMC Systems Biology. 2015; 9: 74. doi: 10.1186 / s12918-015-0219-2:

Le mauvais conditionnement de ces problèmes provient généralement (i) de modèles avec un grand nombre de paramètres (sur-paramétrisation), (ii) de la rareté des données expérimentales et (iii) des erreurs de mesure significatives [19, 40]. En conséquence, nous obtenons souvent des sur-ajustements de tels modèles cinétiques, c’est-à-dire des modèles calibrés avec un ajustement raisonnable aux données disponibles mais une faible capacité de généralisation (faible valeur prédictive)

Donc, mon argument peut être énoncé comme suit:

  • problèmes mal posés conduisent à la suralimentation
  • (n <p) le cas est un problème inverse extrêmement mal posé
  • Le psudo-inverse de Moore-Penrose (ou d'autres outils comme SVD), que vous appelez dans la question , résout un problème mal posé.X+
  • par conséquent, il prend soin de sur-adapter au moins dans une certaine mesure, et il ne devrait pas être surprenant qu'il n'échoue pas complètement, contrairement à une MCO ordinaire devrait

Encore une fois, la régularisation est encore une solution plus robuste.


1
(+1) Merci, mais je ne vois pas très bien en quoi ce document est pertinent. Je l'examinerai demain plus en détail. Où exactement disent-ils que la solution MLS à norme minimale ne sera pas sur-ajustée ou que l'exigence de norme minimale peut être considérée comme une régularisation?
amibe dit de réintégrer Monica

1
Discutons quand vous lisez le journal. Ils ne disent pas que psudo inverse est une régularisation. Ce qu’ils disent, c’est que c’est la solution au problème mal posé. Ce que je dis, c'est que la suralimentation est due à la mauvaise qualité du problème. En vous attaquant à ce dernier, vous vous occupez du premier, mais pas aussi bien que de la régularisation.
Aksakal

1
Je pense que le problème qui se pose n’est pas que la solution de la norme minimale n’améliore pas le sur-ajustement dans une certaine mesure, mais que l’ajout d’une régularisation supplémentaire n’améliore pas les choses. Aussi, pourquoi la solution de norme minimale est-elle plus efficace à mesure que le nombre de fonctionnalités augmente? Mon intuition est que les problèmes avec plus de paramètres nécessitent plus de régularisation (toutes choses égales par ailleurs) plutôt que moins. Il s’agit d’un problème très intéressant qui peut aider à expliquer pourquoi même les réseaux de neurones non régularisés ne sur-ajustent pas autant que prévu.
Dikran Marsupial

1
@Dikran En réalité, d' autres formes ou régularisations peuvent encore améliorer les performances: par exemple, je peux améliorer les performances (par rapport à la norme MLS à la norme minimale) avec une régression en composantes principales ou avec un réseau élastique. C'est juste que la régularisation de crête devient inutile. L'analogie avec les réseaux de neurones est une pensée fascinante qui ne m'a pas traversé l'esprit. Ce que je fait penser à récemment cependant, est que pas étonnant que personne ne comprend pourquoi délicates choses d'apprentissage en profondeur comme la normalisation des lots vraiment le travail, étant donné que même la régression de la crête linéaire de la statistique 101 peut être si déroutante :-)
amibe dit Réintégrer Monica

2
Ce n’est pas la question principale, mais je pense que cette excellente série de questions, de réponses et de commentaires a été détournée de la validation croisée. Pour cette discussion, il serait beaucoup plus simple de calculer le prédicteur linéaire de population à partir des s utilisés pour simuler les données et de calculer la MSE de tout estimateur du prédicteur linéaire. Et j’ai vu un cas où, pour je n’ai pas pu trouver un AIC corrigé optimal pour la régression de crête ( fonction du package R ). Mais je dois relancer cela en utilisant le vrai prédicteur linéaire comme référence. n < < pβn<<prmsols
Frank Harrell
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.