La désaisonnalisation est une technique statistique qui permet de retirer des données économiques les fluctuations qui ont lieu tous les ans au même moment et de manière semblable. Cette vidéo présente un aperçu de la désaisonnalisation, de son utilisation et de son incidence sur l'économie.
La Base canadienne de données de l'état civil - Décès (BCDECD) est la source faisant autorité pour les données sur les causes de décès au Canada. Statistique Canada collabore avec ses partenaires aux échelles fédérale, provinciale et territoriale pour offrir aux Canadiens des aperçus des données récentes sur les décès et la mortalité au Canada. Pour répondre aux nouveaux besoins en données avec l'arrivée de la pandémie de COVID-19, Statistique Canada a entrepris de fournir de nouvelles estimations provisoires sur la surmortalité et la mortalité.
Pour en savoir plus sur nos sources de données et nos méthodes et obtenir d'autres renseignements importants, veuillez consulter les réponses à certaines questions fréquentes ci-dessous.
Sources de données
1.1 Comment les statistiques de l'état civil sont-elles recueillies?
Le système national de statistiques de l'état civil du Canada est un système décentralisé et complexe qui repose sur une relation de collaboration entre les bureaux provinciaux et territoriaux de l'état civil et Statistique Canada.
Le registraire de l'état civil de chaque province et territoire enregistre tous les décès qui se produisent dans sa province et transmet l'information à Statistique Canada. Le formulaire d'enregistrement de décès comprend des renseignements personnels, fournis à l'entrepreneur de pompes funèbres par une personne bien informée (plus proche parent), et le certificat médical indiquant la cause du décès, rempli par le médecin qui a constaté le décès ou par un coroner ou un médecin légiste.
Les organismes provinciaux et territoriaux de statistique de l'état civil communiquent l'information qu'ils ont recueillie par le biais de leurs processus d'enregistrement des décès à Statistique Canada, qui compile les renseignements dans la Base canadienne de données de l'état civil - Décès (BCDECD).
Une entente entre le gouvernement du Canada et les gouvernements provinciaux et territoriaux régit le fonctionnement du système canadien de statistiques de l'état civil. Le Conseil de la statistique de l'état civil du Canada est un comité consultatif formé de représentants des bureaux provinciaux et territoriaux de l'état civil et de Statistique Canada qui supervise la politique et les questions opérationnelles liées à la collecte des renseignements statistiques de l'état civil.
1.2 Qu'entend-on par le fait que les données de la Base canadienne de données de l'état civil - Décès (BCDECD) sont « provisoires »?
La capacité de Statistique Canada à fournir des renseignements actuels dépend des renseignements qu'il reçoit des provinces et des territoires.
Le bureau provincial ou territorial de l'état civil présente les données à Statistique Canada en deux étapes : le fait du décès et les images du certificat de décès, qui sont utilisés pour coder les causes de décès. En général, l'événement du décès (le fait du décès) sera enregistré dans le système en premier. Pour plusieurs secteurs de compétence, ces renseignements sur le décès sont généralement envoyés dans les 30 jours suivant le décès, tandis que pour d'autres, ils sont envoyés de 30 à 60 jours, ou plus, après le décès. Il peut s'écouler plus de temps avant que Statistique Canada reçoive les renseignements sur la cause du décès, particulièrement dans le cas de décès de cause non naturelle qui nécessitent une investigation médicale ou une autopsie.
Les nombres de décès provisoires et les causes de décès ne comprennent pas tous les décès survenus pendant la période de référence en raison des délais de déclaration. Les estimations provisoires des décès sont corrigées pour tenir compte de la nature incomplète des chiffres, lorsque cela est possible. Ces ajustements s'ajoutent aux chiffres pour y intégrer les décès n'ayant pas encore été déclarés à Statistique Canada, selon les schémas de déclaration provinciaux et territoriaux passés et actuels. Les estimations provisoires sont révisées dans les diffusions subséquentes à mesure que plus de renseignements sont déclarés.
2.1 À quel moment les données canadiennes de l'état civil sur les décès sont-elles diffusées?
Pour mieux comprendre les répercussions de la pandémie sur les familles et les collectivités canadiennes, Statistique Canada a adopté, et continue d'adopter, de nouvelles façons de répondre au besoin de renseignements plus actuels. Ainsi, la Base canadienne de données provisoires de l'état civil - Décès est diffusée mensuellement pour les provinces et les territoires déclarants.
2.2 Pourquoi n'y a-t-il pas d'estimations pour certaines semaines?
La qualité des chiffres hebdomadaires ajustés dépend en grande partie du niveau d'intégralité des données, ou de la mesure dans laquelle tous les décès ont été déclarés à Statistique Canada. Les estimations manquantes sont plus susceptibles d'être pour les semaines les plus proches de la date de diffusion, car il y a parfois un retard dans les déclarations. À mesure que Statistique Canada reçoit les renseignements, les données deviennent plus complètes pour les diffusions subséquentes.
Seules les estimations pour les semaines dont le niveau d'intégralité atteint 75 % ou plus sont montrées. Ce seuil offre un compromis entre la robustesse et l'actualité des estimations. Le niveau d'intégralité atteint 90 % ou plus pour presque toutes les semaines, à quelques exceptions près. Même s'il est utile de signaler les nouvelles tendances récentes possibles en ce qui a trait à la surmortalité, les estimations qui reposent sur les données hebdomadaires ayant un niveau d'intégralité plus faible devraient être utilisées avec précaution, car elles comportent plus d'incertitude et sont plus sensibles aux hypothèses modèles (comme le choix de la période de référence). Par conséquent, ces estimations peuvent changer de façon marquée dans les diffusions subséquentes alors que le nombre de décès déclarés augmente pour ces semaines.
2.3 Pourquoi les chiffres dans la plus récente diffusion ne correspondent-ils pas aux chiffres des diffusions précédentes?
Statistique Canada reçoit constamment des renseignements des provinces et des territoires. Les données et les estimations provisoires sont mises à jour mensuellement avec l'ajout de nouvelles semaines de données et de révisions à ces semaines pour lesquelles les données ont été diffusées précédemment.
3. Méthodologie
3.1 Pourquoi les chiffres sur les décès sont-ils corrigés?
Pour fournir des renseignements plus à jour sur les décès pendant la pandémie, de récentes améliorations à la méthodologie et à l'actualité des données ont été apportées à notre processus de collecte des données. Ainsi, les chiffres de décès provisoires pour les années de référence 2020 et 2021 ont été corrigés pour tenir compte des délais de déclaration, dans la mesure du possible, qui entraîneraient autrement un sous-dénombrement dans les données. Ces ajustements s'ajoutent aux chiffres pour y intégrer les décès n'ayant pas encore été déclarés à Statistique Canada, selon les schémas de déclaration provinciaux et territoriaux passés.
Pendant la production des statistiques mensuelles sur les décès, les données des mois et des années précédents pourraient être révisées pour refléter toutes les mises à jour et les modifications qui ont été reçues des bureaux de l'état civil des provinces et des territoires.
Les données des années de référence 2017, 2018 et 2019 sont aussi provisoires, car les mises à jour des bureaux de l'état civil sont aussi enregistrées.
3.2 Pourquoi n'y a-t-il pas de données pour certains secteurs de compétence?
La capacité de Statistique Canada à fournir des renseignements utiles et actuels dépend de sa capacité à recevoir les renseignements des provinces et des territoires. Pour plusieurs secteurs de compétence, ces renseignements sont généralement envoyés dans les 30 jours suivant le décès, tandis que pour d'autres, ils sont envoyés de 30 à 60 jours ou plus après le décès. C'est pourquoi les données pour certaines provinces et certains territoires pour certaines semaines sont supprimées.
3.3 Pourquoi les chiffres de décès et les estimations provisoires qui sont diffusés par Statistique Canada ne correspondent-ils pas aux chiffres provenant d'autres sources?
Les données qui sont diffusées chaque mois par Statistique Canada reposent sur les données qui sont déclarées par les registraires de l'état civil des provinces et des territoires, qui sont la source officielle des statistiques sur les décès au Canada. Statistique Canada corrige les chiffres pour tenir compte des délais de déclaration. Les renseignements sur la cause du décès qui se trouvent dans la Base canadienne de données de l'état civil - Décès (BCDECD) sont tirés du certificat médical de la cause du décès, qui est rempli par les professionnels de la santé, les coroners ou les médecins légistes.
Les données produites par d'autres sources peuvent être recueillies aux fins de surveillance auprès d'autres organismes, comme les autorités sanitaires provinciales et territoriales ou les organes de presse. Ces données peuvent être fondées seulement sur des cas confirmés du virus causant la COVID-19, ce qui signifie qu'elles n'incluent pas toujours les cas où une personne est décédée de la COVID-19 avant d'avoir été testée. De plus, les chiffres de la surveillance peuvent être fondés sur la date à laquelle le décès a été déclaré plutôt que sur la date à laquelle le décès est survenu. Enfin, ces chiffres peuvent utiliser des définitions de cause du décès qui sont différentes de celles qui sont appliquées par les bureaux et les registraires de l'état civil qui utilisent les lignes directrices de Classification internationale des maladies.
De janvier à août 2020, les décomptes officiels de décès attribuables à la COVID-19 partout au Canada dépassaient d'environ 5 % les chiffres de surveillance pour la même période.
3.4 Pourquoi certaines causes de décès provisoires sont-elles indiquées comme inconnues?
Les périodes de référence plus récentes comportent un plus grand nombre de causes de décès qui sont inconnues ou en attente d'une investigation. Certains décès, comme les suicides possibles ou les décès accidentels, nécessitent de longues investigations. Ce que cela signifie, c'est que Statistique Canada n'a pas encore reçu l'information finale sur la cause des décès des bureaux provinciaux et territoriaux de la statistique de l'état civil en raison des investigations médicales toujours en cours sur la cause du décès des personnes décédées.
Lorsque le nombre d'inconnus est élevé dans ces données, les données provisoires sur les causes de décès ne doivent pas être utilisées pour déclarer les principales causes de décès jusqu'à ce que les données soient plus complètes.
3.5 Pourquoi certains chiffres dans les données provisoires sont-ils arrondis alors que d'autres ne le sont pas?
En fonction des analyses menées, l'information sur la cause du décès pourrait comporter de petits chiffres, qui obligent à protéger la confidentialité par le biais d'un processus d'arrondissement standard pour la variable de la cause du décès. Seuls les chiffres sur la cause du décès sont arrondis et cet arrondissement est fait au 5 le plus proche. Cela signifie que tous les renseignements sur les causes de décès sont présentés en unités de 5 ou 10 (p. ex., 0, 5, 10, 15, etc.).
En raison de la nature provisoire des données, de la fréquence des mises à jour des données par les provinces et les territoires ainsi que de la pratique d'arrondissement de la cause de décès, on peut observer une plus grande variabilité à travers la variable de la cause de décès – comparativement au reste des variables de la base de données – entre les diffusions mensuelles.
4. Analyse
4.1 Qu'est-ce que la surmortalité et pourquoi la mesurons-nous?
Les effets de la COVID-19 se font toujours sentir sur les collectivités et les familles au Canada et dans le monde. Au-delà des décès attribuables à la maladie elle-même, la pandémie pourrait aussi avoir des répercussions indirectes qui font augmenter ou diminuer le nombre de décès en raison de différents facteurs, dont le report de procédures médicales ou l'augmentation de la consommation d'alcool ou de drogues.
Pour comprendre les répercussions directes et indirectes de la pandémie, il est important de mesurer la surmortalité,
qui se produit lorsque le nombre de décès au cours d'une période est supérieur à ce qui serait attendu pour cette période. Il convient cependant de noter que, même sans la pandémie, le nombre de décès déclarés pour une semaine donnée varie d'une année à l'autre. Par conséquent, le nombre de décès auquel on peut s'attendre devrait se situer dans une certaine fourchette. On trouve des signes de surmortalité lorsque le nombre de décès hebdomadaire est constamment plus élevé que le nombre attendu, mais surtout lorsqu'il dépasse la fourchette du nombre de décès attendus pendant plusieurs semaines consécutives.
Pour mesurer la surmortalité, il est également nécessaire d'avoir recours à un moyen de déterminer le nombre de décès auquel on pourrait s'attendre s'il n'y avait pas de pandémie. Il existe un certain nombre de façons d'estimer le nombre de décès attendus, notamment en les comparant aux décomptes annuels précédents ou en utilisant des moyennes historiques, par exemple au cours des quatre années précédentes. Dans le contexte du Canada, qui compte une population vieillissante et croissante, le nombre de décès s'accroît graduellement depuis un certain nombre d'années, et un nombre plus élevé de décès était attendu en 2020 (ou 2021), avec ou sans COVID-19. Pour ces raisons, afin d'estimer les décès attendus, Statistique Canada utilise une approche fondée sur un modèle statistique pour projeter les tendances récentes en matière de mortalité. Cette approche a également été adoptée par d'autres pays.
Le Nombre provisoire de décès hebdomadaires : outil interactif est également mis à jour tous les mois. Cet outil interactif contribue à détecter les tendances dans les nombres de décès selon le groupe d'âge et le sexe, et selon la province et le territoire. Il est fondé sur les données provisoires de la Base canadienne de données de l'état civil sur les décès (BCDECD) et fait l'objet de modifications à mesure que les mises à jour des données sont diffusées.
Tableau 13-10-0784-01 : Nombre ajusté de décès, nombre de décès attendu et estimations de surmortalité, selon la semaine. Ce tableau personnalisé comprend les données de la Base canadienne de données de l'état civil - Décès (BCDECD), mises à jour mensuellement, sur les statistiques nationales et provinciales/territoriales sur la surmortalité. Pour modifier les aspects du tableau, cliquer sur le bouton ajouter/enlever et cliquer sur les différents onglets pour sélectionner les différentes variables.
Tableau 13-10-0792-01 : Nombre ajusté de décès, nombre de décès attendu et estimations de surmortalité, selon la semaine, le groupe d'âge et le sexe. Ce tableau personnalisé est mis à jour mensuellement à mesure que les nouvelles données provisoires de la Base canadienne de données de l'état civil - Décès (BCDECD) sont diffusées. Les variables comprennent le sexe et le groupe d'âge au moment du décès, ainsi que les mesures utilisées pour examiner la surmortalité nationale et provinciale/territoriale. Pour modifier les aspects du tableau, cliquer sur le bouton ajouter/enlever et cliquer sur les différents onglets pour sélectionner les variables désirées.
La Base de données ouvertes sur les installations récréatives et sportives
Numéro de catalogue :21260002 Numéro d'exemplaire : 2021001
La Base de données ouvertes sur les installations récréatives et sportives (BDOIRS) est une collection de données ouvertes comprenant le nom, le type et l'emplacement des installations récréatives et sportives à travers le Canada. Elle est publiée en vertu de la Licence du gouvernement ouvert – Canada.
La BDOIRS compile des données ouvertes, des données accessibles au public et des données fournies directement sur les installations récréatives et sportives au Canada. Les sources de données comprennent les gouvernements provinciaux, territoriaux et municipaux.
Cette base de données vise à fournir un meilleur accès à une liste harmonisée des installations récréatives et sportives à travers le Canada, en les rendant disponibles en tant que données ouvertes. Cette base de données est une composante de l'Environnement de couplage de données ouvertes (ECDO).
Sources de données et méthodologie
Les données d'entrée de la BDOIRS sont des ensembles de données dont les sources incluent les gouvernements provinciaux, territoriaux et municipaux. Ces ensembles de données étaient disponibles soit en vertu de l'un des divers types de licences de données ouvertes, par exemple un portail gouvernemental ouvert, soit sous la forme de données accessibles au public. Les détails des sources utilisées sont disponibles dans un tableau « Sources de données » situé dans le dossier compressé téléchargeable de la BDOIRS.
Les différentes sources de données utilisées ne s'appuient pas sur un système de classification uniforme. La BDOIRS harmonise le type d'installation en attribuant dix-huit types à chaque installation. Ce processus a été mis en œuvre sur la base du type d'installation fourni par la source de données, ainsi qu'en utilisant d'autres recherches menées à cette fin.
La BDOIRS utilise les dix-huit types d'installations suivants :
sentiers : sentiers urbains et ruraux ou voies pour la marche, la randonnée pédestre ou le vélo.
terrains de sport : terrains sur lesquels on peut pratiquer des sports.
arénas : installations où des activités sportives et/ou récréatives ont lieu.
parcs sportifs : aires de loisirs axées sur l’activité sportive.
plages : plages au bord de l'eau.
casinos : casinos ou installations de jeux de hasard.
centres communautaires : centres communautaires et installations de loisirs.
gymnases : salles de conditionnement physique publiques et privées.
marinas : ports de plaisances.
parcs : parcs et espaces verts, y compris les parcs municipaux et nationaux.
terrains de jeux : espaces de jeux qui sont distincts des parcs en ce sens qu’ils ont été spécifiquement classés comme tels par l’éditeur des données. Ils comprennent souvent de l’équipement de terrain de jeux.
piscines : piscines intérieures et extérieures.
pistes de course : pistes réservées à la course.
patinoires : le plus souvent des patinoires à glace.
planchodromes : parcs utilisés pour la planche à roulettes.
aires de jeux d'eau : espaces urbains réservés aux jeux d'eau.
stades : installations où des activités sportives et/ou récréatives ont lieu.
divers : installations qui ne correspondent à aucune des catégories qui précèdent.
La BDOIRS ne prétend pas avoir une couverture exhaustive et peut ne pas contenir toutes les installations dans le champs d’application de la version actuelle. En dépit des efforts réalisés pour minimiser ces lacunes, des erreurs de classification du type d'installation et de géolocalisation des installations sont également possibles. Bien que toutes les données soient publiées à la même date, les dates à partir desquelles les données sont actuelles dépendent des dates de mise à jour des sources utilisées.
Un sous-ensemble de coordonnées géographiques disponibles des sources a été validé en utilisant l'internet et mis à jour lorsque nécessaire. Lorsque la latitude et la longitude n'étaient pas disponibles, un géocodage a été effectué pour certaines sources en utilisant les données de l’adresse de la source.
Une déduplication a été effectuée pour supprimer les doublons dans les cas où les sources se chevauchaient.
La version actuelle de la base de données (version 1.0) contient environ 182 000 enregistrements. Les données ont été recueillies à partir des sources entre 2020 et 2021.
Les variables incluses dans la BDOIRS sont les suivantes :
Nom de l'installation
Type d'installation de source
Type d'installation de la BDOIRS
Fournisseur
Numéro d'unité
Numéro de rue
Nom de la rue
Genre de la rue
Direction de la rue
Code postal
Ville
Province ou territoire
Identificateur unique de la province
Nom de la subdivision de recensement
Identificateur unique de la subdivision de recensement
Longitude
Latitude
Index
Pour obtenir plus de renseignements sur la façon dont les variables ont été compilées, consultez le document de métadonnées qui accompagne la BDOIRS.
Téléchargement de la BDOIRS
Pour faciliter son téléchargement, la BDOIRS est fourni sous forme de fichier CSV compressé.
Combinaison sécurisée de données provenant de plusieurs sources tout en préservant la confidentialité
par Betty Ann Bryanton, Agence du revenu du Canada
Introduction
La prédominance croissante de technologies comme le nuage, l'informatique mobile, l'apprentissage automatique et l'Internet des objets crée des possibilités d'innovation et d'échange de renseignements, mais également des défis pour la sécurité et la confidentialité des données. Ces défis ont été amplifiés pendant la pandémie mondiale; le télétravail a accéléré l'adoption des services hybrides et infonuagiques. Cette situation a mis à rude épreuve les capacités de sécurité existantes et a révélé des lacunes dans la sécurité des données (Lowans, 2020). Pendant ce temps, les lois sur la protection des données à l'échelle mondiale ont évolué, et chaque organisation qui traite des données personnelles est exposée à des niveaux de risque en matière de confidentialité et d'inobservation plus élevés que jamais auparavant (Wonham, Fritsch, Xu, de Boer, & Krikken, 2020).
Par conséquent, les techniques de calcul améliorées sur le plan de la confidentialité, qui protègent les données pendant leur utilisationNotes de bas de page1, ont gagné en popularité.
Qu'est-ce que le calcul multiparties sécurisé?
Le calcul multiparties sécurisé est une technique qui permet de combiner des renseignements provenant de différentes zones de confidentialité pour obtenir des renseignements sur les données combinées sans avoir à révéler les données brutes aux parties concernées. Il a évolué d'une curiosité théorique établie par le problème des millionnairesNotes de bas de page2 d'Andrew Yao dans les années 1980 à un outil important pour la création d'applications de préservation de la confidentialité à grande échelleNotes de bas de page3.
Pour illustrer le concept, Bob et Alice veulent savoir s'ils touchent la même paye, mais ne veulent pas poser cette question délicate. Ils achètent quatre boîtes à suggestions verrouillables, chacune portant une étiquette sur laquelle figure un taux horaire : 10 $, 20 $, 30 $ et 40 $. Bob gagne 20 $ l'heure, alors il n'a qu'une clé pour déverrouiller la boîte portant l'étiquette « 20 ». Alice gagne 30 $ l'heure, alors elle n'a qu'une clé pour déverrouiller la boîte portant l'étiquette « 30 ». Bob et Alice mettent tous les deux un bout de papier indiquant « oui » ou « non » dans chaque boîte sans que l'autre le voie. Par exemple, Alice met un bout de papier indiquant « non » dans les boîtes portant les étiquettes « 10 », « 20 » et « 40 », et un bout de papier indiquant « oui » dans la boîte portant l'étiquette « 30 » parce qu'elle gagne 30 $ l'heure. Bob déverrouille la boîte portant l'étiquette « 20 » et apprend qu'Alice ne gagne pas 20 $ l'heure, mais il ne sait toujours pas si son taux horaire est de 10 $, de 30 $ ou de 40 $. Alice déverrouille la boîte portant l'étiquette « 30 » et apprend que Bob ne gagne pas 30 $ l'heure, mais elle ne sait toujours pas si son taux horaire est de 10 $, de 20 $ ou de 40 $. - C'est ce que l'on appelle un « transfert inconscient ». La capacité d'effectuer des transferts inconscients est la base de l'exécution du calcul multiparties sécuriséNotes de bas de page4.
Le calcul multiparties sécurisé est une méthode d'informatique distribuée et de cryptographieNotes de bas de page5 qui combine la transformation des données (chiffrement) avec un logiciel spécialisé. Il permet à plusieurs parties qui ne se font pas confiance, ou à un tiers commun, de travailler conjointement avec des données qui dépendent de tous leurs intrants privés tout en gardant ces données chiffrées. Les participants ne connaissent que les résultats de la collaboration et non les données précises fournies par les autres. Cela permet une collaboration entre des partenaires de confiance ou même entre des concurrents.
On présume souvent que le calcul multiparties sécurisé exige la participation de plusieurs organisations; toutefois, l'exigence précise concerne plusieurs zones de confidentialité, c'est-à-dire deux domaines ou plus ayant des ensembles de restrictions de confidentialité différents. Plusieurs zones de confidentialité existent entre plusieurs organisations ayant des propriétaires de données indépendants, mais elles peuvent aussi exister au sein d'une seule organisation entre des équipes, des services ou des administrations.
On se fie à ce que les parties respectent le protocole. Si une partie n'est pas digne de confiance, des mesures supplémentaires, qui ne s'inscrivent pas dans la portée du présent document, doivent être prises pour prévenir les tentatives d'atteinte malveillantes ou cachées.
Forces
Permet d'atteindre simultanément la confidentialité, l'inconscience et l'authenticité.
Élimine le besoin de faire confiance à un courtier de données tiers pour accéder aux données et les traiter.
Permet de déduire les données chiffrées : le propriétaire du modèle ne voit jamais les données privées du client et ne peut donc pas les divulguer ou les utiliser de façon malveillante.
Élimine les compromis entre la convivialité et la confidentialité des données; autrement dit, étant donné que les données brutes sont chiffrées, il n'est pas nécessaire de masquer ou de supprimer des fonctions pour les échanger et les traiter.
Offre de nouvelles possibilités de collaboration entre des entreprises qui n'étaient pas possibles auparavant en raison de la réglementation ou du risque.
Niveaux de confidentialité semblables à ceux du chiffrement entièrement homomorphique, mais moins coûteux et complexe sur le plan informatique.
Défis
Les techniques de calcul multiparties sécurisé sont extrêmement complexes et nécessitent une cryptographie exhaustive et souvent compliquée. Par conséquent, il est difficile pour les profanes de les comprendre ou de les mettre en œuvre.
L'incapacité à voir les données d'entrée peut éveiller des soupçons.
Si les fonctions ne sont pas soigneusement conçues et mises à l'essai, la sécurité peut être cassée.
Frais généraux importants en ce qui concerne les aspects informatiques en raison de la complexité et de la nature distribuée. Le coût varie grandement en fonction de la collaboration requise (p. ex., nombre de parties, utilisation de différents fournisseurs de services infonuagiques) et du besoin de protection contre les parties malveillantes.
Sensible à la latence entre les nœuds (Krikken, 2019)
Nécessite une infrastructure supplémentaire, ce qui ajoutera à la planification des projets et au calcul du coût total de possession (Byun, 2019)
Pourquoi est-ce important?
Selon le directeur du renseignement national des États-Unis, la cybersécurité dans les secteurs public et privé des États-Unis est continuellement à risque, et on doit s'attendre à une augmentation des attaques. Les organisations qui possèdent beaucoup de données et d'actifs de propriété intellectuelle sont des cibles de choix. Les attaquants ciblent souvent ces données « joyaux de la couronne »Notes de bas de page6 en raison de leur valeur et de leur potentiel de perturbation (Enveil).
Les organisations sont de plus en plus préoccupées par la sécurité des données dans plusieurs scénarios, notamment :
la collecte et la conservation de renseignements personnels de nature délicate;
le traitement de renseignements personnels dans des environnements externes, comme le nuage;
l'échange de renseignements, comme l'échange et le traitement de données de nature délicate dans des environnements distribués, des soins de santé aux finances (Krikken, 2019)
Le calcul multiparties sécurisé permet de répondre à ces préoccupations et de les atténuer en permettant aux organisations de fournir des renseignements sur les données réparties de façon conforme, sécurisée et confidentielle sans jamais les exposer ou les déplacer.
Cela est important parce que la nature de plus en plus distribuée des données sur les clients signifie que de nombreuses organisations ne génèrent pas par elles-mêmes les niveaux de données nécessaires pour obtenir les renseignements impartiaux requis pour fournir de nouvelles expériences, ouvrir de nouvelles sources de revenus et appliquer de nouveaux modèles opérationnels. Le calcul multiparties sécurisé permet une collaboration sécurisée qui offre des avantages mutuels à toutes les parties, tout en préservant la vie privée et la confidentialité.
Applications concrètes
Bien qu'il soit encore nouveau et qu'il présente des défis, le calcul multiparties sécurisé est sur le point de perturber considérablement le domaine de l'échange de données d'entreprise et d'offrir des solutions efficaces d'échange de données entre des propriétaires de données méfiants. Vous trouverez ci-dessous des déploiements réussis notablesNotes de bas de page7.
Vente aux enchères de betteraves sucrières danoises, le premier exemple réussi de déploiement du calcul multiparties sécurisé, en 2008, où la confidentialité des soumissions des agriculteurs pour des contrats a été assurée.
Études sur la disparité de salaire entre les hommes et les femmes du Boston Women's Workforce CouncilNotes de bas de page8, qui ont été menées pour la première fois en 2016 et qui visaient à analyser les données sur la paye de plusieurs employeurs pour établir une feuille de route du changement pour la ville et ses employeurs.
Étude du gouvernement estonien qui a été menée en 2015 et qui visait à analyser les dossiers fiscaux et scolaires pour déterminer si le fait de travailler à temps partiel pendant les études faisait augmenter le taux d'échecNotes de bas de page9.
Cas d'utilisation
Le calcul multiparties sécurisé est très populaire pour les cas d'utilisation où des organisations doivent échanger des données avec plusieurs parties ou analyser des données provenant de plusieurs parties sans divulguer leurs données ou leur modèle d'analyse aux autres parties.
Cette liste illustre la portée et l'ampleur des applications du calcul multiparties sécurisé.
Collaboration avec des parties disparates, par exemple, échange de données sur les citoyens entre des ministères et des institutions financières ou échange de dossiers médicaux électroniques entre des hôpitaux, des pharmacies et des assureurs.
Exploration de données réparties : Collecte de données privées à partir de sources de données indépendantes pour apprendre quelque chose qui n'est pas possible à partir d'une source unique, par exemple, trouver des contribuables frauduleux au moyen de données d'entreprise privées ou d'autres données sur les contribuables.
Gestion des clés : Protection des clés d'authentification pendant leur utilisation.
Infonuagique : Échange de données, analyse des données et apprentissage automatique entre plusieurs fournisseurs de services infonuagiques inconnus.
Surveillance de la sécurité de plusieurs réseaux entre des entités pour regrouper des données privées.
Filtrage des pourriels dans les courriels chiffrés.
Découverte médicale, par exemple, applications de recherche des contacts avec des personnes ayant une maladie ou un virus combinant les données de nombreux hôpitaux pour la recherche en génomique.
Évitement de la collision de satellites sans divulguer leur emplacement.
Conclusion
La conscience que les données personnelles peuvent être compromises dans une atteinte à la protection des données ou peuvent être utilisées de façon malveillante par des entreprises dont les intérêts ne cadrent pas avec ceux de leurs utilisateurs augmente. De nouveaux règlements font de la détention de données personnelles un risque de responsabilité pour les entreprises. Le calcul multiparties sécurisé est devenu une technique puissante et polyvalente pour obtenir des renseignements sur l'échange de données sans jamais les exposer directement.
Bien qu'il n'y ait pas de produit ou de technique unique qui puisse satisfaire à toutes les exigences relatives à la sécurité des données, le calcul multiparties sécurisé peut être utilisé comme une défense avec d'autres mesures de protection des données, comme le masquage des données, et d'autres techniques de préservation de la confidentialité, comme la confidentialité différentielle et le chiffrement homomorphique.
Prochaines étapes
Gartner s'attend à ce que le calcul multiparties sécurisé soit transformationnel au cours des cinq à dix prochaines années (Lowans, 2020). Pour être prête, compte tenu de la quantité de données privées qu'elle détient et de la pression exercée pour que ces données soient protégées, une organisation devrait continuer de faire des recherches sur le calcul multiparties sécurisé et d'autres techniques de protection des données et de préservation de la confidentialité.
Si vous avez des questions à propos de mon article ou si vous souhaitez en discuter davantage, je vous invite à Rencontre avec le scientifique des données, un événement au cours duquel les auteurs rencontrent les lecteurs, présentent leur sujet et discutent de leurs résultats.
Accenture Labs. (2019, 1er oct.). Maximize collaboration through secure data sharing. Accenture. Sur Internet : Together, we can reinvent your business (en anglais seulement).
Balamurugan, M., J. Bhuvana et S.C. Pandian. (2012). « Privacy Preserved Collaborative Secure Multiparty Data Mining », Journal of Computer Science, vol. 8, no 6, p. 872-878. Sur Internet : Privacy Preserved Collaborative Secure Multiparty Data Mining (en anglais seulement).
Barot, S., et S. Agarwal. (2020, 9 oct.). 2021 Planning Guide for Data Analytics and Artificial Intelligence, ID G00732258. Gartner. Sur Internet : Gartner (en anglais seulement).
Bogdanov, D., L. Kamm, B. Kubo, R. Rebane, V. Sokk et R. Talviste. (2016, juill.). « Students and Taxes: a Privacy-Preserving Social Study Using Secure Computation », Proceedings on Privacy Enhancing Technologies, p. 117-135. Sur Internet : Students and Taxes: a Privacy-Preserving Social Study Using Secure Computation (en anglais seulement).
Krikken, R. (2019, 26 nov.). Achieving Data Security Through Privacy-Enhanced Computation Techniques, ID G00384386. Gartner. Sur Internet : Gartner (en anglais seulement).
Lindell, Y. (2021). « Secure Multiparty Computation », Communications of the ACM, vol. 64, no 1, p. 86-96. Sur Internet : Secure multiparty computation (en anglais seulement).
Lopardo, A., A. Benaissa et T. Ryffel. (2020, 12 juin). What is Secure Multi-Party Computation? Medium. Sur Internet : What is Secure Multi-Party Computation? (en anglais seulement).
Lowans, B. (2020, 24 juill.). Hype Cycle for Data Security, 2020, ID G00448204. Gartner. Sur Internet : Gartner (en anglais seulement).
Wikipedia. (s.d.). Yao's Millionaires' problem. Wikipedia. Sur Internet : Yao's Millionaires' problem (en anglais seulement).
Wonham, M., J. Fritsch, D. Xu, M. de Boer et R. Krikken. (2020, 9 oct.). Guide to Data Security Concepts, ID G00731430. Gartner. Sur Internet : Gartner (en anglais seulement).
Yao, A.C. (1982). Protocols for Secure Computations. 23rd Annual Symposium on Foundations of Computer Science (SFCS 1982), p. 160-164. SFCS. Sur Internet : Protocols for secure computations (en anglais seulement).
Zhao, C., S. Zhao, M. Zhao, Z. Chen, C.-Z. Gao, H. Li et Y.-a. Tan. (2019, févr.). « Secure Multi-Party Computation: Theory, practice and applications », Information Sciences, vol. 476, p. 357-372. ScienceDirect. Sur Internet : Secure Multi-Party Computation: Theory, practice and applications (en anglais seulement).
Legacy Content
Technologies liées à la protection de la vie privée, partie trois : Analyse statistique confidentielle et classification de texte confidentiel fondées sur le chiffrement homomorphe
Par : Benjamin Santos et Zachary Zanussi, Statistique Canada
Introduction
Qu'est-ce qui est possible dans le domaine du chiffrement et quels cas d'utilisation peuvent être visés par le chiffrement homomorphe? Le premier article du Réseau de la science des données dans la série sur la protection de la vie privée, Une brève enquête sur les technologies liées à la protection de la vie privée, présente les technologies d'amélioration de la confidentialitéNote de bas de page 1 (TAC) et la façon dont elles permettent l'analyse tout en protégeant la confidentialité des données. Le deuxième article de la série, Technologies liées à la protection de la vie privéepartie deux : introduction au chiffrement homomorphe, a abordé plus en profondeur une des TAC, plus précisément le chiffrement homomorphe (CH). Dans cet article, nous décrivons les applications étudiées par les scientifiques des données de Statistique Canada en matière de traitement informatique à partir de données chiffrées.
Le CH est une technique de chiffrement qui permet d'effectuer des traitements informatiques à partir de données chiffrées ainsi que plusieurs paradigmes pour les traitements informatiques sécurisés. Cette technique comprend le traitement informatique sécurisé à l'externe, selon lequel un détenteur de données permet à un tiers (peut-être le nuage) d'effectuer des traitements informatiques à partir de données de nature délicate, tout en s'assurant que les données d'entrée sont protégées. En effet, si le détenteur de données veut que le nuage calcule une fonction (polynomiale) à partir de ses données , il peut les chiffrer sous forme de cryptogrammes, désignés , les envoyer de façon sécuritaire sur le nuage qui calcule de façon homomorphe pour obtenir et renvoie les résultats au détenteur de données, qui peut déchiffrer et visualiser . Le nuage n'a aucun accès aux valeurs des données d'entrée, de sortie ou intermédiaires.
Figure 1 : Illustration d'un flux de travail typique du CH.
Une illustration d'un flux de travail typique du CH. Les données,, sont chiffrées, donc elles sont placées dans une boîte verrouillée . Cette valeur est envoyée au tiers qui effectuera le traitement informatique (le nuage). Les engrenages tournent et le chiffrement d'entrée se transforme en chiffrement de sortie, , comme souhaité. Ce résultat est renvoyé au propriétaire, qui peut le sortir de la boîte verrouillée et le visualiser. Le nuage n'a pas accès aux valeurs d'entrées, de sortie ou intermédiaires.
Des groupes internationaux envisagent actuellement la normalisation du CH. Le gouvernement du Canada ne recommande pas le CH ou l'utilisation des techniques cryptographiques avant que ce soit normalisé. Même si le CH n'est pas encore prêt à être utilisé sur des données de nature délicate, c'est un bon moment pour explorer ses capacités ainsi que d'éventuels cas d'utilisation.
Données de lecteurs optiques
Statistique Canada recueille des données en temps réel auprès des grands détaillants sur divers produits d'information. Ces données décrivent les opérations quotidiennes effectuées comme une description du produit vendu, le prix de vente et les métadonnées au sujet du détaillant. Ces données sont appelées « données de lecteurs optiques », d'après les lecteurs optiques utilisés lorsque les clients passent à la caisse. Une des utilisations des données optiques est d'augmenter la précision de l'Indice des prix à la consommation, qui mesure l'inflation et la vigueur du dollar canadien. Cette précieuse source de données est traitée comme des données de nature délicate – nous respectons la confidentialité des données et des détaillants qui les fournissent.
La première étape dans le traitement de ces données consiste à classer les descriptions de produits dans un système classificatoire normalisé de codification à l'échelle internationale, à savoir le Système de classification des produits de l'Amérique du Nord (SCPAN) Canada 2017 version 1.0. Ce système hiérarchique de codes à sept chiffres est utilisé pour classer les différents types de produits aux fins d'analyse. Il y a un code, par exemple, pour le café et ses produits. Chaque entrée de données scanographiques doit recevoir un de ces codes en fonction de la description du produit fournie par le détaillant. Ces descriptions ne sont toutefois pas normalisées et peuvent être très différentes d'un détaillant à l'autre ou d'une marque à l'autre de produits semblables. Ainsi, la tâche souhaitée est la conversion de ces descriptions de produit, qui comprennent souvent des abréviations et des acronymes, en codes correspondants.
Après avoir été classées, les données sont regroupées en fonction de leur code du SCPAN et les statistiques sont calculées à partir de ces groupes. Cela nous permet d'avoir une idée du montant dépensé pour chaque type de produit dans l'ensemble du pays, et de la façon dont cette valeur change au fil du temps.
Figure 2 : Aperçu de haut niveau du flux de travail des données de lecteurs optiques avec des données-échantillons.
Aperçu de haut niveau du flux de travail des données de lecteurs optiques. D'abord, les descriptions de produit sont classées selon les codes du SCPAN. Des exemples sont fournis : « bonbons mochi à la crème glacée » se voit attribuer le code du SCPAN 5611121, alors que « sauce barbecue chipotle » se voit attribuer le code 5611132. L'application 2 consiste à attribuer ces codes aux descriptions. Les descriptions de produits sont liées à quelques identificateurs et à une valeur de prix. L'application 1 consiste à classer les données selon ces codes et identificateurs, et à calculer des statistiques sur les valeurs de prix.
Exemple d'ensembles de données 1
Description
ID1
ID2
Valeur
« bonbons mochi à la crème glacée »
054
78
5.31 $
« sauce barbecue chipotle »
201
34
3.80 $
Application 2
Exemple d'ensembles de données 2
SCPAN
ID1
ID2
Valeur
5611121
054
78
5.31 $
5611132
201
34
3.80 $
Application 1
Statistics (total, moyenne, variance)
Étant donné l'importance et la nature délicate des données, nous les avons ciblées comme domaine potentiel pour lequel les TAC pourraient préserver notre flux de travail des données tout en maintenant le niveau élevé de sécurité requis. Les deux tâches ci‑dessus ont, jusqu'à maintenant, été effectuées dans l'infrastructure sécurisée de Statistique Canada, où nous pouvons nous assurer que les données sont en sécurité au moment de l'ingestion et tout au long de leur utilisation. En 2019, quand nous avons commencé à étudier les TAC au sein de l'organisme, nous avons décidé de tenter d'utiliser le nuage à titre de ressource tierce de traitement informatique, sécurisé par le CH.
Nous avons créé un modèle infonuagique semblable à un tiers semi-honnête, ce qui signifie qu'il suivra le protocole que nous lui avons attribué, mais il essaiera de déduire tout ce qu'il peut au sujet des données pendant le processus. Cela signifie qu'il faut que les données de nature délicate soient toujours chiffrées ou masquées. Dans notre validation de principe, nous avons remplacé ces données par une source de données synthétiques, ce qui nous permet de procéder à des expériences sans craindre de nuire à la sécurité des données.
Notre première tâche était de réaliser la dernière partie du flux de travail des données de lecteurs optiques – l'analyse statistique. Nous avons créé une version synthétique des données de lecteurs optiques pour assurer leur confidentialité. Ces données de lecteurs optiques fictives consistaient en 13 millions d'enregistrements, chacun comprenant un code du SCPAN, un prix de transaction et certains identificateurs. Cela représente environ une semaine de données de lecteurs optiques d'un seul détaillant. La tâche consistait à trier les données en listes, à les chiffrer, à les envoyer au nuage et à demander au nuage de calculer les statistiques. Le nuage nous enverrait ensuite les résultats toujours chiffrés, pour que nous puissions les déchiffrer et les utiliser aux fins d'analyse plus approfondie.
Supposons que notre ensemble de données est classé en listes ayant la forme . Il est relativement simple de chiffrer chaque valeur en cryptogramme , puis d'envoyer la liste de cryptogrammes sur le nuage. Le nuage peut utiliser l'addition et la multiplication homomorphes pour calculer le total, la moyenne et la variance et nous retourner ces cryptogrammes (nous verrons de quelle façon la division est gérée pour la moyenne et la variance plus tard dans le présent article). Nous faisons cela pour chaque liste, puis déchiffrons et visualisons nos données. C'est simple, n'est-ce pas?
Le problème avec une mise en œuvre naïve de ce protocole est l'élargissement des données. Un seul cryptogramme CKKSNote de bas de page 2 représente une paire de polynômes de degré avec des coefficients de 240-octets. Ensemble, cela peut prendre 1 Mo pour stocker un seul enregistrement. Pour l'ensemble de données complet de 13 millions, cela devient 13 To de données! La solution à ce problème s'appelle la mise en paquet.
Mise en paquet
Les cryptogrammes sont gros et nous avons beaucoup de petits éléments de données. Nous pouvons utiliser la mise en paquet pour stocker une liste complète de valeurs en un seul cryptogramme, et le procédé CKKS nous permet d'effectuer des opérations de type SIMD (instruction unique, données multiples) sur ce cryptogramme, donc nous pouvons calculer plusieurs statistiques en même temps! Cela représente une augmentation massive de l'efficacité pour de nombreuses tâches de CH, et une structure intelligente de mise en paquet des données peut faire la différence entre un problème insoluble et une solution pratique.
Supposons que nous avons une liste de valeurs , . En utilisant la mise en paquet CKKS, nous pouvons mettre en paquet cette liste entière en un seul cryptogramme, désigné par . Maintenant, les opérations d'addition et de multiplication homomorphes ont lieu par emplacement selon le principe du SIMD, c'est‑à‑dire que, si est chiffré , nous pouvons alors calculer l'addition homomorphe pour obtenir
où est unNote de bas de page 3 chiffrement de la liste . Cette addition homomorphe prend autant de temps à calculer que s'il y avait une seule valeur dans chaque cryptogramme; donc il est évident que nous pouvons obtenir un gain d'efficacité appréciable au moyen de la mise en paquet. L'inconvénient est que nous devons maintenant utiliser cette structure vectorielle dans tous nos calculs, mais avec un peu d'efforts, nous pouvons trouver un moyen de vectoriser les calculs pertinents pour profiter de la mise en paquet.
Figure 3 : Une illustration de la mise en paquet. Les quatre valeurs peuvent soit être chiffrées en quatre cryptogrammes séparés, ou être toutes mises en paquet en un seul cryptogramme.
Une illustration de la mise en paquet. Quatre valeurs, doivent être chiffrées. Dans un cas, elles peuvent toutes être chiffrées en cryptogrammes séparés, illustrés sous forme de boîtes verrouillées. Dans l'autre cas, nous pouvons mettre en paquet les quatre valeurs en une seule boîte. Dans le premier cas, cela prendra quatre boîtes, ce qui est moins efficace pour le stockage et les manipulations. Le dernier cas, la mise en paquet d'autant de valeurs que possible, est presque toujours préférable.
Je sais ce que vous pensez : la mise en paquet, qui stocke une série de valeurs dans un vecteur, ne rend-elle pas impossible le calcul des valeurs dans une liste? C'est-à-dire que, si nous avons , que ce passe-t-il si je voulais ? Nous avons accès à une opération appelée rotation. La rotation prend un cryptogramme qui représente le chiffrement de et le transforme en , qui représente le chiffrement de , c'est‑à‑dire qu'il déplace toutes les valeurs à gauche d'un emplacement, glissant la première valeur dans le dernier emplacement. Donc, en calculant , nous obtenons
et la valeur souhaitée est dans le premier emplacement.
Mathématiquement, la mise en paquet est réalisée en exploitant les propriétés du texte clair, du texte brut et des espaces du texte chiffré. Souvenez-vous que les fonctions de chiffrement et de déchiffrement sont des cartes entre les deux derniers espaces. La mise en paquet exige une autre étape appeléeencodage, qui code un vecteur (potentiellement complexe, mais dans notre cas, réel) de valeurs à partir de l'espace du texte clair en un polynôme de texte brut . Les données de ne sont pas lisibles par un humain, mais elles peuvent être décodées en fonction du vecteur des valeurs par tout ordinateur sans avoir à recourir à des clés. Le polynôme de texte brut peut être chiffré en cryptogramme et utilisé pour calculer les statistiques sur les données de lecteurs optiques.Note de bas de page 4
Analyse statistique efficace au moyen de la mise en paquet
Pour revenir à l'analyse statistique des données de lecteurs optiques, souvenez‑vous que le problème était que le chiffrement de chaque valeur en cryptogramme était trop coûteux. La mise en paquet nous permettra de vectoriser ce processus, rendant ses ordres de grandeur plus efficaces en matière de communication et de calcul.
Nous pouvons maintenant commencer à calculer les statistiques désirées de notre liste . La première valeur d'intérêt est le total,, obtenu en additionnant toutes les valeurs dans la liste. Après avoir chiffré en un cryptogramme mis en paquet , nous pouvons simplement ajouter des rotations du cryptogramme à lui‑même jusqu'à ce que nous ayons un emplacement avec la somme de toutes les valeurs. En fait, nous pouvons faire mieux que cette stratégie naïve de rotations et d'additions – nous pouvons le faire en étapes en faisant d'abord une rotation d'un emplacement, puis de deux, puis de quatre, puis de huit jusqu'à ce que nous obtenions le total dans un emplacement.
Ensuite, nous voulons la moyenne, . Pour faire cela, nous chiffrons la valeur en cryptogramme et l'envoyons avec la liste . Nous pouvons ensuite simplement multiplier cette valeur par le cryptogramme que nous avons obtenu lorsque nous avons calculé le total. Il en va de même pour la variance, , où nous soustrayons la moyenne par , multiplions le résultat par lui-même, calculons de nouveau le total, puis le multiplions de nouveau par le cryptogramme .
Examinons les économies que la mise en paquet nous a permis de faire. Dans notre cas, nous avions environ 13 millions de points de données qui ont été séparés en 18 000 listes. En supposant que nous pourrions mettre en paquet chaque liste en un seul cryptogramme, cela réduit la taille des ensembles de données chiffrées de près de trois ordres de grandeur. Mais en réalité, les différentes listes avaient toutes des tailles différentes, certaines comptant des dizaines de milliers d'entrées et d'autres n'en comptant que deux ou trois, dont la majorité se situait dans la fourchette des centaines aux milliers. Au moyen d'une manipulation intelligente, nous avons été capables de mettre en paquet de multiples listes en cryptogrammes uniques et d'exécuter les algorithmes de total, de moyenne et de variance pour celles‑ci tous en même temps. En utilisant des cryptogrammes qui peuvent mettre en paquet 8 192 valeurs en même temps, nous avons pu réduire le nombre de cryptogrammes à seulement 2 124. À environ 1 Mo par cryptogramme, cela fait en sorte que l'ensemble de données chiffrées représente environ deux gigaoctets (Go). Comme les données en texte clair prennent 84 mégaoctets (Mo), cela a abouti à un facteur d'élargissement d'environ 25 fois. En tout, le traitement informatique chiffré a pris environ 19 minutes, ce qui est 30 fois plus long que le traitement informatique non chiffré.
Application 2 : Classification de texte confidentiel fondée sur le chiffrement homomorphe
Ensuite, nous avons attaqué la tâche d'entraînement pour l'apprentissage automatique. L'entraînement pour l'apprentissage automatique est une tâche réputée pour être coûteuse, donc nous ne savions pas exactement si nous serions capables de mettre en œuvre une solution pratique.
Souvenez‑vous de la première tâche dans le flux de travail des données de lecteurs optiques – les descriptions de produits pleines de bruit qui dépendant du détaillant doivent être classées par code du SCPAN. C'est une tâche de classification de textes comprenant de multiples catégories. Nous avons créé un ensemble de données synthétique à partir d'un répertoire en ligne de descriptions de produits et nous leur avons attribué un de cinq codes du SCPAN.
L'exécution d'un réseau neuronal représente essentiellement la multiplication d'un vecteur par une série de matrices, et l'entraînement d'un réseau neuronal demande des passages vers l'avant, ce qui consiste à évaluer les données d'entraînement dans le réseau, ainsi que des passages vers l'arrière, qui utilisent la descente de gradient (stochastique) et la règle de chaînage afin de trouver la meilleure façon de mettre à jour les paramètres du modèle pour améliorer la performance. Tout cela se résume à la multiplication de valeurs par d'autres valeurs, et en ayant accès à la multiplication homomorphe, l'entraînement d'un réseau chiffré est possible en théorie. En pratique, cela est entravé par une limite de base du procédé CKKS : la nature échelonnée des multiplications homomorphes. Nous discuterons d'abord de cet élément, puis nous étudierons les différents aspects du protocole désignés pour l'atténuer.
Niveaux des cryptogrammes dans CKKS
Afin de protéger vos données pendant le chiffrement, le procédé CKKS ajoute un peu de bruit à chaque cryptogramme. L'inconvénient est que ce bruit s'accumule avec les opérations consécutives et doit être modulé. Le CKKS a un mécanisme intégré pour cela, mais malheureusement il ne permet qu'un nombre limité d'opérations sur un même cryptogramme.
Supposons que nous avons deux cryptogrammes fraîchement chiffrés : et . Nous pouvons les multiplier de manière homomorphe pour obtenir le cryptogramme . Le problème est que le bruitNote de bas de page 5 dans le cryptogramme qui en résulte est beaucoup plus important que pour ceux nouvellement chiffrés, donc si nous le multiplions par le cryptogramme fraîchement chiffré , le résultat serait touché par cette discordance.
Il faudrait d'abord remettre à l'échelle le cryptogramme . C'est géré de façon transparente par la bibliothèque de CH, mais sous le capot, le cryptogramme est déplacé dans un espace légèrement différent. Nous disons que a descendu d'un niveau, ce qui signifie que le cryptogramme a commencé au niveau , et après la remise à l'échelle, il se trouve sur le niveau . La valeur est déterminée par les paramètres de sécurité que nous choisissons lorsque nous configurons le procédé de CH.
Nous avons maintenant qui a une quantité normale de bruit, mais qui se trouve au niveau , et le fraîchement chiffré qui est toujours au niveau . Malheureusement, nous ne pouvons pas effectuer d'opérations sur les cryptogrammes qui se trouvent sur différents niveaux, donc nous devons d'abord réduire le niveau de à par permutation modulée. Maintenant que les deux cryptogrammes sont au même niveau, nous pouvons enfin les multiplier comme souhaité. Il n'est pas nécessaire de remettre à l'échelle de résultat des additions, mais nous devons le faire pour chaque multiplication.
Figure 4 : Une illustration des niveaux.
Une illustration des niveaux. À gauche nous pouvons voir le niveau sur lequel chaque cryptogramme se trouve : de haut en bas, nous avons les niveaux , et . Les valeurs nouvellement chiffrées , et se trouvent toutes au niveau tout en haut. Après la multiplication, descend au niveau . Si nous voulons multiplier par , nous devons d'abord descendre au niveau . Le produit qui en résulte, , se trouve au niveau .
Cette histoire de niveaux a deux conséquences. Premièrement, le développeur doit être conscient du niveau des cryptogrammes qu'il utilise. Deuxièmement, les cryptogrammes atteindront éventuellement le niveau 0 après de nombreuses multiplications consécutives; à ce moment‑là, ils sont épuisés et nous ne pouvons plus effectuer d'autres multiplications.
Il y a quelques options pour élargir les calculs au‑delà du nombre de niveaux disponibles. La première est un processus qui s'appelle le bootstrap, selon lequel le cryptogramme est déchiffré de manière homomorphe puis chiffré de nouveau, ce qui crée un nouveau cryptogramme. Ce processus peut en théorie permettre un nombre illimité de multiplications. Cependant, cette charge supplémentaire ajoute un coût au traitement informatique. Il est également possible d'actualiser les cryptogrammes en les renvoyant au détenteur de clé secrète, qui peut les déchiffrer et les chiffrer de nouveau avant de les renvoyer sur le nuage. Le va‑et‑vient des cryptogrammes ajoute un coût en communication, mais ça en vaut parfois la peine lorsqu'il n'y a pas beaucoup de cryptogrammes à envoyer.
Incidence des niveaux sur notre structure de réseau
Nous devions envisager cette contrainte fondamentale relative au CH lorsque nous avons conçu notre réseau neuronal. Le processus d'entraînement d'un réseau demande de réaliser une prédiction, d'évaluer la prédiction et de mettre à jour les paramètres du modèle. Cela signifie que chaque tour, ou époque, d'entraînement consomme des niveaux multiplicatifs. Nous avons essayé de réduire au minimum le nombre de multiplications nécessaires pour traverser le réseau d'un bout à l'autre afin de maximiser le nombre de tours d'entraînement disponibles. Nous décrirons maintenant la structure du réseau et la stratégie d'encodage.
L'architecture du réseau a été inspirée par la solution existante pour la production. Cela correspondait à un modèle d'ensemble d'apprenants linéaires. Nous avons entraîné plusieurs réseaux à couche simple et, au moment de la prédiction, nous avons fait en sorte que chaque apprenant vote pour chaque entrée. Nous avons choisi cette approche parce qu'elle réduisait la quantité de travail requis pour entraîner chaque modèle – moins de temps d'entraînement signifiait moins de multiplications.
Chaque couche dans un réseau neuronal est une matrice des poids des paramètres multipliée par des vecteurs de données pendant le passage vers l'avant. Nous pouvons adapter cela au CH en chiffrant chaque vecteur d'entrée en un seul cryptogramme et en chiffrant chaque rang de la matrice des poids en un autre cryptogramme. Le passage vers l'avant devient alors plusieurs multiplications vectorielles, suivies de nombreuses rotations et multiplications logarithmiques pour calculer la somme des extrants (souvenez‑vous que la multiplication matricielle est une série de produits scalaires, qui constitue une multiplication des composantes suivie d'un calcul de la somme des valeurs qui en résultent).
Le prétraitement est une partie importante de toute tâche de classification de texte. Nos données étaient constituées de courtes phrases, qui comportaient souvent des acronymes ou des abréviations. Nous avons choisi un encodage à caractère -gramme, où égale trois, quatre, cinq et six – « crème glacée » a été divisé en 3 grammes {« crè », « rèm », « ème », « vglav », « vlac », « vacé », « céev »}. Ces -grammes ont été recueillis et dénombrés pour l'intégralité de l'ensemble de données et ont été utilisés pour chiffrer à chaud chaque entrée. Un vectoriseur de hachageNote de bas de page 6 a été utilisé pour réduire la dimension des entrées chiffrées.
De la même façon que nous avons mis en paquet de multiples listes dans l'analyse statistique, nous avons constaté que nous pouvions mettre en paquet de multiples paquets et les entraîner en même temps. L'utilisation d'une valeur signifiait que nous pouvions mettre en paquet 16 384 valeurs dans chaque cryptogramme, donc si nous hachions nos données en 4 096 dimensions, nous pourrions mettre quatre modèles dans chaque cryptogramme. Cela avait l'avantage supplémentaire de réduire le nombre de cryptogrammes requis pour chiffrer notre ensemble de données par un facteur de quatre. Cela signifie que nous pouvions entraîner quatre modèles simultanément.
Notre choix de paramètres de chiffrement signifiait que nous avions entre 12 et 16 multiplications avant de manquer de niveaux. À partir d'un réseau à une seule couche, le passage vers l'avant et le passage vers l'arrière nécessitaient chacun deux multiplications, ce qui nous laissait de la place pour trois à quatre époques avant que nos cryptogrammes modèles soient épuisés. Nos ensembles signifiaient que nous pouvions entraîner des modèles valant plusieurs cryptogrammes si désirés, ce qui signifie que nous pourrions avoir autant d'apprenants que souhaité au coût de temps supplémentaire d'entraînement. En modulant soigneusement quel modèle a appris au sujet de quelles données, cela nous a aidés à maximiser la performance globale de l'ensemble.
Notre ensemble de données représentait 40 000 exemples d'entraînements et 10 000 exemples de test qui ont tous été distribués également dans nos cinq classes. Entraîner quatre sous‑modèles en six époques a pris cinq heures et a permis d'obtenir un modèle qui a obtenu une précision de 74 % sur l'ensemble des essais. En utilisant la tactique d'actualisation des cryptogrammes précédemment décrite, nous pouvons hypothétiquement entraîner pendant autant d'époques que nous le voulons, bien que chaque actualisation ajoute des coûts de communication supplémentaires au processus.Note de bas de page 7 Après l'entraînement, le nuage renvoie le modèle chiffré à StatCan, et nous pouvons l'exécuter en texte clair sur les données en production. Ou nous pouvons conserver le modèle chiffré sur le nuage et exécuter une inférence de modèle chiffrée lorsque nous avons de nouvelles données à classer.
Conclusion
Cela conclut la série de Statistique Canada sur les applications CH pour les données de lecteurs optiques examinées à ce jour. Le CH a un certain nombre d'autres applications qui pourraient s'avérer intéressantes pour un organisme national de statistique comme l'intersection d'ensembles confidentiels, selon laquelle deux parties ou plus calculent ensemble l'intersection d'ensembles de données confidentielles sans les partager, ainsi que le couplage d'enregistrements préservant la confidentialité, selon lequel les parties effectuent des couplages, des partages et des traitements informatiques sur des microdonnées jointes à leurs ensembles de données confidentielles.
Il y a encore beaucoup de choses à explorer dans le domaine des TAC et StatCan travaille à tirer profit de ce nouveau domaine pour protéger les renseignements personnels des Canadiens tout en fournissant des renseignements de qualité qui compte.
Rencontre avec le scientifique des données
Si vous avez des questions à propos de mon article ou si vous souhaitez en discuter davantage, je vous invite à une Rencontre avec le scientifique des données, un événement au cours duquel les auteurs rencontrent les lecteurs, présentent leur sujet et discutent de leurs résultats.
Jeudi, le 15 décembre
14 h 00 à 15 h 00 HE
MS Teams – le lien sera fourni aux participants par courriel
MLflow Tracking : Une façon efficace de suivre les essais de modélisation
Par : Mihir Gajjar, Statistique Canada
Collaborateurs : Reginald Maltais, Allie Maclsaac, Claudia Mokbel et Jeremy Solomon, Statistique Canada
MLflow (le contenu de cette page est en anglais) est une plateforme en source ouverte qui permet de gérer le cycle de vie d'apprentissage automatique, notamment l'expérimentation, la reproductibilité, le déploiement et un registre de modèles central. MLflow propose quatre composantes :
MLflow Tracking : enregistrement et interrogation d'essais : code, données, paramètres de configuration et résultats.
MLflow Projects : assemblage de code de science des données en un format permettant de reproduire les passages sur n'importe quelle plateforme.
MLflow Models : déploiement de modèles d'apprentissage automatique dans divers environnements d'utilisation.
Model Registry : stockage, annotation, découverte et gestion de modèles au sein d'un répertoire central.
Cet article se concentre sur MLflow Tracking. Le site Web de MLflow détaille les trois autres composantes.
Avantages de MLFlow
MLflow Tracking offre une solution pouvant être adaptée de votre machine locale à l'entreprise entière. Cela permet aux scientifiques des données de commencer sur leur machine locale, alors que les organisations peuvent mettre en œuvre une solution veillant à la maintenabilité à long terme et à la transparence au sein d'un répertoire central.
MLflow Tracking fournit des capacités de suivi cohérentes et transparentes en :
effectuant le suivi programmatique des paramètres et des résultats correspondants pour les essais de modélisation et en les comparant à l'aide d'une interface utilisateur;
récupérant le modèle présentant les meilleurs résultats ainsi que son code correspondant, pour diverses mesures d'intérêt pour tous les essais de différents projets;
regardant temporellement en arrière, afin de relever des essais effectués avec certaines valeurs de paramètres;
permettant aux membres de l'équipe de procéder à des essais et de faire part des résultats en collaboration;
exposant à l'intention de la direction l'état d'avancement de plusieurs projets au sein d'une seule interface ainsi que tous les détails (paramètres, tracé des résultats, mesures, etc.);
permettant le suivi pour tous les passages et paramètres au moyen d'un simple carnet; ce qui réduit le temps passé à gérer du code et diverses versions de carnet;
fournissant une interface permettant le suivi d'essais basés sur Python et R.
Comment passer d'un essai à un autre avec MLflow?
Cet article se concentre sur l'utilisation de MLflow avec Python. Le document QuickStart (le contenu de cette page est en anglais) relatif à MLflow présente des exemples de son utilisation avec R pour une installation locale sur une seule machine. Les organisations souhaitant déployer MLflow entre des équipes peuvent également se reporter à ce document QuickStart.
Le présent article explore un exemple d'utilisation de MLflow avec Python; toutefois, pour bien comprendre le fonctionnement de MLFlow, il est utile d'effectuer chaque étape sur votre machine.
Installation de MLflow
MLflow peut s'installer comme progiciel Python standard en entrant la commande suivante dans une fenêtre de terminal :
$ pip install mlflow
Une fois l'exécution de la commande terminée, vous pouvez entrer mlflow sur votre terminal et explorer les options disponibles. Vous pouvez essayer, par exemple : mlflow –version , pour vérifier la version installée.
Lancement du serveur MLflow
Il est recommandé de disposer d'un serveur MLflow centralisé pour une personne, une équipe ou une organisation, afin que les passages pour différents projets puissent être journalisés à un emplacement central, en les isolant par essai (différents essais pour différents projets). Nous discutons plus en détail de ces questions plus loin dans le présent article. Pour commencer rapidement à utiliser l'outil, vous pouvez ignorer le lancement du serveur et journaliser tout de même les passages. Ce faisant, les passages sont enregistrés dans un répertoire intitulé « MLruns », dans le même répertoire que le code. Vous pouvez plus tard ouvrir l'interface utilisateur de MLflow en suivant le même chemin d'accès et visualiser les passages journalisés.
Les passages peuvent être journalisés sur un serveur MLflow exécuté localement ou à distance en configurant l'adresse URI (identifiant uniforme de ressource) adéquate de suivi. La configuration de l'emplacement de journalisation adéquat est expliquée plus bas.
Si vous préférez toutefois lancer le serveur immédiatement, vous pouvez le faire en entrant la commande suivante :
$ mlflow server
Le terminal affichera des renseignements similaires à ceux présentés ci-dessous, qui montrent que le serveur écoute au port de serveur local 5000. Cette adresse est utile pour accéder à l'interface utilisateur (IU) de MLflow. N'hésitez pas à explorer la différence subtile entre l'IU de MLflow et le serveur de MLflow dans les documents relatifs à MLflow Tracking (le contenu de cette page est en anglais).
Deux principaux concepts sous-tendent le suivi avec MLflow : les essais et les passages. Les données journalisées au cours d'un essai sont enregistrées sous forme de passage dans MLflow. Ces passages peuvent être organisés en essai; ce qui regroupe les passages pour une tâche particulière. On peut alors visualiser, rechercher, comparer et télécharger les artéfacts et métadonnées de passages pour les passages journalisés dans le cadre d'un essai MLflow.
Les données d'un essai peuvent être journalisées comme passage dans MLflow à l'aide de progiciels MLflow Python, R ou Java ou au moyen de l'IPA (interface de programmation d'applications) REST.
Le présent article fait la démonstration de la modélisation d'un des concours de mise en route de TLN (traitement du langage naturel) sur Kaggle intitulé « Natural Language Processing with Disaster Tweets (le contenu de cette page est en anglais) ». On utilise un carnet Jupyter et l'IPA Python de MLflow pour journaliser des données dans MLflow. Nous mettrons l'accent sur la démonstration de la façon de journaliser des données dans MLflow au cours de la modélisation, plutôt que sur l'obtention des meilleurs résultats de modélisation.
Tout d'abord, commençons par le processus de modélisation habituel, qui inclut des importations, la lecture de données, le prétraitement de texte, les caractéristiques de pondération rtf-idf (term frequency-inverse document frequency) et le modèle de machine à vecteurs de support (SVM). À la fin, une section sera intitulée « Journalisation dans MLflow ».
Note : Nous maintenons le pipeline TLN aussi simple que possible, afin de porter l'accent sur la journalisation dans MLflow. Certaines des étapes habituelles, comme l'analyse exploratoire des données, ne s'appliquent pas à cet objectif et nous ne les mentionnons donc pas. La façon préférable de journaliser des données dans MLflow est en laissant une portion de code à la fin de la journalisation. Vous pouvez également configurer MLflow au début du code et journaliser les données tout au long du code, lorsque les données ou variables sont disponibles à la journalisation. Un avantage de journaliser toutes les données ensemble à la fin à l'aide d'une seule cellule est que le pipeline entier se termine avec succès et le passage journalise les données (tant que le code de journalisation dans MLflow ne comporte aucun bogue). Si les données sont journalisées tout au long du code et que l'exécution du code est interrompue pour une raison ou une autre, la journalisation des données sera alors incomplète. Toutefois, en cas de scénario où un code comporte plusieurs portions de code (ce qui entraîne une longue exécution), la journalisation tout au long du code, à de multiples emplacements, peut en fait être bénéfique.
Importation des bibliothèques
Commencez par importer toutes les bibliothèques requises par l'exemple :
# To create unique run name.
import time
# To load data in pandas dataframe.
import pandas as pd
# NLP libraries
# To perform lemmatization
from nltk import WordNetLemmatizer
# To split text into words
from nltk. tokenize import word_tokenize
# To remove the stopwords
from nltk.corpus import stopwords
# Scikit-learn libraries
# To use the SVC model
from sklearn.svm import SVC
# To evaluate model performance
from sklearn.model_selection import cross_validate, StratifiedkFold
# To perform Tf-idf vectorization
from sklearn.feature_extraction.text import TfidfVectorizer
# To get the performance metrics
from sklearn.metrics import f1_score, make_scorer
# For logging and tracking experiments
import mlflow
Création d'un nom de passage unique
MLflow permet de suivre plusieurs passages d'un essai grâce à un paramètre de nom de passage. Le nom du passage peut être défini comme toute valeur, mais devrait être unique, afin de pouvoir être identifié ensuite parmi les différents passages. Ci-dessous, un horodatage est utilisé comme nom unique.
En exécutant la portion de code suivant dans une cellule :
train_data
La figure 1 présente un exemple de données de formation venant d'être chargées.
Figure 1 : Aperçu des données de formation chargées
Figure 1 : Aperçu des données de formation chargées
Cinq premières et dernières entrées du fichier CSV. Il contient les colonnes id, mot clé, emplacement, texte et cible. Les colonnes de texte contiennent le tweet en tant que tel et la colonne cible, la catégorie.
Figure 1: A preview of the training data that was loaded.
id
Mot clé
Emplacement
Texte
Cible
0
1
NaN
Nan
Our Deeds are the Reason of this #earthquake M…
1
1
4
NaN
Nan
Forest fire near La Ronge Sask. Canada
1
2
5
NaN
Nan
All residents asked to 'shelter in place' are…
1
3
6
NaN
Nan
13,000 people receive #wildfires evacuation or…
1
4
7
NaN
Nan
Just got sent this photo from Ruby #Alaska as…
1
...
...
...
...
...
...
7608
10869
NaN
Nan
Two giant cranes holding a bridge collapse int…
1
7609
10870
NaN
Nan
@aria_ahrary @TheTawniest The out of control w…
1
7610
10871
NaN
Nan
M1.94 [01:04 UTC] ?5km S of Volcano Hawaii. Htt…
1
7611
10872
NaN
Nan
Police investigating after an e-bike collided…
1
7612
10873
NaN
Nan
The Latest: More Homes Razed by Northern Calif…
1
7613 lignes x 5 colonnes
Les données de formation représentent environ 70 % des données totales.
print('The length of the training data is %d' % len(train_data))
print('The length of the test data is %d' % len(test_data))
Produit :
The length of the training data is 7613
The length of the test data is 3263
Prétraitement de texte
Selon la tâche à réaliser, différents types d'étapes de prétraitement peuvent être nécessaires pour que le modèle d'apprentissage automatique apprenne de meilleures caractéristiques. Le prétraitement peut normaliser les intrants, supprimer certains mots courants, le cas échéant, de sorte que le modèle ne les apprenne pas comme des caractéristiques, et apporter des modifications logiques et utiles pouvant mener à une amélioration du rendement et de la généralisation du modèle. La section suivante montre comment des étapes de prétraitement peuvent aider le modèle à capturer les caractéristiques pertinentes au cours de l'apprentissage.
def clean_text(text):
# split into words
tokens = word_tokenize(text)
# remove all tokens that are not alphanumeric. Can also use .isalpha() here if do not want to keep numbers.
words = [word for word in tokens if word.isalnum()]
# remove stopwords
stop_words = stopwords.words('english')
words = [word for word in words if word not in stop_words]
# performing lemmatization
wordnet_lemmatizer = WordNetLemmatizer()
words = [wordnet_lemmatizer.lemmatize(word) for word in words]
# Converting list of words to string
words = ' '.join(words)
return words
'NorwayMFA Bahrain police previously died road accident killed explosion http'
À la lecture du texte ci-dessus, on peut dire qu'il contient des renseignements sur une catastrophe et devrait donc être classé comme tel. Pour confirmer cela avec les données, imprimez l'étiquette présente dans le fichier CSV relatif à ce tweet :
train_data['target'].iloc[100]
Produit :
1
Caractéristiques Tf-idf
Ensuite, nous convertissons une collection de documents bruts vers une matrice de caractéristiques TF-IDF en vue d'alimenter le modèle. Pour de plus amples détails sur tf-idf, reportez-vous aux documents TF–IDF - Wikipédia and scikit-learn sklearn.feature_extraction.text (le contenu de cette page est en anglais).
L'étape suivante de la modélisation est d'ajuster un modèle et d'évaluer son rendement.
On utilise un programme de validation croisée K-Folds stratifié pour évaluer le modèle. Voir scikit learn sklearn.model_selection (le contenu de cette page est en anglais) pour de plus amples détails.
Vient ensuite une étape importante pour adapter le modèle aux données. Dans cet exemple, le classificateur SVC est utilisé. Voir scikit learn sklearn.svm.svc (le contenu de cette page est en anglais) pour de plus amples détails.
F1 Train CV results: 0.735 +- 0.021
F1 Val CV results: 0.597 +- 0.042
Note : Le code ci-dessous est exécuté comme une commande d'interface système en ajoutant le point d'exclamation : « ! » au début du code dans une cellule Jupyter.
! Jupyter nbconvert --to html mlflow-example-real-or-not-disaster-tweets-modeling-SVC.ipynb
[NbConvertApp] Converting notebook mlflow-example-real-or-not-disaster-tweets-modeling-SVC.ipynb to html
[NbConvertApp] Writing 610630 bytes to mlflow-example-real-or-not-disaster-tweets-modeling-SVC.html
Journalisation dans MLflow
Tout d'abord, configurez le serveur URI. Le serveur s'exécutant localement, définissez l'URI de suivi comme port de serveur local 5000. L'URI de suivi peut être configurée pour un serveur distant également (voir : Where Runs are Recorded [le contenu de cette page est en anglais]).
Pour organiser les passages, un essai a été créé et défini à l'emplacement où les passages seront journalisés. La méthode « set_experiment » créera un nouveau passage avec le nom de chaîne fourni et le définira comme l'essai en cours pour lequel les passages seront journalisés.
mlflow.set_experiment('nlp_with_disaster_tweets')
Enfin, lancez un passage et journalisez les données dans MLflow.
# MLflow logging.
with mlflow.start_run(run_name=run_name) as run:
# Logging tags
# run_name.
mlflow.set_tag(key='Run name', value=run_name)
# Goal.
mlflow.set_tag(key='Goal', value='Check model performance and decide whether we require further pre-processing/hyper-parameter tuning.')
# Modeling exp.
mlflow.set_tag(key='Modeling technique', value='SVC')
# Logging parameters
mlflow.log_param(key='ngram_range', value=ngram_range)
mlflow.log_param(key='max_features', value=max_features)
mlflow.log_param(key='norm', value=norm)
mlflow.log_param(key='C', value=C)
mlflow.log_param(key='kernel', value=kernel)
mlflow.log_param(key='max_iter', value=max_iter)
mlflow.log_param(key='random_state', value=random_state)
# Logging the SVC model.
mlflow.sklearn.log_model(sk_model=svc, artifact_path='svc_model')
# Logging metrics.
# mean F1-score - train.
mlflow.log_metric(key='mean F1-score - train', value=cv_results['train_score'].mean().round(3))
# mean F1-score - val.
mlflow.log_metric(key='mean F1-score - val', value=cv_results['test_score'].mean().round(3))
# std F1-score - train.
mlflow.log_metric(key='std F1-score - train', value=cv_results['train_score'].std().round(3))
# std F1-score - val.
mlflow.log_metric(key='std F1-score - val', value=cv_results['test_score'].std().round(3))
# Logging the notebook.
# Nb.
mlflow.log_artifact(local_path='real-or-not-disaster-tweets-modeling-SVC.ipynb', artifact_path='Notebook')
# Nb in HTML.
mlflow.log_artifact(local_path='real-or-not-disaster-tweets-modeling-SVC.html', artifact_path='Notebook')
Selon le code ci-dessus, vous commencez un passage avec un nom de passage (run_name), puis journalisez ce qui suit :
Balises : paire clé-valeur. La clé et la valeur sont toutes deux des chaînes; par exemple, cela peut servir à journaliser l'objectif du passage pour lequel la clé serait « Goal: » et la valeur peut être « To try out the performance of Random Forest Classifier with default parameters » (mettre à l'essai le rendement d'un classificateur de forêt aléatoire avec des paramètres par défaut).
Paramètres : également une paire clé-valeur pouvant servir à journaliser les paramètres du modèle.
Modèle : peut servir à journaliser le modèle. Vous journalisez ici un modèle scikit-learn comme artéfact MLflow, mais nous pouvons également journaliser un modèle pour d'autres bibliothèques d'apprentissage automatique pris en charge à l'aide du module MLflow correspondant.
Mesures : paire clé-valeur. Le type de données de clé est « string » (chaîne) et peut avoir le nom de la mesure. Le paramètre de valeur est de type de données « float ». Le troisième paramètre facultatif est « step » qui est un nombre entier représentant toute mesure de progression de la formation : nombre d'itération de formation, nombre d'époques, etc.
Artéfacts : un fichier ou répertoire local peut être journalisé comme artéfact pour le passage en cours. Dans cet exemple, nous journalisons à l'aide du carnet, de sorte que ces informations sont accessibles pour des passages futurs. Ce faisant, il est possible d'enregistrer un tracé comme « courbe de perte » ou « courbe de précision » dans le code et le journaliser comme artéfact dans MLflow.
Voilà, vous avez journalisé avec succès les données pour un passage dans MLflow! L'étape suivante est de visualiser les données journalisées.
IU de MLflow
Si vous retournez à la figure 1, vous vous souviendrez que vous avez lancé le serveur et qu'il écoutait au port de serveur local 5000. Ouvrez cette adresse dans votre navigateur préféré pour accéder à l'IU de MLflow. Une fois l'IU de Mlflow visible, vous pouvez utiliser l'interface pour consulter les données d'essai journalisées. Les essais créés s'affichent dans la barre latérale de l'IU et les balises, paramètres, modèle et mesures journalisés figurent dans les colonnes.
Figure 2 : IU de MLflow
Figure 2 : IU de MLflow
La figure 2 présente l'IU de MLflow. L'essai configuré ci-dessus, c.-à-d. nlp_with_disaster_tweets est ouvert ainsi que le passage précédemment journalisé avec les détails comme le nom du passage, les paramètres et les mesures. Il indique également l'emplacement où sont enregistrés les artéfacts. Vous pouvez cliquer sur le passage journalisé pour l'explorer plus en détail.
Text in image: Modèles MLflow
Nlp_with_disaster_tweets (1. Cliquez sur cet essai)
ID de l'experience : 1. Emplacement de l'artéfact : ./miruns/1 (Emplacement des artéfacts journalisés)
Notes : Aucun
2. Exploration des données journalisées
Figure 2: MLflow UI
Paramètres
Mesures
Étiquettes
Heure de début
Nom de l'exécution
Utilisateur
Source :
Version
Modèles
C
Noyau
max_feature
Score moyen
Score moyen
Std F1-scor
Technique :
2021-07-13 15:54:45
1626206076
Mihir
ipykerne
-
sklearn
1.0poly
3. Passage journalisé à l'aide de l'IPA Python. Cliquez sur le lien pour ouvrir le passage
Pour explorer un passage particulier plus en détail, cliquez sur le passage pertinent dans la colonne Heure de début. Cela permet d'explorer un passage journalisé en détail. Le nom du passage s'affiche et vous pouvez ajouter des notes relatives au passage, comme les paramètres, mesures, balises et artéfacts journalisés. Les données journalisées à l'aide de l'API Python pour ce passage figurent ici.
Les fichiers journalisés comme artéfacts peuvent être téléchargés; ce qui peut être utile si vous souhaitez extraire le code ultérieurement. Puisque le code ayant généré des résultats pour chaque passage est enregistré, vous n'avez pas à créer plusieurs copies du même code et pouvez expérimenter avec un seul carnet-cadre en changeant le code entre les passages.
Le modèle formé journalisé peut être chargé dans un essai futur à l'aide de l'IPA Python pour le passage journalisé.
Figure 3: Exploration des artéfacts journalisés dans un passage
Figure 3: Exploration des artéfacts journalisés dans un passage
La figure 3 explore les artéfacts journalisés. Les fichiers journalisés (carnet et modèle) sont présentés. La description du modèle fournit également le code permettant de charger le modèle journalisé dans Python.
Texte de l'image :
Figure 4: Exploring the logged artifacts in a run
Nom
Valeur
Actions
Objectif
Vérifier les performances du modèle et décidez si nous avons besoin d'un prétraitement/réglage hyperparamètres supplémentaire.
Vérification : supprimer les icônes
Technique de modélisation
SVC
Vérification : supprimer les icônes
Nom de passage
16525862471
Vérification : supprimer les icônes
Ajouter une balise
Nom – Valeur – Ajout
Artéfacts
Carnet
Real-or-not-disaster-tweets-modeling-SVC.html
Real-or-not-disaster-tweets-modeling-SVC.ipynb
svc_model
Modèle ML
conda.yaml
model.pkl
Chemin complet : ./miruns/1/b4af92528b1o4552b45231edeb6fe782/artefacts/Carnet
Taille : 0B
Modèle MLflow
Les extraits de code ci-dessous montrent comment faire des prédictions à l'aide du modèle enregistré.
Schéma du modèle
Schéma d'entrées et de sortie pour votre modèle. En savoir plus
Nom – Type
Pas de schéma
Pour démontrer la fonctionnalité de comparaison de passages, d'autres essais de modélisation ont été effectués et journalisés dans MLflow en changeant quelques paramètres dans le même carnet jupyter. N'hésitez pas à modifier certains paramètres et à journaliser davantage de passages dans MLflow.
La figure 4 présente les différents passages journalisés. Vous pouvez appliquer un filtre, conserver les colonnes souhaitées et comparer les paramètres ou les mesures entre les différents passages. Pour procéder à une comparaison détaillée, vous pouvez sélectionner les passages que vous souhaitez comparer et cliquer sur le bouton « Comparer » encerclé dans la figure ci-dessous.
Figure 4 : Personnalisation et comparaison de différents passages à l'aide de l'IU de MLflow
Figure 4 : Personnalisation et comparaison de différents passages à l'aide de l'IU de MLflow
Dans l'IU de MLflow, on peut personnaliser les colonnes affichées, appliquer un filtre et rechercher différents passages en fonction des données journalisées et facilement comparer les différents passages journalisés en fonction des colonnes visibles. On peut également comparer les différents passages journalisés plus en détail en les sélectionnant et en cliquant sur le bouton « Comparer ».
Texte de l'image :
1. Peut filtrer et conserver les colonnes d'intérêt.
Colonnes : Heure de début, Nom de l'exécution, Utilisateur, Source, Version, Modèles, Paramètres, Mesures, Balises
2. Peut comparer différents passages
3. Différents passages journalisés. Sélectionnez les passages que vous souhaitez comparer.
Affichage de 5 passages correspondants. Comparer, Supprimer, Télécharger, CSV
4. Cliquez sur comparer
Figure 5: Customizing and comparing different runs using MLflow UI
Parameters
Mesures
Heure de début
Nom du passage
Utilisateur
Source
Version
Modèles
C
Noyau
max_features
Score mo
Score mo
Std F1-s
2021-07-13 16:08:50
1626115725
Mihir
Ipykerne_laun
-
sklearn
1.0pol...
2021-07-13 16:08:35
1626115688
Mihir
Ipykerne_laun
-
sklearn
1.0pol...
2021-07-13 16:08:21
1626115602
Mihir
Ipykerne_laun
-
sklearn
1.0pol...
2021-07-13 16:08:07
1626115552
Mihir
Ipykerne_laun
-
sklearn
1.0pol...
2021-07-13 15:54:45
1625002471
Mihir
Ipykerne_laun
-
sklearn
1.0pol...
Après avoir cliqué sur le bouton « Comparer », une comparaison sous forme de tableau entre différents passages est générée (comme le présente la figure 5), permettant de facilement comparer les données journalisées pour différents passages. Les paramètres qui diffèrent entre les passages sont surlignés en jaune. Cela fournit à l'utilisateur une idée de la façon dont le rendement du modèle a varié au fil du temps en fonction des paramètres modifiés.
Figure 5 : Comparaison détaillée de passages journalisés dans l'IU de MLflow
Figure 5 : Comparaison détaillée de passages journalisés dans l'IU de MLflow
La figure 5 compare en détail différents passages journalisés dans MLflow. Les balises, paramètres et mesures figurent sur différentes lignes et les passages, dans différentes colonnes. Cela permet à un utilisateur de comparer les détails d'intérêt pour différents passages dans une seule fenêtre. Les paramètres qui diffèrent entre les passages sont surlignés en jaune. Par exemple, dans les essais, les paramètres max_features et ngram_range ont été modifiés pour différents passages et sont donc surlignés en jaune dans l'image ci-dessus.
Texte de l'image :
Nlp_with_disaster_tweets > Comparaison de 5 passages
Figure 6: Comparing logged runs in MLflow UI in detail
ID d'exécution :
7a1448a5f88147c093
c357d787dbe3
264533b107b04be3
bd4981560bad0397
7670578718b3477abb
798d7e404fed6c
D2372d5873f2435c
94dc7e633a611889
Fdc8362b2f37432f9
a4128fa522d80cb
Nom du passage
1626115725
1626115688
1626115602
1626115552
16265862471
Heure de début
2021-07-12 14:48:54
2021-07-12 14:48:16
2021-07-12 14:48:50
2021-07-12 14:46:01
2021-07-09 16:27:58
Paramètres
C
1.0
1.0
1.0
1.0
1.0
Noyau
Poly
Poly
Poly
Poly
Poly
Max_features
500
500
500
500
500
Max_iter
-1
-1
-1
-1
-1
Ngram_range
(1.3)
(1.2)
(1.1)
(1.1)
(1.1)
Norm
12
12
12
12
12
random_state
42
42
42
42
42
Mesures
Mean f1-score-train
0.93
0.931
0.933
0.876
0.735
Mean f1-score-val
0.694
0.693
0.694
0.649
0.597
std f1-score-train
0.001
0.001
0.002
0.002
0.021
std f1-score-val
0.008
0.009
0.01
0.013
0.042
Des changements dans les paramètres et dans les mesures pour différents passages peuvent également être présentés dans un diagramme de dispersion. Les valeurs des axes des x et des y peuvent être définies comme tout paramètre ou toute mesure permettant à l'utilisateur d'analyser les changements. Dans la figure 6, le lecteur peut analyser la variation de la validation; dans ce cas, le F1-score moyen pour différentes valeurs du paramètre « max_features ». Si vous passez le curseur sur un point de donnée, les détails relatifs à ce passage s'affichent.
Figure 6 : Configuration du diagramme de dispersion pour visualiser les effets des différentes configurations de paramètres dans les passages journalisés
Figure 6 : Configuration du diagramme de dispersion pour visualiser les effets des différentes configurations de paramètres dans les passages journalisés
Démonstration des capacités de MLflow de produire un diagramme à l'aide des détails de différents passages. Vous pouvez sélectionner un paramètre particulier sur l'axe des X ainsi qu'une mesure que vous souhaitez surveiller sur l'axe des Y; cela crée immédiatement un diagramme de dispersion fournissant les détails sur l'axe correspondant et permet de visualiser les effets des paramètres sur la mesure, afin de vous faire une idée de la manière dont le paramètre influe sur la mesure.
Texte de l'image :
Parcelle de dispersionPlot – de contourParallèles – de coordonnées Parallèles
Axe des X : max_features
Axe des Y : score moyen F1 - val
Figure 7: Configuring the scatter plot to visualize the effects of different parameter configurations in the logged runs
1626115552
État_aléatoire :
42
Norme :
12
Max_iter :
-1
Max_features :
300
C :
1.0
Noyeau :
Poly
Ngram_range :
(1.1)
Mean f1-score-val
0.649
Mean f1-score-train
0.876
std f1-score-val
0.002
std f1-score-train
0.013
Le diagramme à coordonnées parallèles est également utile, car il présente à l'utilisateur d'un seul coup d'œil l'effet de certains paramètres sur les mesures souhaitées.
Figure 7 : Configuration du diagramme à coordonnées parallèles pour visualiser les effets de différents paramètres sur les mesures d'intérêt
Figure 7 : Configuration du diagramme à coordonnées parallèles pour visualiser les effets de différents paramètres sur les mesures d'intérêt
Dans cette image, un diagramme à coordonnées parallèles est configuré. Vous pouvez sélectionner différents paramètres et différentes mesures à l'aide des fenêtres d'intrants fournies; le diagramme à coordonnées parallèles est mis à jour en conséquence. Ce diagramme peut donner une idée des résultats obtenus à l'aide de différentes configurations dans les essais. Il peut aider à comparer les différentes configurations et à sélectionner les paramètres fournissant un meilleur rendement.
Texte de l'image :
Parcelle de dispersionPlot – de contourParallèles – de coordonnéesParallèles
Paramètres : état_alléatoire, norme, max_iter, max_features, C, noyeau, ngram_range
Mesures : score moyen F1 - val
Figure 8: Configuring the parallel coordinates plot to visualize the effects of different parameters on the metrics of interest
état_aléatoire
norme
Max_iter
Max_features
C
noyeau
ngram_range
Score moyen F1-val
46.20000
-1.10000
500.00000
1.10000
0.69400
46.0000
-1.10000
500.00000
1.10000
(1.3)
0.68000
0.68
45.0000
450.00000
44.0000
-1.05000
400.00000
1.05000
0.66000
0.66
43.0000
350.00000
42.0000
-1.0000
300.00000
1.00000
poly
(1.2)
0.64000
0.64
41.0000
250.00000
40.0000
-0.95000
200.00000
0.95000
0.62000
0.62
39.0000
150.00000
38.0000
-0.9000
100.00000
0.90000
(1.1)
0.60000
0.6
37.80000
-0.90000
100.0000
0.9000
0.59700
Autres aspects intéressants du suivi avec MLflow Tracking
Autres éléments importants à noter relativement à MLflow Tracking :
Les passages peuvent être directement exportés dans un fichier CSV à l'aide de l'IU de MLflow.
Il est possible d'accéder à l'aide d'un programme à toutes les fonctions de l'IU de suivi; vous pouvez interroger et comparer les passages avec du code, charger des artéfacts de passages journalisés ou exécuter une recherche automatisée de paramètre en appliquant une requête sur les mesures de passages journalisés pour décider des nouveaux paramètres. Vous pouvez également journaliser de nouvelles données sur un passage déjà journalisé dans un essai après l'avoir chargé à l'aide d'un programme (consultez Querying Runs Programmatically pour de plus amples détails - le contenu de cette page est en anglais).
En utilisant l'IU de MLflow, les utilisateurs peuvent rechercher des passages présentant des valeurs de données particulières à partir de la barre de recherche. Un exemple de cela serait d'utiliser metrics.rmse < 1 et params.model='tree'. Cela est très utile lorsque vous avez besoin de trouver un passage à paramètres particuliers exécuté par le passé.
Le carnet Jupyter utilisé comme exemple dans ce billet de blogue est accessible sur GitHub (le contenu de cette page est en anglais).
N'hésitez pas à communiquer avec nous à l'adresse statcan.dsnfps-rsdfpf.statcan@statcan.gc.ca pour nous faire part d'autres fonctionnalités intéressantes ou cas d'utilisation que vous aimez utiliser qui auraient pu être mentionnés selon vous. Nous vous offrirons également l'occasion de rencontrer le scientifique des données pour discuter de MLFlow plus en détail. Trouvez de plus amples détails ci-dessous.
Si vous avez des questions à propos de cet article ou si vous souhaitez en discuter, nous vous invitons à notre nouvelle série de présentations Rencontre avec le scientifique des données où le(s) auteur(s) présenteront ce sujet aux lecteurs et aux membres du RSD.
Mardi, le 18 octobre
14 h 00 à 15 h 00 HAE
MS Teams – le lien sera fourni aux participants par courriel
Extraction de tendances temporelles à partir d’images satellitaires
Par : Kenneth Chu, Statistique Canada
La Division de la science des données de Statistique Canada a récemment terminé un certain nombre de projets de recherche visant à évaluer l’efficacité d’une technique statistique appelée analyse en composantes principales fonctionnelles (ACPF) comme méthode d’ingénierie des caractéristiques afin d’extraire les tendances temporelles des données des séries chronologiques de satellites radar à synthèse d’ouverture (RSO).
Ces projets ont été réalisés en collaboration avec la Division de l’agriculture et la Division de la statistique de l’énergie et de l’environnement de Statistique Canada, ainsi qu’avec le Centre national de recherche faunique (CNRF) d’Environnement et Changement climatique Canada. Ces projets ont utilisé les données de Sentinel-1. Sentinel-1 est une constellation de satellites radar du programme Copernicus de l’Agence spatiale européenne. Elle recueille des données d’imagerie RSO qui capturent des renseignements sur les structures de la surface terrestre de la zone imagée. Sentinel-1 assure une couverture mondiale tout au long de l’année et dans toutes les conditions météorologiques de la zone imagée. Les données ne sont pas influencées par l’alternance du jour et de la nuit, ont une haute résolution spatiale (environ 10 m x 10 m) et une fréquence fixe de capture des données tous les 12 jours pour chaque zone imagée. Par conséquent, les données de Sentinel-1 conviennent parfaitement aux études scientifiques, car les structures de la surface de la Terre contiennent des renseignements importants.
Nos résultats suggèrent que l’ACPF pourrait être un outil très efficace pour extraire numériquement les tendances temporelles saisonnières saisies dans une série chronologique d’images de Sentinel-1 à grande échelle et de manière très granulaire. Le présent article présente un sommaire de la méthode fondée sur l’ACPF et de ses résultats d’extraction des caractéristiques à partir des séries chronologiques saisonnières de Sentinel-1.
Motivation
Je vais me concentrer sur l’une des zones d’étude de la recherche, à savoir la région de la baie de Quinte en Ontario, située près de Belleville. L’objectif de ce projet est de donner une classification plus précise des zones humides. Ce qui suit est une image satellitaire optique (plutôt qu’une image satellitaire radar) de la région de la baie de Quinte, téléchargée depuis Google Maps.
Figure 1: Image satellitaire optimale de la baie de Quinte, Ontario. Téléchargée depuis Google Maps.
Description - Figure 1
Image satellitaire optimale de la baie de Quinte, Ontario, située au centre en haut de l’image. Le reste montre un étalement généralement rural de la zone environnante et comprend plusieurs cantons ainsi que les autoroutes qui les relient. Les cantons représentés sont les suivants (dans le sens des aiguilles d’une montre, à partir du haut à gauche) : Rossmore, Fenwood Gardens, Mountain View, Crofton, Elmbrook, Picton, Gilbert Mills, Huff’s Corners, Bowermans et Allisonville.
Dans la Figure 1, notez la grande étendue d’eau au centre supérieur de l’image et les champs agricoles rectangulaires. Notez également l’île près du centre supérieur et la voie d’eau qui la sépare du continent.
Examinez ensuite la Figure 2, qui est une carte de la couverture terrestre de la région de la baie de Quinte.
Figure 2: Carte de la couverture terrestre de la baie de Quinte, ON. Cette image est créée à partir de données des séries chronologiques saisonnières de 2019 du RADARSAT-2 (Banks et al., 2019). Les couleurs indiquent les différents types de couverture terrestre : Le bleu indique l’eau, le rose indique les eaux peu profondes, le cyan montre les marais, le rouge indique les forêts, le vert correspond aux marécages et le marron indique des terres agricoles.
Description - Figure 2
Carte de la couverture terrestre de la baie de Quinte, ON, à partir des données des séries chronologiques de 2019 de RADARSAT-2. Les couleurs indiquent les différents types de couverture terrestre. La baie de Quinte est bleue, indiquant la présence d’eau, et se trouve principalement au centre supérieur de l’image. Le contour de la baie de Quinte est en cyan, ce qui indique une zone marécageuse, et comprend quelques points roses, indiquant des eaux peu profondes. La zone terrestre environnante est principalement rouge, ce qui dénote une zone forestière, et deux taches semi-grandes au centre inférieur de l’image sont vertes, faisant ressortir une zone marécageuse
La figure 3 est un rendu rouge, vert, bleu (RVB) des trois premiers scores des composantes principales fonctionnelles (CPF) calculés à partir des données des séries chronologiques de Sentinel-1 de 2019 pour la région de la baie de Quinte. Notez la remarquable granularité et le haut degré de concordance avec la carte de couverture terrestre de la Figure 2.
Figure 3: Rendu RVB des trois premiers scores de CPF calculés à partir des données des séries chronologiques de Sentinel-1 de 2019 pour la région de la baie de Quinte.
Description - Figure 3
Carte de la couverture terrestre de la baie de Quinte. Les couleurs indiquent les différents types de couverture terrestre. La baie de Quinte est bleue, indiquant la présence d’eau. Le contour de la baie de Quinte est rose et la zone terrestre environnante est principalement orange. Cette image est semblable au rendu de la figure 2
La carte de la couverture terrestre de la figure 2 a été créée à partir des données des séries chronologiques de 2019 de RADARSAT-2 (l’un des satellites d’observation de la Terre RSO de l’Agence spatiale canadienne), à l’aide de la méthodologie décrite dans Banks et al. (2019). Elle est bien corroborée par la réalité du terrain recueillie par des observations sur le terrain. Une observation notable ici est que la voie d’eau qui sépare l’île au centre supérieur de l’image et le continent contient en fait deux types de zones humides – les marais en cyan et les eaux peu profondes en rose. Ces deux types de zones humides ne sont pas faciles à distinguer sur la figure 1. L’article rapporte que les données des séries chronologiques saisonnières du RSO contiennent suffisamment de renseignements pour la classification des terres humides, mais la méthodologie décrite comporte un haut degré de prise de décision manuelle informée par des connaissances d’experts (p. ex. les saisies de données pour quelles dates ou statistiques à utiliser, etc.).Cette méthode demandait beaucoup de travail et la façon d’automatiser cette méthodologie et de l’appliquer à l’échelle régionale, provinciale ou pancanadienne n’était pas claire.
Le projet de la baie de Quinte a été motivé par la recherche d’une méthodologie automatisable et efficace pour extraire numériquement les tendances temporelles des séries chronologiques saisonnières RSO afin de faciliter les tâches de classification de la couverture terrestre en aval.
Principaux résultats : Visualisation des caractéristiques extraites par ACPF
L’ACPF peut être une méthodologie puissante pour extraire les tendances dominantes d’une collecte de séries chronologiques (Wang et al. 2016). Nous avons donc réalisé une étude de faisabilité sur l’utilisation de l’ACPF comme technique d’extraction de caractéristiques pour les séries chronologiques saisonnières RSO au niveau du pixel. Les caractéristiques qui en résultent sont des scores CPF au niveau du pixel. Nos résultats préliminaires suggèrent que la méthodologie fondée sur l’ACPF pourrait être remarquablement efficace. La figure 3 est le rendu RVB des trois premiers scores CPF (le premier score CPF est le canal rouge, le deuxième score CPF est le vert, le troisième score CPF est le bleu (Wikipédia 2022)); calculés à partir des données des séries chronologiques de Sentinel-1 de 2019 pour la baie de Quinte. Notez la remarquable granularité de la figure 3 et son niveau élevé de concordance avec la figure 2. Cela suggère fortement que les caractéristiques extraites fondées sur l’ACPF peuvent faciliter de manière importante les tâches de classification de la couverture terrestre en aval. La suite du présent article expliquera comment la figure 3 a été générée à partir des données des séries chronologiques de Sentinel-1.
Aperçu de la procédure d’extraction des caractéristiques fondée sur l’ACPF
Voici un aperçu de la procédure :
Un sous-ensemble d’emplacements/pixels a été soigneusement et stratégiquement sélectionné dans la zone d’étude de la baie de Quinte.
Leurs séries chronologiques de Sentinel-1 respectives ont été utilisées pour éduquer un moteur d’extraction des caractéristiques fondées sur l’ACPF.
Le moteur d’extraction des caractéristiques fondé sur l’ACPF a ensuite été appliqué aux séries temporelles de Sentinel-1 de chaque emplacement/pixel de toute la zone de la baie de Quinte. La sortie de chaque série temporelle est une séquence ordonnée de nombres appelés scores CPF pour l’emplacement/pixel correspondant. Ces scores sont en ordre décroissant de la variabilité expliquée par leur CPF correspondante.
La figure 3 ci-dessus est le rendu RVB des trois premiers scores CPF des données des séries chronologiques de 2019 de Sentinel-1.
Les données de formation
La collecte de données de formation (à partir des emplacements/pixels de la région de la baie de Quinte) a été soigneusement et stratégiquement choisie pour contenir des propriétés précises.
Les emplacements de la formation étaient répartis dans toute la zone d’étude de la baie de Quinte.
Les types de couverture terrestre étaient connus sur la base d’observations antérieures sur le terrain.
Six types de couverture terrestre étaient représentés dans la collecte de formation : eau, eau peu profonde, marais, marécage, forêt et terres agricoles.
La collecte de formation était bien équilibrée entre les types de couverture terrestre, car chaque type de couverture terrestre contenait exactement 1000 emplacements/pixels (à l’exception des eaux peu profondes, qui en comptaient 518).
Les six types de couverture terrestre représentés dans la collecte de formation sont complets, car chaque emplacement/pixel de la zone d’étude de la baie de Quinte est couvert par l’un de ces six types de couverture terrestre.
Les données de Sentinel-1 ont deux polarisations – transmission verticale et réception verticale (VV), et transmission verticale et réception horizontale (VH). Ces deux polarisations peuvent être considérées comme deux variables observées mesurées par les satellites de Sentinel-1.
Les différentes structures de la surface de la Terre sont détectées avec des sensibilités différentes en polarisations. Par exemple, la diffusion des surfaces rugueuses, comme celles causées par un sol nu ou l’eau, est plus facilement détectée dans la polarisation VV. D’autre part, la diffusion volumique, généralement causée par les feuilles et les branches d’un couvert forestier, est plus facilement détectée dans les polarisations VH et HV. Enfin, un type de diffusion appelé à double réflexion, couramment causée par les bâtiments, les troncs d’arbres ou la végétation inondée, est plus facilement détecté dans la polarisation HH (NASA, 2022). Pour la suite de cet article, nous nous concentrerons sur la polarisation VV.
Figure 4: Données des séries chronologiques VV de Sentinel-1 pour les sites de formation et les diagrammes en ruban correspondants pour une visualisation facile des tendances temporelles. (a) : Données de 2017. Groupe du panneau gauche : Tracés linéaires des données des séries chronologiques VV de Sentinel-1 regroupés par type de couverture terrestre connu. Groupe du panneau droit : Graphiques en ruban correspondants, la courbe noire de chaque panneau indiquant la courbe moyenne particulière au panneau, et le ruban indiquant un écart-type au-dessus et au-dessous de la courbe moyenne particulière au panneau. (b), (c) : Données de 2018 et 2019, respectivement.
Description - Figure 4
Chaque panneau correspond à l’un des six types de zones humides pour 2017, 2018 et 2019 : marais, marécage, eau, forêt, agriculture et eau peu profonde. Chaque panneau contient 1000 séries chronologiques de formation, correspondant à 1000 emplacements de formation distincts, à l’exception du panneau inférieur, qui ne comporte que 518 séries chronologiques. L’axe horizontal affiche les dates d’observation. Elles sont espacées de 12 jours, sauf les écarts occasionnels.
Les quatre points suivants sont observés pour les données des séries chronologiques pour 2017, 2018 et 2019 :
Observation 1 : La collecte des dates d’observation peut changer d’une année à l’autre, de même que les écarts.
Observation 2 : L’eau et l’eau peu profonde ont en moyenne des valeurs plus faibles que le reste des types de zones humides.
Observation 3 : Le diagramme en ruban des eaux peu profondes montre une tendance distincte qui commence à être faible au début de la saison de croissance et qui culmine ensuite à la fin du mois d’août.
Observation 4: D’après le graphique en ruban des marais, on constate que les marais présentent à peu près la tendance opposée à celle des eaux peu profondes, à savoir qu’ils commencent par une valeur élevée qui redescend plus tard dans la saison].
Analyse en composantes principales fonctionnelles
Nous donnons une explication conceptuelle de l’ACPF en la comparant à l’analyse en composantes principales ordinaires (ACPO).
L’ACPO est :
Supposons un ensemble fini (des points de données) est donné.
Trouver des directions orthogonales , plus précisément, des sous-espaces unidimensionnels dans le long desquels présente la plus grande variabilité, la deuxième plus grande, la troisième plus grande, et ainsi de suite. Ici, l’orthogonalité est définie par le produit interne standard (produit scalaire) sur . Pour chaque sous-espace orthogonal unidimensionnel, choisir un vecteur unitaire dans ce sous-espace. Les vecteurs unitaires mutuellement orthogonaux résultants sont les composantes principales ordinaires et elles forment une base orthonormale pour .
Réécrire chaque , en matière de composantes principales ordinaires. Les coefficients de cette combinaison linéaire sont les scores des composantes principales ordinaires de par rapport aux composantes principales ordinaires.
En quoi l’ACPF (plus précisément, la version particulière de l’ACPF que nous avons utilisée) diffère-t-elle de l’ACPO?
L’espace vectoriel de dimension finie est remplacé par un sous-espace (éventuellement de dimension infinie) des fonctions intégrables en définies sur un certain intervalle (de temps) .
Le produit interne standard sur est remplacé par le produit interne inner product sur F, c.-à-d. pour ,
Pourquoi l’ACPF peut-elle saisir des tendances temporelles?
La raison en est que la « géométrie » de l’intervalle est intégrée dans la définition même du produit interne . Plus concrètement, le processus d’intégration des fonctions sur intègre des renseignements sur l’ordre et la distance entre chaque paire de points temporels.
Cette « conscience » de la géométrie de l’intervalle permet à son tour au produit interne de saisir des renseignements sur les tendances temporelles.
Procédure générale pour appliquer l’ACPF à des données de séries chronologiques
Supposons qu’un ensemble fini de séries chronologiques observées soit défini sur un ensemble commun de points temporels dans un certain intervalle de temps p. ex. dans la saison de croissance d’une certaine année civile), où et sont respectivement le point temporel commun initial et final.
Interpoler chaque série temporelle donnée dans pour obtenir une fonction définie sur . On obtient un ensemble fini de fonctions définies sur l’intervalle commun , dont chacune est une interpolation d’une des séries chronologiques observées originales dans .
Remarque : Les B-splines sont un choix courant de techniques d’interpolation à cette fin (Schumaker, 2022).
Calculer la fonction moyenne globale et une séquence ordonnée de composantes principales fonctionnelles pour la collecte de fonctions (interpolations de séries chronologiques dans dans son ensemble. Notez que chaque CPF est elle-même une fonction définie sur (Wang et al. 2016).
Ensuite, pour chaque fonction dans , exprimez-la comme une combinaison linéaire des CPF. Les coefficients de cette combinaison linéaire sont les scores des CPF de la fonction donnée par rapport aux CPF.
Par conséquent, les fonctions dans , le CPF et les scores CPF peuvent être organisées comme suit :
Plus le nombre de CPF est important, plus les approximations ci-dessus devraient être précises.
Nous considérons que la fonction moyenne globale et la séquence ordonnée de CPF sont ce qui a été appris des fonctions en utilisant le mécanisme de l’ACPF.
Enfin, notons qu’une fois que la fonction moyenne globale et les CPF de ont été calculés (ou « apprises »), elles peuvent être utilisées pour calculer les scores de nouvelles fonctions définies sur , en particulier pour les interpolations de nouvelles séries chronologiques. C’est cette observation qui permet d’utiliser le mécanisme de l’ACPF comme une technique d’ingénierie des caractéristiques.
Déroulement des opérations d’extraction de caractéristiques fondées sur l’ACPF
Nous expliquons comment les scores des CPF qui sous-tendent la figure 3 ont été calculés dans le projet de la baie de Quinte.
Comme décrit précédemment, une collecte d’emplacements/pixels « de formation » de la zone d’étude de la baie de Quinte a été méticuleusement choisie, comme décrit précédemment.
Les données des séries chronologiques de Sentinel-1 pour 2017, 2018 et 2019 ont été extraites pour chaque emplacement/pixel de formation dans . Nous désignons la collecte des séries chronologiques résultantes par .
Chaque série temporelle dans a été interpolée à l’aide de B-splines. Nous désignons la collecte de fonctions résultante par .
La fonction moyenne globale et l’ensemble des composantes principales fonctionnelles ont été calculés (« appris ») à partir de en utilisant le mécanisme de l’ACPF. Ce mécanisme de l’ACPF a été mis en œuvre sous la forme de l’ensemble R fpcFeatures (actuellement, uniquement pour un usage interne au CNRF et à Statistique Canada).
La série temporelle de Sentinel-1 de 2017 pour chacun des emplacements/pixels hors formation de la zone d’étude de la baie de Quinte a été interpolée avec des B-splines. Pour chacune des interpolations des B-spline résultantes, les scores CPF par rapport aux composantes principales fonctionnelles apprises ont été calculés. Cela s’applique également aux séries chronologiques Sentinel-1 hors formation de 2018 et 2019.
Les scores CPF résultants sont considérés comme les caractéristiques extraites pour chaque emplacement/pixel. Ces caractéristiques extraites peuvent être utilisées pour des tâches d’analyse ou de traitement en aval, comme la visualisation (p. ex. le rendu RVB), la classification de la couverture terrestre, la détection des changements d’utilisation du sol, etc.
Ce déroulement des opérations d’extraction de caractéristiques fondées sur l’ACPF est illustré à la figure 5.
Figure 5: Schéma du déroulement des opérations d’extraction de caractéristiques fondée sur
Description - Figure 5
Le diagramme des caractéristiques des CPF commence par un carré pour les nouvelles données des séries chronologiques qui alimentent l’ensemble R, qui contient CPF 1, CPF 2, etc. Un carré pour des données des séries chronologiques de formation qui alimentent également l’ensemble R. Ensuite, le paquet R indique l’étape suivante, à savoir les caractéristiques ou le score CPF. Puis, des caractéristiques extraites sont générées, lesquelles peuvent être utilisées dans des tâches de traitement ou d’analyse en aval, p. ex. la visualisation par le rendu RVB, la classification de l’utilisation du sol, la détection des changements d’utilisation du sol
Les composantes principales fonctionnelles calculées
Si vous vous souvenez, le soi-disant « moteur d’extraction de caractéristiques fondé sur l’ACPF entraîné » n’est en fait que la fonction de moyenne globale et la séquence ordonnée de CPF (fonctions définies sur un intervalle de temps commun) calculées à partir des données de formation. La figure 6 présente les sept premières CPF calculées à partir des données des séries chronologiques de Sentinel-1 VV de formation pour 2017, 2018 et 2019 de la zone d’étude de la baie de Quinte.
Figure 6: Représentations graphiques des sept premières composantes principales fonctionnelles comme fonctions du temps.
Description - Figure 6
Sept graphiques linéaires des CPF calculés à partir des données des séries chronologiques de Sentinel-1 de 2017, 2018 et 2019. Dans chaque panneau, l’axe horizontal représente « l’indice des dates » où 1 correspond au jour de l’an, 2 correspond au 2 janvier, et ainsi de suite. L’axe vertical représente la valeur des scores CPF respectifs. CPF 1 – Variabilité saisie = 85,044 %; CPF 2 – Variabilité saisie = 7,175 %; CPF 3 – Variabilité saisie = 2,229 %; CPF 4 – Variabilité saisie = 1,677 %; CPF 5 – Variabilité saisie = 1,407 %; CPF 6 – Variabilité saisie = 1,162 %; CPF 7 – Variabilité saisie = 0,917 %. Une explication plus détaillée est donnée ci-dessous.
Ce sont des représentations graphiques des sept premières CPF en fonction du temps. Le panneau (en comptant à partir du haut) visualise la CPF. Rappelons que chaque CPF est, avant tout, une fonction (continue) du temps, considérée comme un vecteur dans un certain espace vectoriel des fonctions de (intégrable en ) définies sur un certain intervalle de temps.
Dans chaque panneau, la courbe grise indique la courbe moyenne des interpolations splines de toutes les séries chronologiques VV (sur tous les lieux de la formation et pour les années 2017, 2018 et 2019). Les CPF s’avèrent être des vecteurs propres d’une certaine carte linéaire (liée à la « variance » de l’ensemble de données d’apprentissage) de à elle-même (Wang et al. 2016). Dans chaque panneau, la courbe orange représente la fonction obtenue en ajoutant à la courbe moyenne (en gris) le multiple scalaire de la composante principale fonctionnelle , où est la valeur propre correspondant à . La courbe bleue est obtenue en soustrayant le même multiple de de la courbe moyenne. Notez également que la première composante principale explique environ 85,04 % de la variabilité des données de formation (série chronologique VV), la deuxième composante explique environ 7,18 %, et ainsi de suite.
Ensuite, notez que la première composante principale fonctionnelle ressemble à une ligne horizontale (courbe orange dans le panneau supérieur); elle capture la caractéristique la plus dominante dans les séries chronologiques de formation, qui se révèle être la grande différence quasi constante dans les valeurs VV entre les séries chronologiques de l’eau/eau peu profonde et celles du reste des types de couverture terrestre (autre que l’eau). Cette grande différence quasi constante est clairement observable dans les tracés en ligne et en ruban des figures 4, 5 et 6.
Enfin, il faut noter que la deuxième composante principale fonctionnelle (courbe orange dans le deuxième panneau) présente un creux en début de saison et un pointe en fin de saison, ce qui permet de saisir la tendance des eaux peu profondes, comme on peut l’observer dans les diagrammes en ruban des eaux peu profondes des figures 4, 5 et 6.
Les deux premiers scores CPF des données de formation
Nous montrons ici les nuages de points du premier score CPF par rapport au second pour les données de formation. Observez la bonne séparation des emplacements de formation de l’eau et de l’eau peu profonde de ceux des autres types de couverture terrestre, et observez également la cohérence de cette séparation d’une année à l’autre.
Figure 7: Scores CPF de 2017 – formation
Description - Figure 7
Nuage de points du premier score CPF par rapport au second pour les données des séries temporelles de formation pour 2017, 2018 et 2019.Les scores CPF résultants sont considérés comme les caractéristiques extraites. Chaque point de données de ce graphique correspond à un emplacement de la formation, la couleur indiquant le type de zone humide. Les axes horizontaux et verticaux correspondent respectivement aux premier et second scores CPF dérivés des séries chronologiques VV. Nous insistons sur le fait que, bien que chaque graphique ne montre que les scores des séries temporelles de formation correspondante pour l’année, les scores CPF ont été calculés simultanément pour toutes les séries chronologiques VV pour toutes les années et tous les types de zones humides.
Les points de données sont partiellement regroupés par type de zone humide; en particulier, l’eau et les eaux peu profondes se séparent très bien des autres types de zones humides. La séparation horizontale (qui est la dimension correspondant à la première CPF) entre l’eau/eau peu profonde et le reste. Cela représente la grande différence verticale entre l’eau/eau peu profonde et les autres types de zones humides non aquatiques au regard des valeurs VV originales (voir figure 4). La première CPF saisit cette grande différence verticale constante tout au long de la saison de végétation, ce qui explique pourquoi la première CPF ressemble à une ligne plate (courbe orange qui apparaîtrait dans le panneau supérieur de la figure 6).
Rappelons également que la deuxième CPF présente une tendance qui ressemble à celle des eaux peu profondes (comme le montrent les tracés en ruban dans les panneaux inférieurs de la figure 4 par rapport à la courbe orange dans le deuxième panneau de la figure 6). Rappelons également que le marais présente en gros la tendance inverse (comme indiqué dans le panneau supérieur de la figure 4 par rapport à la courbe bleue du second panneau de la figure 6). La deuxième CPF saisit la tendance affichée par les eaux peu profondes et, par conséquent, dans ce nuage de points, ce sont les emplacements de formation en eaux peu profondes (rouge) qui s’étendent significativement dans la direction verticale positive. En revanche, comme le marais présente à peu près la tendance inverse, les emplacements de formation pour les marais (en noir) s’étendent significativement vers le bas dans le présent nuage de points.
Contrôle d’intégrité : approximation de la série temporelle de formation originale par l’ACPF.
Étant donné que l’ACPF repose sur l’approximation de séries chronologiques de données de formation individuelles en tant que combinaisons linéaires d’une séquence de CPF (elles-mêmes des fonctions) qui sont apprises à partir des séries chronologiques des données de formation en tant que groupe :
Pour évaluer l’adéquation de l’ACPF à un ensemble particulier de données des séries chronologiques, il est prudent d’examiner dans quelle mesure les approximations fondées sur l’ACPF peuvent réellement se rapprocher des données des séries chronologiques originales.
La figure 12 montre six séries chronologiques de données de formation de Sentinel-1 choisies au hasard et leurs approximations par l’ACPF pour donner une impression de la qualité de l’ajustement des approximations de l’ACPF.
Figure 8: Approximations par l’ACPF de six séries chronologiques de données de formation.
Description - Figure 8
Approximations par l’ACPF de six séries chronologiques de données de formation. Dans chaque panneau, l’axe horizontal représente « l’indice des dates » où 1 correspond au jour de l’an, 2 correspond au 2 janvier, et ainsi de suite. L’axe vertical représente la valeur de la variable VV dans les données de Sentinel-1. Les points noirs sont les points de données des séries chronologiques originales. La courbe bleue est l’interpolation B-spline. La courbe rouge est l’approximation de l’ACPF à sept termes de l’interpolation B-spline (courbe bleue), où le « sept termes » signifie ici que l’approximation de l’ACPF est la somme de la fonction moyenne globale et d’une combinaison linéaire. Panneau 1 – année 2017, emplacement : -77,210217019792_43,8920257051607; Panneau 2 – année 2017, emplacement : -77,2997875102733_44,0678018892809; Panneau 3 – année 2018, emplacement : -77,2373431411184_44,1006434402341; Panneau 4 – année 2018, emplacement : -77,2691161641941_43,9610969253399; Panneau 5 – année 2019, emplacement : -77,2663596884513_43,950887882021; Panneau 6 – année 2019, emplacement : -77,3141305185843_44,1218009272802
Travaux à venir
Cet article présente la technique d’ingénierie des caractéristiques fondée sur l’ACPF pour les données saisonnières des séries chronologiques de Sentinel-1. Rappelons toutefois que le but ultime est la classification des zones humides. La recherche de suivi immédiat consiste à appliquer certaines techniques de classification « de base » (p. ex. une forêt aléatoire) aux caractéristiques extraites fondées sur l’ACPF (c.-à-d. les scores CPF) et à examiner les précisions qui en résultent.
La plupart des techniques de classification de base, comme la forêt aléatoire, ignorent les relations spatiales entre les emplacements/pixels. Si les techniques de base se révèlent insuffisamment précises, vous pouvez envisager des techniques de classification plus sophistiquées qui tentent de prendre en compte les relations spatiales, p. ex. en imposant des contraintes qui favorisent les emplacements/pixels proches pour avoir le même type de couverture terrestre prédit. L’une de ces techniques est le champ aléatoire de Markov caché, qui traite la tâche de classification de la couverture terrestre comme un problème de segmentation d’image non supervisée.
Il a fallu environ 45 minutes pour générer la figure 3, en l’exécutant dans 16 fils parallèles sur un seul ordinateur virtuel x86 64-conda-linux-gnu (64 bits), sur un nuage informatique commercial, avec 28 Go de mémoire, en utilisant le système d’exploitation Ubuntu 20.04.2 LTS et R version 4.0.3 (2020– 10-10). Toutefois, la figure 3 ne couvre que la zone d’étude de la baie de Quinte, qui est une zone minuscule comparée à la province de l’Ontario ou à l’ensemble du Canada. L’utilisation des mêmes ressources informatiques que celles mentionnées ci-dessus pour exécuter le flux de travail d’extraction de caractéristiques fondées sur l’ACPF nécessiterait environ trois semaines pour l’Ontario et plusieurs mois pour l’ensemble du Canada. Plusieurs années de données de Sentinel– 1 pour l’ensemble du Canada auront une empreinte de stockage de plusieurs douzaines de téraoctets. D’un autre côté, on aimerait bien, à terme, mettre en place un système de classification pancanadien des terres humides (presque entièrement) automatisé. L’informatique répartie (informatique en nuage ou grappes de calcul à haute performance) sera nécessaire pour déployer un tel déroulement des opérations capable de traiter de tels volumes de données dans un délai raisonnable. Une étude de suivi est en cours pour déployer ce déroulement des opérations sur la plate-forme nuagique de Google (Google Cloud Platform (GCP)) pour l’ensemble de la Colombie-Britannique. Nous prévoyons que le temps d’exécution du déploiement du GCP pour l’ensemble de la Colombie-Britannique, divisé en centaines de tâches de calcul simultanées, sera inférieur à 3 heures. En outre, nous mentionnons que, en raison de la nature vectorielle des calculs de l’ACPF, une mise en œuvre du GPU devrait en théorie être possible, ce qui pourrait accélérer encore davantage les calculs de manière spectaculaire. Un article scientifique sur les résultats et les méthodologies de cette série de projets est en préparation et sera bientôt publié dans une revue à comité de lecture.
Comme nous l’avons mentionné, les changements saisonniers des structures de la surface de la Terre, saisis sous forme de tendances temporelles dans les données des séries chronologiques de Sentinel-1, sont des variables prédictives utiles pour la classification des zones humides. Toutefois, pour pouvoir utiliser les données correctement et à grande échelle, il faut être conscient d’un certain nombre de problèmes potentiels. Par exemple, les utilisateurs de données doivent être bien informés des artefacts de mesure qui peuvent être présents dans de telles données, de la façon de détecter leur présence et de la façon de les corriger, si nécessaire. Nous prévoyons également que les tendances temporelles varieront (p. ex. en raison des variations naturelles, des cycles climatiques, du changement climatique), tant d’une année à l’autre que dans l’espace. La question de savoir comment tenir compte des variations spatiotemporelles des tendances temporelles de Sentinel-1 lors de la conception et de la mise en œuvre d’un déroulement des opérations pancanadien.
Rappelons que nous nous sommes concentrés exclusivement sur la polarisation VV dans les données de Sentinel-1, bien que nous ayons déjà mentionné que les données de Sentinel-1 présentent une polarisation supplémentaire, à savoir VH. Les différentes polarisations sont sensibles aux différents types de structures au niveau du sol (NASA, 2022). En outre, Sentinel-1 est une constellation de satellites RSO en bande C (c.-à-d. avec une fréquence de signal radar d’environ 5,4 GHz), ce qui signifie notamment que Sentinel-1 mesure, très approximativement, des structures au niveau du sol d’une taille d’environ 5,5 cm. Toutefois, il existe d’autres satellites RSO qui ont des fréquences de signal différentes qui ciblent donc des structures au niveau du sol de tailles différentes (NASA, 2022). Il sera très intéressant de voir si les données RSO avec des fréquences de signal différentes, et mesurées dans des polarisations différentes, pourront être combinées afin d’améliorer de manière importante l’utilité de ces données.
Références
BANKS, S., WHITE, L., BEHNAMIAN, A., CHEN, Z., MONTPETIT, B., BRISCO, B., PASHER, J., AND DUFFE, J. Wetland classification with multi-angle/temporal sar using random forests. Remote Sensing 11, 6 (2019).
All machine learning projects at Statistics Canada are developed under the agency's Framework for Responsible Machine Learning Processes that provides guidance and practical advice on how to responsibly develop automated processes.
Si vous avez des questions à propos de cet article ou si vous souhaitez en discuter, nous vous invitons à notre nouvelle série de présentations Rencontre avec le scientifique des données où le(s) auteur(s) présenteront ce sujet aux lecteurs et aux membres du RSD.
mercredi, le 14 septembre
14 h 00 à 15 h 00 p.m. HAE
MS Teams – le lien sera fourni aux participants par courriel