A propos Florian CAFIERO

Ancien élève de l'Ecole Normale Supérieure, Florian Cafiero enseigne les méthodes quantitatives appliquées à la philologie à l'Ecole nationale des chartes, ainsi que les humanités numériques à Paris Sciences et Lettres (PSL).

Analyse de réseaux (3): s’il vous plaît… dessine-moi un réseau

Mis en avant

 » – Dessine-moi un mouton. » Alors j’ai dessiné. Il regarda attentivement, puis: « – Non! Celui-là est déjà très malade. Fais-en un autre. » Je dessinai : […] « – Tu vois bien… ce n’est pas un mouton, c’est un bélier. Il a des cornes… » Je refis donc encore mon dessin. Mais il fut refusé, comme les précédents […] Alors, faute de patience, comme j’avais hâte de commencer le démontage de mon moteur, je griffonnai ce dessin-ci. […] « – C’est tout à fait comme ça que je le voulais ! »

                      Le Petit Prince, Antoine de Saint-Exupéry, Chapitre II

Après avoir exploré très succinctement quelques possibilités et limites de l’analyse des réseaux, nous commençons une série d’articles consacrée au travail sur sa propre base de données.

En supposant que la base de données soit déjà créée et bien ordonnée, la première étape du travail est la visualisation de réseaux. C’est une étape cruciale pour comprendre ses données, mais aussi un enjeu important pour la diffusion de sa recherche, et qui comporte plus de risques qu’il n’y paraît. Des dessins radicalement différents peuvent correspondre au même graphe: lequel choisir ?

Il est parfois tentant d’adopter une démarche un brin naïve face à la représentation de notre réseau. Se contenter de choisir l’affichage par défaut minimise la peine, à défaut d’être toujours adéquat. Choisir le plus beau rendu visuel est également un travers séduisant.

Mais le risque le plus grave est ce que j’appellerai le « syndrome du Petit Prince »: demander à ce que le dessin soit fait et refait, jusqu’à ce qu’il apparaisse sous les traits dont nous rêvions, jusqu’à qu’il laisse assez de place à notre imaginaire pour qu’il puisse être interprété comme nous le voulions.

Il est toujours tentant, quand une multiplicité de représentations graphiques est possible, de sélectionner celle qui semble le plus manifestement aller dans le sens de nos hypothèses de départ, celle qui ressemble le plus à l’idée que nous nous étions faites de nos données.

Pour éviter tous ces écueils, nous livrons ici quelques éléments importants pour la construction d’une représentation graphique compréhensible, attrayante, mais avant tout fidèle à nos données.

PARENTHESE TECHNIQUE: LE LOGICIEL GEPHI

  • Pourquoi Gephi ?

Nous choisissons de présenter ici un logiciel développé depuis 2008 à l’université technologique de Compiègne (UTC), et dont l’usage s’impose de plus en plus dans la recherche française et internationale ces dernières années: Gephi. Relativement facile à prendre en main, ce logiciel offre néanmoins de vastes possibilités, en particulier en termes de visualisation.

Il traite tous les types de réseaux, dirigés, non dirigés ou mixtes, et est compatible avec Windows, Linux et Mac OS. C’est de surcroît un logiciel libre, publié sous licence CDDL + GNU GPL 3.

Attirons l’attention sur la version de Gephi utilisée: les changements intervenus entre Gephi 0.8.2 et Gephi 0.9.1 (celle dont nous parlerons) n’ont pas été sans conséquences, notamment en ce qui concerne les plugins. Certains tutoriaux et cours produits pour les versions antérieures ne sont donc plus toujours valables – les suivre à la lettre pouvant provoquer quelques bugs mineurs.

  • Travailler ses données sous Gephi

Gephi supporte des données à différents formats. Le GEXF (Graph Exchange XML Format) est le format développé depuis 2007 par l’équipe Gephi,

Une base de données au format gexf – exemple des la base « Les Misérables »

Notons que ce format permet de décrire explicitement dès l’encodage le caractère dirigé ou non des liens, d’assigner des labels, et d’attribuer des pondérations.

Mais le logiciel accepte bien d’autres formats: GraphML, GraphViz DOT, Netdraw VNA, PajekNET, GDF, GML, Tulip TLP, UCINET DL.

Plus simplement encore il est possible d’importer des fichiers .csv créés sous Excel, OpenOffice Calc ou autre tableur standard. Un simple tableau à deux colonnes – première colonne nœud d’origine, deuxième colonne nœud d’arrivée du lien – peut donc être exploité pour modéliser son réseau dirigé ou non.

  • Manipulations esthétiques et d’étiquetages

Via le menu du bas, minimisé par défaut, on peut appliquer la plupart des variations simples.

Dans l’onglet « global », on permet de changer le zoom ou la couleur du fond. Dans les onglets suivants, on peut modifier les options d’affichage des nœuds et des liens (leur couleur, leur forme, leur épaisseur etc.). Gephi permet par ailleurs d’étiqueter chacun des nœuds – une option activable et configurable sur le même menu.

CHOISIR LA MISE EN FORME DE SON RÉSEAU: LA SPATIALISATION

Une étape cruciale est le choix de la spatialisation, (en anglais du « layout ») c’est à dire de la manière dont l’ordinateur va organiser les points dans l’espace.

Plusieurs options sont proposées dans GEPHI, et doivent être choisies en fonction de ses données et de l’usage que l’on veut faire de la représentation graphique. Nous présentons ici quelques options usuelles, installées par défaut ou accessibles via des plugins spécifiques.

Pour illustrer la grande variété des représentations graphiques, nous utiliserons systématiquement la même base de données (une base de données exemple de Gephi, retranscrivant les liens unissant entre eux les personnages des Misérables de Victor Hugo – son contenu est parfaitement indifférent pour notre propos du moment, nous ne commenterons bien sûr pas les résultats…).

Rapport d’import renvoyé par GEPHI à chaque importation d’une nouvelle base de données – ici pour la base de données exemple « misérables.gexf »

Une base de données de taille particulièrement modeste, qui permet d’appliquer aisément tous les traitements que nous voulions présenter.

Tout répartir au hasard ?

  • Spatialisation aléatoire

Une possibilité pour ne pas « projeter » son interprétation sur ses données, de ne pas imposer de vues au lecteur du graphique, pourrait être de demander à ce que les points soient répartis « au hasard » sur le graphique.

C’est ce que propose l’option « spatialisation aléatoire ». On n’y définit que la taille de l’espace alloué à la représentation graphique (plus l’espace défini est petit, plus le dessin apparaîtra « compact »).

Notre réseau exemple spatialisé avec l’algorithme Spatialisation aléatoire

Si séduisante puisse-t-elle paraître d’un certain point de vue, cette option aboutit cependant à des graphiques souvent impossibles à interpréter, en particulier lorsque la taille du réseau augmente.

Représenter un réseau ayant une « réalité » géographique:

Le cas le plus simple intervient quand le réseau que l’on veut représenter correspond à une réalité physique en général, géographique en particulier. Dans ce cas, les distances entre points sont une fonction de la distance physique séparant chaque point du réseau. Comme toujours en cartographie, le choix de la projection peut bien sûr influer su le regard.

  • Geo Layout

Demande l’installation du plugin GeoLayout.

On entre une base de données dans laquelle les nœuds sont définis par leurs coordonnées géographiques (longitude/latitude). Les points sont alors positionnés en fonction de ces points – les projections les plus usuelles, comme Mercator, étant bien sûr envisageables.

La faible complexité de cette opération permet l’usage de très grandes bases de données (jusqu’à 1.000.000 de nœuds).

  • Map of countries

Demande l’installation du plugin Map of Countries.

Reprenant une grande partie du fonctionnement du plugin précédent, Map of countries permet sans surprise de représenter son réseau sur une carte incluant les tracés des frontières nationales ou régionales.

Mettre en avant les complémentarités: les algorithmes basés sur les forces

La plupart des algorithmes proposés par GEPHI sont des algorithmes de dessin basés sur les forces (Force-directed ou Force-based algorithms).

L’intuition sous-jacente à ces algorithmes est simple: les points reliés entre eux sont attirés les uns envers les autres, tandis que les points isolés sont repoussés. Un mode de pensée inspiré de la physique de l’électro-magnétisme.

  • ForceAtlas:

C’est un des algorithmes « maison » de Gephi, créé par Mathieu Jacomy en 2007.

Il est pensé pour mettre en valeur les réseaux « petit monde » (pour un rappel sur ces réseaux, voir notre premier billet de cette série), et de manière plus générale, les réseaux invariants d’échelle (« scale-free network »).

Notre réseau exemple spatialisé avec l’algorithme ForceAtlas, paramètres par défaut sauf « force de répulsion = 2000.0 »

On prendra garde à la configuration précise de l’algorithme, notamment à celle des forces d’attraction et de répulsion. Une force de répulsion trop faible (ou une force d’attraction trop grande) risque d’aboutir à des superpositions malvenues, et de rendre le graphique illisible.

Notre réseau exemple spatialisé avec l’algorithme ForceAtlas, paramètres par défaut – en particulier avec  « force de répulsion = 200.0 »

L’auteur recommande un usage pour des données ne dépassant pas 10.000 nœuds, du fait de la complexité quadratique de l’algorithme, et du temps de calcul qu’elle engendre.

  • Yifan hu proportionnal

Pour traiter de plus grandes bases de données, on pourra se tourner vers l’option « Yifan Hu proportionnal », du nom d’un chercheur de Yahoo! research qui a produit des travaux remarquables sur la visualisation de grands réseaux, dont on utilise ici un algorithme de 2005. On se référera par ailleurs avec bonheur à sa récente revue de littérature co-écrite avec Lei Shi [2015] pour mieux comprendre l’état actuel des débats sur la visualisation de grands réseaux.

Cet algorithme permet l’exploitation de réseaux allant jusqu’à 100.000 nœuds

Notre réseau exemple spatialisé avec l’algorithme Yifan Hu proportionnel

On note également Force Atlas 2, un autre algorithme spécifique à Gephi, qui utilise certains mécanismes d’approximation similaire pour traiter de très grandes bases de données.

  • Fruchterman Reingold

Pour une base de données peu importante, on pourra choisir l’option « Fruchterman Reingold » d’après l’algorithme de ces deux auteurs [1991].

Notre réseau exemple spatialisé selon l’algorithme de Fruchterman & Reignold (1991) sous Gephi

Une visualisation devenue classique, mais un algorithme d’une complexité importante, qui la disqualifie pour l’étude de grands réseaux.

Une barre d’attente à laquelle il faut s’habituer lorsque l’on utilise cet algorithme avec des données un peu conséquentes…

Insister sur les divisions:

  • Open ord

Open Ord est un algorithme pensé pour décrire des réseaux qui ne seraient pas des petits mondes, et dont on voudrait mettre en avant les différents groupes (clusters) constituant. S’inspirant de Fruchterman-Reingold, qui devient ici un cas particulier des traitements possibles, l’algorithme cherche aussi à s’affranchir de la complexité quadratique inhérente aux modèles « force-based » que nous venons d’évoquer.

Une idée maîtresse pour cet algorithme est de permettre de couper certains liens les plus longs (dans la représentation graphique s’entend) – ce qui augmente l’allure « découpée » du dessin. Le paramétrage de l’option « edge-cut » permet de définir à partir de quelle longueur il est tolérable de couper. La valeur est comprise entre 0, ce qui donnerait dans ce cas le même résultat qu’avec Fruchterman-Reingold, et 1 (niveau qui maximisera le partitionnement visuel des données).

Notre exemple de réseau spatialisé avec Open Ord – edge cut: 0.20

Faire varier cette valeur donne évidemment des graphiques significativement différents.

Notre exemple de réseau spatialisé avec Open Ord – edge cut: 0.95

Ces visualisations ont pour intérêt une certaine clarté, et une bonne capacité à traiter des grandes bases de données. Elles sont toutefois à manier avec précaution.

L’accroissement des distances physiques entre les points donnent l’illusion que certains sont très éloignés, quand la distance qui les sépare dans le graphe est en réalité assez courte. Elles sont par conséquent à réserver à des cas où la séparation du réseau en différents clusters très distincts est véritablement nette et significative.

Privilégier l’ordonnancement des individus selon un critère d’intérêt

Plus qu’au tracé du réseau lui-même, on peut s’intéresser aux places relatives de chacun des nœuds selon un critère particulier. Peu m’importe qui échange avec qui, je m’intéresse ici à qui échange le plus avec les autres, ou qui est le plus central dans les échanges entre individus de mon réseau.

Ces options permettent des visualisations relativement spectaculaires – et c’est bien là leur valeur. En dehors de tout petits réseaux, le tracé du réseau devient illisible. L’information véhiculée par le graphique n’excède alors plus celle qu’aurait donné un tableau ordonnant les individus selon le critère d’intérêt.

  • Circular

Demande l’installation du plugin Circular Layout.

La logique globale de cet algorithme est plutôt simple: on trace un cercle, sur lequel on projette chacun des nœuds, en les ordonnant selon un critère défini par l’utilisateur: du plus haut au plus bas degré par exemple, ou du plus central au moins central…

Notre exemple de réseau spatialisé avec Circular, en choisissant d’ordonner les nœuds par degrés décroissant.

  • Radial Axis

Demande l’installation du plugin Circular Layout.

Là encore, un définit un critère d’intérêt (degré, centralité…), mais au lieu de représenter les nœuds sur le cercle, on les représente sur des axes qui « rayonnent » autour du cercle. Sur chaque axe, on regroupe les individus possédant au même niveau le critère d’intérêt (même degré, même centralité, etc.).

Notre exemple de réseau spatialisé avec Circular, en choisissant d’ordonner les nœuds par degrés décroissant.

Ces deux algorithmes sont d’une complexité limitée (0(n)) , et permettent donc le traitement de grandes bases de données.

VERS UNE ANALYSE MATHÉMATIQUE 

Les possibilités de visualisation d’un réseau sont extrêmement larges, et les graphiques obtenus fondamentalement différents. Il convient donc de se poser les bonnes questions quant à la conception d’un graphique, pour faciliter sa lecture et non la manipuler. Et il convient surtout de passer, une fois la visualisation faite, à une autre étape: celle de l’analyse à proprement parler, qu’aucun graphique ne peut remplacer. Ce sera bien sûr le thème du prochain billet de cette série.

Bibliographie

BASTIAN M., HEYMANN S., JACOMY M. (2009). « Gephi: an open source software for exploring and manipulating networks »International AAAI Conference on Weblogs and Social Media.

FRUCHTERMAN, Thomas M. J,  REINGOLD, Edward M. (1991), « Graph Drawing by Force-Directed Placement », Software – Practice & Experience, Wiley, 21 (11): 1129–1164

MARTIN S., BROWN W.M., KLAVANS R., BOYACK K., (2011)  « OpenOrd: An Open-Source Toolbox for Large Graph Layout« , SPIE Conference on Visualization and Data Analysis, 2011

HU Yifan, LEI Shi, « Visualizing Large Graphs« , (2015)  Wiley Interdisciplinary Reviews: Computational Statistics, Volume 7, pages 115-136.

Florian CAFIERO

Ancien élève de l'Ecole Normale Supérieure, Florian Cafiero enseigne les méthodes quantitatives appliquées à la philologie à l'Ecole nationale des chartes, ainsi que les humanités numériques à Paris Sciences et Lettres (PSL).

More Posts

Follow Me:
TwitterLinkedIn

L’ascension des Médicis – analyse des réseaux (2)

Dans ce deuxième billet consacré à l’analyse des réseaux, nous nous intéressons à un exemple intéressant d’application de la théorie des réseaux aux sciences humaines. L’article dont nous parlerons ici, publié en 1993 par Padgett et Ansell, pose une question à laquelle beaucoup pensaient savoir répondre: pourquoi les Médicis ont-ils réussi à s’imposer à Florence, face à des familles et clans tout aussi puissants qu’eux ? A travers cet article et les développements qu’il a suscité (notamment dans Jackson, 2008), nous explorerons quelques aspects fondamentaux de l’analyse des réseaux en sciences humaines: la diversité de la nature des liens, la notion de centralité et ses différentes variations etc.

Le pouvoir à Florence au Quattrocento

Le pouvoir des Médicis sur la cité florentine s’établit au début du XVe siècle grâce à Cosimo de’ Medici (1389-1464), dit aussi Cosme l’ancien. Leur ascension peut initialement paraître surprenante, les Médicis étant une famille objectivement moins puissante que bien d’autres familles de l’oligarchie alors au pouvoir.

Portrait de Cosimo Il Vecchio de Medici - Agnolo Bronzino (~1565/1569), Galerie des Offices, Florence

Portrait de Cosimo Il Vecchio de Medici – Agnolo Bronzino (~1565/1569), Galerie des Offices, Florence

Les Strozzi, par exemple étaient à la fois plus riches, et plus puissants politiquement, possédant notamment plus de sièges dans les instances législatives.

Une interprétation souvent avancée pour expliquer ce phénomène est d’ordre socio-économique. Les Médicis auraient incarné une classe « moyenne » et marchande, face aux familles plus riches, et surtout à la richesse plus ancienne. Pourtant d’après cet article, la richesse des soutiens des Médicis, et l’évolution de celle-ci, ne se distingue pas de celles des soutiens des oligarques. De surcroît, la richesse des Médicis aurait été tout à fait comparable à celle de ces rivaux oligarques. L’explication par une sorte de guerre des classes ne semble donc pas si probante.

« It’s the network stupid ! »

L’article de Padgett and Ansell tente donc une explication alternative de ce fait étonnant par l’analyse des réseaux. Le succès des Médicis, menés par celui qui deviendra le pater patriae, viendrait de leur position centrale dans un réseau de relations économiques, politiques et matrimoniales.

Pour examiner en détail les réseaux d’influence des Médicis, les auteurs encodent séparément différents types de liens entre les familles: immobiliers, matrimoniaux, commerciaux et bancaires. Plusieurs graphes sont ainsi créés séparément puis superposés.

Structure des relations entre 92 "familles" florentines

Structure des relations entre 92 « familles » florentines

Une pratique dont la trivialité n’a d’égal que l’utilité. Ceci permet d’effectuer aussi bien des analyses synthétiques que plus détaillées quant aux liens unissant les différentes familles florentines.

Une analyse rapide fournit assez rapidement des résultats. Si l’on ne fait que compter les relations qu’entretiennent les Médicis avec d’autres familles, on remarque déjà que leur réseau est un peu plus étendu que celui de leurs rivaux. Par exemple, les Médicis arrivent en tête du nombre de mariages conclus avec d’autres familles.

Pour autant, leur domination en la matière n’est pas absolue, ce nombre dépassant d’environ 50% celui des alliances matrimoniales des Guadagni ou même des Strozzi. Suffirait-elle à expliquer l’irrésistible ascension de cette famille ? C’est dur à croire.

De l’importance d’être central

Ce que montre l’analyse des auteurs, c’est que les Médicis doivent moins leur pouvoir à une fortune ou à un nombre de relations différents des autres qu’à l’agencement même de ces relations.

Il existe ainsi une différence majeure entre les soutiens des oligarques et ceux des Médicis. Les premiers se connaissent majoritairement entre eux, et entretiennent des relations de différents types. Des relations complexes à gérer, qui ont pu générer ou exacerber rivalités et conflits d’intérêts.

A l’inverse, les différents soutiens des Médicis n’entretiennent que peu de liens entre eux. Ils ont besoin des Médicis pour accéder aux autres membres du réseau de soutien à cette famille. De surcroît, ces soutiens n’ont pas n’ont plus de connexions directes aux oligarques: ils doivent également passer par les Médicis pour s’adresser à eux.

Dans son livre de 2008, Matthew Jackson propose d’analyser ce phénomène en termes de centralité,  plus précisément de centralité d’intermédiarité (betweenness centrality).

Soit P(ij) le nombre de « plus courts chemins » entre deux familles i et j. Soit Pk(ij) le nombre de ces plus courts chemins passant par la famille k. Plus Pk(ij) est élevé par rapport à P(ij), plus on peut considérer que la famille k est un intermédiaire crucial pour les relations entre les familles et j.

Pour déterminer l’importance qu’a une famille (ou un noeud en général) pour connecter d’autres familles entre elles au sein d’un réseau, on calcule la moyenne de ces Pk(ij) pour toutes les familles i et j du réseau.

La centralité d’intermédiarité se calcule donc tout bêtement ainsi:

centralite-dintermediarite

Reprenant les bases de données utilisées par Padgett et Ansell, Matthew Jackson calcule ainsi cette centralité de la famille Médicis au sein de son réseau: 0.522 ! En d’autres termes, les Médicis sont plus de la moitié du temps sur le plus court chemin entre deux grandes familles florentines de leur réseau !

 Les Guadagni, qui arrivent seconde famille la plus influente selon cette mesure, obtiennent un score plus de moitié moindre (0.255). Quant à la centralité d’intermédiarité des Strozzi, elle dépasse péniblement les 10% (0.103).

Conclusions méthodologiques

Sans revenir sur le contenu scientifique de cet article, on retiendra deux points méthodologiques importants:

  • Dès l’encodage de la base de données, il est important de relever les différents types de liens pouvant unir les individus. Contrairement aux réseaux en mathématiques, ou parfois en physique, la notion de lien est, dans nos disciplines, avant tout métaphorique, et peut regrouper des réalités disparates. Il convient d’en être conscient, et de se laisser les moyens d’étudier séparément les différents types de lien – quitte à effectuer des regroupements ex post.
  • Dans l’analyse d’un réseau, la forme du graphe et ses propriétés peuvent être tout aussi importantes, voire plus importantes, que des résultats de base comme le nombre de liens associés à un nœud. L’importance des Médicis ici n’est pas tant manifeste à travers l’étendue de leur réseau que par la forme même de ce réseau. Un aspect qu’il est donc crucial de ne jamais négliger.

Bibliographie:

JACKSON Matthew O., Social and Economic Networks, Princeton University Press, 2008

PADGETT John F., ANSELL Christopher K., « Robust Action and the Rise of the Medici, 1400-1434. « ,  American Journal of Sociology, 98-6, 1259-1319, mai 1993

Florian CAFIERO

Ancien élève de l'Ecole Normale Supérieure, Florian Cafiero enseigne les méthodes quantitatives appliquées à la philologie à l'Ecole nationale des chartes, ainsi que les humanités numériques à Paris Sciences et Lettres (PSL).

More Posts

Follow Me:
TwitterLinkedIn

Un vrai filet à poissons ? – L’analyse des réseaux (1)

« C’est un réseau sans issue, un vrai filet à poissons que je tends autour de lui, une robe au faste perfide »

Eschyle, Agamemnon in Tragédies complètes (trad. Paul Mazon), éd. Gallimard, coll. « Folio », 1982, p. 308, vers 1282-1283

Nous commençons avec ce rapide billet un petit parcours théorique et pratique au sein de la très en vogue « analyse de réseaux ». Alors que les productions en sciences humaines s’en réclamant ne cessent de s’accroître, il nous a paru important de revenir sur les enjeux méthodologiques et sur la portée scientifique de ce courant d’analyse. La variété des disciplines utilisant l’analyse des réseaux est confondante, tout comme la diversité des problématiques auxquelles on lui demande de répondre. Il faut dire que son usage est séduisant: le terme « réseaux » connote une modernité certaine, et les représentations graphiques afférentes flattent l’œil… A tel point que l’on se demande parfois si on n’utilise pas ce type d’outils à tort et à travers, et si l’on ne trouve pas dans nos réseaux des prises qui n’auraient rien à faire…

Clytemnestre hésitant avant de frapper Agamemnon endormi

Clytemnestre hésitant avant de frapper Agamemnon endormi – Pierre-Narcisse Guérin, 1817, musée du Louvre (Inv. 5185)

Si l’analyse des réseaux en sciences humaines paraît parfois fourre-tout, et si certains résultats sont peu convaincants, c’est selon nous à cause de deux méprises: l’une sur la nature des réseaux; l’autre sur la nature de l’analyse des réseaux. 

SUR LA NATURE DES RÉSEAUX

Graphes et réseaux

L’analyse des réseaux nous vient originellement de l’informatique théorique et de la théorie des graphes. C’est de ces champs que nous héritons une grande majorité des outils que nous utilisons. Revenons donc, de manière informelle, sur quelques définitions importantes.

La définition d’un réseau est relativement simple, et dérive de la notion de graphe. Intuitivement, un graphe est un ensemble d’entités, appelés nœuds, reliées par des liens, aussi nommés arcs ou arêtes. Lorsque les nœuds sont nommés, on appelle ce graphe un réseau.

On distingue deux types de relation entre des nœuds:

  • Les relations orientées

On peut représenter les liens entre des entités par des flèches lorsque ces liens sont « orientés ».

Exemple de graphe orienté représentant les liens entre quatre entités

Exemple de graphe orienté représentant les liens entre quatre entités

Dans le monde physique, on peut par exemple représenter de la sorte un système routier ou ferroviaire comportant des sens uniques, des flux migratoires, le passage d’un courant électrique à travers un circuit…

  • Relations non-orientées

Dans le cas où la relation n’est pas orientée, on représente les liens entre individus par des traits.

graphe_non_oriente

Graphe non orienté, représentant les liens entre six individus

On considère dans ce cas des liens qui peuvent être considérés en première approximation au moins comme symétrique: contrat, alliance, amitié. Cette modélisation est souvent usitée car elle est souvent un peu plus maniable mathématiquement.

Une modélisation universelle ?

Le cadre théorique de la théorie des réseaux semble suffisamment souple pour s’accommoder d’à peu près n’importe quelle problématique de recherche. Pourtant, il existe quelques limites dont il est nécessaire d’être conscient.

  • La simplicité des relations

L’analyse des réseaux ne peut que représenter des interactions relativement simple entre individus. On peut certes ajouter de l’information – des liens orientés ou non, éventuellement pondérés – mais celle-ci est limitée, et rend l’analyse moins aisée.  Il est donc nécessaire de réfléchir à ce que le lien représenté révèle ou masque de la relation entre les individus.

Les liens unissent par ailleurs au maximum deux individus, ce qui ne décrit pas nécessairement toutes les situations possibles. On peut par exemple vouloir décrire une situation dans laquelle, soit A, B, C sont tous reliés entre eux, soit ils ne sont pas du tout reliés – c’est un cas qui peut arriver dans certaines coalitions militaires, accords commerciaux, amitiés etc. On peut objecter, à raison, l’existence de la notion  d’hypergraphes, qui regroupent plusieurs individus dans un même lien.

hypergraph

Un exemple d’hypergraphes, regroupant ici un, deux ou trois nœuds.

Mais les hypergraphes sont également beaucoup moins facilement manipulables, et la plupart des outils et logiciels à notre disposition ne les intègrent pas, ou de manière très marginale.

  • La sensibilité aux données manquantes

Les données manquantes sont toujours difficiles à traiter, quel que soit le mode d’analyse employés. Dans l’étude de réseaux, il est encore plus crucial de disposer d’une information la plus complète possible, sur les individus représentés et sur les liens qui les unissent. L’oubli ou le manque d’information sur quelques individus ou liens peuvent changer les trajets les plus courts d’un individu à un autre, risquent de beaucoup influer sur les personnages « centraux » (nous reviendrons sur la notion de centralité dans le prochain article) du graphique etc., et peuvent donc donner lieu à des résultats particulièrement faussés. Il est donc nécessaire de s’interroger sur sa capacité à décrire de manière exhaustive un réseau, avant de tenter de l’analyser.

SUR LA NATURE DE L’ANALYSE DES RÉSEAUX

Pour mieux comprendre ce que la théorie des réseaux peut apporter à la compréhension des objets que nous venons de définir, présentons tout d’abord une problématique importante de ce champ d’études. Pour importer l’analyse des réseaux dans nos domaines, il est important de comprendre comment elle fonctionne et à quoi elle sert dans son milieu « natif ».

Nous en profiterons pour succinctement exposer les principes de quelques outils utiles à l’analyse.

♫ It’s a small world after all ♫

Une intuition de l’homme de lettres hongrois Frigyes Karinthy, exposée dans une nouvelle de 1929 intitulée « Chaînons » (Láncszemek) (Karinthy, 2004), voulait que  nous ne soyons jamais séparé d’un autre individu que par cinq autres:

« Nous devrions sélectionner n’importe quelle personne des 7.2 milliards d’habitants de la planète, n’importe qui, n’importe où. Il parait que, n’utilisant pas plus de cinq individus, l’un d’entre eux étant une connaissance personnelle, il pourrait contacter les individus choisis en n’utilisant rien d’autre que le réseau des connaissances personnelles. »

Beaucoup ont vu en ce passage la naissance d’une théorie qui fera fortune: celle des fameux « Six degrés de séparation », une question notamment étudiée par la suite par le psychologue américain Stanley Milgram.

On a pu décrire mathématiquement les réseaux ayant ce type de caractéristique – ceux que l’on appelle des petits mondesIls sont caractérisés par deux critères importants à analyser en théorie des réseaux: la distance à parcourir pour aller d’un point à un autre, et le coefficient d’agglomération (ou de clustering).

smallworld

Un exemple de réseau « petit monde »

Les distances (en prenant le chemin le plus court) moyennes et médianes entre nœuds, sont souvent une donnée intéressante à analyser, et sont une caractéristique importante d’un réseau. On les définit de manière triviale comme le nombre (minimal) de nœud par lequel il faut passer pour atteindre un autre nœud, ce nœud étant inclus. On appelle aussi cette distance la distance géodésique.

Dans un petit monde,  la distance géodésique moyenne (L) séparant deux points pris au hasard dans le réseau évolue comme le logarithme du nombre d’individus (n) dans le réseau.

L’autre propriété d’un petit monde est la manière dont les individus y sont regroupés – un petit monde étant typiquement un réseau où les individus sont beaucoup agglomérés.

On mesure principalement l’agglomération de deux manières: le coefficient d’agglomération global (Barrat, Weigt, 2000) et le coefficient d’agglomération local moyen (Watts, Strogatz 1998).

Dans cette dernière mesure, on cherche à savoir à quel point un nœud voisin est lui même relié à ses voisins ou non. S’il est connecté à tous ses voisins, la valeur du coefficient d’agglomération local sera de 1. S’il n’est connecté à aucun autre de ses voisins, ce coefficient sera de 0. Pour avoir une vue d’ensemble de l’agglomération dans le réseau, on calcule la moyenne arithmétique de ces coefficients d’agglomérations locaux – on obtient le coefficient d’agglomération local moyen.

Une mesure peut-être plus simple, dans le calcul comme dans l’information qu’elle contient consiste à compter le nombre de fois où certaines formes géométriques apparaissent dans le graphe. Plus l’on voit on apparaître de « triangles » (trois individus tous reliés entre eux) dans le graphique, plus on considère que l’agglomération est forte. C’est l’intuition sous-jacente du coefficient d’agglomération global.

A partir de ces deux caractéristiques relativement aisée à calculer, on définit ainsi un type de réseaux qui apparaît très fréquemment dans la nature comme dans la société. On retrouve ainsi des réseaux « petit monde » dans l’organisation de nos neurones, dans la manière dont les protéines se connectent entre elles, ou dans la manière dont de nombreux réseaux sociaux, virtuels ou réels, sont agencés. Si un réseau que l’on observe appartient à cette catégorie de « petit monde », on pourra en déduire qu’il possède toute une série de propriétés déjà connues pour ce type de réseaux. A l’inverse, on s’interrogera sur un réseau qui n’est pas un « petit monde » – qu’est ce qui l’en différencie ? qu’est ce qui fait qu’il n’est pas organisé selon cette organisation répandue ? etc.

L’analyse graphique de réseaux ?

Comme nous le disions en préambule de cet article, il est toujours tentant de tracer des graphiques, souvent impressionnants,  représentant le ou les réseaux que l’on étudie. Une pratique que nous ne saurions trop encourager lorsque l’on commence à étudier sa base de données. La représentation graphique peut alors donner au chercheur des intuitions importantes pour la suite de son étude. Elle peut révéler la présence de formes particulières de graphe, ce qui peut faciliter les analyses à venir.

Par ailleurs, dans le cas où le réseau étudié présente peu d’individus, publier la représentation graphique peut présenter un intérêt certain.

On s’étonne par contre de voir parfois présentés aux lecteurs des graphiques qui deviennent très facilement illisibles, et d’où aucune intuition claire ne peut se dégager. On ajoutera par ailleurs que dans ces cas, la simple représentation graphique, et une éventuelle tentative d’interprétation de celle-ci, ne constituent en rien une analyse satisfaisante des données. L’analyse des réseaux repose, comme nous l’avons très succinctement montrée, sur des concepts et des procédés analytiques précis, qu’on s’étonne souvent de ne pas voir mobilisés.

Nous faisons ainsi nôtre la remarque que formulait Claire Lermercier:

 « Utile pour représenter des réseaux petits ou peu denses, la représentation graphique n’est en rien, en elle-même, une méthode d’analyse. » [Lemercier, 2005]

Une évidence qu’il est visiblement bon de rappeler plus de dix ans après la publication de son article.

QUE FAIRE ?

L’analyse des réseaux propose un ensemble d’outils puissants qui, à notre sens, et au-delà d’écueils évitables, peuvent se révéler précieux pour les sciences humaines. Nous nous proposerons donc de présenter au cours des prochains billets quelques résultats obtenus dans nos disciplines, puis des moyens d’en obtenir de nouveaux.

Dans le prochain billet, nous nous intéresserons ainsi à un exemple d’application de l’analyse des réseaux aux sciences historiques qui fit date, et en profiterons pour présenter les outils d’analyse des réseaux les plus classiques. Un article qui nous emmènera dans la Florence du Quattrocento, au milieu des grandes familles et de leurs luttes de pouvoir.

BIBLIOGRAPHIE

BARRAT Alain , WEIGT Martin,  » On the properties of small-world network models » The European Physical Journal B-Condensed Matter and Complex Systems, Springer, vol. 13, no 3,‎ 2000, p. 547-560

FRANZOSI Roberto, Quantitative Narrative Analysis, Sage Publications, 2009

KARINTHY Frigyes, Karinthy Frigyes összegyűjtött művei;  20Budapest : Akkord, 2004

LEMERCIER Claire, « Analyse de réseaux et histoire », Revue d’histoire moderne et contemporaine 2/2005 (no52-2) , p. 88-112

NEWMAN Mark E.J., Networks: an introduction, Oxford University Press, 2010

WATTS, Duncan J.; STROGATZ Steven H.,  « Collective dynamics of ‘small-world’ networks ». Nature. 393 (6684): 440–442, juin 1998

Florian CAFIERO

Ancien élève de l'Ecole Normale Supérieure, Florian Cafiero enseigne les méthodes quantitatives appliquées à la philologie à l'Ecole nationale des chartes, ainsi que les humanités numériques à Paris Sciences et Lettres (PSL).

More Posts

Follow Me:
TwitterLinkedIn

Leçon inaugurale de Bernard Chazelle au Collège de France – « L’algorithmique et les sciences »

Galerie

Aujourd’hui à 18 heures a lieu la leçon inaugurale de la chaire annuelle d’ « Informatique et sciences numériques », tenue cette année par Bernard Chazelle, spécialiste des problèmes de complexité algorithmique. Son cours intitulé « L’algorithme et les sciences » s’attachera à montrer … Lire la suite

Voir et comprendre: de l’importance de la visualisation dans la compréhension des entités mathématiques

Galerie

Il n’a sans doute échappé à personne que, dans la plupart des analyses statistiques ou raisonnements mathématiques employés en sciences humaines, les chercheurs utilisaient des outils éminemment visuels. La tradition veut que nos articles fourmillent d’histogrammes, de courbes ou de … Lire la suite

Le scandale du stemma contaminé. Note sur l’usage des cardiogrammes en philologie.

Galerie

Cette galerie contient 2 photos.

 Lorsqu’il s’intéresse à une tradition textuelle, le philologue peut parfois rester perplexe. En effet, la situation rêvée dans laquelle un texte serait transmis de génération en génération, sinon à l’identique, du moins de manière linéaire (A recopie sur B, qui … Lire la suite

Comment buvait-on chez Al Capone? Observer l’inobservable 2

Galerie

Cette galerie contient 2 photos.

Observer l’inobservable : tel était l’ambitieux agenda de notre précédent billet. Aux incrédules qui refuseraient d’imaginer qu’une telle magie puisse opérer, nous proposons une petite démonstration de ce tour de passe-passe. Le défi que l’on se propose ici n’est pas si … Lire la suite

Observez l’inobservable: la magie des proxys

Galerie

Pour les spécialistes d’époques lointaines, ou pour ceux qui s’intéressent à une histoire plus récente, mais néanmoins troublée, il n’est pas rare de ne disposer que d’une information lacunaire sur tel ou tel point ou période que l’on voudrait étudier. … Lire la suite

Exorciser vos statistiques 2: combattre la débauche des modalités

Galerie

Lors de mon précédent billet, je m’étais rapidement intéressé à quelques principes permettant d’éviter des problèmes de dimensionnalité liés à un grand nombre de variables. Cette fois-ci, je souhaiterais évoquer le cas où c’est le grand nombre des modalités de … Lire la suite

Exorcisez vos statistiques: contre la malédiction de la dimension

Galerie

Les bases de données que nous traitons en histoire, philologie, ou toute autre science intéressée au passé ont-elles une forme particulière ? A priori, étant donnée la diversité des sujets étudiés, des époques de référence, des problématiques dans lesquelles elles … Lire la suite

Les logiciels statistiques épisode II: visualiser librement ses données

Nous continuons notre exploration des logiciels statistiques en présentant les possibilités offertes par les logiciels libres. Il existe de très nombreux logiciels capables de réaliser tout ou partie des opérations possibles sur les logiciels propriétaires que nous évoquions précédemment – voire de réaliser des opérations qu’on ne peut pas faire avec les précédents. Avant d’aborder la question des logiciels libres généralistes (en pratique, du logiciel libre généraliste, R), nous allons dresser un rapide panorama des logiciels libres spécialisés. Commençons cette semaine par les logiciels libres permettant de visualiser ses données.

ViSta (Visual Statistics), développé à l’origine par le psychomètre américain Forrest Young, permet de réaliser simplement une grande variété de graphiques, de bonne qualité, et rigoureusement conçus. Les adeptes de Microsoft Office regretteront sûrement une intégration difficile de ce logiciel à leur suite bureautique favorite (importation de données depuis Excel très pénible, affichage des graphiques sous Word décevant). Au-delà de la simple préférence individuelle, ce point peut être gênant dans le cas de publications demandant des articles sous un format .doc.

Représentation cartographique sous VisIt 1.6

Représentation cartographique sous VisIt 1.6

Pour des graphiques plus impressionnants visuellement, on préfèrera probablement utiliser VisIt. Moins adapté aux sciences humaines que VisTa – ce logiciel ayant été originellement développé pour le « Department of Energy » américain – , il n’en reste pas moins un puissant outil pour les visualisations 2D et 3D.

La prise en main n’est pas aisée, les possibilités nombreuses, trop étendues pour nos usages – il est rare d’avoir besoin de créer des représentations tri-dimensionnelles de molécules, ou de passagers d’une voiture prête à s’écraser… – mais pour quiconque cherche une visualisation à la fois pointue et percutante, en particulier pour travailler sur des bases de données de grandes dimensions, VisIt s’impose comme une référence.

Existe aussi dans le domaine du traitement de bases de données de grande ampleur Open DX, un programme de visualisation très puissant, programmé à partir de l’explorateur de données d’IBM, et lui aussi centré sur la visualisation de données scientifiques. Malheureusement, le projet semble à l’abandon depuis près de quatre ans: sauf rebondissement, ce logiciel ne devrait donc pas connaître de mises à jour, ce qui risque de poser problèmes dans un futur immédiat.

Si vous chercher à travailler sur des données ayant un grand nombre de dimensions plutôt qu’un grand nombre d’individus, GGobi peut être une idée de choix. A l’aise pour les visualisations de données standard, il se montre encore à plus son avantage dans la visualisation de données  ayant de nombreuses dimensions, et est capable de réaliser des partitionnements intéressants de ces données. Il permet par ailleurs de créer des graphiques dynamiques et interactifs très réussis. Grâce au package rggobi, le logiciel permet par ailleurs de nombreuses interactions avec R. Là encore, la prise en main peut être un peu délicate, mais les fonctionnalités sont impressionnantes.

Florian CAFIERO

Ancien élève de l'Ecole Normale Supérieure, Florian Cafiero enseigne les méthodes quantitatives appliquées à la philologie à l'Ecole nationale des chartes, ainsi que les humanités numériques à Paris Sciences et Lettres (PSL).

More Posts

Follow Me:
TwitterLinkedIn

Les logiciels statistiques t.1: les logiciels commerciaux

Pour cette nouvelle année que nous vous souhaitons aussi heureuse que possible,  nous ouvrons un nouveau chapitre dans notre série « à la recherche d’Excalibur ». Sans pour autant clore notre petit tour des langages de programmation utiles en sciences humaines, nous allons nous attacher un instant à vous présenter le riche marché des logiciels statistiques, grâce auxquels vous passerez, j’en suis sûr, de grands moments de plaisirs.

"Piled Higher and Deeper" by Jorge Cham www.phdcomics.com

Commençons d’abord par les logiciels commerciaux, que nous nous devons de présenter,  même si au cours de nos recherches et de nos prochains billets, nous utiliserons essentiellement (euphémisme, quand tu nous tiens!) des logiciels libres. L’importante utilisation de ce type de logiciels dans des situations commerciales (finance, étude de marché, biostatistique) a incité de nombreuses firmes à développer des programmes performants (il en existe aujourd’hui plusieurs dizaines), et somme toute assez diffusés dans le milieu de la recherche. Nous en présentons ici quelques uns.

SAS – Statistical Analysis System

Répandu dans le monde universitaire français, en particulier chez les économistes (le fait qu’il s’agisse du logiciel qu’utilise l’INSEE n’y est pas étranger), le logiciel SAS est, dans sa version « standard », un logiciel généraliste permettant la création et l’édition de base de données, y compris de très grandes envergures, et leur analyse. Le langage de ce logiciel est d’ailleurs basé sur cette distinction. D’un côté, grâce aux « étapes data », vous pouvez modifier, fusionner, recomposer comme bon vous semble vos bases de données – par exemple, créer une base de données « sacregraal » à partir d’une base données originelle « graal », en supprimant des variables gênantes:

Etape data sous SAS

De l’autre côté, grâce aux « procédures » (proc), vous pouvez réaliser vos régressions, vos analyses factorielles, faire éditer des statistiques descriptives, ou créer des graphiques prêts à exporter – mais ce n’est pas pour le côté visuel de ces derniers qu’on admirera SAS. Vous pourrez par exemple tenter d’expliquer les rires devant Sacré Graal par la présence de tel ou tel acteur, grâce à une régression logistique de premier choix:

Régression logistique sous SAS

Des macros vous permettront par ailleurs de réaliser des tâches automatiques – un outil bien utile.

SAS en est aujourd’hui à sa version 9.2, datant de 2008. Mais il peut malgré tout être utilisé de sorte qu’il soit entièrement à la pointe de l’actualité.  SAS permet en effet d’appeler des fonctions depuis le logiciel libre R, et de coder en R directement dans son interface,  grâce à SAS/IML(R) Studio 3.3. Ceci permet de profiter de toutes les innovations réalisées dans les packages pour R, avant que celles-ci ne soient éventuellement retranscrites dans le logiciel (nous reviendrons sur ces points quand nous parlerons de R dans un prochain billet).

Stata

Pas d’acronyme cette fois pour le nom de ce logiciel, qui n’est que la contraction de « stat » et « data ». Développé depuis plus de 25 ans par la Stata Corporation, Stata est certainement le rival majeur de SAS dans le monde académique, en particulier en économie, mais aussi en sciences médicales.

Lui aussi à vocation généraliste (on y retrouve peu ou prou les mêmes fonctions que dans SAS), Stata a néanmoins une originalité majeure pour un logiciel propriétaire et commercial: il permet aux utilisateurs de créer ses propres extensions (« ado-files »), qui peuvent être ensuite proposées au téléchargement. Un avantage certain, augmenté de l’abondante littérature autour de ce logiciel. Une revue à comité de lectures, le Stata Journal, ainsi qu’une mailing list, la Statalist, documentent abondamment potentialités et les mises à jour du logiciel.

En terme de langage, Stata paraît peut-être moins systématiquement construit que SAS, mais donne des programmes particulièrement courts à écrire. La régression logistique de tout à l’heure s’écrirait ainsi tout simplement (à la déclaration de la base de données près):

logistic laugh tgilliam tjones gchapman jcleese eidle mpalin

Si Stata a par contre un désavantage, c’est son prix: aux dernières nouvelles, environ 500 euros pour la licence « académique »…

Autres logiciels utiles

Les historiens s’intéressant régulièrement à des séries temporelles, ils pourront utiliser avec profit EViews, spécialisé dans ce domaine – bien qu’il assure également la plupart des fonctions des logiciels généralistes. Les étudiants ont accès à une version bridée de EViews 6 (taille maximale des bases de données réduite, ce qui n’est pas  si souvent gênant) vendue à 39,95 $. RATS (Regression Analysis of Time Series), son concurrent direct, permet également de puissants calculs autour des séries temporelles, mais gère aussi des fonctions plus rares comme les réseaux de neurone. La licence étudiante de RATS 8.0 coutera par contre 300$, la licence complète 500$…

Ceci reste toutefois donné comparé au très célèbre logiciel généraliste SPSS (Statistical Package for the Social Sciences), récemment devenu propriété d’IBM, qui s’oriente de plus en plus vers les professionnels et de moins en moins vers l’université. SPSS a l’avantage d’être particulièrement agréable à manier pour l’utilisateur, mais ceci a un prix. Toutefois, une version d’essai gratuite de 14 jours de SPSS 19 est disponible, pour quiconque voudrait s’en faire une idée plus précise. Son rival Statistica 10, lui aussi surtout destiné aux entreprises, préserve néanmoins une influence importante sur les campus nord-américains ; il n’est donc pas inintéressant de savoir le manier dans cette optique, d’autant que ces performances en terme de « data mining » sont très intéressantes. Lui aussi très à l’aise dans ce domaine, et champion des analyses factorielles – le logiciel français SPAD pourra certainement séduire, d’autant que son interface graphique est plutôt avenante, rendant le logiciel assez simple d’utilisation.

Notons enfin l’existence du logiciel Stat Transfer, qui permet de convertir tous types de bases de données en le langage que votre logiciel préféré vous demande . Pour l’utiliser, il vous en coutera 59$ pour la version étudiante, 179$ par poste pour la version académique.

Voilà! Avec tout ça, vous êtes armés ! Ruinés, mais armés… C’est déjà ça…

Florian CAFIERO

Ancien élève de l'Ecole Normale Supérieure, Florian Cafiero enseigne les méthodes quantitatives appliquées à la philologie à l'Ecole nationale des chartes, ainsi que les humanités numériques à Paris Sciences et Lettres (PSL).

More Posts

Follow Me:
TwitterLinkedIn

Python’s Flying Circus épisode 2: vous aimez les Perl, mais aimez vous les Ruby ?

Après notre comparatif rapide entre Python et Perl, il convenait tout de même de présenter un autre langage de programmation concurrent: Ruby. Comme Python et Perl, Ruby est un langage libre, de très haut niveau, multi-plateforme, générique, multi-paradigme, et doté d’un typage dynamique fort.

Dans l’esprit, Ruby est cependant plus proche de Perl. Son créateur Yukihiro Matsumoto (dit « Matz ») s’est en effet inspiré de certains principes de Perl pour concevoir son langage. En particulier, il s’est opposé au Zen de Python1 selon lequel  « il doit y avoir une – et de préférence seulement une – manière de faire ce que l’on veut ». Dans une interview donnée en 20032, Matsumoto déclarait ainsi :

Ruby a hérité de la philosophie de Perl le fait de laisser plus d’une manière de faire la même chose. Je tiens cette philosophie de Larry Wall, qui est véritablement mon héros. Je veux libérer les utilisateurs de Ruby. Je veux leur donner la liberté de choisir .

Dans l’usage, Ruby est comme Perl, moins diffusé que Python. Il est très utilisé dans la programmation web grâce au succès de Ruby on Rails. Mais il ne faut pas oublier pour autant que ses compétences vont bien au-delà, et qu’il peut donc aussi nous être très utile. Il est d’ailleurs assez riche par défaut – de nombreuses fonctions existant par défaut sur Ruby devant être importée depuis des modules spécifiques dans Python. Après le passage de la version 1.9 à une version stable 2.0, qui doit avoir lieu sous peu, nous nous attacherons donc à vous montrer quelques unes des applications que l’on peut dessiner pour nos domaines avec ce langage.

  1. Lisible par exemple ici. []
  2. VENNERS Bill, « The Philosophy of Ruby – A Conversation with Yukihiro Matsumoto », 29 septembre 2003 [En ligne]. URL: http://www.artima.com/intv/rubyP.html []

Florian CAFIERO

Ancien élève de l'Ecole Normale Supérieure, Florian Cafiero enseigne les méthodes quantitatives appliquées à la philologie à l'Ecole nationale des chartes, ainsi que les humanités numériques à Paris Sciences et Lettres (PSL).

More Posts

Follow Me:
TwitterLinkedIn

Python’s Flying Circus épisode 1: Python vs. Perl

Jusqu’ici, le langage que nous avons utilisé a toujours été Perl. Mais nous ne pouvions pas, surtout vu l’intitulé de notre blog, ignorer trop longtemps un des langages « rivaux » de celui-ci: Python. Notons que le rapprochement entre le nom de ce langage et une célèbre troupe de comédiens britanniques ne vient pas que de mon appétence visiblement pas assez modérée pour les jeux de mots ; c’est bien en honneur des Monty Python, dont il était un grand admirateur, que Guido van Rossum a nommé en 1989 son nouveau langage de programmation de la sorte.

Le premier billet à propos de Python reprendra un sujet déjà largement débattu : Perl ou Python ?

Les points communs

Avant d’examiner les raisons qui feraient choisir un ou autre langage, commençons d’abord par comprendre pourquoi on peut hésiter entre ces deux langages.

Perl et Python ont tous les deux des usages variés

Même s’ils ont chacun des domaines de prédilection, Python et Perl sont tous deux des langages génériques, utilisables dans des contextes fort nombreux, en particulier grâce à  l’utilisation de bibliothèques spécialisées.

Perl et Python sont tous les deux multi-plateformes

Vous êtes un geek assumé travaillant chez vous sur une distribution obscure de Linux, mais à votre université, on s’acharne à vouloir accroître les profits de Microsoft ? Vous avez toujours votre brave vieux PC sous Windows XP, mais votre laboratoire s’est équipé en iMac 27 pouces Quad-Core flambant neufs (je m’adresse là à d’éventuels visiteurs qui ne seraient pas dans la recherche publique française, bien entendu) ? N’ayez crainte! Aussi bien Perl que Python peuvent être utilisés quel que soit le système d’exploitation. C’est un magnifique avantage pour les situations plus ou moins crédibles que nous venons d’évoquer, et pour beaucoup d’autres d’ailleurs. Mais ce n’est donc pas un facteur de choix entre ces deux langages.

Perl 6 et Python 3 ne sont pas rétro-compatibles

Quand vous apprenez l’un ou l’autre de ces langages, vous apprenez un langage qui n’est pas compatible (ou du moins, pas fait pour être compatible) avec ses versions antérieures. Ce point peut-être gênant si vous cherchez à intégrer votre travail à un projet réalisé avec une version antérieure de ces langages. Des solutions ont été proposées de chaque côté. Du côté de Perl, un mode de compatibilité a cependant mis en place pour aider la portabilité entre Perl 5 et Perl 6. Du côté de Python, par contre, on a choisi de continuer à améliorer Python 2 au fur et à mesure des actualisations faites pour Python 3 – le but étant que les utilisateurs de Python ne soient pas obligés d’apprendre la nouvelle version pour bénéficier de ses améliorations. Mais si vous êtes un nouvel utilisateur de Python et que vous voulez produire un travail compatible avec Python 2, il vous faudra apprendre et Python 2 et Python 3.

Perl et Python utilisent un typage dynamique

La chose peut paraître anecdotique – mais elle me permet de revenir sur un des points du « hello world! ».  Comme Jean-Baptiste le faisait remarquer, C++ demande à l’utilisateur de déclarer le type de la variable qu’il crée: s’agit-il d’un nombre entier, d’un nombre réel (« à virgule flottante », si on aime cet anglicisme), d’une chaîne de caractères etc.  ? On parle pour les langages agissant de la sorte de « typage statique ». A l’opposé, pas plus Perl que Python ne vous demanderont cette information.  Ils utilisent un « typage dynamique ». Jean-Baptiste ayant déjà illustré ce point sous Perl, je me charge uniquement d’expliciter ce phénomène sous Python. Plutôt que de demander la nature d’une variable (son « type »), Python va regarder ses attributs pour déduire de lui-même le type. On parle de « duck typing »: si je vois un oiseau qui nage dans une mare, doté  d’un joli col vert et de palmes jaunes, qui se manifeste par des « coin-coin » aussi élégants que sonores, j’appelle cet oiseau « canard »1. Python fait de même: si je lui crée trois variables de types différents, il observe leurs caractéristiques et infère leur type.

Ainsi, Python reconnaît-il sans aide que la constante de Planck est un nombre réel (float), que 42 est un entier (int – pour « integer ») et que « coin coin » est une chaîne de caractères (str, pour « string »).

Les différences

Python: un langage plus rapide ?

Pour la plupart des tâches testées, l’exécution d’un code Python se fait plus rapidement que celle d’un code Perl2. Avouons-le, ce dernier point n’est pas crucial dans la plupart des applications en littérature et en sciences humaines – mais selon vos utilisations, il peut tout de même avoir de l’importance.

Python: un langage plus simple ?

De l’avis de beaucoup, et en particulier depuis la version 3 de Python, ce langage est globalement plus simple à apprendre. Un de ses avantages est ainsi d’avoir été conçu pour que chaque tâche ne puisse être exécutée que si l’on écrit un ensemble précis et unique de lignes de codes. En résulte un code  lisible et facile à maîtriser. A l’opposé, en Perl, il peut exister beaucoup de solutions différentes pour réaliser la même opération, ce qui rend difficile, même pour un utilisateur avancé, de lire le code d’un autre programmeur. C’est ce point qui a probablement le plus aidé à la diffusion de Python, plus répandu que Perl aujourd’hui.

Perl vs. Python: littéraire contre scientifique ?

A ce stade, avouons-le, on ne voit pas bien pourquoi certains pourraient préférer Perl à Python. Pourtant, Perl a lui aussi des avantages clefs, en particulier pour les domaines qui nous intéressent. Perl a ainsi été conçu pour extraire au mieux des informations d’un texte, et de générer des rapports à partir de ses analyses. C’est donc naturellement que Perl est devenu le langage de prédilection des linguistes – et qu’il peut être celui des philologues, voire des historiens, sociologues ou juristes voulant analyser des corpus textuels importants. Python est quant à lui plus à l’aise avec les tâches plus calculatoires, ou mathématiques en général, en particulier avec l’aides de modules comme  NumPy, SciPy, ou Matplotlib. Il est grâce à cela populaire dans des domaines comme la bio-informatique, la finance, et généralement pour l’analyse de données scientifiques. Bien sûr, Python ou Perl peuvent être utilisés sur les terrains de prédilection de l’autre  avec une certaine efficacité – mais nous y reviendrons dans de prochains billets.

Au final, le choix entre Python et Perl est délicat, et dépend de vos centres d’intérêts précis. En dehors de l’analyse textuelle, il  paraît clair qu’un expert en humanités devrait préférer débuter Python, qui reste plus facile d’accès que Perl. Pour l’analyse textuelle, Perl est probablement le bon choix – mais nous mettrons régulièrement ce choix à l’épreuve, en comparant l’efficacité de Perl et Python sur différentes tâches d’analyse de corpus au cours des prochains billets.

  1. C’est bien là l’origine de ce terme, rarement traduit en français – « duck typing » préservant une impression de sérieux, contrairement à « typage canard ». On trouve trace de cette expression et de ce raisonnement pour la première fois en 2000 dans la bouche d’Alex Martelli sur ce newsgroup. []
  2. Les sources de ces tests sont trop nombreuses à citer. Juste en clin d’oeil à notre premier billet, on pourra par exemple consulter cette évaluation sur le blog d’Ivan Zahariev []

Florian CAFIERO

Ancien élève de l'Ecole Normale Supérieure, Florian Cafiero enseigne les méthodes quantitatives appliquées à la philologie à l'Ecole nationale des chartes, ainsi que les humanités numériques à Paris Sciences et Lettres (PSL).

More Posts

Follow Me:
TwitterLinkedIn

Première quête: à la recherche d’Excalibur

« What is your quest ? » Bien entendu, « to seek the Holy Grail »  (ou « Holy Gr@il » dans notre cas…). Mais pour s’aventurer dans une quête aussi périlleuse, on ne saurait s’aventurer sans armes. Et parmi les armes, il faut choisir: impossible d’apporter tous les types d’armes sur son dos, c’est bien trop lourd.

C’est à faire ce choix difficile parmi le vaste arsenal des armes informatiques disponibles que nous allons nous attacher dans les premiers moments de ce blog. Aujourd’hui, il est quasiment impossible de maîtriser le fonctionnement de tous ces outils disponibles, même pour un professionnel de l’informatique. Et dans la foule des langages de programmation et des logiciels disponibles, il est souvent difficile de se repérer : de quoi aurais-je besoin ? qu’est-ce qui sera le plus maniable ? le plus puissant ? le plus simple d’usage ? Au gré de nos propres expérimentations, nous vous livrerons donc des éléments vous permettant de discerner les outils informatiques qui seraient utiles à vos recherches.

Retour sur notre « hello world »: langage de haut niveau et langage de bas niveau

Dans notre premier billet, Jean-Baptiste nous montrait la différence de codage d’une instruction très simple – saluer nos visiteurs autant fois qu’ils le désirent – entre C++ et Perl. Plus généralement, cette différence est celle que l’on trouve entre des langages de plus ou moins « haut niveau ».

Qu’on ne se méprenne pas sur cette appellation: il ne s’agit pas de distinguer une élite de langages de programmation d’une sorte de plèbe informatique. Un langage dit de bas niveau est un langage qui se rapproche de celui qu’utilise la machine, le processeur. Le plus  bas niveau serait ainsi de coder directement ses instructions en binaire – ce qu’on n’a plus à faire depuis des décennies, pour notre plus grand bonheur. D’un peu plus haut niveau, on trouvera la programmation en hexadécimal, le langage assembleur, puis le C etc. Et assez haut, on trouvera par exemple Perl, ou son rival Python.

Les langages de bas niveau sont cruciaux dans nombre de domaines de l’informatique. Ils permettent d’exploiter toutes les capacités de la machine employée, en étant au plus proche se son fonctionnement. Ils sont également d’une très grande rapidité d’exécution. Cependant, dans le cas des recherches en humanités qui nous occupent ici, ces langages sont assez significativement dominés par des langages de haut niveau.

Comme le premier post le montrait, il faut beaucoup moins de lignes de codes pour écrire un programme avec un langage de plus haut niveau (C++ n’étant pas à proprement parler un langage de bas niveau, mais étant toutefois de moins haut niveau d’abstraction que Perl par exemple). Et qui dit moins de lignes de codes dit moins de temps passé à coder, moins de fautes de frappe ou d’étourderie commises en écrivant le programme – et donc moins de temps passé à s’énerver en cherchant les bogues… En bref, un langage comme Perl (mais il n’y a pas que lui) est plus maniable, plus rapide à coder, et d’une certaine manière plus « magique »: avec très peu de lignes, il fait faire une masse prodigieuse d’opérations à notre machine. Voilà peut-être notre Excalibur…

Pour ces raisons, nous ne présenterons que des langages de programmation de  (très) haut niveau au cours des prochains posts.

Florian CAFIERO

Ancien élève de l'Ecole Normale Supérieure, Florian Cafiero enseigne les méthodes quantitatives appliquées à la philologie à l'Ecole nationale des chartes, ainsi que les humanités numériques à Paris Sciences et Lettres (PSL).

More Posts

Follow Me:
TwitterLinkedIn