Dans notre article précédent, nous avons montré quelques éléments d’analyse réseau appliquée à la base de données “Dimona”, qui recense, en Belgique, les relations de travail entre tous les employeurs et leurs employés. Nous y avons principalement analysé la notion de degré, permettant de voir le nombre d’employeurs par employé, et le nombre d’employés par employeur.
Nous allons maintenant examiner deux façons de découper le réseau en plusieurs “sous-réseau” : dans un premier temps une découpe par “composante connexe”, ensuite par détection de communauté.
Rappelons que nous considérons un graphe (ou réseau) selon le modèle présenté ci-contre : nous avons deux types de nœuds (travailleurs et employeurs) ; la relation entre un travailleur et un employeur indique les dates de début et fin (si applicable) de contrat, ainsi qu’un “worker code”, décrivant une série de catégories présentées dans l’article précédent.
1. Composante connexe
En partant d’un travailleur donné, on peut, en parcourant le graphe, trouver tous ses collègues, actuels ou anciens, via le lien “travailleur→employeur”, puis “employeur→travailleur”. Si, à partir de ces collègues, on re-parcourt le graphe de la même façon, on obtiendra les “collègues de collègues” du travailleur de départ. En continuant de la sorte tant que l’on tombe sur des travailleurs que l’on n’a pas encore rencontrés, on parcourt ainsi une “composante connexe“, soit un ensemble (maximal) de nœuds pour lequel il existe un chemin entre chaque paire de nœuds. Tous les nœuds d’un graphe ne font pas nécessairement partie de la même composante connexe : si deux travailleurs font partie de deux composantes connexes distinctes, il n’existe pas de chemin “(ex-)collègue de (ex-)collègue de (ex-)collègue …” entre ces deux travailleurs.
Le graphe ci-contre illustre un réseau composé de trois composantes connexes : une en haut à gauche, composée de 4 nœuds ; une seconde en bas à droite, de 5 nœuds ; une dernière, plus importante, entre les deux.
Composante géante
On appellera “composante géante” la plus grande composante connexe d’un graphe. Si on effectue ce calcul sur notre graphe de Dimona, on obtiendra une composante effectivement géante : elle est composée de 8 149 146 de nœuds, dont 581 065 entreprises et 7 568 081 travailleurs.
En d’autres mots, si l’on considère toutes les relations de travail de ces 15 dernières années, 99.5% des travailleurs ayant été actifs sur cette période sont “(ex-)collègue de (ex-)collègue de (ex-)collègue …” entre eux, via 95 % des entreprises. Ceci en considérant que deux personnes sont collègues si elles ont eu le même employeur, simultanément ou non. Le monde du travail (belge) peut donc être vu comme un “petit monde”, théorisé par Milgram dans son paradoxe éponyme.
Diamètre
En analysant de plus près cette composante géante, on voit que son diamètre, soit le nombre de relations du plus long “plus court chemin” entre deux nœuds, est de 20. Ce qui veut dire que, pour 99.5% des travailleurs actifs sur la période, il n’est jamais nécessaire de passer par plus de 9 (ex-)collègues intermédiaires pour “connecter” deux travailleurs.
En moyenne, il faut 1.5 collègues intermédiaires pour chaque paire de travailleurs (longueur moyenne du plus court chemin entre deux nœuds : 5), et dans 99 % des cas, 3 travailleurs intermédiaires sont suffisants (percentile 0.99 = 8, comme entre A et E, dans la figure ci-dessus).
Si l’on prend deux travailleurs (faisant partie de la composantes géantes, soit pour l’essentiel n’étant pas le seul salarié d’une entreprise) au hasard, il y a 59% de chances qu’ils aient un collègue en commun, en prenant la définition large de collègue, voulant dire “ayant eu un employeur en commun, mais pas nécessairement en même temps”.
Notons qu’une partie de ce qui explique ce “petit monde” est ce qu’on appelle les “super-connecteurs” : il s’agit de nœuds ayant un degré très élevé. Tous les enseignants (du même régime linguistique) sont par exemple employés par le même ministère.
Notons également que même si l’on s’intéresse à une période plus petite, la composante géante reste importante : si l’on ne considère que les relations de travail entre 2013 et 2017, la composante fera alors 6 253 490 nœuds, dont 5 907 213 travailleurs, soit 99% des 5 966 745 travailleurs actifs sur cette période-là. On descend à 96% en ne regardant que les relations de travail en 2017.
Requêtes Cypher
Création des partitions :
CALL algo.unionFind(NULL, NULL, {write:true, partitionProperty:"partition"})
YIELD nodes, setCount, loadMillis, computeMillis, writeMillis;
Création des partitions pour les relations entre 2013 et 2017 :
CALL algo.unionFind(
"MATCH (p) RETURN id(p) as id",
"MATCH (p1)-[r]->(p2) WHERE r.START <= '2017-12-31' AND (r.END IS NULL or r.END >= '2013-01-01') RETURN id(p1) as source, id(p2) as target",
{graph:'cypher', write:true, partitionProperty :'partition2013_2017'}
);
Nombre de partitions en fonction de la taille :
MATCH (n)
WITH DISTINCT (n.partition) AS partition, COUNT(*) AS partition_size
WITH partition_size, COUNT(partition) AS nb_partitions
RETURN partition_size, nb_partitions
ORDER BY partition_size
Autres composantes connexes
Le réseau complet de Dimona, sur base des relations de 2003 à 2017, est composé de 28 224 composantes connexes. Nous venons de voir que la très grande majorité des nœuds font partie de la même composante connexe.
À l’autre extrémité, nous avons un grand nombre de composantes connexes toutes petites : 22 013 d’entre elles sont composées de deux nœuds, donc un travailleur et un employeur. Ce qui veut donc dire que l’on a 22 013 travailleurs qui n’ont eu qu’un seul employeur durant les 15 ans de notre analyse, et dont ils ont été l’unique employé. On peut imaginer que pour beaucoup d’entre eux, il s’agit de personnes qui, au lieu de choisir un statut d’indépendant, ont préféré créer leur propre société pour s’y engager. Ceci pourrait être confirmé en croisant ces données avec celles de la Banque Carrefour des Entreprises, organisme officiel auprès duquel doivent s’inscrire toutes les entreprises (y compris ceux qui ne sont pas des employeurs, comme les indépendants, les professions libérales…), et y préciser le noms des fondateurs, gérants ou administrateurs.
On trouve également 4 300 partitions de taille 3 (deux employeurs et un travailleur, ou un employeur et deux travailleurs) et un peu plus de 1 100 partitions de taille 4.
Restent ensuite un peu moins de 800 partitions de taille variant entre 5 et 61.
Nous pouvons identifier quelques “patterns” :
- “Schéma en étoile” : un seul travailleur, et de 3 (121 fois) à 6 (3 fois) sociétés. Notons que l’on trouve aussi ce schéma dans la composante connexe géante : nous avons ainsi 25 travailleurs ayant été le seul travailleur de plus de 10 entreprises sur les 15 dernières années (mais ces travailleurs ont été également engagés par d’autres employeurs).
Requête CypherNous voyons principalement deux explications à ces étoiles :MATCH (n1:Company)--(p:People)
WHERE size((n1)--()) = 1
WITH p, COUNT(DISTINCT n1) as nb_comp WHERE nb_comp >= 10
RETURN p, nb_comp
ORDER BY nb_comp DESC
LIMIT 100
- “Faux indépendants” : schéma similaire à celui décrit plus haut, si ce n’est que la personne a ici choisi de créer plusieurs sociétés, sans jamais engager d’autre personnes qu’elle-même (et sans jamais, sur la période considérée, avoir travaillé pour un autre employeur).
- “Salarié partagé” : l’observation d’un certain nombre de ces cas montre également des groupes d’entreprises dont l’essentiel de l’activité est basée sur des personnes non-salariées et qui se partagent un salarié pour accomplir des tâches administratives. On trouve ainsi beaucoup de fabriques d’églises, ou des syndics de copropriétés, mais également des sociétés créées par des indépendants, non par pour s’y engager eux-mêmes, mais pour y engager une personne à temps partiel.
- “Entreprise étrangère temporaire” : Une série importante de “clusters” nous faisant penser à un groupe de travailleurs étrangers, venus en Belgique pour créer une société, puis repartir peu de temps après. Le fait qu’il s’agisse de travailleurs “temporaires” explique qu’ils n’aient pas d’autres relations dans Dimona, leur historique de travail s’étant déroulé à l’étranger. Quelques éléments en attestent. On trouve :
- Des schémas avec essentiellement des travailleurs étrangers : plus de 2000 clusters sans aucun travailleur ayant la nationalité belge,
- 620 clusters avec aucun travailleur ayant un numéro NISS, mais uniquement un numéro BIS. Il s’agit donc de travailleurs temporaires. (cf explications dans notre premier article)
- 224 clusters où il s’est écoulé moins d’un an entre le premier engagement et la fin du dernier contrat. Pour 320 cas, il y a eu moins de deux ans.
- “Travailleurs très fidèles” : Une quarantaine de cas d’entreprises avec entre 5 et 9 travailleurs, presque tous avec un numéro NISS. Nous sommes donc dans le cas d’entreprise avec un personnel très fidèle : sur 15 ans, aucun des travailleurs n’a eu d’autre employeur que celui-là.
Fidélité
Une partie des composantes connexes nous donnent des exemples d’entreprises avec un personnel très fidèle. Une autre façon de le calculer est de recherche des entreprises où il y a une longue période durant lequel tout le personnel qui a un jour été présent a travaillé simultanément. Autrement dit, entre l’engagement le plus tardif et le premier départ, il s’est écoulé une longue période.
On trouve par exemple 103 entreprises d’au moins 5 travailleurs où ce délai est de 10 ans, et 353 entreprises où ce délai est de 5 ans.
Requête Cypher
MATCH (n:Company)-[r]-()
WHERE size( (n)--())>=5
WITH n, MIN(toInteger(r.DAYS_SINCE_START)) - MAX(toInteger(r.DAYS_SINCE_END)) AS delay
WHERE delay> 3650
RETURN count(n)
2. Détection de Communautés
En général, quand on observe un réseau, on constate qu’il n’est pas “uniforme” : il y a des “zones” plus denses, avec beaucoup de connexions entre les nœuds de ces zones, et il y a moins de connexions entre deux nœuds faisant partie de “zones” distinctes. Dans la terminologie de la théorie des graphes, on parle de “communautés”. Typiquement, si on regarde le réseau constitué de l’ensemble des connaissances d’une personne, où un lien entre deux personnes indiquent qu’elles se connaissent, on observera en général une série de communautés, correspondant à des groupes de la vie réelle par rapport à la personne dont on analyse le réseau : les membres de famille, les collègues, les camarades de classe … Plus de détails peuvent être trouvés dans ce blog.
Nous avons appliqué un algorithme de détection de communautés (méthode par propagation de labels) sur notre graphe, et avons regardé dans quelle mesure on pouvait caractériser les différentes communautés. Pour ce faire, nous avons examiné deux caractéristiques de chaque entreprise (la province de son siège social et son ou ses code(s) NACE), pour comparer la distribution de ces données au sein d’une communauté par rapport à la distribution pour l’ensemble de la population.
Nous constatons que la plupart des communautés détectées par l’algorithme ont un “comportement” assez éloigné de la moyenne nationale. Ce qui veut dire que les travailleurs, lorsqu’ils changent de travail, ont tendance à changer soit pour un employeur localisé dans la même province, soit travaillant dans le même secteur. Ce n’est en soi pas une découverte surprenante, mais l’analyse réseau permet de le formaliser.
Les données des 100 plus grosses communautés sont visibles dans ce document. On peut par exemple y voir que la plus grande communauté détectée (54.000 employeurs, 750.000 travailleurs) est composée très largement d’entreprises localisées en Flandre Occidentale. En effet, comme le montre le graphique ci-dessus, alors que 10% des entreprises en Belgique sont localisées dans cette province (colonne bleue), 71% des entreprises de la communauté concernées y sont. Dans le même ordre d’idées, la troisième communauté comprend trois fois plus d’entreprises de l’Horeca (Hotels, restaurants, cafés) que la moyenne nationale.
La 8ème communauté, représentée ci-dessous, combine deux aspects : les 580 entreprises qui la composent sont quasi exclusivement localisée en Wallonie et à Bruxelles (soit les deux régions de Belgique où l’on parle majoritairement français), et travaillent dans le secteur de l’enseignement.
La suite…
Dans le troisième blog de cette série, nous examinerons deux notions : celle d’homophilie, et celle de projection. La première nous permettra de voir à quel point les travailleurs changent de région de travail ou de domaine d’activité. La seconde permettra de calculer un certaine forme de proximité entre deux travailleurs, au travers du nombre d’employeurs qu’ils ont eu en commun.
Leave a Reply