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