Question sur la fonction de pénalité de crête dans la régression généraliséeNotre client a des questions sur la régression généralisée, selon son expérience antérieure, il souhaite utiliser "Ridge" comme fonction de pénalité pour construire le modèle car il ne veut manquer aucun effet de variable, le "Net élastique" ou " La fonction de pénalité "Lasso" n'est pas adaptée dans ce cas.
Cependant, le client analysait généralement les données de spectre avec de nombreuses variables (certaines données contiennent 4500 variables avec 65 lignes), cela prenait beaucoup de temps et ne pouvait pas obtenir le résultat lorsque nous utilisions "Ridge" comme fonction de pénalité.
J'avais renvoyé la question au support JMP, ils essaient l'échantillon que j'ai donné (en pièce jointe, environ 2400 variables et 65 observations) sur Machine Windows 10, avec 16 Go de RAM et 4 cœurs.Et JMP est passé en mode "Pas de réponse" pendant la première heure, mais a ensuite produit une barre de progression. Il a fallu beaucoup de temps pour obtenir le résultat de la crête (4,5 heures), même changer le point de grille à 50.
Comparez avec le filet élastique ou la méthode Lasso, ceux-ci durent environ 2 à 3 minutes, il y a une grande différence de temps entre le filet élastique/Lasso et Ridge
De plus, le client a également mentionné que Python peut exécuter plus rapidement la régression généralisée avec "Ridge" comme fonction de pénalité.
Est-il possible d'accélérer le processus d'ajustement du modèle ? Quelque chose comme faire un chargement complet du processeur ?Ou une autre fonctionnalité/plate-forme appropriée peut aider le client à obtenir un résultat d'estimation plus efficace ?
J'ai également joint les exemples de données. Merci
Re : Question sur la fonction de pénalité de crête dans la régression généraliséeFWIW, j'ai une boîte Windows 10 avec 32 cœurs et 128 Go de RAM. Je ne sais pas de quoi JMP tirera parti, mais je serais heureux d'essayer d'obtenir une autre référence si cela peut aider. Mais les détails comptent (surtout s'il faut compter cinq heures pour courir...).Pourriez-vous poster le script pour faire la régression de crête, s'il vous plaît ? Je ne l'ai pas vu dans le tableau.
Re : Question sur la fonction de pénalité de crête dans la régression généralisée@Eric_Wang Certaines implémentations de Ridge Regression en Python nécessitent la standardisation des variables d'entrée. La standardisation des variables pourrait accélérer le temps de résolution des coefficients. Je ne sais pas si la routine de JMP effectue automatiquement une sorte de normalisation pour les entrées, mais vous pouvez expérimenter si la normalisation des ~ 4500 variables d'entrée permet un temps de calcul plus rapide.
Re : Question sur la fonction de pénalité de crête dans la régression généraliséeCela ressemble à un cas où nous devrions utiliser le filet élastique.Dans des cas comme celui-ci où il y a beaucoup plus de prédicteurs que d'observations, la grande préoccupation lors de la sélection de variables est que la colinéarité et la redondance nous feront manquer des prédicteurs qui comptent vraiment. Si X1 et X2 sont fortement corrélés, quelque chose comme la sélection directe est susceptible de n'en sélectionner qu'un. La force du filet élastique est qu'il sélectionnera des groupes de prédicteurs corrélés, donc X1 et X2 dans ce cas. Je suppose que dans cette situation, "ne veulent manquer aucun effet de variable" signifie en fait qu'ils ne veulent manquer aucun effet qui pourrait avoir un impact réel. Le filet élastique est conçu pour ce scénario précis.
Alors pourquoi le lasso et l'élastique sont-ils tellement plus rapides que la régression de crête ici ? Parce qu'ils effectuent une sélection de variables, les calculs de filet élastique et de lasso n'impliquent qu'une poignée de prédicteurs tandis que la régression de crête effectue une optimisation sur les 2400 variables spécifiées. Il est également important de noter que le lasso et le filet élastique ont tous deux tendance à dominer la régression de crête en termes de qualité d'ajustement et d'interprétation, nous nous sommes donc efforcés d'améliorer les temps de calcul pour les ajusteurs de lasso et de filet élastique. Nous n'avons pas été en mesure de prioriser des améliorations similaires pour la régression de crête.
Re : Question sur la fonction de pénalité de crête dans la régression généraliséeMerci, Ian, j'ai modifié et rattaché les exemples de données avec le script dans la zone de script de celui-ci, nommé "Ridge test", vous pouvez exécuter le script pour tester.
Re : Question sur la fonction de pénalité de crête dans la régression généraliséeSalut Eric,
Une autre suggestion à essayer pour votre client est les moindres carrés partiels et dans ce cas, il s'agit de PLS-DA.La plate-forme permet la sélection de variables, mais utilise toutes les variables lors de la première passe du processus de modélisation. Il est assez rapide et pourrait être utile pour la comparaison de modèles afin de voir quelle plate-forme de modélisation donne le meilleur ajustement global.

Cela dit à propos de PLS, je suis avec Clay sur celui-ci.J'ai utilisé Gen Reg pour analyser plusieurs ensembles de données spectrales et Elastic Net occupe une place de choix dans la construction d'un bon modèle prédictif avec des ensembles de données aussi larges.
Meilleures salutations,
Facture
Re : Question sur la fonction de pénalité de crête dans la régression généraliséeMerci, @nick_shelton , Vous avez raison, j'essaie des données variables avec une échelle différente et j'ai constaté qu'une fois que je les ai standardisées avant d'exécuter Ridge, cela peut faire gagner du temps pour obtenir le résultat (dans mon cas de test, cela peut faire gagner 60% de temps). Bien que cela prenne encore plus de temps qu'Elastic net et Lasso, je pense que cela peut faire gagner du temps pour ces variables avec une plage de valeurs différente.
Re : Question sur la fonction de pénalité de crête dans la régression généraliséeMerci, @Bill_Worley et @clay_barker , votre suggestion et explication sont très utiles. Je vais essayer de convaincre mon client d'essayer d'abord la méthode Elastic Net ou PLS dans ce cas.
Re : Question sur la fonction de pénalité de crête dans la régression généraliséeMerci, Éric. J'ai exécuté votre script "Ridge Test", et cela a pris 35 000 secondes (environ 9,5 heures !). Je soupçonne que la machine que vous avez mentionnée a une vitesse d'horloge plus élevée:

C'était tellement médiocre que je n'ai pas pris la peine d'approfondir les détails (j'utilise généralement la moitié de la RAM pour un disque, et je n'ai pas pris la peine de changer cela).
Re : Question sur la fonction de pénalité de crête dans la régression généraliséeMerci pour votre temps et votre aide, Ian.
Re : Question sur la fonction de pénalité de crête dans la régression généraliséesalut @clay_barker , merci pour votre réponse, j'ai quelques questions à vérifier avec un expert GR comme vous. Notre client veut savoir si vous avez des suggestions sur "éviter" d'utiliser Ridge comme méthode de pénalité, lorsque les données sont analysées sur combien de variables ou d'observations ?De plus, juste curieux de savoir, suggérez-vous qu'ils analysent ces données spectrales par FDE ? Merci.
Re : Question sur la fonction de pénalité de crête dans la régression généralisée@ian_jmp , voici la piste de support technique, 7613489182 . Vous pourriez y trouver ce que vous cherchez.
CC : @AdamMorris , @clay_barker