FR 3110725 A1 20211126 FR 2005423 A 20200521 P rocédé mis en œuvre par ordinateur pour générer des modèles additifs généralisés Procédé mis en œuvre par ordinateur générant automatiquement des ensembles de modèles additifs généralisés pour des données relatives à des informations biologiques, des informations environnementales, des informations météorologiques, des informations sur les événements physiques et des informations géographiques. [Figure pour l’abrégé] Fig. 1 Procédé mis en œuvre par ordinateur pour générer des modèles additifs généralisés L’invention concerne le domaine des statistiques appliquées aux applications physiques. Plus précisément, elle concerne un procédé mis en œuvre par ordinateur pour générer des modèles additifs généralisés (ci-après les GAM, ou le GAM au singulier). Certains phénomènes ne sont connus qu’à travers les données, et il n’existe pas de théorie scientifique ou de corps de recherche pour les caractériser. C’est particulièrement le cas des sciences de l’environnement. Il y a généralement trois façons d’aborder les situations. La première est l’utilisation de techniques d’apprentissage automatique de type boîte noire, telles que les réseaux de neurones, la forêt d’arbres décisionnels, les SVM (machines à vecteurs de support), ou les machines à amplification de gradient (GBM), etc. Cette approche présente l’inconvénient d’être du type boîte noire, ce qui signifie qu’une fois le modèle en place, il est difficile (généralement impossible) de l’interpréter, et son optimisation fine relève presque de l’art. Lorsque l’on veut comprendre réellement les relations sous-jacentes entre les variables du modèle, la deuxième approche consiste à essayer d’ajuster une régression, sous la forme d’un modèle linéaire, aux données. Toutefois, cette deuxième approche est compliquée à mettre en place lorsque de nombreuses variables doivent être transformées pour tenir compte de la non-linéarité de leurs relations avec les variables prédites, et elle conduit souvent à des modèles trop simplistes. La troisième approche est d’utiliser des modèles additifs (les GAM). Cependant, cela repose fondamentalement sur une personne et ne permet pratiquement aucune automatisation, comme expliqué ci-dessous. Par conséquent, il n’existe pas de système permettant de générer des modèles précis et compréhensibles. Les GAM (la troisième option ci-dessus) sont compliqués à construire, et reposent, en général, lourdement sur la personne qui les construit et sa connaissance des données qui sont modélisées. Plus précisément, il est nécessaire de sélectionner manuellement le sous-ensemble de variables incluses dans les modèles, et, pour chacune de ces variables, de modéliser son effet exact, ou au moins toutes les transformations de variables permettant de changer le problème des GAM en une modélisation linéaire plus simple. Cette façon de procéder est très longue. Le nombre de variables à tester est élevé (généralement plusieurs centaines) et le nombre de sous-ensembles possibles de variables inclus dans les modèles est extrêmement élevé. Il est impossible de tester tous les modèles possibles, et une approche manuelle ne fournira donc qu’une approximation du meilleur modèle, ce qui conduit à une modélisation longue et inefficace. Une sélection manuelle des variables repose sur un algorithme informel par étapes, dans lequel le modélisateur commence par un ensemble vide de variables actives, puis ajoute une première variable, en se basant sur sa perception du pouvoir prédictif de la variable sélectionnée (l’ajouter à l’ensemble de variables entraîne une amélioration significative de la probabilité des prédictions) ou en se basant sur des connaissances du modélisateur (le modélisateur sait qu’une variable donnée devrait avoir un impact sur la variable prédite). Il faut ensuite déterminer l’effet de la variable et optimiser les fonctions d’effet. Ce n’est qu’alors que l’utilisateur peut itérer pour ajouter de nouvelles variables. Les algorithmes comme la technique du "back-fitting" (ajustement rétroactif) illustrent une approche par étapes, mais n’apportent pas de solutions au problème de la sélection des variables (voir par exemple Hastie & Tibshirani : Generalized Additive Models, 1990). En effet, cette approche n’est efficace qu’avec des modèles contenant un nombre limité de variables, elle est connue pour être sous-optimale (étant donné que les variables contenues dans un petit ensemble peuvent ne pas être très pertinentes pour un ensemble plus grand ; cette faiblesse est due à la nature gourmande de l’algorithme par étapes), et mélange des critères quantitatifs et qualitatifs, ce qui conduit à des biais de subjectivité induits par le modélisateur. De plus, cette technique ne permet pas la sélection des variables, ce qui signifie qu’une forte dépendance des biais des modélisateurs persiste. L’invention vise à améliorer la situation. À cette fin, le demandeur propose un procédé mis en œuvre par ordinateur pour générer des modèles additifs génératifs comprenant les étapes suivantes : a) recevoir un ensemble de données à modéliser comme entrée, chaque donnée dudit ensemble de données étant associée à un type de variable indiquant la nature de la donnée, ledit type de variable se rapportant à des informations choisies dans le groupe comprenant des informations biologiques, des informations environnementales, des informations météorologiques, des informations sur les événements physiques et des informations géographiques, et chaque donnée ayant en outre une valeur de variable associée ; b) recevoir un ensemble d’entrées de modèle, comportant un nombre de sous-ensembles d’ensemble de données d’entrée, un compte bas de variables de modèle, un compte haut de variables de modèle, un nombre de parcimonie, et un nombre de lissage, c) diviser l’ensemble de données d’entrée en sous-ensembles non identiques, le nombre desdits sous-ensembles non identiques étant égal audit nombre de sous-ensembles d’ensemble de données d’entrée, et pour chacun desdits sous-ensembles non identiques et dudit ensemble de données d’entrée, d) déterminer une valeur de parcimonie supérieure et une valeur de parcimonie inférieure, de sorte que, lors de la détermination d’un modèle additif généralisé sur ledit ensemble de données d’entrée ou un sous-ensemble de celui-ci tout en utilisant respectivement ladite valeur de parcimonie supérieure et ladite valeur de parcimonie inférieure comme paramètre de pénalité, le nombre de variables ayant un coefficient non nul corresponde essentiellement audit compte bas de variables de modèle et audit compte haut de variables de modèle, et en tirer un ensemble de valeurs de parcimonie compris entre ladite valeur de parcimonie supérieure et ladite valeur de parcimonie inférieure, le nombre de valeurs de parcimonie dans ledit ensemble de valeurs de parcimonie étant égal audit nombre de parcimonie, e) déterminer une valeur de lissage sur la base dudit ensemble de données d’entrée, de sorte que, lors de la détermination d’un modèle additif généralisé sur un sous-ensemble dudit ensemble de données d’entrée tout en utilisant ladite valeur de lissage comme paramètre de pénalité, ledit modèle ait le score hors échantillon le plus élevé, et déterminer un ensemble de valeurs de lissage comprises sur la base de ladite valeur de lissage, le nombre de valeurs de lissage dans ledit ensemble de valeurs de lissage étant égal audit nombre de lissage, f) 1. pour chaque valeur de parcimonie dans l’ensemble de valeurs de parcimonie, déterminer un modèle additif généralisé sur ledit chacun desdits sous-ensembles non identiques et dudit ensemble de données d’entrée tout en utilisant ladite chaque valeur de parcimonie comme paramètre de pénalité, et définir, à partir du modèle résultant, un ensemble de variables actives pour lesquelles les coefficients sont non nuls, générant ainsi un nombre d’ensembles de variables actives égal audit nombre de sous-ensembles d’ensemble de données d’entrée plus un fois ledit nombre de parcimonie, chacun desdits ensembles de variables actives étant associé à une valeur de parcimonie et à un sous-ensemble ou audit ensemble de données d’entrée, 2. pour chaque valeur de lissage, pour chaque ensemble de variables actives, déterminer un modèle additif généralisé sur le sous-ensemble ou ledit ensemble de données d’entrée associé audit chaque ensemble de variables actives, tout en utilisant ladite chaque valeur de lissage comme paramètre de pénalité, générant ainsi des modèles de nombre égal audit nombre de sous-ensembles d’ensemble de données d’entrée plus un fois ledit nombre de parcimonie fois ledit nombre de lissage, chaque modèle étant associé à une valeur de lissage, à une valeur de parcimonie, et à un sous-ensemble ou audit ensemble de données d’entrée, et g) grouper les modèles additifs généralisés qui sont associés au même couple de valeur de parcimonie et de valeur de lissage associées, calculer les scores à k blocs pour chaque groupe de modèles additifs généralisés et retourner, pour chaque groupe de modèles additifs généralisés, le modèle additif généralisé associé audit ensemble de données d’entrée ainsi que les scores à k blocs correspondants. Dans les opérations d), e) et f), la détermination d’un modèle additif généralisé sur un ensemble de données en utilisant un paramètre de pénalité comporte l’optimisation d’un ensemble de coefficients B = (b i,j ) de sorte que : - la prédiction d’un modèle additif généralisé est où X est la variable d’entrée pour la prédiction, g() est une fonction qui dépend de la distribution recherchée, A est l’ensemble de variables actives et est la fonction indicatrice évaluée à 1 si x i est le j ème niveau, et 0 dans les autres cas, - la détermination est basée sur l’optimisation de l’ensemble de coefficients B en tenant compte de contraintes qui dépendent du paramètre de pénalité, en utilisant un algorithme de descente de gradient proximal, dans lequel les contraintes sont définies comme pour les opérations d) et f1), où P pars est le paramètre de pénalité et h() une fonction de pénalité, et comme pour les opérations e) et f2), où P smo est le paramètre de pénalité et k() une fonction de pénalité. Ce procédé est avantageux car il permet de créer des modèles dans lesquels l’impact d’une variable sur les prédictions ne dépend pas des autres. Il permet d’utiliser le procédé de l’invention pour fournir un ensemble de modèles "aussi bons que possible", qui peuvent ensuite être ajustés finement de manière contrôlée et compréhensible pour s’ajuster à une situation ou à un objectif spécifique. Cela est impossible avec les réseaux de neurones et les GBM. De plus, la génération des modèles est automatisée sur la base de critères de sortie, et les variables sont sélectionnées automatiquement selon ces critères. Cela signifie qu’il n’y a pas d’interaction humaine dans la génération des modèles, et que les variables qui composent les modèles de sortie sont choisies "de manière agnostique" : il n’y a pas de biais dans leur sélection, et seule leur pertinence statistique par rapport à l’ensemble de données permet leur sélection. Par conséquent, l’invention permet le meilleur des deux approches susmentionnées : une production automatisée de modèles axés sur les données, tout en offrant une accessibilité pour les ajustements, ainsi qu’une compréhension des forces des variables sous-jacentes dans les modèles. Dans des modes de réalisation variés, le procédé peut présenter une ou plusieurs des caractéristiques suivantes : dans l’opération d), l’ensemble de valeurs de parcimonie sont définies en partageant de manière égale, à l’aide d’une échelle logarithmique, la plage définie par ladite valeur de parcimonie supérieure et ladite valeur de parcimonie inférieure en un nombre de valeurs égal audit nombre de parcimonie ; dans l’opération e), l’ensemble de valeurs de lissage sont définies en définissant une plage entre ladite valeur de lissage divisée par 10 et ladite valeur de lissage multipliée par 10, et en partageant de manière égale, à l’aide d’une échelle logarithmique, ladite plage en un nombre de valeurs égal audit nombre de lissage ; les fonctions h(B) et/ou k(B) comprennent un élément pour des paramètres liés à une catégorie et un autre élément pour des paramètres ordonnés ; la fonction h(B) est définie comme ; et la fonction k(B) est définie comme . L’invention concerne également un programme informatique comprenant des instructions pour réaliser le procédé selon l’invention, un support de stockage de données sur lequel est enregistré ce programme informatique et un système informatique comprenant un processeur couplé à une mémoire sur laquelle est enregistré ce programme informatique. D’autres caractéristiques et avantages de l’invention apparaîtront facilement dans la description suivante des dessins, qui montrent des modes de réalisation donnés à titre d’exemple de l’invention et sur lesquels : [Fig. 1] La montre une vue schématique générique d’un système mettant en œuvre l’invention, [Fig. 2] La montre un mode de réalisation donné à titre d’exemple du procédé exécuté par le système de la , [Fig. 3] La montre un mode de réalisation donné à titre d’exemple d’une fonction de la , [Fig. 4] La montre un mode de réalisation donné à titre d’exemple d’une autre fonction de la , [Fig. 5] La montre un mode de réalisation donné à titre d’exemple d’encore une autre fonction de la , Les dessins et la description qui suivent sont composés pour la plupart de caractéristiques positives et bien définies. Par conséquent, non seulement ils sont utiles pour comprendre l’invention, mais ils peuvent également être utilisés pour contribuer à sa définition, si besoin est. La description peut faire référence ou utiliser des éléments protégés ou protégeables par le droit d’auteur. Le demandeur ne s’oppose pas à la reproduction de ces éléments, dans la mesure où elle est limitée aux publications légales nécessaires, cependant cela ne doit pas être interprété comme une renonciation ou à une forme quelconque de licence. Par souci de simplicité, dans la spécification ci-dessous, le terme "modèle" sera utilisé pour désigner un modèle additif généralisé (GAM). La montre une vue schématique générique d’un système 2 mettant en œuvre l’invention. Le dispositif 2 comprend une mémoire 4, une unité de paramétrage 6 et une unité de construction de modèle 8. Dans l’exemple décrit ici, la mémoire 4 peut être réalisée de n’importe quelle manière appropriée, c’est-à-dire au moyen d’un lecteur de disque dur, d’un disque dur à semi-conducteurs, d’une mémoire flash, d’une mémoire intégrée dans un processeur, d’un stockage distant accessible dans le nuage, d’une combinaison de ceux-ci etc. Évidemment, bien que la montre une seule mémoire 4, il peut y avoir plusieurs mémoires, chacune d’un type ou d’une combinaison des types ci-dessus. La mémoire 4 stocke les ensembles de données à modéliser. Ces données à modéliser forment un ensemble de données dans lequel des données sont regroupées. Les données regroupées comprennent, pour chaque donnée, un type de donnée et une valeur de donnée. Les types de donnée constituent les variables ou les types de variables qui doivent être choisis et ajustés, afin de construire les modèles additifs généralisés selon l’invention. Selon l’invention, les types de variable définissent généralement des informations biologiques, des informations environnementales, des informations météorologiques, des informations sur les événements physiques et des informations géographiques. Cela signifie que tout type de variable donné sera une quantité physique se rapportant à ces catégories d’informations. La mémoire 4 peut également stocker des données qui ne se rapportent pas à une quantité physique et qui peuvent être considérées comme arbitraires ou abstraites d’un point de vue purement scientifique. Ces données peuvent également être utilisées dans les modèles générés selon l’invention. Cependant, ces modèles comprendront toujours des variables des types de variable ci-dessus. Cela signifie que l’invention construira des modèles qui comprendront toujours des types de variable se rapportant à des quantités physiques. Outre l’ensemble de données décrit ci-dessus, la mémoire 4 recevra également des paramètres de modèle. Comme indiqué ci-dessous en référence à la , ces paramètres comportent un compte bas de variables de modèle, un compte haut de variables de modèle, un nombre de parcimonie, un nombre de lissage, et un nombre de sous-ensembles d’ensemble de données d’entrée. Bien que tous ces paramètres puissent être changés à chaque nouvelle procédure de modélisation, ils peuvent également être fixes, ou proposés en groupes à l’utilisateur qui les choisit. Ces paramètres sont étroitement liés au fait que l’invention vise à générer automatiquement des modèles additifs généralisés hautement pertinents. Afin de mieux les comprendre, les modèles additifs généralisés et leurs défis seront rapidement abordés. Les GAM sont des modèles prédictifs suivant une structure additive. La prédiction est une somme de fonctions des variables explicatives , qui se traduisent mathématiquement dans l’équation suivante : où est la prédiction du modèle, g() est une fonction de liaison qui est généralement choisie selon la distribution affirmée des données, A est l’ensemble de variables actives sur lesquelles la modélisation est réalisée, x i est la valeur de la i ème variable de X, et f i sont les fonctions d’ajustement. La prédiction d’un GAM dépend donc principalement de l’ensemble limité de variables actives A, qui est un sous-ensemble de toutes les variables disponibles dans l’ensemble de données, et leurs effets ne dépendent pas d’autres variables. Cette indépendance de l’effet de chaque variable est un grand avantage, car elle permet aux GAM d’être compréhensibles, à l’opposé de réseaux de neurones ou d’autres modèles de type boîte noire par exemple. Cela établit le principal défi lors de la construction d’un GAM : plus il y a de types de variable dans l’ensemble de variables actives, plus la modélisation est précise – et le risque de surajustement dans une certaine mesure – mais aussi moins le modèle résultant est compréhensible. Ainsi, contrairement à d’autres systèmes d’apprentissage automatique, un GAM efficace doit non seulement maximiser le pouvoir prédictif du modèle, mais aussi minimiser le nombre de variables actives. Et en plus de choisir un ensemble optimal de variables actives, il faut également définir les effets (les fonctions ) associés à chacune d’entre elles. Comme les données utilisées pour construire les modèles sont nécessairement bruitées, les fonctions doivent fournir une bonne propriété de débruitage. Compte tenu de ces défis, le compte bas de variables de modèle et le compte haut de variables de modèle sont des paramètres qui indiquent respectivement le nombre de variables minimal et maximal qu’un modèle de sortie peut contenir. Cela signifie que, si l’ensemble de données comprenait 50 types de variable et que ces paramètres sont réglés à 5 et 30, alors les modèles résultants se baseront sur les données associées à 5 à 30 de ces variables, et que les autres données ne seront pas prises en compte aux fins de la construction des modèles. Le nombre de variables dans l’ensemble de variables actives pourra donc varier entre le compte bas de variables de modèle et le compte haut de variables de modèle. Comme indiqué ci-dessus, les GAM sont par nature construits sur des compromis. Il n’existe pas de GAM "correct" unique pour un ensemble donné de données. Par conséquent, l’invention vise à générer des groupes de modèles qui puissent être comparés et analysés afin de conserver un ou plusieurs GAM qui s’ajustent à différents besoins de modélisation. Le nombre de parcimonie et le nombre de lissage permettent de paramétrer ces groupes de modèles. Le nombre de parcimonie est la quantité de nombres différents de variables dans l’ensemble de variables actives à utiliser. Cela signifie que, si le compte bas de variables de modèle et le comptehaut de variables de modèle sont des paramètres réglés de 5 et 30, et le nombre de parcimonie est réglé à 7, il y aura alors 7 groupes de GAM générés, qui ont chacun un ensemble de variables actives dont le nombre est sensiblement compris entre 5 et 30. Par exemple, les groupes de modèles résultants auront un nombre de variables actives choisies dans la liste suivante {5 ; 12 ; 15 ; 20 ; 24 ; 27 ; 30}. Ensuite, le nombre de lissage définit le nombre de modèles différents au sein d’un groupe donné de modèles. Cela permet, pour un nombre donné de variables d’un ensemble de variables actives, de générer des modèles qui offrent différents niveaux de débruitage. Par conséquent, en suivant l’exemple ci-dessus, si le nombre de lissage est réglé à 5, alors un total de 35 modèles sera généré. Chaque groupe, ayant un nombre de variables actives choisies dans la liste ci-dessus, contiendra 5 modèles. Cela permet de retourner le groupe de modèles d’une manière facilement interprétable, puisque les modèles peuvent être comparés par groupes, et aussi au sein d’un groupe. Pour aggraver les choses, ce n’est que la moitié du chemin, car trouver les fonctions optimales est tout aussi difficile. L’optimisation sur des fonctions paramétriques simples (telles que les polynômes ou les splines) serait très facile à faire, mais ces fonctions sont connues pour être sous-optimales et nécessitent une quantité importante de réglages fins, qui ne peut être automatisé. Afin de générer des GAM efficaces, le demandeur a découvert qu’il est préférable d’utiliser des fonctions non paramétriques, dites "fonctions simples", définies par leurs valeurs à tous les niveaux présents dans les données. L’utilisation de fonctions simples permet également des interactions simples entre l’utilisateur et le modèle : l’utilisateur doit avoir la possibilité de régler finement les modèles résultants manuellement lorsque l’extrapolation générée par l’algorithme d’apprentissage automatique pourrait ne pas être cohérente avec les connaissances de l’utilisateur. Ce réglage fin peut être fait en modifiant les valeurs de fonctions simples (tandis que les polynômes ou les splines seraient impossibles à modifier de manière intuitive par une personne). Cependant, l’optimisation de fonctions simples conduit à un problème d’optimisation complexe, car elles sont définies par toutes leurs valeurs. Par conséquent, la recherche d’une fonction optimale conduit à l’optimisation d’un très grand nombre de paramètres. Pour donner un exemple concret de la complexité, si l’on souhaite construire un modèle contenant 20 variables sur 200, le nombre d’ensembles possibles de variables actives serait de . La combinaison de niveaux de parcimonie avec des niveaux de lissage conduit à une approche de "recherche par quadrillage" : l’utilisateur ne connaît pas à l’avance les propriétés exactes du modèle qu’il veut générer, il va donc générer un grand nombre de modèles et choisir celui qui est le plus pertinent pour son cas d’utilisation. Le nombre de sous-ensembles d’ensemble de données d’entrée est un paramètre qui est lié à l’attribution de scores des modèles entre eux. Comme indiqué ci-dessous, le système 2 utilise une validation croisée à k blocs, où k est le nombre de sous-ensembles d’ensemble de données d’entrée. Cela signifie que k+1 modèles sont effectivement ajustés : k modèles, sur une fenêtre glissante de (k-1)/k sur l’ensemble de données, chacun testé sur le 1/k restant de l’ensemble de données pour l’attribution de score des performances hors échantillon, et un modèle créé sur l’ensemble de données complet. Bien que le nombre de sous-ensembles d’ensemble de données d’entrée soit présenté comme un paramètre, il peut très bien être fixe. Il est par exemple assez conventionnel d’effectuer une modélisation à 4 blocs. L’unité de paramétrage 6 et l’unité de construction de modèle 8 sont, dans l’exemple décrit ici, des programmes informatiques qui sont exécutés sur un ou plusieurs processeurs. Ces processeurs comportent tous les moyens connus pour réaliser des calculs automatisés, tels que les CPU (unités centrales de traitement UTC), GPU (unité de traitement graphique UTG), les grilles des CPU et/ou des GPU, les grilles de calcul à distance, les FPGA (réseau pré-diffusé programmable par l’utilisateur) spécifiquement configurés, les ASIC (circuits intégrés à application spécifique) spécifiquement configurés, les puces spécialisées telles que les SOC (système sur une puce) ou les NOC (réseau sur une puce), les puces spécialisées en IA (intelligence artificielle), etc. La nature fonctionnelle de l’unité de paramétrage 6 et de l’unité de construction de modèle 8 doit être notée et comprise. Bien que la description les présente comme des unités distinctes, elles peuvent être réunies dans un programme unique. De plus, comme le montrent les figures 3 à 5, l’unité de paramétrage 6 et l’unité de construction de modèle 8 reposent toutes deux sur la construction de modèles en utilisant un algorithme similaire, les principaux changements étant les paramètres et les données d’entrée, et certains traitements différents sur les sorties. Elles pourraient donc être considérées comme des unités qui ne font pas de modélisation elles-mêmes et qui s’appuient sur une unité de modélisation. En raison de sa nature, le système 2 est particulièrement adapté pour une mise en œuvre de type nuage, comme il ressortira de la description des figures 2 à 5 ci-dessous. La montre un mode de réalisation donné à titre d’exemple du procédé exécuté par le système. Il commence par l’exécution d’une fonction d’entrée Inp() dans une opération 200. La fonction Inp() est une fonction d’entrée dans laquelle un ensemble de données RwD à modéliser et les paramètres de modélisation Prm[] sont entrés comme arguments et seront utilisés comme variable globale dans les autres étapes. Les paramètres de modélisation Prm[] peuvent comporter certains ou tous les paramètres ci-dessous : une variable cible, qui sera prédite (y ci-dessus), un nombre de sous-ensembles d’ensemble de données d’entrée (ci-après k), un compte bas de variables de modèle (ci-après vcmin), un compte haut de variables de modèle (ci-après vcmax), un nombre de parcimonie (ci-après PN), et un nombre de lissage (ci-après SN). Cela peut se faire au moyen d’une interface homme-machine (IHM) dans laquelle l’utilisateur entre chacun ou certains des paramètres ci-dessus. Cela peut se faire en entrant des valeurs et/ou en choisissant dans une liste. Les champs peuvent également être préremplis. Tout type d’IHM peut être utilisé, pour autant qu’il offre une interface à travers laquelle l’utilisateur peut entrer les paramètres pertinents. Par ailleurs, si un utilisateur n’entre pas un paramètre donné, une valeur par défaut peut être retenue. Une fois l’initialisation faite, l’unité de paramétrage 6 est appelée dans une opération 210 afin de déterminer des paramètres de modélisation cachés à partir des paramètres d’entrée. Ces paramètres cachés sont respectivement référencés 10 et 12 sur la . Ceci peut se faire par une fonction Param() qui reçoit l’ensemble de données RwD et les paramètres de modélisation Prm[] à partir de l’opération 200 comme arguments, et qui retourne deux listes de valeurs Pp[] et Ps[] qui seront décrites plus en détail en référence à la . Afin de mieux comprendre ces paramètres cachés, la modélisation doit être expliquée plus en détail. La construction de modèle selon l’invention consiste à trouver un ensemble de paramètres définissant les fonctions telles que : et donc, pour chaque observation , une prédiction : La fonction est une entrée prédéfinie, fournie par l’utilisateur ou automatiquement (généralement, l’identité, la fonction exponentielle ou logistique). Le demandeur a noté que la fonction correspond souvent à la distribution de l’ensemble de données : si la distribution est gaussienne, alors est habituellement la fonction d’identité, si la distribution est de type Poisson ou Gamma, alors est habituellement la fonction exponentielle, et si la distribution est de type Bernoulli, alors est habituellement la fonction logistique. L’ensemble de variables actives est automatiquement défini (comme expliqué plus loin en référence à la figure 4). L’exclusion d’une variable de l’ensemble de variables actives peut être faite en définissant sa fonction ou en définissant tous ses coefficients à zéro. La fonction est la fonction indicatrice évaluée à 1 si x i est le j ème niveau, et 0 dans les autres cas. L’optimisation de ces modèles, compte tenu de ce qui précède, signifie que trois objectifs doivent être poursuivis en même temps : Maximiser la probabilité des prédictions, Maximiser le "lissage" des fonctions f i du modèle, et Maximiser la parcimonie du modèle – respecter les contraintes sur le nombre de variables dans les ensembles de variables actives. Ces objectifs peuvent être optimisés simultanément comme une régression pénalisée. Le poids des deux pénalités traduit l’importance de chaque contrainte : Lors de ses recherches, le demandeur a découvert que, si elle est appliquée directement, l’optimisation des pénalités liées au lissage et à la parcimonie n’est pas toujours un problème résoluble. Afin de résoudre ce problème, le demandeur a découvert que l’optimisation peut être réalisée en série, en optimisant d’abord une pénalité liée à la parcimonie, et en optimisant ensuite une pénalité liée au lissage. Le problème ci-dessus est donc reformulé comme l’optimisation en deux phases. D’abord, la pénalité de parcimonie est optimisée : Où et sont des fonctions bien connues, est un des paramètres cachés, ci-après paramètre de pénalité de parcimonie, et est une fonction de pénalité qui sera décrite plus en détail en rapport à la . Alors, pour toutes les fonctions dans l’ensemble de variables actives ainsi déterminées, la pénalité de lissage est optimisée et les fonctions f i sont ajustées Où et sont des fonctions bien connues, est un des paramètres cachés, ci-après paramètre de pénalité de lissage, et est une fonction de pénalité qui sera décrite plus en détail en rapport à la . Puisque les paramètres de pénalité et ne sont pas connus a priori, il est nécessaire de déterminer des plages pour les rechercher. En d’autres termes, l’efficacité des modèles sera influencée par les valeurs de ces paramètres de pénalité. D’autre part, ce sont les seuls paramètres à définir dans les équations ci-dessus. Par conséquent, afin d’optimiser les modèles, la fonction Param() recherche des plages pertinentes pour les paramètres de pénalité, et définit à partir de là une liste de valeurs pour le paramètre de pénalité de parcimonie et le paramètre de pénalité de lissage. Ensuite, les deux phases d’optimisation ci-dessus peuvent être réalisées avec les listes de valeurs de paramètres de pénalité, afin de construire les modèles, comme cela sera expliqué en référence à la figure 4. La montre un mode de réalisation donné à titre d’exemple de la fonction Param(). Cette fonction commence dans une opération 300 par l’exécution d’une fonction KKT_Pars(), qui reçoit l’ensemble de données RwD et le nombre de sous-ensembles d’ensemble de données d’entrée k comme arguments, et qui retourne une valeur Ppmax. La fonction KKT_Pars() utilise les conditions de Karush-Kuhn-Tucker afin d’identifier la première valeur de de sorte que, dans un modèle résultant de l’optimisation de la formule Math 4 ci-dessus, l’ensemble de variables actives (c’est-à-dire les variables pour lesquelles au moins un coefficient est non nul) est égal à 0. Une façon de calculer KKT_Pars() est de résoudre le dual de l’équation Math 5 avec B égal à 0, et de trouver la plus petite valeur de lambda, de sorte que la formule soit optimale. Cela peut se faire en calculant la norme duale (ou sa transformation de Fenchel, lorsque la norme duale n’est pas disponible), correspondant à la pénalité de parcimonie, sur la dérivée du terme de probabilité (calculé à B = 0) de la formule Math 4. Dans un autre mode de réalisation, Ppmax peut être déterminé différemment, par exemple comme la première valeur qui donne un ensemble de variables actives contenant au moins 3 ou 5 variables, pour autant que le nombre soit inférieur au compte bas de variables de modèle. Cet autre mode de réalisation est intéressant car les modèles selon l’invention auront presque toujours plus de 5 variables pour être suffisamment précis, et, à cet égard, il n’est pas absolument nécessaire d’avoir une valeur Ppmax correspondant à exactement zéro variable, si cela permet de réaliser l’opération 300 plus rapidement. Ensuite, dans une opération 310, une fonction SpltLog() est exécutée pour calculer l’ensemble de valeurs qui seront testées. Cette fonction reçoit la valeur Ppmax comme argument et retourne une table de valeurs qui doivent être testées, pour déterminer les plages pour les valeurs . Dans l’exemple décrit ici, cela est fait en prenant la valeur Ppmax et en la divisant par 10^4. Ensuite, 50 valeurs sont déterminées, partagées de manière égale selon une échelle logarithmique entre Ppmax et Ppmax divisé par 10^4, et stockées dans un vecteur Ppc[]. Bien entendu, il peut y avoir plus de 50 valeurs ou moins, et la limite inférieure du vecteur Ppc[] peut être choisie différente de 1/10^4 de Ppmax. Comme il apparaît, l’idée générale est de déterminer une plage de valeurs qui soit suffisamment large pour englober la valeur la plus probable du paramètre de pénalité de parcimonie, et de partager cette plage de façon égale pour l’explorer. Sur la base des valeurs du vecteur Ppc[], une fonction Mdl1() est effectuée dans une opération 320. La fonction Mdl1() reçoit l’ensemble de données RwD, le nombre de sous-ensembles d’ensemble de données d’entrée k et le vecteur Ppc[] comme arguments, et retourne une liste de valeurs Pp[] pour le paramètre de pénalité de parcimonie qui sera utilisé pour la première phase de modélisation. Pour ce faire, la fonction Mdl1() prend chaque valeur dans la table Ppc[], et effectue une optimisation de la formule Math 4 sur un sous-ensemble d’ensemble de données RwD, par exemple le premier, tel que défini avec le nombre de sous-ensembles d’ensemble de données d’entrée k. Pour chaque modèle résultant, le nombre de variables ayant au moins un coefficient non nul est déterminé, et les deux valeurs qui sont les plus proches, respectivement du compte bas de variables de modèle vcmin, et du compte haut de variables de modèle vcmax sont retenues. En variante, l’ensemble de données d’entrée peut être utilisé dans sa totalité, plutôt que d’être ajusté sur un sous-ensemble de celui-ci. Fonctionnellement parlant, ces valeurs sont les deux valeurs de pénalité de parcimonie qui garantissent que le nombre de variables dans un ensemble actif optimisant l’équation Math 4 d’optimisation de parcimonie englobera la plage [vcmin ; vcmax] du troisième objectif. Ensuite, pour préparer la première phase de la modélisation, la liste de valeurs Pp[] est établie de manière similaire à l’opération 310 en partageant de manière égale la plage définie, par les deux valeurs de pénalité de parcimonie déterminées, en un nombre de valeurs égal au nombre de parcimonie NP, à l’aide d’une échelle logarithmique. Là encore, la liste de valeurs Pp[] peut être établie de manière différente. Après cela, une opération 330 exécute une fonction Oos(), qui reçoit l’ensemble de données RwD et le nombre de sous-ensembles d’ensemble de données d’entrée k comme arguments, et retourne une valeur Psopt. La valeur Psopt est déterminée par la fonction Oos() comme la valeur de donnant le score hors échantillon le plus élevé sur un sous-ensemble de l’ensemble de données d’entrée, par exemple le premier. Afin de réaliser cette détermination, la fonction Oos() déterminera d’abord une valeur Psmax de manière similaire à Ppmax (seule la fonction de pénalité diffère). Une fois que Psmax est déterminée, une plage correspondant à [Psmax/10^4 ; Psmax] est construite, et 50 valeurs candidates sont extraites dans cette plage, partagées de manière égale sur une échelle logarithmique. Pour chacune de ces valeurs candidates, la fonction Oos() ajuste ensuite un modèle en utilisant le nombre maximal de variables sélectionnées à l’étape de parcimonie, sur la base de la formule Math 5. Le résultat Psopt est alors déterminé comme étant celui dont le modèle a le score hors échantillon le plus élevé sur les données restantes de l’ensemble de données d’entrée. Enfin, la fonction Mdl2() reçoit l’ensemble de données RwD, le nombre de sous-ensembles d’ensemble de données d’entrée k et la valeur Psopt comme arguments, et retourne une liste de valeurs Ps[] pour le paramètre de pénalité de lissage qui sera utilisé pour la deuxième phase de modélisation. La fonction Mdl2() détermine d’abord une plage de valeurs en divisant la valeur Psopt par 10 et en la multipliant par 10. Bien entendu, il peut y avoir plus de 10 valeurs ou moins. Ensuite, de manière similaire à l’opération 320, cette plage est partagée en une liste Ps[] contenant des valeurs égales au nombre de lissage SN, partagées de manière égale selon une échelle logarithmique. La liste de valeurs Ps[] représente les valeurs de pénalité de lissage qui seront utilisées dans la deuxième phase. Là encore, la liste de valeurs Ps[] peut être établie de manière différente. Comme il ressort de ce qui précède, les opérations 300 à 330 doivent être réalisées de manière séquentielle, et l’opération 320 contient des opérations qui peuvent être réalisées en parallèle. De la même manière, les opérations 330 et 340 doivent être effectuées de manière séquentielle, et l’opération 330 contient des opérations qui peuvent être réalisées en parallèle. Une fois l’opération 210 terminée, les paramètres cachés ont été déterminés, et les deux phases peuvent être exécutées. La première phase est exécutée dans une opération 220, dans laquelle une fonction ParsOpt() est exécutée par l’unité de construction de modèle 8. La fonction ParsOpt() reçoit l’ensemble de données d’entrée RwD, le nombre de sous-ensembles d’ensemble de données d’entrée k et la liste de valeurs Pp[] comme arguments, et retourne une matrice ActVar d’ensembles de variables actives qui sont chacune associées un couple comprenant l’une parmi les valeurs de pénalité de parcimonie de liste Pp[] et une référence indiquant quel sous-ensemble de l’ensemble de données d’entrée (ou l’ensemble de données d’entrée lui-même) a été utilisé en conjonction avec cette valeur de pénalité de parcimonie pour générer cet ensemble de variables actives. La montre un mode de réalisation donné à titre d’exemple de la fonction ParsOpt(). Cette fonction contient deux boucles. Une première boucle dépile progressivement la liste de valeurs Pp[], et la deuxième boucle génère un modèle pour chaque sous-ensemble de l’ensemble de données d’entrée et pour l’ensemble de données d’entrée dans sa totalité, et détermine et stocke chaque fois l’ensemble de variables actives des modèles résultants dans une matrice ActVar. La première boucle débute dans une opération 400 qui initie un indice m à 0. Ensuite, dans une opération 410, la liste de valeurs Pp[] est dépilée. Si la liste est vide, alors tous les ensembles de variables actives ont été générés, et la fonction se termine par une opération 499 qui retourne la matrice ActVar. Sinon, la valeur lpa est dépilée de la liste Pp[], l’indice m est incrémenté dans une opération 420, et la deuxième boucle est initiée en définissant un indice n à 0 dans une opération 430. Ensuite, dans une opération 440, une fonction Mdl3() est appelée avec l’ensemble de données d’entrée RdW, l’indice n et la valeur de pénalité de parcimonie lpa. En retour, cette fonction remplit la matrice ActVar avec un ensemble de variables actives aux coordonnées correspondant à l’indice m et à l’indice n. L’opération 440 optimise la formule Math 4 sur un sous-ensemble d’ensemble de données d’entrée RwD si n est strictement inférieur au nombre de sous-ensembles d’ensemble de données d’entrée k, et sur l’ensemble de données d’entrée entièrement si n est égal à k. Dans ce qui précède, la fonction Penalty Parsimony () a été volontairement éludée afin de simplifier la compréhension. Elle sera maintenant décrite plus en détail afin de mieux comprendre l’optimisation qui est réalisée. Le demandeur a découvert que le troisième objectif peut être géré en incluant une pénalité dans l’optimisation de l’ensemble de coefficients, selon une approche lagrangienne. Une pénalité naïve serait de suivre simplement le nombre de fonctions non nulles présentes dans le modèle (la taille de l’ensemble de variables actives ) : , donc la valeur de pénalité est juste le nombre de variables incluses dans le modèle). Cependant, comme mentionné ci-dessus, trouver un ensemble de variables maximisant à la fois la probabilité et cette pénalité n’est pas un problème résoluble par algorithme (il est de complexité NP). Afin de parvenir à un problème résoluble par calcul, le demandeur utilise la définition suivante pour la fonction Penalty Parsimony () : La fonction peut être définie comme suit : Où les w j sont des poids qui seront définis plus en détail par rapport à la formule Math 10 ci-dessous. Dans un autre mode de réalisation, la fonction de pénalité de parcimonie de la formule Math 7 peut être définie comme . La fonction peut être définie comme suit : Par conséquent, cette fonction de pénalité mesure la norme euclidienne de la dérivée empirique des fonctions . Cette mesure est comparable à une pénalité de groupe-Lasso, appliquée aux dérivées des fonctions . Une telle pénalité fournit un moyen efficace de grouper à zéro des fonctions d’une variable, si aucune partition contiguë de ses niveaux n’est suffisamment significative. Elle peut être considérée comme une relaxation convexe de la pénalité "naïve" décrite ci-dessus. Dans un autre mode de réalisation, la fonction de pénalité de parcimonie de la formule Math 8 peut être définie comme . Jusqu’à présent, le demandeur a également volontairement gardé le silence sur le procédé utilisé pour réaliser l’optimisation des formules Math 4 et Math 5, toujours dans le but de simplifier la compréhension. Lorsque l’on examine les formules Math 4 et Math 5, elles comprennent, toutes deux, deux termes. Le premier, la probabilité, est assez connu en statistique et peut être résolu seul en utilisant des algorithmes classiques tels que la descente de gradient, ou la descente de gradient stochastique lorsque la base de données est très importante et, par conséquent, lorsqu’une approximation du gradient calculé doit être utilisée pour obtenir des résultats dans un délai raisonnable. Cependant, le deuxième terme, respectivement la pénalité de parcimonie et la pénalité de lissage, posent des défis d’optimisation en raison de leur non dérivabilité. Afin de résoudre ce problème d’optimisation, le demandeur a découvert que les algorithmes de descente de gradient proximal sont très efficaces. Dans l’exemple décrit ici, le demandeur utilise une version modifiée de l’algorithme SAGA. Cette version modifiée, appelée VR-TOS, est décrite dans l’article de Pedregosa, Fatras et Casotto " Proximal Splitting Meets Variance Reduction ", Proceedings of the 22nd International Conference on Artificial Intelligence and Statistics 2019, arXiv:1806.07294 [math.OC]. D’autres procédés peuvent être utilisés pour réaliser l’optimisation, comme l’utilisation des algorithmes ADMM, FISTA, Prox SVRG. Une fois le modèle construit, l’ensemble de variables actives est déterminé à partir des variables pour lesquelles au moins un coefficient est non nul, et cet ensemble de variables actives est stocké dans la matrice ActVar aux coordonnées de la valeur de pénalité de parcimonie lpa et de l’indice n. Ensuite, l’indice n est incrémenté dans une opération 450, et une condition de sortie de la deuxième boucle est testée dans une opération 460. Si tous les ensembles de variables actives ont été générés, alors la liste Pp[] est dépilée à nouveau dans l’opération 410. Sinon, la deuxième boucle est réitérée avec l’opération 440. Maintenant que l’ensemble de variables actives a été identifié dans l’opération 220, la deuxième phase de la modélisation peut être exécutée, en réalisant une opération similaire, mais sur la formule Math 5, et en tenant compte de toutes les valeurs de lissage de la liste Ps[]. Ceci est fait dans une opération 230 par une fonction SmoOpt() qui reçoit l’ensemble de données d’entrée RwD, le nombre de sous-ensembles d’ensemble de données d’entrée k, la liste de valeurs Ps[] et la matrice ActVar comme arguments, et qui retourne une matrice de modèles Mod, chacun associé à un triplet comprenant une des valeurs de pénalité de lissage de la liste Ps[], une des valeurs de pénalité de parcimonie de la liste Pp[] et une référence indiquant quel sous-ensemble de l’ensemble de données d’entrée (ou l’ensemble de données d’entrée lui-même) a été utilisé pour générer ce modèle. La montre un mode de réalisation donné à titre d’exemple de la fonction SmoOpt(). Elle est très similaire à la , sauf qu’elle comporte en outre une troisième boucle pour prendre en compte la matrice ActVar. Par conséquent, là où la fonction ParsOpt() a généré NP*(k+1) des ensembles de variables actives, la fonction SmoOpt() génère des modèles SP*NP*(k+1). Les opérations qui sont similaires à la ont en commun les mêmes deux derniers chiffres de référence et ne seront pas décrites plus en détail. Les opérations qui sont nouvelles ou différentes ont leur dernier caractère de référence réglé à 5. Les principales différences résident dans l’opération 525 pour régler l’indice de la troisième boucle à 0 (lié aux valeurs de parcimonie), l’opération 565 pour incrémenter cet indice et l’opération 570 pour vérifier si tous les ensembles de variables actives pour toutes les valeurs de parcimonie ont été utilisés. La dernière différence se rapporte à l’opération 545, qui est une variante de l’opération 440. En effet, cette opération exécute une fonction Mdl4(), qui reçoit l’ensemble de données d’entrée RwD, l’indice n, la valeur de pénalité de lissage spa et l’ensemble actif de variables ActVar[m][n] correspondant à l’indice n et m actuel des deuxième et troisième boucles, respectivement. Bien que la et la aient été présentées de manière itérative, il apparaîtra aisément qu’elles peuvent être massivement mises en parallèle, puisque toutes les boucles et opérations au sein des boucles sont indépendantes les unes des autres. La fonction Mdl4() utilise le même algorithme que la fonction Mdl3() afin d’optimiser la formule Math 5, avec la restriction que les variables de l’ensemble de variables actives sont dans ce cas définies avec celles de ActVar[m][n]. Cela permet une convergence plus rapide et la construction de modèles ayant le nombre de variables requis par l’utilisateur. Dans ce qui précède, la fonction Penalty Smoothness () a été volontairement éludée afin de simplifier la compréhension. Elle sera maintenant décrite plus en détail afin de mieux comprendre l’optimisation qui est réalisée. Les variables peuvent être de nature différente : pour une variable ordonnée, la structure (niveaux consécutifs) des variables doit être prise en compte dans la définition de lissage, tandis que pour une variable catégorielle, chaque niveau doit être traité indépendamment. Par conséquent, le critère de lissage est partagé en deux : Voici la description de la fonction . La somme, pour toutes les variables ordonnées, de la norme 1 de sa dérivée première, peut être simplifiée comme suit : où est l’ensemble de toutes les variables ordinales disponibles dans l’ensemble de données. En d’autres termes, le lissage est la somme de la valeur absolue de la différence entre des coefficients consécutifs. Ceci est comparable à la pénalité utilisée par l’algorithme de variation totale, utilisé notamment dans le traitement de signal. Cependant, en s’écartant de l’algorithme standard de variation totale, la formule Math 10 fournit une version pondérée du problème. Les poids sont calculés en utilisant la distribution de la variable dans l’ensemble de données d’entrée. Ils peuvent être choisis de manière à se rapprocher de l’inverse de la racine carrée de la matrice d’informations, une quantité utilisée dans une analyse statistique du GAM pour décrire des propriétés du second ordre des modèles construits. Plus précisément, sont des poids choisis de sorte que l’optimisation de la formule Math 10 à travers une optimisation sous contrainte du type H(beta) Cette fonction objective correspond à une hypothèse a priori sur la forme des fonctions qui est que la différence entre leurs coefficients consécutifs – une approximation de sa dérivée – suit une fonction de Laplace : . Elle présente également de nombreuses similitudes avec l’algorithme de Lasso ; comme les coefficients sont appliqués à un codage binaire des données – par l’utilisation de fonctions indicatrices – la nullité des coefficients se rapporte directement à des tests statistiques, comme pour l’algorithme de Lasso – ce qui motive le processus de modélisation décrit ci-dessus. L’utilisation de ce type de pénalités – qui génère une dérivée creuse pour les fonctions – aide à la construction de modèles qui sont plus faciles à interpréter, puisque les coefficients non pertinents sont exactement au même niveau (leurs niveaux sont donc en fait regroupés). Cela signifie que l’utilisateur n’aura à examiner qu’un nombre limité de niveaux, et à baser son analyse sur des décisions binaires – que les coefficients soient groupés ou non. Dans un autre mode de réalisation, on pourrait utiliser la pénalité, plus classique, de la norme euclidienne, qui s’apparenterait à une régression de crête au lieu d’un Lasso, et qui permettrait de générer des fonctions lisses. Cependant, ce serait renoncer à l’avantage de la facilité d’interprétation, puisque tous les coefficients seraient différents les uns des autres. Voici une description de la fonction . L’invention repose ici sur un paradigme Lasso classique pour tirer parti des variables non ordonnées. Pour ces variables, la pénalité de lissage est réglée comme : où est l’ensemble de toutes les variables catégorielles disponible dans l’ensemble de données d’entrée. Une fois l’opération 230 terminée, tous les modèles sont disponibles pour être présentés à l’utilisateur afin qu’il puisse faire son choix. Afin d’aider l’utilisateur dans sa recherche par grille, le procédé k est mis à profit dans une opération 240, dans laquelle une fonction Kfold() est exécutée. Cette fonction reçoit la matrice de modèles Mod comme entrée, et retourne un affichage des modèles ordonnés par nombre de variables, avec leur score à k blocs respectif. En termes simples, la fonction Kfold() regroupe tous les modèles associés à un couple donné (valeur de parcimonie, valeur de lissage) de la matrice Mod, et réalise une validation croisée à k blocs sur les modèles qui ont été obtenus sur des sous-ensembles de l’ensemble de données d’entrée. Le modèle présenté à l’utilisateur est le modèle obtenu sur l’ensemble de données d’entrée tout entier, et les scores à k blocs de chaque modèle de sous-ensemble sont accessibles, ainsi que la moyenne. Cette validation croisée peut être faite sous la forme d’un score de Gini, d’une mesure EDR, d’un score de déviance, etc. La recherche par grille est avantageuse car l’utilisateur peut naviguer rapidement pour faire son compromis entre les modèles additifs généralisés générés – plus la valeur de parcimonie est élevée, plus il est complexe de comprendre le modèle, et plus le score est élevé, plus le modèle est efficace. Bien entendu, la recherche par quadrillage peut être rendue interactive, de sorte qu’un utilisateur qui sélectionne un modèle donné correspondant à une valeur de parcimonie et à une valeur de lissage puisse voir tous les éléments du modèle correspondant, tels que l’ensemble de variables actives, les valeurs de tous les coefficients, les outils d’analyse des mesures en profondeur tels que la courbe de Lorenz et la courbe de Lift, etc. De plus, cela permet d’offrir une interface d’accord aux utilisateurs. Plus précisément, sur la base d’un modèle choisi, l’utilisateur peut modifier certains des coefficients du modèle, et constater immédiatement l’impact que cela a sur les prédictions et sur les scores à k blocs. Compte tenu de ce qui précède, l’invention permet de générer des modèles additifs généralisés de manière fiable, automatisée et optimale, tout en garantissant des compromis compréhensibles pour un utilisateur. Cela permet de développer rapidement des modèles hautement fiables et efficaces comportant des variables de quantité physique d’une manière qui n’a jamais été possible auparavant. Procédé mis en œuvre par ordinateur pour générer des modèles additifs génératifs comprenant les étapes suivantes : a) recevoir un ensemble de données à modéliser comme entrée, chaque donnée dudit ensemble de données, étant associée à un type de variable indiquant la nature de la donnée, ledit type de variable se rapportant à des informations choisies dans le groupe comprenant des informations biologiques, des informations environnementales, des informations météorologiques, des informations sur les événements physiques et des informations géographiques, et chaque donnée ayant en outre une valeur de variable associée ; b) recevoir un ensemble d’entrées de modèle, comportant un nombre de sous-ensembles d’ensemble de données d’entrée, un compte bas de variables de modèle, un compte haut de variables de modèle, un nombre de parcimonie, et un nombre de lissage, c) diviser l’ensemble de données d’entrée en sous-ensembles non identiques, le nombre desdits sous-ensembles non identiques étant égal audit nombre de sous-ensembles d’ensemble de données d’entrée, et pour chacun desdits sous-ensembles non identiques et dudit ensemble de données d’entrée, d) déterminer une valeur de parcimonie supérieure et une valeur de parcimonie inférieure, de sorte que, lors de la détermination d’un modèle additif généralisé sur ledit ensemble de données d’entrée ou un sous-ensemble de celui-ci tout en utilisant respectivement ladite valeur de parcimonie supérieure et ladite valeur de parcimonie inférieure comme paramètre de pénalité, le nombre de variables ayant un coefficient non nul corresponde essentiellement audit compte bas de variables de modèle et audit compte haut de variables de modèle, et en tirer un ensemble de valeurs de parcimonie compris entre ladite valeur de parcimonie supérieure et ladite valeur de parcimonie inférieure, le nombre de valeurs de parcimonie dans ledit ensemble de valeurs de parcimonie étant égal audit nombre de parcimonie, e) déterminer une valeur de lissage sur la base dudit ensemble de données d’entrée, de sorte que, lors de la détermination d’un modèle additif généralisé sur un sous-ensemble dudit ensemble de données d’entrée tout en utilisant ladite valeur de lissage comme paramètre de pénalité, ledit modèle ait le score hors échantillon le plus élevé, et déterminer un ensemble de valeurs de lissage comprises sur la base de ladite valeur de lissage, le nombre de valeurs de lissage dans ledit ensemble de valeurs de lissage étant égal audit nombre de lissage, f) 1. pour chaque valeur de parcimonie dans l’ensemble de valeurs de parcimonie, déterminer un modèle additif généralisé sur ledit chacun desdits sous-ensembles non identiques et dudit ensemble de données d’entrée tout en utilisant ladite chaque valeur de parcimonie comme paramètre de pénalité, et définir, à partir du modèle résultant, un ensemble de variables actives pour lesquelles les coefficients sont non nuls, générant ainsi un nombre d’ensembles de variables actives égal audit nombre de sous-ensembles d’ensemble de données d’entrée plus un fois ledit nombre de parcimonie, chacun desdits ensembles de variables actives étant associé à une valeur de parcimonie et à un sous-ensemble ou audit ensemble de données d’entrée, 2. pour chaque valeur de lissage, pour chaque ensemble de variables actives, déterminer un modèle additif généralisé sur le sous-ensemble ou ledit ensemble de données d’entrée associé audit chaque ensemble de variables actives, tout en utilisant ladite chaque valeur de lissage comme paramètre de pénalité, générant ainsi des modèles de nombre égal audit nombre de sous-ensembles d’ensemble de données d’entrée plus un fois ledit nombre de parcimonie fois ledit nombre de lissage, chaque modèle étant associé à une valeur de lissage, à une valeur de parcimonie, et à un sous-ensemble ou audit ensemble de données d’entrée, et g) grouper les modèles additifs généralisés qui sont associés au même couple de valeur de parcimonie et de valeur de lissage associées, calculer les scores à k blocs pour chaque groupe de modèles additifs généralisés et retourner, pour chaque groupe de modèles additifs généralisés, le modèle additif généralisé associé audit ensemble de données d’entrée ainsi que les scores à k blocs correspondants, dans lequel, dans les opérations d), e) et f), la détermination d’un modèle additif généralisé sur un ensemble de données en utilisant un paramètre de pénalité comporte l’optimisation d’un ensemble de coefficients B = (b i,j ) de sorte que : - la prédiction d’un modèle additif généralisé est , où X est la variable d’entrée pour la prédiction, g() est une fonction qui dépend de la distribution recherchée, A est l’ensemble de variables actives et est la fonction indicatrice évaluée à 1 si x i est le j ème niveau, et 0 dans les autres cas, - la détermination est basée sur l’optimisation de l’ensemble de coefficients B en tenant compte de contraintes qui dépendent du paramètre de pénalité, en utilisant un algorithme de descente de gradient proximal, dans lequel les contraintes sont définies comme pour les opérations d) et f1), où P pars est le paramètre de pénalité et h() une fonction de pénalité, et comme pour les opérations e) et f2), où P smo est le paramètre de pénalité et k() une fonction de pénalité. Procédé mis en œuvre par ordinateur selon la revendication 1, dans lequel, dans l’opération d), l’ensemble de valeurs de parcimonie sont définies en partageant de manière égale, à l’aide d’une échelle logarithmique, la plage définie par ladite valeur de parcimonie supérieure et ladite valeur de parcimonie inférieure en un nombre de valeurs égal audit nombre de parcimonie. Procédé mis en œuvre par ordinateur selon la revendication 1 ou 2, dans lequel, dans l’opération e), l’ensemble de valeurs de lissage sont définies en définissant une plage entre ladite valeur de lissage divisée par 10 et ladite valeur de lissage multipliée par 10, et en partageant de manière égale, à l’aide d’une échelle logarithmique, ladite plage en un nombre de valeurs égal audit nombre de lissage. Procédé mis en œuvre par ordinateur selon l’une des revendications précédentes, dans lequel la fonction h(B) et/ou k(B) comprennent un élément pour des paramètres liés à une catégorie et un autre élément pour des paramètres ordonnés. Procédé mis en œuvre par ordinateur selon la revendication 4, dans lequel la fonction h(B) est définie comme . Procédé mis en œuvre par ordinateur selon la revendication 4, dans lequel la fonction k(B) est définie comme . Programme informatique comprenant des instructions pour réaliser le procédé de l’une des revendications précédentes, lorsque ledit programme est exécuté par un ordinateur. Support de stockage de données sur lequel est enregistré le programme informatique de la revendication 7. Système informatique comprenant un processeur couplé à une mémoire (4), mémoire (4) sur laquelle est enregistré le programme informatique de la revendication 7.