Séminaire Quaresmi ce lundi 20 mars : “Introduction à la géométrie de l’information”

Le lundi 20 mars à 13h, Valentin Dendoncker, nouveau membre du laboratoire Quaresmi, nous présentera une “Introduction à la géométrie de l’information” dont voici un résumé :

La géométrie de l’information a pour but d’observer les notions étudiées en théorie de l’information au travers du prisme de la géométrie différentielle. Cette théorie est née de la volonté de géométriser les espaces de distributions de probabilité, en s’appuyant notamment sur les notions d’invariance (ou d’équivariance) en statistique et en géométrie. Le but de cet exposé est d’introduire les concepts importants étudiés en géométrie de l’information (comme par exemple les variétés dualement plates ou les métriques de Fisher-Rao) et de les illustrer au travers d’exemples et d’applications.

Le séminaire est ouvert à tous et aura lieu à l’ICHEC à 13h au local C001. Afin de faciliter l’organisation, merci de vous inscrire auprès de quaresmi@ichec.be.

Au plaisir de vous y voir nombreux.

Séminaire quaresmi ce jeudi 12 mai 2022 “Spectral Tools for training and analysing Neural Networks”

Ce jeudi 12 mai, pour notre dernier séminaire Quaresmi de cette année académique, nous aurons le plaisir d’accueillir Lorenzo Giambagli, chercheur à l’Université de Florence et actuellement à l’Université de Namur, qui nous présentera un exposé intitulé “Spectral tools for training and analysing neural networks” dont voici un résumé :

Deep Feedforward Neural Networks (FFNNs) play a central role in the Machine Learning field. They are usually trained in the space of nodes, by adjusting the weights of existing links via suitable optimization protocols. Recently a radically new approach has been proposed (1). By anchoring the learning process to reciprocal space, the new targets of the optimization process are eigenvectors and eigenvalues of the transfer operators between layers.

Shifting the focus on such fundamental mathematical structures we have been able to understand their pivotal role in training and analyzing NNs. Indeed, while seeking for a small subset of trainable parameters capable of carrying out the training procedure, eigenvalues are what to look for (2). Choosing them as trainable parameters allows the optimizer to exploit the parallel adjustment of several weights, the ones underlined by the corresponding eigenvector, and therefore made their after-training interpretation possible.

Firstly, eigenvalues magnitude after the training procedure has occurred has been empirically and heuristically proven being a proxy their relevance in the optimization process. Indeed, a precise correspondence between nodes and eigenvalues can be established, leading to a novel pruning procedure. The nodes related with low magnitude eigenvalues can be removed leading to a fast and easy implemented network compression algorithm (3).

Secondly, accounting for eigenvalues in the optimization process, it is possible to dynamically train sparse network (2). Sparsity constrains in the direct space implies that certain weights got filtered under a mask, leading to a gradient equal to zero during the training procedure. Working in the reciprocal space, however, allows masked weights to still be modified, due to the non-local effect of the eigenvalues. Such approach leads to sparse networks whose topology is not fixed to the starting one, resulting in a much more efficient training.

1. Machine learning in spectral domain. Lorenzo Giambagli, Lorenzo Buffoni, Timoteo Carletti, Walter Nocentini & Duccio Fanelli. 2021, Nature Communications.

2. On the training of sparse and dense deep neural networks: less parameters, same performance. Lorenzo Giambagli, Lorenzo Chicchi, Lorenzo Buffoni, Timoteo Carletti, Marco Ciavarella, Duccio Fanelli. 2021, PRE.

3. Spectral Pruning of Fully Connected Layers. Lorenzo Giambagli, Lorenzo Buffoni, Enrico Civitelli, Lorenzo Chicchi, and Duccio Fanelli. 2021, (under peer review of Scientific Report).

Le séminaire, ouvert à tous, aura lieu en présentiel à l’ICHEC, jeudi 12 mai à 13h au local E202. Afin de faciliter l’organisation, merci de vous inscrire auprès de quaresmi@ichec.be.

Au plaisir de vous y voir nombreux.

Séminaire quaresmi ce jeudi 24 mars 2022 “High-Frequency Traders and Flash Events: Trading Activity and Liquidity Dynamics Around Mini Flash Crashes”

Ce jeudi 24 mars à 13h nous aurons le plaisir de nous retrouver en présentiel pour un séminaire Quaresmi présenté par Christophe Desagre, chargé de cours à l’ICHEC. Celui-ci nous présentera un exposé intitulé “High-Frequency Traders and Flash Events: Trading Activity and Liquidity Dynamics Around Mini Flash Crashes ” dont voici un résumé :

We investigate how high-frequency traders (HFTs) behave around and during a certain type of flash events known as mini flash crashes (MFCs) on 74 large, medium and small Nasdaq stocks over the period 2008-2010. To do so, we identify MFCs by replicating Nanex MFC detection algorithm and complement our study with a parallel analysis on extreme price movements (EPMs), providing an alternative way to measure them. Our findings reveal that the behavior of HFTs around and during 1.5-second crashes is ambiguous. Based on directional trade imbalance metrics, we find that HFTs do highly significantly exacerbate the crash during 1.5-second extreme price movements, which contradicts the findings by Brogaard et al. (2018), and that NHFTs are the ones who contribute to the resiliency of stock prices after EPMs (at a 1% significance level of significance). However, based on a multivariate regression analysis, we find that, on average, HFTs reduce their liquidity demand during EPMs. When studying MFC and EPM subsamples by market capitalization, we find that HFTs do reduce their liquidity demand during EPMs occurring on large stocks but increase their liquidity demand during EPMs occurring on small stocks. The virtuous behavior of HFTs in large stocks may thus hide a more vicious behavior in small stocks. Moreover, we find that the reduction in HFT liquidity demand is more pronounced during the opening and closing periods. Finally, we find that HFT participation at time t-1 is by far the main determinant of mini flash crashes at time t, whatever the model specification.

Séminaire ouvert à tous. La présentation aura lieu à l’ICHEC, site Anjou, local E202 à 13h. Pour faciliter l’organisation, merci de vous inscrire auprès de quaresmi@ichec.be.

Au plaisir de vous y voir nombreux

EGC 2020 à l’ICHEC

Cette année, c’est la 20ème édition de la conférence EGC !  20 ans déjà : santé, jeunesse flamboyante et des projets plein la tête. La 20ème édition aura lieu à Bruxelles du 27 au 31 janvier 2020 sur le campus de l’ICHEC Brussels Management School et sera organisée par le laboratoire QUARESMI .

La conférence Extraction et Gestion des Connaissances (EGC) est un événement annuel réunissant des chercheurs et praticiens de disciplines relevant des sciences des données et des connaissances. Ces disciplines incluent notamment l’apprentissage automatique, l’ingénierie et la représentation de connaissances, le raisonnement sur des données et des connaissances, la fouille et l’analyse de données, les systèmes d’information, les bases de données, le web sémantique et les données ouvertes, etc.

Pour la 20édition de la conférence EGC, l’association EGC et le laboratoire Quaresmi ont décidé d’organiser une grande journée ouverte au public et aux professionnels. Cette journée sera une interface entre les scientifiques et le grand public. Plusieurs conférences plénières (keynotes) seront données sur le thème de l’intelligence artificielle. Le travail des scientifiques sera aussi visible lors des événements “minute of madness” et la remise des prix de l’association EGC pour les meilleurs travaux. Des démonstrations logicielles et des posters scientifiques seront visibles lors du buffet. Des stands d’entreprises seront présents sur le site, permettant des job dating dans les domaines de l’IA et des data sciences. La journée se terminera par une table ronde sur le thème « Promesses et risques : quel monde pour demain avec l’IA ? », animée par nos conférenciers invités (Jean-Gabriel Ganascia, Laurence Devillers) et le président du comité scientifique de la conférence, Antoine Cornuéjols.

Affiche journée publique

Toutes les informations sont disponibles sur le site de la conférence https://egc2020.sciencesconf.org/

Stay tuned, suivez-nous sur Twitter : 

Autour de la stylométrie appliquée à des sources anciennes… 3

Voici le troisième épisode de la série de billets consacrée à la stylométrie. Le deuxième épisode s’est terminé sur la conclusion que le texte oprhelin doit être attribué à Raoul de Caen. Nous allons à présent décortiquer les résultats obtenus par l’ACP en termes de variables, puis estimer l’impact sur ceux-ci d’un paramètre clef de la méthode, le nombre de lemmes à considérer dans chaque paquet de lemmes.

Résultats de l’ACP : les variables

Comme nous l’avons déjà vu, les deux composantes principales que nous avons utilisées pour visualiser nos paquets de lemmes sont des résumés des fréquences associées aux lemmes qui apparaissent dans les textes considérés. Néanmoins, tous les lemmes n’ont pas une importance égale dans ces deux composantes : certains sont très utiles pour expliquer les différences entre nos points (leur contribution est grande), d’autres beaucoup moins (leur contribution est petite).

Le tableau suivant donne les dix contributions les plus importantes :

lemme contribution
et 34.81 %
is 9.73 %
dominus 8.15 %
qui 7.20 %
in 3.74 %
hic 3.57 %
sum 1.85 %
rex 1.15 %
Christianus 1.00 %
se 0.91 %

 

 

 

 

 

Techniquement, ces contributions correspondent à la part de la variance totale à laquelle correspondent les variances des variables considérées (ici, des fréquences centrées de lemmes). Cela signifie donc que la variance du lemme et représente 34.81 % de la variance totale expliquée, ce qui est énorme.

Si ce tableau nous permet d’évaluer l’importance générale de chaque lemme dans l’ACP, il ne dit rien sur l’impact des lemmes. Je m’explique : certes, la fréquence de et est la variable la plus importante, mais comment se retrouve-t-elle sur les deux composantes principales que nous représentons sur nos graphiques en nuage de points ?

Pour répondre à cette question, on peut tracer un graphique de corrélation :

On observe sur ce graphique que la flèche et :

  1. pointe dans la direction positive de chacun des deux axes ;
  2. pointe de manière plus marquée dans la direction (horizontale) de la CP n° 1 que dans celle (verticale) de la CP n° 2 : et contribue plus à la première qu’à la deuxième.

Cela signifie que si un paquet de lemmes possède une fréquence et importante, il sera plutôt situé à droite du graphique (forte corrélation positive de la fréquence et avec la CP n°1, sur l’axe horizontal), et un peu en haut (corrélation positive de la fréquence et avec la CP n°2, sur l’axe vertical1).

Cette conclusion est cohérente avec ce que nous observons sur le nuage de points. En effet, on voit sur celui-ci que les paquets de lemmes de Raoul sont plutôt situés à gauche du graphique, ceux d’Albert plutôt à droite et ceux de Guillaume plutôt au milieu. Or, rappelez-vous, nous avions calculé, dans le premier billet de cette série, les fréquences totales de ce lemme pour l’ensemble de l’œuvre de chacun des trois auteurs :

Raoul de Caen Albert d’Aix Guillaume de Tyr
et 2,91 % 7,49 % 5,41 %

Puisque la corrélation entre la fréquence et et la CP n° 1 est positive, la “hiérarchie” qu’induisent ces fréquences totales (Raoul de Caen < Guillaume de Tyr < Albert d’Aix) se retrouve sur l’axe horizontal du nuage de points1.

L’impact du lemme rex sur les deux CP est de la même nature, même si la taille de la flèche (et donc l’importance de l’impact) est bien moindre :

D’autres lemmes contribuent négativement aux composantes principales, ou à l’une des deux. C’est par exemple le cas de hic :

La flèche pointe dans la direction positive selon l’axe horizontal, mais dans la direction négative selon l’axe vertical. Cela signifie donc qu’un paquet de lemmes dont la fréquence hic est importante est “tiré” vers le bas et vers la droite du graphique. Il n’est pas forcément situé dans le cadran sud-est, parce que tous les lemmes “tirent” le paquet de lemmes dans une direction qui leur est propre. Le lemme hic, qui possède une contribution totale modeste (3.57 %), en tout cas par rapport à celle de et, n’est donc pas “le seul à avoir son mot à dire” (sans mauvais jeu de mots) quant à la position du point en question sur le nuage de points.

Souvent, on représente plusieurs variables/lemmes en même temps sur le graphique de corrélation (ici les 10 lemmes les plus importants en termes de contribution totale, puisqu’afficher les flèches des 8.743 lemmes rend le graphique illisible) :

On trace aussi souvent un biplot, qui est la superposition du nuage de points et du graphique de corrélation :

Ce biplot permet de voir quelles variables ont “tiré” les paquets de lemmes jusqu’à l’endroit où ils sont situés. En particulier, on peut considérer les lemmes des flèches qui pointent dans la direction des paquets de lemmes d’un auteur comme une “caractéristique particulière” de cet auteur. Ainsi, on conclut que, au sein des trois auteurs, Guillaume est celui qui a le plus tendance à utiliser les lemmes dominus, is et qui. Il faut néanmoins rester prudent avec ce genre de conclusions, puisque nous ne prenons ici en compte que dix lemmes, alors que 8743 sont pris en compte par l’ordinateur pour tracer cette représentation.

La taille des paquets de lemmes considérés

Dans les billets précédents, j’ai fait le choix arbitraire de calculer les fréquences de chaque lemme dans des paquets de 2500 lemmes successifs. Que deviennent nos résultats lorsqu’on modifie ce paramètre de l’analyse ?

Augmenter la taille des paquets de mots a deux effets. D’une part, les fréquences qui sont calculées constituent de meilleures estimations de la fréquence d’utilisation générale du lemme par l’auteur, et on peut donc considérer que le résultat est plus précis. D’autre part, le nombre de paquets de lemmes (c’est-à-dire le nombre de points représentés sur le graphique) diminue. En considérant des paquets de 5000 lemmes, on obtient ainsi :

À première vue, la conclusion qu’on peut tirer de ce nouveau graphique semble plus tranchée qu’avant, plus nette. Mais il faut observer ici que le texte orphelin n’est plus représenté que par un seul point, ce qui signifie que nous n’avons plus aucune idée de la variabilité interne des fréquences des lemmes qui le composent. Il n’est donc sans doute pas pertinent de monter jusqu’à 5000 lemmes.

Que se passe-t-il lorsqu’au contraire on diminue la taille des paquets ? Le phénomène est l’inverse de celui que nous venons d’observer : d’une part les estimations de fréquences sont moins précises, d’autre part nous disposons de plus de points. On voit ainsi les trois nuages de points correspondants à nos trois auteurs se rapprocher puis se confondre, lorsqu’on considère des paquets de 1000 lemmes, 500 lemmes, 250 lemmes puis 100 lemmes :

Au fur et à mesure que les groupes de points se rapprochent, la conclusion d’attribution de notre texte orphelin à Raoul de Caen devient de moins en moins convaincante, pour finir par s’effondrer tout à fait !

Il est donc nécessaire de choisir la taille des paquets de lemmes considérés avec précaution : trop grande, elle empêche d’avoir une idée de la variabilité interne ; trop petite, elle ne permet tout simplement pas de conclure. Sur ce sujet précis, le lecteur intéressé consultera l’article de Maciej Eder dont les références figurent ci-dessous.


Dans le prochain épisode, nous verrons d’autres techniques d’analyse stylométrique, qui ne sont, quant à elles, pas liées à la visualisation des paquets de lemmes.

La suite au prochain épisode…

Notes

  1. Cet effet est visible directement parce que la contribution du lemme et est très importante. Pour un lemme dont la contribution est moins importante, l’effet n’est pas forcément visible aussi clairement. (retour a, retour b)

Pour en savoir plus

  • M. Eder, “Does size matter? Authorship attribution, small samples, big problem”, Literary and Linguistic Computing, vol. 30, n° 2, p. 107-121, 2015.

Autour de la stylométrie appliquée à des sources anciennes… 2

Voici le deuxième épisode de la série de billets consacrée à la stylométrie. Nous en étions restés sur un résultat peu satisfaisant et sur la conclusion qu’il était idiot de considérer les fréquences d’apparition de deux mots seulement… mais comment visualiser conjointement les fréquences de 10 mots, de 20 mots, de 150 mots, ou même de l’ensemble des 8743 mots distincts qui apparaissent dans nos quatre textes ?

L’analyse en composantes principales

Heureusement, nous avons à notre disposition une technique statistique pour nous venir en aide : l’analyse en composantes principales (ACP). L’idée de celle-ci est de résumer un grand nombre de variables en un plus petit nombre de nouvelles variables de manière efficace. Le résumé est optimal en termes de l’explication de la variabilité des données sur lesquelles on travaille, c’est-à-dire en termes de l’information que ces données contiennent. Dans le cas qui nous occupe, la variabilité des données est très importante, puisque c’est ce qui permet de distinguer les différents paquets de lemmes les uns des autres.

De plus, le résumé prend une forme particulièrement agréable. En effet, alors que les anciennes variables sont corrélées entre elles, ce qui signifie que l’information qu’elles transportent est « partiellement redondante », les nouvelles variables sont décorrélées entre elles : l’information qu’elles transportent n’est pas redondante.

Pour mieux comprendre comment l’ACP fonctionne, considérons le cas particulier d’un résumé de deux variables en une variable. Ce résumé peut être vu géométriquement comme une projection de l’ensemble du plan (dimension 2) sur une droite (dimension 1). Ainsi, nous partons de deux variables, ici, les fréquences des lemmes et et qui :

Avant toute chose, nous centrons ces variables, c’est-à-dire que nous leur soustrayons leur moyenne, histoire qu’elles soient situées « au centre des axes » ; le nuage de points ne change pas de forme, il est seulement translaté (déplacé) :

Nous pouvons maintenant projeter le nuage de points sur une droite quelconque, de la même manière que le soleil projette l’ombre d’un objet sur un mur. Commençons avec l’exemple d’une projection sur une droite horizontale, plus facile à visualiser :

Les petits carrés oranges constituent la projection des points noirs sur la droite horizontale. On peut donc se débarrasser des deux anciens axes et ne considérer que la droite horizontale sur laquelle la projection a été effectuée :

Celle-ci est une nouvelle variable, qui résume les deux variables dont nous sommes partis. Il est bien entendu possible d’effectuer des projections sur d’autres droites, pas forcément horizontales :

Conceptuellement, les deux projections (la première sur la droite horizontale, la seconde sur la droite à pente positive) sont très similaires. Cependant, elles ne sont pas aussi efficaces l’une que l’autre du point de vue du « résumé de l’information de départ » qu’elles produisent :

Les points de la première projection (à gauche ci-dessus) sont plus espacés que ceux de la deuxième (à droite) : elle a « mieux résumé » l’information de départ (qui consiste en des points présentant des différences entre eux) et elle est donc plus efficace. En termes techniques, la variance des points résultant de la première projection est supérieure à celle des points résultant de la seconde.

Le choix des deux droites présentées ci-dessus est bien entendu arbitraire, et il est possible d’effectuer des projections sur n’importe quelle droite du faisceau de droites du plan :

Quand on a compris l’idée des projections, le principe de l’analyse en composantes principales est clair : cette technique sélectionne la droite qui est optimale en termes de « résumé de l’information », c’est-à-dire en termes de variance des points projetés. Sans rentrer dans les détails techniques, mentionnons simplement que la direction en question est celle du premier vecteur propre de la matrice de corrélation (ou de la matrice de covariance) des données originales.

Dans le cas du nuage de points considéré en exemple, la droite sélectionnée, qu’on appelle première composante principale, est la suivante :

La seconde composante principale est ici la droite perpendiculaire à la première composante principale :

C’est cette seconde composante principale qui transporte « le reste de l’information », que la première composante principale n’a pas capté. On peut quantifier la proportion de « résumé de l’information » transporté par chacune d’elle :

Presque 85% de l’information est donc portée par la première composante. Puisque celle-ci est optimale de ce point de vue, nous sommes assurés de ne pas pouvoir trouver de projection qui transporte plus d’information. Ce pourcentage est très important, puisqu’il nous dit que nous ne perdons que 15% de l’information si nous ne considérons que la première composante et oublions la seconde, c’est-à-dire si nous résumons nos deux variables en une.

Cette première composante principale est une sorte de « mélange » des deux variables de départ. Dans notre cas, pour savoir où un point du nuage de points initial est situé sur la première composante, il suffit d’appliquer la règle

PC1 = -0,93 ∗ freqCentr(et) + 0,34 ∗ freqCentr(qui)

Cette équation exprime en termes mathématiques que PC1 est un mélange (ou, pour être plus rigoureux, une combinaison linéaire) de freqCentr(et) et freqCentr(qui).

Par exemple, le point situé aux coordonnées (-0,84 % ; 1,84 %) dans le système des deux variables de départ (et qui correspond donc à un paquet de mots — ou, pour être plus précis, de lemmes — au sein duquel la fréquence centrée de et est égale à -0,84 % et la fréquence centrée de qui est égale à 1,84 %) sera situé à

PC1 = -0,93 ∗ (-0,84 %) + 0,34 ∗ 1,84% = 1,4 %

sur la première composante principale.

Que se passe-t-il lorsqu’on projette non pas deux variables sur une, mais par exemple trois variables sur deux ? Cette opération est elle aussi aisément visualisable : nous effectuons maintenant la projection d’un nuage de points de dimension trois sur un plan de dimension deux. Par exemple, dans le cas du plan horizontal :

Résultats

L’analyse en composantes principales que nous mettons en œuvre pour effectuer notre analyse stylométrique des récits de croisade est bien plus difficile à visualiser, puisque nous projetons cette fois 8743 variables (c’est-à-dire les fréquences relatives à l’ensemble des lemmes qui apparaissent dans les quatre textes) sur deux variables1 ! Cela signifie donc que nous résumons un espace de dimension 8743 à l’aide d’un espace de dimension 2. Inutile de dire que le processus ne peut cette fois pas être représenté graphiquement.

Néanmoins, on peut représenter son résultat, dans un plan (donc en dimension 2) puisque nous avons choisi de projeter sur deux variables (c’est d’ailleurs la raison de ce choix) :

 

Dans ce cas, la première composante principale porte 27 % de l’information, et la seconde 11 %. Nous avons donc « oublié » 62 % de l’information contenue dans nos données de départ, mais un coup d’œil rapide au graphique ci-dessus permet de se rendre compte que notre but est atteint.

En effet, on voit que, même en négligeant presque 2/3 de l’information de départ, nous pouvons affirmer que les triangles mauves, qui représentent les paquets de lemmes du texte orphelin, sont situés « loin » des disques rouges et des carrés verts, qui représentent respectivement les paquets de lemmes de Guillaume de Tyr et d’Albert d’Aix. Cette observation nous permet de conclure, en faisant l’hypothèse que l’auteur du texte orphelin est forcément parmi les trois candidats-auteurs sélectionnés, que c’est à Raoul de Caen qu’il faut attribuer la paternité de notre fragment-mystère. Et c’est effectivement le cas : pour les besoins de l’exemple présenté ici, j’ai « fabriqué » le texte orphelin en allant piocher quelques chapitres de l’œuvre de ce chroniqueur et en les réunissant sous l’étiquette « auteur inconnu ».

Il me semble nécessaire d’insister ici sur ce qui peut passer pour un détail méthodologique mais qui revêt une importance capitale : nous ne concluons pas que le texte est de Raoul de Caen parce que les triangles mauves sont situés au même endroit que les carrés turquoises, mais bien parce qu’ils sont éloignés des disques rouges et des carrés verts et que notre liste ne compte que trois candidats-auteurs. En effet, comme nous avons perdu une partie de l’information en résumant nos variables, et comme cette information consiste en les différences entre nos points, nous ne pouvons pas nous fier aux similitudes. Deux points situés tout près l’un de l’autre dans le résumé sont peut-être situés loin l’un de l’autre dans les données de départ. Par contre, si deux points sont situés loin l’un de l’autre dans le résumé, ils le sont aussi dans les données de départ. Il est donc bon de garder en tête cette règle d’or de l’analyse en composantes principales :

Avec une ACP, on peut se fier aux dissemblances, mais pas aux similitudes.

On pourrait traduire celle-ci en termes stylométriques :

L’ACP ne permet d’identifier l’auteur d’un texte qu’en éliminant tous les éléments d’une liste exhaustive de candidats-auteurs, à l’exception d’un seul.

Cela implique qu’il est nécessaire de disposer, pour effectuer une attribution stylométrique parfaitement rigoureuse, d’un ensemble d’auteurs potentiels pour le texte étudié, au sein duquel le véritable auteur se trouve forcément. Dans énormément de cas, une telle liste n’existe tout simplement pas, et il faut donc faire preuve de circonspection. J’espère avoir l’occasion de discuter ce point précis sur ce carnet dans le futur.

Dans le prochain billet, nous explorerons certains des « paramètres » de l’ACP que nous avons mise en œuvre ici, comme la taille des paquets de mots considérés.

La suite au prochain épisode…

Notes

  1. Ce choix n’est certainement pas optimal : non seulement il est souvent mieux de choisir un nombre limité de lemmes parmi ceux qui apparaissent le plus fréquemment, mais d’autres critères de choix interviennent aussi, comme la nature grammaticale de ces lemmes. Il est en effet souvent plus intéressant de ne pas considérer les lemmes qui portent un sens en eux-mêmes, comme les noms, les adjectifs, les verbes ou les pronoms, et de se restreindre aux stop words. Nous aurons l’occasion de discuter plus en détails cet aspect de l’analyse dans un billet prochain (retour).

Pour en savoir plus

  • Neat, T. et al, “Surveying Stylometry Techniques and Applications”, in ACM Computing Surveys 50, n° 6 (2017), p. 1-36.
  • Stamatatos, E., “A survey of modern authorship attribution methods”, in Journal of the American society for information science and technology 60 (2009), p. 538-556.

Autour de la stylométrie appliquée à des sources anciennes… 1

Cette année, j’ai décidé de consacrer quelques billets sur ce carnet de recherche à la stylométrie, dans lesquels je tenterai de me poser certaines questions à propos des tenants et des aboutissants des méthodes qu’on range sous ce terme, avec le point de vue de non-spécialiste qui est le mien.

Avant de discuter d’éléments plus ou moins précis, il me semble utile de donner une présentation générale (mais bien entendu limitée) de ces techniques. Je reprendrai pour ce faire un petit cas d’étude artificiel que j’avais présenté lors d’un atelier co-organisé par le SMCS et le CENTAL, de l’UCLouvain en mai 2018.

Le principe de la stylométrie

La stylométrie est un ensemble de techniques à l’intersection de la linguistique et de la statistique, dont le but est d’identifier le style de documents textuels. Le style d’un texte est caractéristique de son contexte d’écriture au sens large : son auteur, son époque, son « genre », …

La stylométrie tente de montrer qu’un texte est écrit dans un style différent d’une collection d’autres textes. Cette différenciation permet donc, dans une certaine mesure, de déterminer si un « anonyme » a été écrit par un auteur précis, et surtout de déterminer si un texte n’a pas été écrit par un auteur précis… nous allons étudier un tel exemple infra !

La stylométrie est ici appliquée à des ouvrages anciens, mais est aussi appliquée à des textes actuels, comme des emails, des tweets, etc.

Les techniques appliquées aujourd’hui en stylométrie sont variées, et différent notamment par la méthode statistique qui est utilisée (analyse en composante principale, clustering, analyse des réseaux, …) et le « niveau » de discours sur lequel on travaille (caractère, mot, phrase, etc.).

Notons cependant qu’une analyse stylométrique mélange bien souvent diverses méthodes statistiques et plusieurs « niveaux » du texte.

Nous allons dans un premier temps considérer un exemple mettant en œuvre une analyse en composantes principales au niveau lexical (basée sur les mots).

Les débuts

La première trace d’une analyse stylométrique provient d’une lettre du logicien anglais De Morgan au révérend Heald (1851) : pour déterminer si deux passages des évangiles sont du même auteur, il propose de

« déterminer […] si le premier texte est formé de mots plus longs que le deuxième texte. […] Un de ces jours, les écrits apocryphes seront identifiés de cette manière. »

L’idée de comparer les longueurs des mots a été appliquée par le physicien américain Mendenhall en 1887 aux œuvres de Bacon, Marlowe et Shakespeare, sans résultat.

Il a fallu attendre les années 1930 pour que l’étude quantitative du style soit reprise, avec les travaux du linguiste américain Zipf et du statisticien écossais Yule, consacrés aux distributions des fréquences de mots.

Après la guerre, les premiers résultats positifs apparaissent :

  • en 1959, Cox et Brandwood parviennent partiellement à ordonner chronologiquement les écrits de Platon ;
  • en 1962, Ellegärd parvient à écarter plusieurs candidats-auteurs des Lettres politiques de Junius (pamphlets anonymes contre le gouvernement anglais de 1769-1772) ;
  • en 1964, Mosteller et Wallace parviennent à répartir les Federalist papers (publications anonymes de 1787-1788 enjoignant les citoyens américains à ratifier la constitution) entre les trois auteurs Hamilton, Jay et Madison.

Cette dernière étude a convaincu la communauté scientifique de l’intérêt de la stylométrie : elle marque le point de départ d’une série très fournie d’études de textes très divers, souvent passionnantes.

Notons que certaines de ces études ont défrayé la chronique et retenti comme de véritables scandales, notamment à cause de problèmes méthodologiques. J’espère pouvoir revenir sur quelques-unes d’entre elles dans un billet prochain.

Première analyse naïve de fréquence

Considérons à titre d’exemple le problème suivant. Supposons que nous ne connaissons pas l’auteur d’un texte (que nous appellerons « texte orphelin ») qui constitue une partie de récit de la première croisade1.

Nous avons en tête trois candidats-auteurs, qui sont tous les trois des chroniqueurs latins de la première croisade (1096-1099) :

Nom Raoul de Caen Albert d’Aix Guillaume de Tyr
Chronique Gesta Tancredi in expeditione Hierosolymitana Liber Christianæ expeditionis pro restitutione sanctæ Hierosolymitanæ ecclesiæ Historia rerum in partibus transmarinis gestarum
Nombre de mots 28.553 117.179 240.168
Rédaction 1112 – 1118 1125 – 1150 1170 – 1184

Une première idée pour tenter de trancher entre ces trois auteurs est de regarder les mots qui reviennent le plus souvent dans leurs œuvres, et de les comparer avec les mots qui reviennent le plus souvent dans le texte orphelin. Récupérons donc les mots les plus fréquents dans celui-ci :

Rang 1 2 3 4 5 6 7 8 9 10
Mot et in ad nec qui non ut est sed a
Traduction et dans vers et ne pas qui ne pas pour que il est mais par
Fréquence
5,8% 2,5% 1,3% 0,9% 0,8% 0,7% 0,7% 0,5% 0,5% 0,3%

Travailler directement sur les mots n’est cependant pas satisfaisant. On imagine par exemple que le verbe esse, « être », apparaît sous d’autres formes que simplement est (qui correspondent aux autres formes conjuguées), ce qui fausse donc le calcul de fréquence. Les verbes ne sont pas les seuls mots qui subissent une flexion, comme le qui : penser aux noms communs, pronoms, adjectifs, déterminants, …

Le nombre de formes différentes est particulièrement grand en latin, puisqu’il s’agit d’une langue à déclinaisons. Nous devons donc lemmatiser les textes sur lequel nous travaillons (c’est à dire envoyer chaque mot sur sa forme pure, non déclinée ou conjuguée). Avant cela, on tokenise le texte :

Un exemple simple, le mot latin quod, montre que le processus de lemmatisation n’est pas trivial : suivant la place du mot dans la phrase, le « catégoriseur de discours » doit déterminer s’il s’agit du relatif (« lequel »), de l’adjectif (« quelque »), de l’interrogatif (« quel ? »), de l’adverbe (« à ce propos »), de la conjonction (« parce que »), etc. Dans ce cas, le lemmatiseur affecte en général des probabilités aux différentes possibilités.

Pour qu’un lemmatiseur soit efficace pour une langue donnée, il faut l’entraîner sur un corpus de textes déjà lemmatisés, dont les structures grammaticales sont explicitées… construire une tel corpus est un travail monumental ! Pour le latin médiéval, on dispose par exemple de l’Index Thomisticus, qui compte 170.000 tokens pour 9.000 phrases et est basé sur la Summa theologica de Thomas d’Aquin. Mais on imagine aisément des mots qui apparaissent dans certains textes médiévaux mais qui n’apparaissent pas dans la Summa ! Ces mots sont a priori inconnus du lemmatiseur.

Certaines langues sont plus difficiles à lemmatiser que d’autres ; c’est le cas du latin médiéval :

  • certains mots se collent à d’autres, comme le suffixe –que (« et ») et le préfixe se– (renforcement de certains pronoms) ;
  • certaines combinaisons de lettres sont interchangeables, et ce sans aucune cohérence (un même mot peut apparaître sous deux graphies différentes sur une même ligne) :
    ci ↔ ti ch ↔ h ph ↔ f h ↔ Ø
    w ↔ uu ↔ vv ↔ uv ↔ vu i ↔ j ↔ y k ↔ c ↔ ch g ↔ gu

    Le mot chirographum apparaît ainsi sous les graphies alternatives cirographum, chyrographum, cyrographum, chirografum, cirografum, chyrografum et cyrografum ;

  • les textes sont souvent farcis de vernaculaire (par exemple de l’ancien français).

Comme prévu, les résultats diffèrent sensiblement lorsqu’on compare les fréquences des mots et les fréquences des lemmes :

Mot et qui in hic sum ad nec is ille non
Rang après 1 2 3 4 5 6 7 8 9 10
Rang avant 1 5

(qui)

2 19

(haec)

8

(est)

3 4 68

(id)

51

(illi)

6

Il est donc absolument essentiel de lemmatiser le corpus avant d’effectuer des calculs de fréquence !

Nous disposons maintenant de mesures pertinentes de la fréquence d’apparition des lemmes, et pouvons donc comparer notre texte orphelin aux trois textes sources.

Les deux lemmes qui apparaissent le plus souvent sont et et qui :

Raoul de Caen Albert d’Aix Guillaume de Tyr Orphelin
et 2,91 % 7,49 % 5,41 % 3,94 %
qui 2,99 % 2,34 % 3,62 % 3,46 %

Ce résultat ne nous apprend pas grand chose : les statistiques du texte orphelin ne permettent pas de le rapprocher de manière claire de l’un des trois auteurs… La comparaison directe des proportions totales n’est pas satisfaisante !

Elle ne tient par exemple pas du tout compte de la variabilité de ces proportions au sein des corpus considérés. On peut ainsi imaginer que les proportions varient fort au sein des chapitres de chacune des trois œuvres… si c’est le cas, quelle est la pertinence de la comparaison avec la fréquence de l’orphelin ?

Pour tenir compte de cette variabilité, nous pouvons couper les corpus en tranches, et effectuer les calculs de proportion sur chacune d’elles. La taille des tranches doit être bien choisie : si elle sont trop grosses, le problème de variabilité n’est pas résolu ; si elle sont trop petites, la variabilité sera immense et ne signifiera plus grand chose. J’ai choisi ici de grouper les mots par paquets de 2.500.

Nous remplaçons donc une proportion totale :

par les proportions de groupes de 2500 mots :

qu’on peut maintenant comparer pour nos auteurs :

Ce troisième graphe n’est pas très convaincant : les deux points mauves (les paquets de mots de l’orphelin) sont situés à une bonne distance des carrés verts (les paquets de mots d’Albert d’Aix), mais ils sont situés entre les disques rouges (les paquets de mots de Guillaume de Tyr) et les carrés turquoises (les paquets de mots de Raoul de Caen).

Mais la comparaison des fréquences de mots n’a pas dit son dernier mot. Nous n’avons en effet utilisé ici qu’une très faible portion de l’information disponible, puisque nous avons comparé les proportions des deux mots les plus fréquents ! Considérer plus de mots pose toutefois des problèmes… et notamment des problèmes de visualisation : si nous considérons 10 mots, par exemple, comment visualiser les différences entre les corpus, et donc comment espérer effectuer une attribution ? Et pourquoi s’arrêter à 10 mots ? Nous pourrions comparer les fréquences des 8743 mots distincts — ou plutôt des 8743 lemmes distincts — qui apparaissent dans nos textes…

La suite au prochain épisode

Notes

  1. Pour clarifier l’exposé, j’ai considéré ici comme texte orphelin un morceau d’un des trois candidats-auteurs analysés (dont l’identité sera révélée dans le numéro suivant), de sorte que les résultats expriment clairement son attribution. Bien entendu, dans une véritable analyse stylométrique, la paternité du texte orphelin est tout à fait inconnue (retour).

Pour en savoir plus

  • Holmes, D., “The evolution of stylometry in humanities scholarship”, in Literary and Linguistic Computing 13, n° 3 (1998), p. 111-117.

Le rachat de la Revue d’Intelligence Artificiellle

Quand on pense publier un article et que l’on se retrouve au milieu d’un imbroglio scientifico-commercial international

Dans le cadre du projet d’identification automatique des sources de l’encyclopédie de Vincent de Beauvais, nous avons soumis un article à la Revue d’Intelligence Artificielle (RIA), dans le numéro spécial “Digital Humanities”… mais entre le moment de la soumission et le moment de la publication de la version peer-reviewée, la RIA a été rachetée par un éditeur peu scrupuleux (qui a notamment publié des articles dans la “nouvelle version” de la revue sans aucun processus de révision) et le comité de rédaction a démissionné !

Le président de l’ex-comité a écrit un communiqué de presse donnant les détails de la situation. On y trouve relaté le fait que juste après le rachat 

 “le nouvel éditeur a modifié sans prévenir un numéro de la revue déjà publiée : trois articles en anglais écrits par des auteurs chinois ont été ajoutés et “à l’insu du rédacteur en chef et des 36 membres du comité de rédaction”.

Si cela paraît déjà “très cavalier”, ce n’est pas tout. En effet, Yves Demazeau, l’ex-rédacteur en chef de la Revue explique notamment que juste avant sa démission, des chercheurs lui ont proposé de l’argent pour une publication accélérée :

“Entre temps, […] le Rédacteur en Chef a reçu la proposition d’articles écrits en anglais par des auteurs chinois lui proposant à chaque fois 800 $ (!) en échange d’une publication accélérée de leur soumission, ce que le Rédacteur a évidemment décliné.”

L’analyse que donne France Culture de l’événement vaut aussi la peine d’être lue et est assez édifiante. On lit, entre autres que, selon Jean-Gabriel Ganascia, professeur au laboratoire d’informatique de l’Université Pierre et Marie Curie 

“Il faut savoir qu’en Chine, les chercheurs reçoivent des primes en fonction des articles qu’ils publient et plus la revue est cotée, plus la prime est élevée”

On peut vraisemblablement voir tout cela comme un énième avatar de l’effet pervers de la course à “l’excellence” mesurée avec force indices numériques, à commencer par le nombre de publications

En ce qui concerne la RIA il serait triste de constater un jour que ce qui a été un des fleurons de l’édition scientifique française dans un domaine pointu et on ne peut plus actuel se retrouve dans la liste des journaux prédateurs. Heureusement, la plupart des ex-membres de celui-ci cherchent maintenant à mettre en place une nouvelle revue, dans la continuité de l'”ancienne version” de la RIA.

Sébastien de Valeriola, Étienne Cuvelier et Céline Engelbeen

Séminaire : QAMML : une famille de distributions de probabilité pour l’Analyse de Données Fonctionnelles

Ce jeudi 2 mai à 14h le laboratoire Quaresmi aura le plaisir d’organiser son troisième séminaire intitulé : 

QAMML : une famille de distributions de probabilité pour l’Analyse de Données Fonctionnelles, par Étienne Cuvelier.

Les données fonctionnelles deviennent de plus en plus courantes. Ces données peuvent résulter des mesures répétées d’un phénomène au cours du temps, mais aussi lors de la variation d’un paramètre non temporel, comme par exemple une longueur d’onde. Ces données sont l’objet de l’Analyse de Données Fonctionnelles, ou Functional Data Analysis (FDA) en anglais. De telles données peuvent aussi avoir une origine statistique, comme lorsqu’on veut « résumer » le contenu d’une variable en utilisant sa distribution de probabilité, comme c’est le cas en Analyse de Données Symboliques.

Si ce type de données est souvent stocké sous forme discrétisée, c’est à dire sous forme multivariée, ces données sont par nature de dimension infinie. L’approche classique qui, consiste à appliquer des techniques multivariées aux versions discrétisées de ces données, donne lieu à un paradoxe : la minimisation de la perte d’informations lors du stockage, par augmentation de la finesse de discrétisation, est confrontée au fléau de la dimension, à savoir la raréfaction des données lors de l’augmentation de la dimensionnalité. La mise au point d’outils directement conçus pour ce type de données spécifiques que sont les données fonctionnelles est donc impérative. Mais l’infinité dimensionnelle de celles-ci rend difficile la mise au point de ce type d’outils, et c’est particulièrement vrai lors de la construction d’un incontournable en analyse de données : la notion de distribution de probabilité d’une variable aléatoire fonctionnelle.

Dans cet exposé, nous nous attacherons, tout en restant dans le cadre de l’analyse de données, à définir et construire une classe de distributions de probabilités directement définies dans l’espace de dimension infinie dans lequel sont plongées les données fonctionnelles. Cette classe de distributions, dénommées QAMML, est développée en associant un générateur de copule Archimédienne à une moyenne quasi-arithmétique.

Cette nouvelle famille de distributions de probabilités pour données fonctionnelles, nécessite aussi de définir un nouveau type de densité de probabilité, ce que nous faisons en utilisant la dérivée directionnelle de Gâteaux.

Notre approche n’est pas uniquement théorique, car nous illustrons l’utilité de ces distributions en analyse de données en « injectant », telles quelles, les distributions QAMML dans deux algorithmes initialement conçus dans le cadre de l’analyse multivariée : la classification non supervisée par décomposition de mélange et la classification supervisée bayésienne. Nous illustrons aussi l’usage de ces distributions en statistique en construisant des intervalles de confiance fonctionnels. Ces trois « illustrations » étant réalisées sur des données réelles.

Séminaire ouvert à tous. La présentation aura lieu à l’ICHEC, site Anjou, local E103. Pour faciliter l’organisation, merci de vous inscrire auprès de  celine.engelbeen@ichec.be

Au plaisir de vous y voir nombreux.

Séminaires Quaresmi 2018-2019

Le laboratoire Quaresmi est très heureux d’annoncer qu’il inaugurera le jeudi 28 février 2019 sa première série de séminaires, avec un exposé de M. Sébastien de Valeriola (ICHEC) intitulé “Risque de défaut et réseaux de crédit à Ypres au XIIIe siècle” .

Ces séminaires sont ouverts à tous, mais pour des raisons organisationnelles, merci de vous signaler à l’adresse celine.engelbeen_at_ichec.be.

Les séminaires se dérouleront sur notre site du Manoir d’Anjou : Rue au Bois, 365a, 1150 Bruxelles.

Vous pouvez retrouver ces séminaires dans notre section “Nos activités” .

Affiche des séminaires du laboratoire Quaresmi. Les dates sont aussi disponibles via notre section "nos activités".

Conférence EGC2020

Le laboratoire Quaresmi est particulièrement heureux de vous annoncer qu’il sera l’organisateur de la 20ème  édition de la conférence “Extraction et Gestion de Connaissance”.

La conférence Extraction et Gestion des Connaissances (EGC) est un événement annuel réunissant des chercheurs et praticiens de disciplines relevant de la science des données et des connaissances. Ces disciplines incluent notamment l’apprentissage automatique, l’ingénierie et la représentation de connaissances, le raisonnement sur des données et des connaissances, la fouille et l’analyse de données, les systèmes d’information, les bases de données, le web sémantique et les données ouvertes, etc.

La conférence EGC est l’occasion de faire se rencontrer académiques et industriels afin de confronter des travaux théoriques et des applications pratiques sur des données réelles et de communiquer des travaux de qualité, d’échanger et de favoriser la fertilisation croisée des idées, à travers la présentation de travaux de recherche récents, de développements industriels et d’applications originales.

N’hésitez pas à consulter (gratuitement) les actes de l’édition 2019, comprenant les articles des communications orales ainsi que ceux associés aux posters via la revue RNTI. Les actes des ateliers sont disponibles via les pages de ceux-ci (lien). Vous pouvez aussi accéder aux slides des keynotes et enfin les vidéos des différentes sessions seront bientôt disponibles sur Canal C2.

Cette 20ème édition se déroulera sur le site de l’ICHEC situé Boulevard Brand Withlock (sis à côté du rond-point Montgomery). L’organisation de cette édition “anniversaire” se fera en étroite collaboration avec l’association EGC.

De plus amples informations bientôt.

Stay tuned, suivez-nous sur Twitter : 

Atelier DAHLIA – EGC 2019

Ce mardi 22 janvier, j’ai eu l’occasion de présenter brièvement notre travail réalisé sur une partie de l’œuvre de l’encyclopédiste médiéval Vincent de Beauvais lors de l’atelier DAHLIA (Groupe de travail DigitAl Humanities and cuLtural herItAge) qui précédait la conférence EGC 2019 à Metz.

Face au volume très important que représente l’ensemble des encyclopédies médiévales, la question de l’identification des sources utilisées par les encyclopédistes paraît naturelle, mais représente une tâche colossale et fastidieuse pour les historiens si elle est entreprise manuellement. Le but de ce travail présenté est de créer un outil d’identification automatique des sources utilisées par Vincent de Beauvais dans ses livres 16 à 22 du speculum naturale.

Afin de créer cet outil, il a été nécessaire de découper en petites entités, appelées notices, les différentes œuvres sur lesquelles nous avons travaillé. Pour le speculum maius de Vincent de Beauvais, cette division existait déjà. Cette présentation, ainsi que les questions du public, ont été l’occasion de revenir sur la façon dont nous avons choisi d’effectuer ce découpage pour les différentes sources utilisées. Je suis également revenue brièvement sur les conséquences de cette subdivision sur l’outil.

Python va-t-il tuer R ?

Le présent

Le dernier sondage en date du site KDnuggets semble annoncer une domination future du langage Python sur le langage R dans le “petit monde”  des data sciences et du machine learning. En 2016 R pouvait encore toiser Python puisque 42% des sondés déclaraient utiliser l’implémentation open source du langage S contre 34% pour le langage au nom inspiré par les inénarrables Monty Pyhton ( 8.5% annonçant utiliser les deux) . En 2017 la tendance s’inverse : 36% pour R et 41% pour Python (et 12% pour les deux) : 

Graphique de l'évolution des parts de marché de R et Python en 2016 et 2017.

Source : KDnuggets

La tendance haussière de Python n’est pas nouvelle puisque la part d’utilisateurs de ce langage augmente de façon quasi-constante depuis 2014, en ayant par ailleurs doublé son nombre de déclarants dans ces enquêtes depuis 2014 :

Graphique de l'évolution des parts de marché de R et Python de 2014 à 2017.

Source : KDnuggets

On pourrait contester ce résultats en se basant sur le fait qu’il ne s’agit que d’enquêtes en ligne avec un bon millier de répondants. Outre le fait que ce nombre de répondants est assez classique et statistiquement suffisant pour des résultats fiables, ces résultats ne contredisent pas des enquêtes plus larges : celles d’IEEE Spectrum ou de TIOBE .

Au vu de la forte progression de Python, on peut légitimement se poser la question du titre : Python va-t-il finalement (et rapidement?) tuer R ?

La transition

Ce qui me parait particulièrement intéressant dans l’article de KDnuggets c’est le schéma suivant :

Schéma de transition entre les langages R, Python, le deux et les autres en 2017.

Source : KDnuggets

Ce dernier permet de visualiser précisément quelles sont les proportions de répondants qui sont restés fidèles à leur(s) langage(s) ou qui ont migré d’une situation à l’autre. Cela m’a rappelé un article que j’avais particulièrement apprécié  : The eigenvector of “Why we moved from language X to language Y”. Dans cet article Erik Bernhardsson avait scrappé des données à  propos des requêtes Google du type from <language 1> to <language 2>, switch to <language 2> from <language 1>. Et il en avait fait une matrice de transition pour essayer de prédire le futur… Je me suis inspiré de cet article pour appliquer la même technique aux résultats 2017 de KDnuggets.

Les informations reprises dans la figure ci-dessus peuvent être traduites en la matrice de transition suivante :

P=\begin{matrix} \begin{matrix} Pyth & Both & R & Others\end{matrix} & \\ \left( \begin{matrix} 0.91 & 0.04 & 0.05 & 0.01\\0.38 & 0.49 & 0.11 & 0.01\\0.10 & 0.15 & 0.74 & 0.01\\0.19 & 0.04 & 0.17 & 0.60 \end{matrix}\right) & \begin{array}{l} Pyth \\ Both\\ R\\ Others\end{array} \end{matrix}

Cette matrice se lit assez facilement :

  • chaque ligne représente une situation (utilisateurs de Python, utilisateurs des deux langages, …),
  • chaque colonne représente une transition possible : de la situation X vers Python pour la première, de la situation X vers les deux langages pour la deuxième,…

Par exemple la première ligne est celle des utilisateurs (ou déclarés comme tels) de Python en 2016. Ceux-ci sont restés fidèles à ce langage dans 91% des cas, ont utilisé les deux en 2017 pour 4%, ont migré vers R dans 5% des cas et vers d’autres langages pour 1% d’entre eux.  Les autres lignes peuvent se lire de façon similaire. Comme de toute situation de départ en 2016 on doit arriver à une situation existante en 2017, la somme de chacune des lignes doit faire 1. Malheureusement ce n’est pas le cas pour les lignes 1 et 2 qui dont les sommes valent respectivement 1.01 et 0.99. Ne sachant d’où vient cette très probable erreur d’arrondi (même après avoir cherché les “données brutes” sur le site de KDnuggets) j’ai appliqué une correction générale à chacune des lignes en les divisant respectivement par leurs sommes ce qui donne donc la belle matrice de transition suivante :

P=\left( \begin{matrix} 0.9009901 & 0.03960396 & 0.04950495 & 0.00990099\\0.3838384 & 0.49494949 & 0.11111111 & 0.01010101\\0.1000000 & 0.15000000 & 0.74000000 & 0.01000000\\0.1900000 & 0.04000000 & 0.17000000 & 0.60000000 \end{matrix} \right)

 

Les pourcentages utilisateurs déclarés en 2016 peuvent aussi s’écrire sous cette forme :


\pi^{(2016)}=\begin{matrix}\left(\begin{matrix} 0.34\\0.08\\0.42\\0.16\end{matrix}\right) & \begin{array}{l}Pyth \\ Both\\ R\\ Others\end{array} \end{matrix}

C’est ce que l’on appelle un vecteur d’état : il donne la probabilité de chacun des états (ici un état étant “utilisateur de…”) . La somme des nombres d’un tel vecteur devant aussi faire 1 puisque tout sondé doit se retrouver dans un des états. C’est pour respecter cette contrainte d’unité de la somme que j’ai corrigé le 8.5% en 8% en supposant que c’est une erreur puisque la somme valait 1.05 (j’aurais aussi pu tout diviser par 1.05 comme ci-dessus).

De même la situation de 2017 peut s’écrire 

\pi^{(2017)}=\begin{matrix}\left(\begin{matrix} 0.41\\0.12\\0.36\\0.11\end{matrix}\right) & \begin{array}{l}Pyth \\ Both\\ R\\ Others\end{array} \end{matrix}

L’avantage, une fois que tout est écrit sous cette forme, c’est qu’en supposant que la matrice P est une matrice stochastique décrivant un processus de Markov on peut facilement calculer ce qui se passe d’année en année (sous la supposition forte que les probabilités de transitions ne changeront pas au cours du temps), ainsi on peut écrire que :

\pi^{(2017)}= P^{\tau} \cdot \pi^{(2016)}

Et effectivement si on effectue ce calcul on retrouve, aux arrondis prés, les valeurs pour 2017:

P^{\tau} \cdot \pi^{(2016)}=\left(\begin{matrix} 0.4093163\\0.1243145\\0.3624638\\0.1039054\end{matrix}\right)

Bien entendu on peut continuer le processus et estimer ce qui se passera en 2018 (toutes choses restants égales par ailleurs comme disent les économistes) : 

\pi^{(2018)}= P^{\tau} \cdot \pi^{(2017)}=\left(\begin{matrix}0.4724950\\0.1362657\\0.3199630\\0.0712762\end{matrix}\right)

Ce sera à vérifier dans un an mais il semblerait donc que Python continuera à violemment gagner du terrain alors que la position de R continuera à s’effriter, pendant que les utilisateurs des deux progresseront timidement.

Le futur?

Évidemment, à ce stade,  on a en généralement envie (les mathématisants en tous cas)  de continuer le processus pour voir si la situation finit par se stabiliser :

\pi^{(2018)}, \pi^{(2019)}, \pi^{(2020)}\cdots, \pi^{(20xx)} \longrightarrow v

C’est évidemment assez facile à calculer en utilisant un langage comme R (!) (ou Python pour être tout à fait honnête) mais, quand s’arrêter?  “Quand les chosent se stabilisent”  pourrait-on dire platement. Mais les mathématiciens et les probabilistes se sont bien entendu déjà penchés sur ce genre de question et la réponse est assez simple : il suffit d’utiliser le concept (très puissant mais mal aimé des étudiants) de vecteurs propres et de valeurs propres. Pour rappel un vecteur v est vecteur propre de valeur propre \lambda si et seulement si :

A \cdot v= \lambda \cdot v

Or il se fait que la définition d’un état stable est assez proche car un état est dit stable pour les processus de Markov quand l’application de la matrice de transition ne change plus rien c’est-à-dire quand :

P^{\tau}\cdot v = v

en d’autres termes, un état stable est un vecteur propre de valeur propre 1. 

Si on calcule ce vecteur v pour notre match Python vs R on obtient :

v=\begin{matrix}\left(\begin{matrix} 0.67257910\\0.11156674\\0.19159885\\0.02425531\end{matrix}\right) & \begin{array}{l}Pyth \\ Both\\ R\\ Others\end{array} \end{matrix}

Ce qui signifie que dans un horizon “relativement” proche(1), Python dominerait en raflant le 2/3 du marché alors que R se contenterait d’une niche de 20% et, surprise, les utilisateurs des deux langages resteraient assez limités à  11%.

Conclusion

Évidemment, comme dans la citation prêtée à Niels Bohr (mais aussi à d’autres) :

les prévisions sont difficiles surtout lorsqu’elles concernent l’avenir.

 

Il faut donc être prudent. Mais néanmoins le jeu  des prévisions est toujours excitant et il est difficile de ne pas s’y prêter.  

Même si la répartition future entre R et Python sera vraisemblablement, au moins sensiblement, différente de celle prédite ici, la répartition de parts de chacun des langages me paraît assez plausible. En effet, outre la progression fulgurante de Python ces dernières années, ce dernier me paraît avoir des avantages décisifs (et mon coeur d’aficionados de R saigne en l’écrivant) par rapport à R. Celui-ci est un langage de programmation dédié aux statistiques et autre analyses de données, et dans ce rôle il fait un boulot remarquable, notamment soutenu par un écosystème très dynamique avec une pléthore de packages , dont certains très spécialisés. Et c’est, selon moi, une de ses forces car on peut y trouver des packages qui contiennent l’implémentation de méthodes issues directement de travaux de recherche récents. On peut donc, en tant que chercheur, y tester très rapidement de nouvelles idées. Par contre, il n’est pas  spécialement adéquat pour être utilisé “en production” pour des projets industriels avec des données massives (même si c’est possible). 

L’avantage premier de Python est que c’est un langage de programmation généraliste pour lequel on est occupé à créer des environnements/librairies dédiées aux calcul scientifique et aux data science :

Ecosystème Python pour le Machine Learning

Source: http://python.astrotech.io/machine-learning/wprowadzenie-do-machine-learning.html

Ce qui signifie que ce langage, doté de ces boîtes à outils, permet non seulement d’effectuer des analyses de données mais permet aussi de développer de véritables applications. Avantage non négligeable dans un environnement business. Et, cerise sur le gâteau, ce langage permet de développer des applications web, “d’entreprise” (sur ordinateur) et embarquées comme l’illustre ci-dessous la copie d’écran du tableau de la page d’IEEE Spectrum

 The Top Programming Languages 2018

Source : IEEE Spectrum

Même si actuellement Python n’est pas aussi riche en librairies que R et que ce dernier se débrouille nettement mieux en termes de visualisations (mais les choses changeront sans doute dans le futur), il me parait assez inéluctable que ce dernier se voie finalement retranché dans la seule niche scientifique, pour laquelle il a été a priori créé. Il vivrait ainsi un destin un peu similaire au langage Pascal, créé pour l’enseignement et qui, au vu du nombre d’étudiants ayant appris à coder avec lui se retrouvant sur le marché du travail, a vu une carrière “commerciale” s’ouvrir à lui avant que celle-ci  ne finisse par se refermer, entre autres pour des raisons techniques (comme l’absence initiale de chaînes de caractères à zéro terminal), et qu’il ne se retrouve confiné dans sa niche éducative (même si on le retrouve encore à la 17ème place du classement TIOBE).  En espérant pour R que cette niche scientifique ne soit pas elle-même réduite à peau de chagrin. La bonne nouvelle, a priori, c’est que l’on peut espérer répondre non à la question initiale.

Signé : un utilisateuR heuReux  que son langage pRéféRé se soit pas déjà condamné à une moRt rapide, même si il a déjà un peu commencé à pRogrammer en Python, on n’est jamais tRop pRudent ;).

 

(1) Un horizon de 9 à 11 ans toutes choses restant égales par ailleurs. J’ai essayé d’évaluer ce laps de temps en regardant après combien de temps |\pi^{(20xx)} - v| était en moyenne plus petit que 1% ou que le maximum de ces différences soit plus petit que 1%. Bien entendu si les proportions de migrations changent, il en sera de même de cet horizon temporel (retour au texte).