J'ai implémenté la version GLMNET de filet élastique pour la régression linéaire avec un autre logiciel que R. J'ai comparé mes résultats avec la fonction R glmnet en mode lasso sur les données du diabète .
La sélection des variables est correcte lorsque l'on fait varier la valeur du paramètre (lambda) mais j'obtiens des valeurs de coefficients légèrement différentes. Pour cela et pour d'autres raisons, je pense que cela vient de l'interception dans la boucle de mise à jour, lorsque je calcule l'ajustement actuel, car je ne varie pas l'interception (que je considère comme la moyenne de la variable cible) dans l'ensemble de l'algorithme: as expliqué dans l'article de Trevor Hastie ( Chemins de régularisation pour les modèles linéaires généralisés via la descente de coordonnées , page 7, section 2.6):
l'ordonnée à l'origine n'est pas régularisée, [...] pour toutes les valeurs de [...] lambda [le paramètre de contrainte L1]
Mais malgré l'article, la fonction R glmnet fournit des valeurs différentes pour l'interception le long du chemin de régularisation (les différentes valeurs lambda). Quelqu'un a-t-il une idée de la façon dont les valeurs de l'interception sont calculées?
glmnet
Je pense que c'est peut-être là que vous vous trompez: contrairement au modèle linéaire, vous ne pouvez pas reparamétrer les prédicteurs de telle sorte qu'ils seront toujours orthogonaux à l'interception, donc l'interception ne peut pas simplement être calculée comme la moyenne.
la source