Membres de l’équipe
Aesha Patel, Anh Vo, Sana Shams, Tanya, et Urim Iyasere
Sommaire
Le programme « Spice Up, Save Up » révolutionne la nutrition de la population étudiante en lui offrant des choix de repas abordables et sains afin de lutter contre l’insécurité alimentaire au Canada.
Mots-clés
Insécurité alimentaire, nutrition abordable, accès à la nourriture, apprentissage par fonction Q, apprentissage automatique, classification, géolocalisation, bien commun.
Inspiration/contexte du projet
Notre groupe, constitué d’étudiantes canadiennes, est uni par ses expériences communes, qui constituent le fondement de cette initiative. Nous comprenons très bien les nombreuses difficultés que les étudiantes et étudiants rencontrent au quotidien, parce que nous sommes aux études. La difficulté d’accès à une nourriture suffisante en raison de l’augmentation du coût de la vie est l’un des enjeux qui nous a préoccupées. Ce problème ne touche pas seulement la population étudiante; d’autres membres de la société canadienne font face à des défis comparables.
Il est navrant de constater que de plus en plus de personnes, dont nous-mêmes, souffrent d’insécurité alimentaire, principalement en raison de l’augmentation du prix des denrées. En réponse à ce problème pressant, nous avons établi le principe directeur de notre projet : « Spice Up, Save Up » (Pimentez, économisez). Ce slogan reflète bien notre engagement à relever les défis liés à l’alimentation de manière créative et rentable. Un récent rapport d’une organisation nationale de récupération de nourriture a souligné que le nombre de personnes secourues chaque mois par les banques alimentaires et les programmes similaires devrait connaître une augmentation de 60 % en 2023 par rapport à 2022.
Nous avons entamé le processus de développement d’une solution, motivées par un fort sentiment d’empathie et le désir d’apporter un changement positif. Nos séances de remue-méninges en groupe ont abouti à la création de ce logiciel, qui tente d’offrir une solution immédiate et significative aux problèmes que nous avons découverts. Notre objectif principal est de doter d’autres étudiantes et étudiants d’un outil qui leur permettra de surmonter les difficultés liées à l’alimentation.
Avec cette application, nous souhaitons donner accès à des solutions alimentaires abordables, pratiques et équilibrées sur le plan nutritionnel. Nous sommes personnellement conscientes de l’importance d’une alimentation saine pour favoriser de bons résultats scolaires et le bien-être général. Nous avons créé notre logiciel avec soin, afin d’aider les utilisateurs à faire des choix alimentaires judicieux, même avec un budget limité.
Technologies utilisées
Dorsales : SQLite, CSV
Bibliothèques Python : Geocoder, Pandas, Numpy, Geopy, Requests
Frontales : Figma, Canva, Django
Description détaillée du projet
L’objectif principal du projet Plate Pal est de répondre au problème urgent de l’insécurité alimentaire en développant un site Web convivial. Cette plateforme est conçue pour atténuer les difficultés rencontrées par les personnes dont l’accès à des produits d’épicerie abordables est limité. En s’appuyant sur le code postal de l’utilisateur, Plate Pal génère une liste organisée des épiceries les plus économiques dans sa région, tout en prenant soigneusement en compte ses restrictions alimentaires. Notre projet vise à créer une expérience transparente et responsabilisante pour les utilisateurs, en leur permettant de prendre des décisions éclairées en matière d’alimentation. Les objectifs principaux sont de compiler une liste complète des offres hebdomadaires des épiceries les plus proches, d’optimiser le pouvoir d’achat des utilisateurs et de fournir une solution sans stress grâce à une liste d’épicerie personnalisée. En proposant des recommandations sur mesure en fonction du lieu, des besoins alimentaires et des contraintes budgétaires, Plate Pal vise non seulement à améliorer l’accessibilité de la nourriture et à lutter contre l’insécurité alimentaire, mais aussi à promouvoir des habitudes alimentaires plus saines.
Développement du projet
L’aventure de Plate Pal a commencé par une solide séance de remue-méninges, afin de faire émerger de nouvelles idées relatives à l’intelligence artificielle. Nous avons recueilli des données en faisant le moissonnage du Web sur des sites tels que Flipp, connu pour ses offres d’épicerie, qui ont constitué la base de notre information. Cela nous a permis d’utiliser l’algorithme d’apprentissage par fonction Q dans notre approche d’apprentissage automatique. Il nous a aidées à mieux choisir les épiceries en fonction des coûts et des besoins alimentaires. Cette flexibilité a permis à Plate Pal de faire des suggestions personnalisées aux utilisateurs. Au cours du développement, nous avons veillé à ce que les choses restent simples : les utilisateurs peuvent facilement indiquer leur localisation, obtenir des offres en temps réel, établir des restrictions alimentaires et fixer un budget pour des repas moins chers. En combinant la collecte de données, des méthodes d’apprentissage automatique et une interface conviviale, nous avons pu créer Plate Pal, un nouveau moyen d’aider les personnes qui manquent de nourriture et d’améliorer leur vie. Vous trouverez plus de détails sur notre façon de faire dans la section sur la mise en œuvre technique.
Mise en œuvre technique
Le code met en œuvre un système d’extraction de données utilisant des API et SQLite pour classer les articles en fonction de leur emplacement et de leur prix. En outre, il utilise l’apprentissage par fonction Q pour optimiser la sélection des produits en fonction des contraintes budgétaires, ce qui favorise une prise de décision efficace dans les scénarios d’achat. Il comprend également deux composants distincts destinés à classer les articles et à trouver les produits optimaux en fonction des données disponibles.
Classification des articles et recherche de données
- Moissonnage du Web et gestion des données :
- Utilisation de la bibliothèque Requests pour récupérer les données de l’API de Flipp pour les renseignements sur les articles.
- Utilisation de la bibliothèque Geocoder pour récupérer les coordonnées de latitude et de longitude à partir des codes postaux.
- Création d’une base de données SQLite (items.db) utilisant SQLite3 pour stocker les données relatives aux articles.
- Conception d’une classe Store pour représenter les magasins avec des noms et des codes postaux.
- Mise en œuvre d’une classe FlyerScraper responsable de la gestion de la récupération et du stockage des données.
- Stockage et interrogation des données :
- Création d’une base de données SQLite nommée « Items » pour stocker les renseignements sur les articles comme le nom du magasin, le nom de l’article, le prix, la longitude, la latitude et le code postal.
- Intégration de méthodes dans la classe FlyerScraper pour insérer les données sur les articles dans la base de données SQLite et récupérer les résultats de recherche d’articles.
- Recherche et récupération de magasins :
- Définition de méthodes pour la recherche d’articles à l’aide de l’option SEARCH_URL et pour moissonner les données sur les articles individuels à l’aide de l’option ITEM_URL.
- Intégration de la bibliothèque Geopy pour calculer les distances entre les lieux en utilisant les coordonnées de latitude et de longitude.
Apprentissage par fonction Q pour l’optimisation des produits
- Initialisation de l’agent :
- Développement d’une classe QLearningAgent pour effectuer l’apprentissage par fonction Q pour l’optimisation des produits.
- Initialisation de l’agent avec les paramètres essentiels, y compris la liste des catégories, le budget, le taux d’apprentissage, le facteur d’escompte et la probabilité d’exploration (epsilon).
- Mise à jour de la valeur Q et sélection des actions :
- Mise en œuvre de méthodes permettant de mettre à jour les valeurs Q en fonction de la récompense et des valeurs Q futures.
- Conception d’une méthode de sélection des actions utilisant un compromis entre l’exploration et l’exploitation.
- Recherche et sélection optimales de produits :
- Développement de fonctions permettant d’identifier les produits optimaux en fonction du budget disponible et du nombre d’épisodes.
- Utilisation de la sélection aléatoire et optimale des actions pour déterminer les meilleurs produits dans le respect des contraintes budgétaires.
- Traitement des données CSV :
- Utilisation de la bibliothèque CSV pour lire les données d’un fichier CSV (output.csv) contenant des renseignements sur les articles.
- Préparation des données pour une recherche optimale de produits en créant une liste d’articles, comprenant le magasin, l’article, le prix et la catégorie.
- Exécution et résultats :
- Création d’une instance du QLearningAgent avec les paramètres spécifiés.
- Optimisation de l’apprentissage par fonction Q pour un nombre défini d’épisodes.
- Impression de la liste des produits optimaux sur la base des valeurs Q apprises et des considérations budgétaires.
Impact et innovation
À l’heure actuelle, il existe plusieurs applications et sites Web basés sur des circulaires d’épicerie qui proposent des promotions hebdomadaires dans divers magasins d’alimentation. Ces services fournissent aux utilisateurs des annonces hebdomadaires et des coupons numériques. Les principaux éléments qui sont pris en compte au moment de faire des courses sont les groupes alimentaires, le budget et le lieu. Ces caractéristiques sont prises en compte dans les services existants, mais il y a quelques lacunes.
Certains classent les circulaires dans des catégories telles que Épicerie, Pharmacie et Bureau, mais, actuellement, les circulaires ne sont pas classées par groupes alimentaires tels que les produits laitiers, les céréales, les viandes et les protéines, les fruits et les légumes. En outre, les services actuellement disponibles ne permettent pas à l’utilisateur d’entrer son budget d’épicerie. Il doit donc établir lui-même sa liste d’épicerie et faire son budget. C’est ici que Plate Pal se distingue.
Plate Pal améliore l’expérience de l’utilisateur en prenant en compte des considérations nutritionnelles et budgétaires. Ce projet a été fondé sur la vision d’une épicerie accessible et abordable. Malheureusement, en raison de la disparité des coûts entre les aliments sains et les aliments malsains, les personnes confrontées à l’insécurité alimentaire peuvent avoir du mal à obtenir une alimentation équilibrée.1 Pour résoudre ce problème, Plate Pal permet aux utilisateurs d’entrer leur budget; l’apprentissage par fonction Q est utilisé pour l’optimisation des produits, tel que décrit dans la mise en œuvre technique, afin de trouver la combinaison optimale des principaux groupes alimentaires en fonction du budget de l’utilisateur. Ainsi, Plate Pal respecte les contraintes budgétaires de l’utilisateur tout en générant une liste d’épicerie équilibrée et personnalisée. En outre, la fonction de filtrage par géolocalisation permet de personnaliser davantage les courses en fonction des magasins situés dans un certain rayon autour de l’utilisateur.
Toutes ces caractéristiques combinées permettent à Plate Pal de se démarquer en offrant une expérience utilisateur holistique qui, en fin de compte, améliore l’accès de l’utilisateur à des produits alimentaires abordables tout en assurant une alimentation équilibrée et en respectant les contraintes budgétaires.
Défis et solutions
L’un des principaux défis que nous avons dû relever a été de nous assurer que notre fonctionnalité de moissonnage du Web fonctionnait parfaitement avec notre base de données. Cela signifiait que nous devions comprendre comment recueillir des données et les stocker correctement. Nous devions également adapter notre script Python pour gérer les données mises à jour régulièrement par Flipp sans qu’il y ait d’incident. Pour relever ce défi, nous avons effectué des recherches approfondies, demandé conseil à des communautés en ligne et perfectionné notre code jusqu’à ce qu’il collecte les derniers renseignements des épiceries et les stocke dans notre base de données de manière fiable. Il convient de noter que nous avons organisé toutes les données que nous avons récupérées dans des types de données SQL3 et que nous les avons ensuite transférées dans un tableau de données Pandas pour en faciliter le traitement et l’analyse. Cette approche prudente de la gestion des données s’est avérée être un facteur clé de la réussite de notre projet.
Leçons apprises et réalisations dont nous sommes fières
Le programme AI4Good Lab a été une expérience d’apprentissage inestimable pour notre équipe. Au début du programme, nous avions toutes des expériences et des compétences différentes, mais nous partagions la passion de faire quelque chose de bien dans le domaine de l’IA. Grâce aux conférences, aux ateliers et aux séances d’assistance technique et de mentorat, notre équipe a pu non seulement apprendre les principes fondamentaux de l’apprentissage automatique et de l’IA, mais aussi adopter une approche créative pour faire de notre vision commune une réalité. Cet environnement collaboratif a été stimulant pour l’esprit et incroyablement gratifiant, car il a favorisé l’apprentissage actif alors que nous partagions des idées et réfléchissions collectivement à un projet.
Tout au long du camp d’entraînement, des activités de réseautage ont également été organisées, et notre équipe en a grandement profité. En entrant en contact avec certains des conférenciers et des spécialistes universitaires, nous avons pu approfondir différents aspects, dont la résolution de problèmes, les solutions innovantes et l’utilisation d’une approche concrète pour développer un prototype inclusif qui s’inscrit dans une perspective de changement social pour tous. Ces expériences ont été extrêmement précieuses pour notre équipe durant les phases de planification et de développement du projet, car nous avons exploré des ressources supplémentaires en dehors du cadre du programme afin d’élargir nos connaissances informatiques, en particulier dans le domaine des algorithmes d’apprentissage automatique, et d’exploiter au maximum les possibilités de notre prototype. Grâce aux commentaires pertinents et au soutien technique fournis par AI4GoodLab, notre équipe a été en mesure de présenter avec succès notre application Plate Pal lors de la journée de démonstration et de recevoir le prix Accélérateur 2023 en tant que membres de la cohorte d’Edmonton. Nous sommes vraiment reconnaissantes de cet honneur, qui marque une étape importante dans notre parcours de sept semaines, et de l’occasion qui nous a été donnée de présenter notre projet final qui pourrait changer les choses dans la société d’aujourd’hui!
Prochaines étapes
- Renforcement des relations avec les épiciers locaux : Nous visons à renforcer les liens avec les épiciers locaux en diversifiant activement notre réseau. Cette approche nous permet d’élargir l’accès à une gamme étendue d’aliments frais et diversifiés afin de répondre aux besoins et préférences alimentaires des utilisateurs.
- Catégorisation : En exploitant les capacités des systèmes de TLN, nous pouvons catégoriser efficacement les aliments et utiliser ces renseignements pour suggérer des repas équilibrés qui correspondent aux aliments catégorisés. Cette approche permet d’offrir des recommandations personnalisées et sur mesure pour une alimentation saine et équilibrée.
- Amélioration de la planification des repas et de la nutrition : En élargissant le champ d’application des systèmes de TLN, nous pouvons prendre en compte un plus grand nombre de restrictions alimentaires, telles que les directives halal, les allergies particulières comme celle aux arachides et les maladies liées à l’alimentation comme la maladie cœliaque. Cela nous permet de fournir des recommandations de repas encore plus personnalisées qui répondent aux besoins individuels et respectent des exigences alimentaires données.
- Génération de listes d’épicerie en fonction d’un budget : Nos efforts en cours comprennent la modification de l’algorithme d’apprentissage par renforcement (AR) pour générer des listes d’épicerie qui tiennent compte du budget spécifié. Cette optimisation permet aux utilisateurs de planifier efficacement leurs repas tout en tenant compte de contraintes financières, ce qui rend leur expérience d’achat plus efficace et plus rentable.
Remerciements
Plate Pal n’aurait pas été possible sans le soutien indéfectible de notre assistante technique dévouée, Samridhi Vaid, et de notre mentore, Joud El-Shawa. Malgré de nombreux défis, Samridhi a toujours été derrière nous et nous a guidées sans jamais nous donner l’impression que les obstacles étaient trop grands – et, grâce à son soutien et à ses connaissances en matière d’apprentissage automatique, ils ne l’ont jamais été. En outre, la formation de Joud en science des données a été extrêmement utile : comme Plate Pal repose sur le traitement de données extraites, notre base de données constitue un défi majeur. Samridhi et Joud sont allées bien au-delà du mentorat technique : de la recherche à la présentation, elles nous ont soutenues tout au long du projet. Et, bien sûr, au-delà des ressources et du contenu offerts, ce sont toutes les personnes extraordinaires du programme AI4Good Lab qui ont fait de cette expérience une réussite, de nos collègues stagiaires aux prestataires de formation, en passant par l’équipe administrative. Toutes ces personnes nous ont soutenues et nous ont donné les moyens d’agir à chaque étape de notre parcours avec passion et enthousiasme. Nous leur en sommes très reconnaissantes.
Références
Kern, David M. et coll. (16 novembre 2017). « Neighborhood Prices of Healthier and Unhealthier Foods and Associations with Diet Quality: Evidence from the Multi-Ethnic Study of Atherosclerosis ». International Journal of Environmental Research and Public Health, vol. 14, no 11, 1394. doi:10.3390/ijerph14111394
Pasieka, C. (12 janvier 2023). « 60% more Canadians per month expected to use food banks, other programs in 2023, survey finds ». CBC. https://www.cbc.ca/news/canada/toronto/60-rise-use-of-food-banks-programs-canada-2023-1.6711094
1 https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5708033/