Est-il nécessaire de redimensionner la valeur cible en plus des fonctionnalités de redimensionnement pour l'analyse de régression?

52

Je construis des modèles de régression. En guise d’étape de prétraitement, j’adapte mes valeurs de caractéristiques à la moyenne 0 et à l’écart type 1. Faut-il normaliser également les valeurs cibles?

utilisateur2806363
la source

Réponses:

50

Analysons d'abord pourquoi la mise à l'échelle des fonctionnalités est effectuée. La mise à l'échelle des fonctions améliore la convergence des algorithmes de descente les plus raides, qui ne possèdent pas la propriété d'invariance d'échelle.

Dans les exemples d’entraînement à descente de gradient stochastique informent les mises à jour de poids de façon itérative, comme :

wt+1=wtγw(fw(x),y)

Où sont les poids, est un pas, est le gradient par rapport aux poids, est une fonction de perte, est la fonction paramétrée par , est un exemple d'apprentissage et est la réponse / libellé.γ wf w w x ywγwfwwxy

Comparez les fonctions convexes suivantes, représentant une mise à l'échelle correcte et une mise à l'échelle incorrecte.

Mise à l'échelle des fonctionnalités

Une mise à jour pondérée de la taille permet d'obtenir une réduction de l'erreur bien meilleure dans le cas correctement mis à l'échelle que dans le cas incorrectement mis à l'échelle. On voit ci-dessous la direction de de longueur .w( f w ( x ) , y ) γγw(fw(x),y)γ

Mise à jour du gradient

Normaliser la sortie n'affectera pas la forme de , donc ce n'est généralement pas nécessaire.f

La seule situation dans laquelle je puisse imaginer que la mise à l'échelle des sorties a un impact est si votre variable de réponse est très grande et / ou si vous utilisez des variables f32 (ce qui est commun avec l'algèbre linéaire GPU). Dans ce cas, il est possible d’obtenir un dépassement de virgule flottante d’un élément des poids. Le symptôme est une valeur Inf ou il englobera l'autre représentation extrême.

Jessica Mick
la source
Mais si nous n'échelonnons pas les entrées et n'appliquons pas Gradient Descent, résoudre pour thêta dans quelque chose comme y = thêta0 + thêta1 * x1 + thêta2 * x2, si nous actualisons les valeurs de X1 et X2 (en les redimensionnant) tout en conservant Y (résultat attendu) identique, les prédictions résultantes pour theta1, theta2 ne seront-elles pas fausses lorsque nous les appliquerons à l'équation d'origine?
Prashant
14

Généralement, ce n'est pas nécessaire. La mise à l'échelle des entrées permet d'éviter la situation, lorsqu'un ou plusieurs éléments dominent les autres, le modèle ne tient donc pas compte de la contribution des variables à plus petite échelle, même si elles sont fortes. Mais si vous redimensionnez la cible, votre erreur quadratique moyenne est automatiquement redimensionnée. MSE> 1 signifie automatiquement que vous réussissez moins bien qu'une prédiction constante (naïve).

Inzl
la source
7

Non, les transformations linéaires de la réponse ne sont jamais nécessaires. Ils peuvent toutefois être utiles pour faciliter l'interprétation de votre modèle. Par exemple, si votre réponse est exprimée en mètres mais qu’elle est généralement très petite, il peut être utile de redimensionner en millimètres, par exemple. Notez également que le centrage et / ou la mise à l'échelle des entrées peuvent être utiles pour la même raison. Par exemple, vous pouvez interpréter grossièrement un coefficient comme un effet sur la réponse par unité de changement dans le prédicteur lorsque tous les autres prédicteurs sont définis sur 0 . Mais souvent, 0 ne sera pas une valeur valide ou intéressante pour ces variables. Le centrage des entrées vous permet d'interpréter le coefficient lorsque l'effet par unité change lorsque les autres prédicteurs prennent leurs valeurs moyennes.

D'autres transformations (par exemple, log ou racine carrée) peuvent être utiles si la réponse n'est pas linéaire dans les prédicteurs de l'échelle d'origine. Si tel est le cas, vous pouvez en savoir plus sur les modèles linéaires généralisés pour voir s'ils vous conviennent.

AlexK
la source
1

Il n'affecte la descente de gradient dans une mauvaise façon. vérifiez la formule pour la descente de gradient:

xn+1=xnγΔF(xn)

Disons que est une fonctionnalité 1000 fois supérieure àx2x1

pour nous avons . Le moyen optimal d'atteindre (0,0), qui est l'optimum global, consiste à traverser la diagonale, mais si l'une des caractéristiques domine l'autre en termes d'échelle, cela n'arrivera pas.F(x)=x2ΔF(x)=2x

Pour illustrer : Si vous effectuez la transformation , supposez un taux d’apprentissage uniforme pour les deux coordonnées et calculez le gradient, puisLa forme fonctionnelle est la même, mais le taux d'apprentissage de la seconde coordonnée doit être ajusté à 1/1000 de celui de la première coordonnée pour l'adapter. Si ce n'est pas le cas, deux vont dominer et le vecteur pointera plus dans cette direction.z=(x1,1000x1)γ

zn+1=znγΔF(z1,z2).
Δ

Il en résulte que le delta est orienté dans cette direction uniquement et rend la convergence plus lente.

drSPacy_
la source
0

Oui , vous devez redimensionner la variable cible. Je citerai cette référence :

Une variable cible avec un large éventail de valeurs peut, à son tour, entraîner de grandes valeurs de gradient d'erreur, entraînant une modification radicale des valeurs de poids, rendant le processus d'apprentissage instable.

Dans la référence, il y a également une démonstration sur le code où les poids du modèle ont explosé pendant la formation en raison des erreurs très importantes et, à son tour, les gradients d'erreur calculés pour les mises à jour du poids ont également explosé. En bref, si vous n'échelonnez pas les données et que vous avez des valeurs très grandes, veillez à utiliser de très petites valeurs de taux d'apprentissage. Ceci a également été mentionné par @drSpacy.

Fernando Wittmann
la source