Avec un taux de criminalité de 33 pour mille habitants et plus de 8 millions de crimes enregistrés depuis 2001, Chicago figure parmi les villes les plus touchées par la criminalité en Amérique.
Quels facteurs influencent la criminalité dans cette métropole ?
Inspiré par des recherches analysant la relation entre l’éducation et la criminalité notre projet explore l’influence des écoles sur la sécurité urbaine.
Des études au préalables ont montré que les caractéristiques des écoles, telles que les activités parascolaires, la nature de l’école et les heures de cours, peuvent avoir un impact significatif sur la délinquance et la criminalité indépendamment du contexte social et démographique.
Notre objectif est de développer un modèle de Machine Learning prédictif qui évalue l’impact potentiel de la construction des nouvelles écoles sur le taux de criminalité sur une période de sept ans, offrant ainsi des perspectives innovantes afin d’explorer comment l’éducation peut influencer la sécurité urbaine à Chicago.
Données utilisées
Notre étude s’appuie sur des données publiques issues du Chicago Data Portal, qui est géré par la municipalité de la ville. Nous avons analysé sept jeux de données relatifs aux établissements scolaires de 2016 à aujourd’hui, ainsi qu’un jeu de données sur les crimes enregistrés de 2001.
L’objectif est d’évaluer l’impact des écoles sur le taux de criminalité dans un rayon de 1 km autour de celles-ci, sur une période allant jusqu’à sept ans.
Pour cela, nous avons créé des jeux de données croisés permettant d’analyser l’évolution annuelle de la criminalité par rapport à l’année de référence 2016 :
Dataset 1 : écoles 2016 ↔ crimes 2017
Dataset 2 : écoles 2016 ↔ crimes 2018
Dataset 3 : écoles 2016 ↔ crimes 2019
Dataset 4 : écoles 2016 ↔ crimes 2020
Dataset 5 : écoles 2016 ↔ crimes 2021
Dataset 6 : écoles 2016 ↔ crimes 2022
Dataset 7 : écoles 2016 ↔ crimes 2023
Regardons les données de plus près : Analyse des corrélations
Pour résumer les corrélations des données analysées, nous pouvons dire que les corrélations entre les variables étudiées et le taux de criminalité sont relativement faibles.
Cela confirme l’hypothèse selon laquelle le taux de criminalité est influencé par une multitude de facteurs autres que les seules politiques internes des écoles.
Toutefois, il semble exister une association plus marquée entre la présence d’écoles dans un quartier, le nombre d’étudiants, et le taux de criminalité plutôt qu’avec les caractéristiques propres à chaque établissement scolaire.
Construction du modèle
Algorithmes utilisés
Nous avons utilisé plusieurs modèles, y compris le Random Forest, SVM et des variantes de Boosting, pour identifier ceux qui prévoient le mieux les taux de criminalité future.
Les modèles les plus performants, jugés sur la base de leur erreur moyenne absolue (MAE) et de l’erreur quadratique moyenne (RMSE), ont été combinés pour créer un modèle composite robuste.
Ce modèle est adapté pour prédire l’évolution de la criminalité sur une période allant jusqu’à sept ans.
Validation
Pour garantir la fiabilité de nos modèles prédictifs, nous avons mis en place une validation croisée sur les modèles, chacun comprenant environ 655 lignes.
Cette technique permet de s’assurer que nos algorithmes généralisent bien au-delà des données d’entraînement et ne mémorisent pas simplement les données (overfitting).
Les résultats de cette validation croisée ont confirmé l’efficacité de nos modèles, avec une diminution des erreurs.
L’analyse de l’importance des variables, issue de nos modèles et tenant compte des corrélations limitées, révèle que la :
le taux de criminalité est davantage lié à la proximité des établissements scolaires qu’à leurs politiques internes comme les codes vestimentaires ou les programmes parascolaires.
Cette divergence par rapport aux articles identifiés souligne l’importance de prendre en compte le contexte local de chaque zone, avec les différents indicateurs démographiques.
Résultats ? Notre modèle offre une double fonctionnalité
Prédit l’évolution du taux de criminalité sur sept ans en se basant sur les données actuelles des écoles. Ainsi, il est capable de projeter l’incidence criminelle de 2024 à 2030 en utilisant les informations de 2023.
2. Simule l’effet de l’ajout d’une nouvelle école dans une zone spécifique (Latitude et longitude) et évalue l’impact sur la criminalité dans un rayon de 1 KM de l’école et les écoles à côté (en se concentrant sur les intersections des cercles).
Le modèle nous permet aussi de faire une comparaison de la situation des crimes avec et sans l’introduction d’une école avec des critères spécifique dans une zone donnée .
Nos simulations révèlent que l’extension des programmes parascolaires peut diminuer l’impact sur le taux de criminalité environnant.
Conclusion
Les résultats obtenus à travers notre modèle fournissent une base solide pour les décideurs locaux de Chicago afin de prendre des décisions en ce qui concerne la construction d’écoles dans des zones spécifiques.
Notre analyse a révélé aussi que l’impact des écoles sur la criminalité locale est complexe et ne repose pas uniquement sur les programmes éducatifs, soulignant l’importance d’intégrer d’autres facteurs lors de la planification de nouvelles infrastructures éducatives (postes de polices, état du quartier …) et de prendre en considération les indicateurs démographiques, la situation financière des étudiants recrutés par chaque école pour plus d’alignement avec les articles sur lesquels nous avons basés nos hypothèses..
Les insights fournis par notre étude offrent des pistes prometteuses pour des stratégies urbaines plus éclairées. Pour aller de l’avant, il serait judicieux d’envisager une approche collaborative impliquant éducateurs, autorités locales, et communautés pour bâtir un environnement plus sûr. Finalement, cette recherche ouvre la voie à des études supplémentaires qui pourraient explorer des interventions ciblées et personnalisées, contribuant ainsi à la transformation positive de Chicago.
Références
Crews, G. (2009). Education and crime. In J. M. Miller 21st Century criminology: A reference handbook (pp. 59-66). SAGE Publications, Inc., https://www.doi.org/10.4135/9781412971997.n8
Gottfredson et al., (2004). « Do After School Programs Reduce Delinquency? »
Willits, Broidy, et Denman, « Schools, Neighborhood Risk Factors, and Crime ».
As we travel through the Earth, we can notice the symphony we hear all around, from the smallest grain of sand, to the faraway planets, to a flower putting roots in the ground, every bird in the sky, every rock, and every raindrop as it falls from the clouds, every ant, every plant, every breeze, and all the seas contribute to this beautiful composition. However, within this natural orchestra, there’s a dangerous problem that demands our attention — ‘Global Warming’.
With the variation of the temperature over recent decades, the agriculture is considered as one of the most affected sectors by global warming. These environmental changes have disrupted the agricultural landscape, affecting both its ecology and economy.
Describing the impact of global warming on agriculture is a bit like exploring a big, diverse world map. Each country in this map has its own distinct climate, crops, and economic structures. This diversity is what makes our world interesting but also makes problem-solving a bit challenging.
This is where the idea of assessing vulnerability for countries takes center stage. Consider Vulnerability as a measure of how susceptible a country is to the challenges posed by global warming in the sector of agriculture.
Some countries may be more resilient, while others may face high risks due to their specific circumstances which make them vulnerable countries. Our challenge: predict the vulnerability of the countries by 2030.
Given the crucial role of non-governmental organizations (NGOs) to address the effects of global warming on agriculture, our primary focus goes beyond identifying the most vulnerable countries, we aim to predict this vulnerability by the year 2030 and foresee the difficulties before they happen. In that way, we can empower NGOs with pivotal information that may serves as initiatives for them to take action and tailor solutions and strategies before the things get too hard for vulnerable countries.
A data-driven definition of Vulnerability
To achieve this ambitious goal, we delved into the world of data. This exploration involves carefully choosing our data from a reliable, open- data source: ‘Food and Agriculture Organization of the United Nations’. We focus on Geography and Economics data, Environment Temperature Changes Data and Agriculture (Crop Yield) Data.
Geography and Economics data1: it underscores information related to percentage of the country area cultivated, Gross Domestic product (GDP), agriculture’s GDP contribution, total renewable water resources, and the national rainfall Index.
Environment Temperature Change Data2: it focuses on temperature change factor for different countries.
Agriculture (Crop Yields) Data3: it involves the production values for specific crop yields. All our datasets are meticulously organized, categorized by country and year.
Inspired by cutting-edge research45, we’ve strategically organized our variables into three main components. Each component serves as a building block for our mission to assess vulnerability in the face of global warming’s impact on agriculture. Let’s delve into these components:
Exposure: How much the country is exposed to different climatic factors.
Sensitivity: How sensitive the agriculture in the area is to certain risks.
Adaptive Capacity: How well the area can adapt to and cope with the challenges posed by global warming.
We then attribute each variable to one of those three components as well as adding new variables to enhance our understanding.
Data Preparation
We started by preparing our datasets and transform them into refined insights in order to make them ready for future work.
Rename the countries and matching them: We begin by renaming and identifying matching countries across all datasets. This is a foundational step when merging all the datasets together.
Handling Missing Data: We address missing data using advanced techniques. The power of KNN imputation or zero imputation comes into play, ensuring our datasets are robust and comprehensive.
Creating New Variables: we succeeded to create new variables as outlined in the data organizing phase. This step play an important role in shaping our analysis.
Data Integration: Merging datasets together seamlessly, we ensure a unified view that enhances the effectiveness of our analysis.
Data Normalization: Recognizing the diverse nature of our variables, we implement normalization techniques for both positive and negative variables. Positive variable indicates a positive relation with vulnerability, while negative variable signify a negative relation. This step ensures fair treatment of climate and agriculture variables for accurate vulnerability assessment.
Assessing Global Vulnerability: How does it Work?
Since our goal is to identify the vulnerable countries in the face of global warming’s impact on the agriculture by 2030, we embark in another journey that requires a deep comprehensive of methodologies for calculating vulnerability, making predictions and providing insightful vulnerability classifications.
Our proposal: a Vulnerability index
The key concept of assessing vulnerability of the countries was to create a new variable called ‘Vulnerability index’(VI). This calculation of this variable is based on two main approach that are taken from two innovative research.
As we organized our variables into three main components— Exposure(S), Sensitivity(S) and Adaptive Capacity (AC), we were seeking to calculate the vulnerability index by identifying the vulnerability of each component separately and than summing them up as illustrated in the figure. To achieve this, we assign weights to each variable attributed to one of these components. The weights represent the relative importance of each variable in the vulnerability index calculation.
We used two methods for assigning the weights: Equal weights method, where each variable is considered equally important and the Principle component Analysis (PCA) method, which involves mathematical techniques to capture the most critical information presenting in our data in a smaller set of components, then assigning weights based on the variables’ contribution to the first principal component. This dual-weighting strategy results in two different vulnerability indices: Equal -weights Vulnerability and Principle Component Analysis (PCA)- weights Vulnerability.
In contrast of the component-based approach, entropy-based approach simplifies the calculation of the Vulnerability Index by considering all the variables together. Measuring uncertainty and information content. The idea is to measure the uncertainty or information associated with each variable. This unique perspective on vulnerability, has a pivotal role in emphasizing variables that offer more certain and informative signals. We ended up after this approach, having Entropy-weights Vulnerability Index.
Making predictions
Having The three main Vulnrability indexes: Equal -weights Vulnerability and Principle Component Analysis (PCA)- weights Vulnerability and Entropy-weights Vulenrability, and recognizing the unique trajectories each country has followed, we decided to delve into the next phase: Prediction. In this step, we aim to predict our three vulnerability indices until the year 2030 by looking into the patterns and trends for each country. To achieve this, we used the ARIMA model, known as its suitability in short term-forecasting and capability in capturing temporal patterns8.
In order to evaluate the performance of the ARIMA model in making predictions for each of our vulnerability indices, we used the MEAN SQUARED ERROR (MSE) and MEAN ABSOLUTE ERROR (MAE) for evaluating our results. Thus, after exploring the results from the MSE measure from the figure below, we notice that the Entropy and PCA methods for calculating the vulnerability have a better performance than Equal Weights method. However, we can see that for all of those methods, we can consider that the error values are practically negligible.
Providing Vulnerability Classification
In this step, we looked forward to classify the countries based on the predictions’ values of each of their vulnerability indices. This involves categorizing countries based on their index values using the Percentile method. Countries below the 25th percentile of their vulnerability index is considered as Relatively non-vulnerable, those above the 75th percentile are considered as Relatively vulnerable , and the rest fall into Neutral Category. This classification provide us with a list of vulnerable countries for both 2020 and 2030 across all indices.
The figures above represent the vulnerable countries we got after extracting the common vulnerable countries from the classifications results of the three vulnerability indices. The countries in brown are the countries that remain vulnerable from 2020 to 2030, the red countries are the new countries that turn into vulnerable in 2030 and the green one is the country that improves its status from vulnerable to neutral by the year of 2030.
To see how the vulnerability index and the countries’ ranking have changed over years, we made an animated bar chart race to illustrate it. You can click here.
Turning Data into Action
As we navigate the impacts of global warming on agriculture, our journey has revealed insights into vulnerability across nations. We got a list of 24 vulnerable countries in 2020 and a list of 27 vulnerable countries in 2030 in which there are some countries that are going to be vulnerable in 2030 such as India, Nigeria, Tanzania and one country that will improve its status by the year of 2030: Brunei. With this information, we propose some strategies to the NGOs to take specific actions to support those countries indeed.
For those countries that remain vulnerable until 2030, NGOs can take some actions to improve their status by developing and implementing sustainable agriculture practices. This includes promoting efficient water management, soil conservation, and the adoption of climate-resilient crop varieties.
Countries that are going to be vulnerable by the year of 2030 need preemptive strategies. NGOs can collaborate to establish early-warning systems, support climate-smart agricultural practices, and facilitate knowledge exchange between nations that have successfully mitigated vulnerabilities. Moreover, NGOs can work on some factors in the Adaptive Capacity Components to avoid vulnerability like expanding cultivated areas, supporting population control measures, and boosting total production through research and innovation.
While our findings provide a valuable insights, acknowledging limitations is key. Expanding datasets, incorporating subjective insights, and focusing on specific crop vulnerabilities are our directions for future exploration. So let’s turn these improvements into actionable steps for a resilient and sustainable agricultural future.
Avec une population dépassant les 8 millions d’habitants, New York City se positionne parmi les villes les plus influentes en Amérique du Nord. Ville dynamique et en perpétuelle mutation, des réglementations ont été instaurées, restreignant le port d’armes à feu dans certaines zones. Néanmoins, ces mesures suscitent des débats au sein de la sphère politique de New York.
Cependant, malgré les restrictions, le nombre élevé de fusillades persiste au sein de la ville, avec plusieurs centaines d’incidents recensés au cours des dernières années. De plus, la constante évolution de la ville rend la planification urbaine de plus en plus complexe au fil du temps. Face à cette réalité, la problématique qui se pose est la suivante :
Peut-on améliorer la sécurité urbaine de New York City grâce à des initiatives d’urbanisation ?
Notre exploration de la littérature scientifique a rapidement corroboré l’existence de liens significatifs entre les crimes et les localisations, l’agencement et les types de bâtiments publics dans une zone donnée 1.
Guidés par cette idée, nous avons choisi d’apporter une solution à la problématique antérieure en exploitant nos compétences en science des données et en apprentissage automatique. L’objectif serait donc de pouvoir estimer l’impact de la construction de nouveaux bâtiments publics sur la criminalité environnante.
À la recherche d’indices
Pour répondre à notre problématique, nous sommes partis de deux jeux de données de la ville de New York. Le premier recense les fusillades dans la ville avec leurs localisations depuis 2006 et comporte un peu plus de 27 000 lignes 2. Le second nous donne accès aux plus de 30 000 bâtiments publics de la ville3 .
Les bâtiments sont regroupés selon 25 catégories différentes en fonction du domaine d’activité qui leur est lié : les plus nombreux sont ceux liés à l’enfance, aux transports et à la santé et les moins nombreux ceux liés aux télécommunications et à la justice. On peut observer ci-dessous quelle typologie de bâtiment est utilisée ainsi que le nombre de bâtiments de chaque type.
La tâche la plus dure à présent consiste à générer notre propre jeu de données pour établir les liens entre les bâtiments et les incidents de fusillade.
Comment lier nos indices entre eux ?
Pour cela, nous avons utilisé une approché basée sur les secteurs. Un secteur est une zone géographique dans laquelle nous recensons le nombre de chaque type de bâtiment ainsi qu’une mesure de la criminalité basée sur le nombre de fusillades.
Théoriquement, les secteurs peuvent adopter n’importe quelle forme, telle que celle des rectangles d’une grille par exemple, et possèdent une intersection qui peut être non-nulle : un chevauchement est donc possible.
Dans notre cas, nous avons utilisé des secteurs circulaires d’un rayon de 500 mètres, dont le centre est un bâtiment public de notre jeu de données Ainsi, pour chaque bâtiment nous obtenons un secteur : nous en avons donc au total plus de 30 000 ce qui sera très utile lors de l’entraînement des modèles.
La manière dont nous avons créé notre jeu de données est schématisée ci-dessous.
Sur cet exemple, nous avons additionné le nombre de tirs dans chaque secteur. En réalité, un traitement a été appliqué à ce nombre. En effet, plutôt que de parler en termes de nombre de tirs, ce qui est peu parlant – que signifierait “Placer un bâtiment ici a diminué le nombre de tirs de 2 sur 15 ans” ? – nous avons décidé de créer un indice évaluant la criminalité, basé sur le nombre de tirs.
Plus particulièrement, nous nous intéresserons à l’évolution de cet indice pour voir s’il est judicieux ou non d’implémenter un type de bâtiment public à un endroit donné : la différence entre avant et après la construction sera-t-elle positive ou négative ?
Pour cela, nous avons redimensionné la variable que nous cherchons à prédire (la mesure de criminalité) pour que ses valeurs soient comprises entre 0 et 1 de la manière suivante :
Appliquons cela à l’exemple vu précédemment. Il nous faut d’abord trouver les secteurs comportant le moins et le plus de tirs, correspondant donc respectivement à xmin et xmax de l’équation. Connaissant cela, nous pouvons maintenant appliquer la formule à toutes les valeurs.
Il nous semble important de mentionner pour les plus curieux d’entre vous que nous avons également choisi d’utiliser un index personnalisé de criminalité car il offre une adaptabilité et une possibilité d’affinement.
On pourrait donc pousser davantage notre réflexion et notre démarche en utilisant toutes ces données en pondérant notre index par le degré de gravité du crime. A titre d’exemple, un vol pourrait compter pour un facteur de 1 et un meurtre pour un facteur de 100.
Cependant, comment pouvons-nous être sûr de l’efficacité de notre outil ?
Élémentaire mon cher Watson
Pour valider la crédibilité de notre approche, nous allons avoir recours à un critère de réussite : si nous vérifions le critère alors notre approche sera considérée comme valide.
Comme critère de réussite, nous allons procéder à une comparaison avec une méthode dite élémentaire (ou naïve) de détermination de l’indice de criminalité. Cette dernière se contente de prédire pour chaque secteur la moyenne de l’indice de criminalité. Mathématiquement, cela donne :
Si l’on reprend l’exemple précédent, l’approche élémentaire devrait prédire :
Comme vous pouvez le constater, cette approche, plutôt médiocre, prédit des valeurs de l’indice de criminalité assez éloignées de la réalité.
Ainsi, si nous sommes plus performants que cette méthode simpliste, nous pouvons considérer que notre approche est fonctionnelle et peut donner lieu à une application concrète.
Pour y parvenir, nous avons sélectionné plusieurs métriques caractérisant l’erreur à minimiser, à savoir la MSE (Mean Square Error), la MAE (Mean Absolute Error) et la RMSE (Root Mean Square Error) ainsi qu’une métrique expliquant la qualité de notre modèle vis-à-vis de la variance, le R2 (R-Squared).
Par conséquent, en comparant ces métriques, nous serons en mesure de démontrer la supériorité de notre outil par rapport à la méthode naïve.
Le raisonnement
Nous avons implémenté différents modèles d’apprentissage automatique de régression pour pouvoir prédire l’indice de criminalité lors de la construction d’un nouveau bâtiment afin d’estimer l’impact sur la criminalité des nouvelles constructions.
Le but est donc, avec notre modèle, d’aider à la prise de décision les responsables de la planification urbaine de la ville de New York.
Nous nous sommes notamment penchés sur des Réseaux de Neurones et des Random Forest. Finalement notre choix s’est porté sur le Random Forest pour plusieurs raisons :
Premièrement, les résultats obtenus se sont révélés très prometteurs.
Ensuite, le temps d’exécution de notre algorithme restait raisonnable.
Enfin, cet algorithme nous permet d’avoir une vision plus précise de ce qui se passe avec notamment la possibilité de voir quelles données influencent le plus les prédictions, contrairement aux Neural Networks.
Le tableau ci-dessous nous montre bien les résultats obtenus à travers nos différents modèles. Nous remarquons aussi par ailleurs que nous validons largement notre critère de réussite.
Métriques
Random Forest
Neural Network
Modèle Naïf
MSE
0.00092
0.00340
0.02581
MAE
0.01519
0.04014
0.12742
R2
0.96446
0.86806
– 0.00005
RMSE
0.03029
0.05835
0.16067
Comparaison des modèles: toutes les métriques d’évaluation classent le Random Forest au premier rang
Comment résoudre l’enquête ?
Imaginons que vous êtes un planificateur urbain et que votre mission serait de construire une maison de jeu pour enfants.
Vous hésitez fortement entre 3 localisations que vous avez identifiées comme favorables selon des critères divers et variés.
Vous souhaitez prendre en compte l’impact de cette nouvelle construction sur la criminalité environnante ?
C’est ici que notre solution intervient.
Nos données nous fournissent l’indice de criminalité avant la construction, puis notre modèle prédit l’indice de criminalité après la construction de la maison de jeu pour enfants. Enfin, nous observons dans la dernière colonne ci-dessus l’évolution de cet indice de criminalité. Dans le cas présent la localisation C semble être le meilleur choix d’implantation si nous regardons le problème à travers le prisme de la criminalité.
Le verdict
Comme résultat, cet outil d’apprentissage automatique se positionne comme un allié de choix dans la prise de décision pour la planification urbaine à New York City, avec des performances élevées et aussi des opportunités d’amélioration.
Les résultats de l’évaluation de notre modèle, le RandomForest, ont surpassé nos attentes initiales. Sa précision remarquable dans la mesure de la criminalité, évaluée à travers les critères des erreurs à minimiser, ainsi que les indications détaillées sur l’importance de chaque caractéristique, confèrent à notre modèle une valeur exceptionnelle.
Cependant, il est essentiel de maintenir une approche prudente dans ce contexte. La planification urbaine est influencée par de multiples facteurs et ne peut se limiter à la seule considération de la criminalité. Par conséquent, bien que notre outil soit efficace, il doit être considéré comme une assistance à la prise de décision plutôt que comme une solution autonome pour les responsables de l’urbanisation.
Prise de recul
Malgré le succès évident de notre solution, nous sommes conscients de l’existence de tendances potentiellement risquées qui pourraient émerger en cas d’utilisation inappropriée de notre solution.
La première de ces tendances est la standardisation du type de construction à travers tous les secteurs, en se concentrant sur le type de construction ayant le plus grand impact sur l’indice de criminalité. Un certain point de saturation serait alors atteint, rendant notre modèle obsolète.
La seconde tendance impliquerait un déplacement à plus ou moins long terme de la criminalité. En effet, déplacer un problème vers une autre localisation ne le résout pas réellement. Cette réalité est malheureusement largement reconnue par ceux qui s’efforcent de réduire les taux de criminalité.
Et après ?
Plusieurs pistes d’amélioration ont été identifiées.
Diminution globale de la criminalité : Nous pourrions aller jusqu’à suggérer des emplacements d’implémentations de bâtiments publics plutôt que de simplement comparer des emplacements suggérés par les planificateurs urbains pour tenter de diminuer globalement la criminalité à New York.
Généralisation du modèle : l’intégration de jeux de données provenant d’autres villes nord-américaines pourrait enrichir notre modèle, entraînant ainsi une amélioration de ses performances et rendant la généralisation à la plupart des grandes villes américaines possible.
Amélioration des performances : la littérature suggère des liens significatifs entre la criminalité et le mouvement de population dans un secteur donné, rendant l’accès à des données de flux particulièrement valorisant.
Amélioration des performances et déplacement de la criminalité : l’inclusion d’informations sur l’année de construction des bâtiments permettrait d’apporter une dimension temporelle à notre modèle, gagnant ainsi en efficacité. Ceci permettrait également de quantifier le déplacement de la criminalité en voyant l’impact historique de l’implémentation des bâtiments sur la criminalité dans la ville.
Références
Urban Planning and Environmental Criminology: Towards a New Perspective for Safer Cities, Cozens, P. M. (2011) ↩︎
Inscrite au patrimoine mondial immatériel de l’UNESCO, la gastronomie française tient une place spéciale dans le cœur des français. L’art du “bien boire” et du “bien manger” est ancré profondément dans nos coutumes, tant et si bien que pour de nombreux français le vin et les repas cuisinés sont indissociables : 90% des repas avec invités ont une bouteille de vin à table, 92% des français associent l’image du vin à un plat, 88% associent le vin à la convivialité et au partage,…ces chiffres de l’IFOP Vins&Société ont de quoi vous donner le tournis !
Mais si, vu de l’étranger, tout français maîtrise cet art de vivre dès la naissance, la réalité est toute autre : plus qu’un art, être capable de proposer à ses convives un repas dont les saveurs sont sublimées par une gorgée de la judicieuse bouteille de vin que vous aurez choisi pour l’accompagner est une science. Qui ne s’est jamais retrouvé dans cette situation : vous invitez vos amis à dîner chez vous, passez de nombreuses heures à étudier les recettes Marmiton à la recherche de l’inspiration, sélectionnez LA recette parfaite, partez en courses, dénichez les ingrédients nécessaires, arrivez enfin au rayon vins de votre supermarché favori et là… c’est le drame. Vous vous retrouvez devant ce mur de bouteilles et vous n’avez aucune idée de laquelle choisir. Blanc pour le poisson, rouge pour la viande : c’est bien beau tout ça, mais ça laisse quand même beaucoup d’options. Finalement, par dépit, vous partez avec une bouteille assez chère (c’est gage de qualité) et dont le design vous aura attiré l’œil. Si vous vous reconnaissez ici, vous connaissez la suite : l’accord entre votre repas et votre bouteille a de forte chance d’être hasardeux.
Sommes nous condamnés à cette incertitude, à ce pic de stress additionnel à chaque grande occasion dont nous sommes les hôtes, nous cuisiniers amateurs n’ayant pas eu la chance de naître avec un oncle sommelier ? Peut-être pas.
Et si notre meilleur ami Marmiton venait à notre rescousse et nous suggérait la bonne bouteille pour la recette que vous venez de précieusement enregistrer dans vos favoris ?
Marmiton à la rescousse…c’est possible ?
Pourquoi diable Marmiton irait vous proposer une telle fonctionnalité ?
Tout d’abord parce que c’est une fonctionnalité qui s’inscrit parfaitement dans les valeurs de l’entreprise, à savoir plaisir, générosité, accessibilité et convivialité.
Ensuite parce que c’est une fonctionnalité innovante non présente chez ses concurrents qui potentiellement améliorerait l’expérience utilisateurs de ses clients (on est quand même pas les seuls à vouloir une telle fonctionnalité, si ?).
Enfin et surtout, parce que cela permettrait de générer de nouveaux revenus de partenariat avec des vendeurs de vins en ligne en échange de nouveaux canaux d’acquisition de clients pour eux.
Et techniquement, c’est réalisable ?
Comment s’y prendrait-on si l’on voulait mettre en place ce type de service ? C’est l’excellente question à laquelle nous avons essayé de répondre. Tout d’abord il faudrait mieux comprendre comment se réalisent les accords mets – vins : sur quels critères gustatifs se réalisent ils ? Quels ingrédients prennent le dessus sur d’autres ? Quel est l’impact de la cuisson des plats ? Comment caractérise-t-on les vins ? Qu’est ce qui différencie une appellation d’une autre ? …autant de questions qui restent sans réponse.
Quelques lectures plus tard, on commence à y voir (un peu) plus clair : les poissons et les viandes sont souvent l’élément décisionnaire de l’accord de vin pour un plat, ces derniers peuvent être caractérisés gustativement par leurs types de cuissons, les vins ont des caractéristiques tanniques, de fraîcheur ou encore de rondeur du fait de leurs cépages, de leur sol…
Si on peut caractériser des recettes et des vins par autant d’attributs, ne pourrait-on pas faire ressortir des corrélations qui permettent de proposer un accord pertinent pour une recette donnée ? Ne pourrait-on pas appliquer des méthodes de Data Science pour recommander ces accords mets-vins ?
Des données, des données et encore des données
Afin de vérifier ces hypothèses, il nous faut des données sur des accords mets et vins. Malgré le bien fondé de l’existence d’une telle base de données (surtout lorsque la période des fêtes approche à grands pas), il s’avère qu’il n’en existe pas. Afin de pallier ce problème, nous avons retroussé nos manches et commencé à constituer une base de données en utilisant une méthode à la limite de la légalité afin de collecter des données sur internet : le scrapping. Ces techniques, tolérées à des fins éducatives ou de recherche, permettent d’utiliser des robots qui parcourent le code des pages web afin de collecter les données qui y figurent.
Après des dizaines d’heures et quelques centaines de lignes de codes, le dataset est constitué :
les attributs des recettes (leur intitulé, la catégorie de plat associé et les ingrédients utilisés) sont collectés sur Marmiton,
ceux des vins (scores sur les goûts notamment le caractère tannique ou frais, les taux de sucre, les cépages, les appellations et leur description “sommelière” notamment) sur Nicolas et V&B,
et les bons accords mets vins sont tirées de l’ouvrage de Olivier Bompass, Les Vins et les Mets en 2500 Accords (on y trouve un nom de recette auquel est associé sa catégorie de plat, la typologie de vins suggérés – e.g. rouge, blanc..-, une description gustative des vins et des appellations correspondantes).
Au travail maintenant !
Data Science : du buzzword aux méthodes concrètes
Dire que l’on va appliquer des méthodes de Data Science n’apporte pas beaucoup d’informations sur la manière de modéliser et traiter le problème. Afin de recommander une bouteille de vin à partir d’une recette, nous avons envisagé différentes traductions en problèmes de Data Science : nous en détaillerons ici deux.
La première consiste à développer un système de recommandations basé sur une analogie au principe de Content-Based Filtering : une recette de notre base d’accords se marie bien à certains vins, la recette fournie par l’utilisateur est similaire à cette recette, donc potentiellement les mêmes vins pourraient lui convenir.
La seconde consiste à effectuer un apprentissage supervisé qui prend en entrée les attributs de la recette et la classifie selon le type de vin qui lui correspond le mieux (à un niveau basique sur la typologie, et pour aller plus loin sur la description gustative).
Ces deux approches nécessitent d’exploiter des données textuelles, notamment celles contenues dans les intitulés des recettes et dans les listes d’ingrédients. Afin de permettre aux algorithmes d’utiliser ces données, il nous a fallu utiliser des méthodes de NLP (Natural Language Processing, un champ du Machine Learning qui permet de traiter les langages) afin de les encoder sous formes de vecteurs pour pouvoir par la suite effectuer des calculs dessus. Concrètement, après un pré-processing des données afin d’isoler les termes les plus porteurs de sens des textes, il s’agit de choisir la méthode de vectorization la plus adaptée à leur contexte pour les représenter : c’est l’étape de « Word Embedding ».
Champagne…?
Les résultats obtenus avec ces deux approches sont plutôt encourageants.
Pour le système de recommandation, la mise en place d’un test d’évaluation de la pertinence des recommandations de recettes similaires pour 20 recettes nous a permis d’évaluer sur 100 points différentes méthodes de NLP appliquées aux intitulés des recettes et aux listes d’ingrédients (pour les plus curieux, la similarité entre les vecteurs est évaluée par la mesure cosinus, pour s’affranchir des problèmes de dimension variable des textes).
Les algorithmes permettant d’obtenir les meilleurs scores tout en affichant une meilleure robustesse – compte tenu des biais de notre système d’évaluation – sont ceux combinant les mesures de similarité sur les ingrédients (avec TF-IDF) et celles sur les intitulés de repas (avec des Bag of Words).
Pour la deuxième approche, appliqué au cas plus simple de la classification sur le type de vin (rouge, blanc, rosé ou effervescent), les algorithmes supervisés ayant montré les meilleures performances sont le Support Vector Classifier et la Régression Logistique, qui parviennent à 75% de bonnes classifications sur notre base de test.
La mise en bouteille, c’est pour quand ?
Si les preuves de concept sont encourageantes, nous sommes encore loin de voir cette fonctionnalité apparaître sur Marmiton (désolé, pour ce réveillon il faudra se creuser la tête pour ne pas fâcher Mamie). Au-delà des problématiques dues au développement de la fonctionnalité sur l’application et à l’hébergement des modèles, différentes étapes peuvent et doivent être mises en place avant de pouvoir lancer un produit.
D’un point de vue algorithmique, le système de recommandation a été évalué partiellement sur la pertinence des recettes similaires proposées mais pas sur l’accord de bouteille obtenu : l’analyse de retours d’utilisateurs permettrait de mieux apprécier la qualité de nos recommandations – et par la même occasion, l’appétence des clients pour ce type de service ! -, tout comme l’évaluation de la qualité des recommandations par un sommelier professionnel. D’autres techniques de NLP peuvent être mises en place pour améliorer la précision ou exploiter d’autres attributs de notre base de données (analyse de sentiments et d’intentions dans la description des vins notamment). Enfin, la base de données pourrait être étendue pour de meilleures performances algorithmiques : la data augmentation, en modifiant certains ingrédients mineurs des recettes, est une piste envisageable.
D’un point de vue business et juridique, selon l’appétence des utilisateurs le modèle de génération de revenus doit être pensé et des accords passés afin de se procurer les droits sur l’usage des données (le scrapping n’est pas légal à des fins commerciales). La suggestion de bouteilles de vin doit également être légalement encadrée pour éviter des accusations de “parasitisme” (une atteinte à l’image d’un produit en voulant utiliser son image de marque, par exemple ici si une bouteille de prestige est associée à un repas “banal”).
D’un point de vue éthique, enfin, la recommandation de bouteilles d’alcool peut inciter à la consommation d’alcool : il faut se conformer aux lois en vigueur sur ces questions de santé publique pour proposer les recommandations dans un format en adéquation avec celles-ci.
Les opinions des utilisateurs quant aux services/biens proposés, par une plateforme prennent aujourd’hui une place de plus en plus importante lors de la phase de réservation ou d’achat. Selon une étude,94% des utilisateurs n’ont pas acheté un produit en ligne suite à la lecture d’avis négatifs. En parallèle, on constate une augmentation du nombre d’avis propres à un produit ou un service, ainsi qu’une grande diversité dans leur contenu.
Pour un même produit, on peut observer divers axes de notations relatifs : pour des logements, on pensera notamment à la propreté, la conformité à l’annonce, etc. Les “reviews” apportent donc bien plus de détails et d’informations précises quant à l’avis vis-à-vis d’un produit/service que ne fournissent pas les notations (généralement une note de 1 à 5). Effectivement, plusieurs notes faibles peuvent correspondre à divers aspects très différents qui ont paru critiques aux utilisateurs. Par exemple, dans notre cas des logements, une personne peut être marquée par la très mauvaise localisation d’un logement alors qu’une autre peut porter une plus grande importance à la propreté. Dans les deux cas, il s’agira d’avis négatifs, dont les notes pourront être semblables, mais qui se perdront dans la masse de commentaires tous aussi disparates.
Il est d’autant plus décisif d’extraire de la valeur de ces “avis utilisateurs”. L’idée à retenir de ce projet est de générer de la valeur pour les utilisateurs à partir de données issues de ces utilisateurs, dans l’idée de construire une boucle vertueuse.
Exploiter les avis utilisateurs, oui … Mais comment ?
La difficulté première de ce projet est d’être en mesure de comparer la pertinence de deux commentaires entre eux au regard de l’intérêt d’un utilisateur. Sur quel aspect va-t-on mesurer la valeur d’un commentaire pour un potentiel acheteur ? Cette réflexion nous a naturellement amenés à la formulation de la problématique suivante :
“Comment définir une relation d’ordre au sein d’un ensemble d’avis utilisateurs relatifs à un produit donné, pour un utilisateur donné ?”
Notons l’importance de la mention « […] produit donné, pour un utilisateur donné ». L’ensemble de nos analyses et constructions de modèles porteront, comme nous le verrons par la suite, sur une simulation respectant le cadre : un produit donné pour une catégorie de produits donnée, pour un utilisateur spécifique.
Cas d’usage
« Archibald souhaite acheter un nouveau produit d’entretien ménager et réalise une recherche sur le site. À ce stade, nous recueillerons l’ensemble des produits disponibles sur la marketplace, répondant à la recherche d’Archibald. La marketplace lui proposera alors, selon son système de recommandation, un certain nombre de produits. À cet instant, après avoir analysé l’ensemble des commentaires disponibles, nous demanderons à Archibald d’indiquer par une phrase les caractéristiques, propres au type de produit qu’il recherche, auxquelles il est sensible. Suite à cela, nous calculerons via notre algorithme de machine learning, un score de similarité entre l’entrée d’Archibald et l’ensemble des commentaires disponibles pour chaque produit. Cette similarité, comme nous le verrons, prendra en compte des notions thématiques (par exemple, Archibald évoque l’odeur du produit d’entretien), mais aussi grammaticale et sémantique. À l’issue de cette brève phase, lorsque Archibald sélectionnera l’un des produits de la liste proposée, nous aurons sélectionné pour lui les 3 commentaires de ce produit les plus à même de satisfaire les critères qu’il a aura entré plus tôt. »
Avant d’être en mesure de réaliser cette « aide à la décision », via une sélection automatique de commentaires pertinents, nous devons satisfaire les besoins suivants : recueillir l’ensemble des commentaires relatifs à un produit, traiter ce texte de manière à appliquer des algorithmes de machine learning, définir une mesure sur laquelle nous comparerons deux commentaires (relation d’ordre).
Notre proposition de valeur
Une fois que nous serons en mesure de comparer divers commentaires au regard de l’intérêt d’un utilisateur, nous pourrons nous présenter comme un tiers de confiance, transparent, apportant une aide à la décision aux clients souhaitant acheter un produit. Notre apport de valeur du côté du site intégrant notre solution est l’augmentation de la satisfaction client via une navigation facilité par la lecture de commentaires sélectionnés spécifiquement. Les utilisateurs trouveront plus rapidement les informations qu’ils cherchent dans les reviews, et gagnerons du temps sur un site équipé de notre solution. Les clients seront plus fidèles au site et plus propices à consulter plus de pages. De cette satisfaction pourra suivre une hausse potentielle du taux de vente.
Plongée au cœur des reviews, l’incroyable récit de notre périple !
Choix du dataset…
Nous avons choisi notre dataset de manière à garantir l’universalité de notre produit, ie ayant pour objectif de pouvoir s’intégrer de manière rapide et simple sur tout type de site de e-commerce. Nous avons donc cherché un dataset contenant au moins les champs suivants : identifiant d’un avis utilisateur, identifiant du produit relatif à l’avis, contenu textuel de l’avis utilisateur. D’autres champs pourront être utilisés pour améliorer le produit, mais dans sa première version nous nous en tenons à cela.
Le prototype que nous avons construit est basé sur une base de données fournie par datafiniti.co.
La base de données utilisée pour mener à bien le prototype est constituée de 70260 commentaires utilisateurs relatifs à un ensemble de 600 produits différents vendus sur 14 sites.
… du site…
Étudions rapidement la distribution des commentaires en fonction du site.
On observe la nette prédominance des sites Walmart (~ 45% du total) et Bestbuy (~ 36% du total).
Étudions alors notre variable d’intérêt : le contenu textuel des commentaires : Walmart apparaît comme le site le plus intéressant pour la suite de notre projet. En effet, les commentaires sont deux fois plus longs, avec une médiane à 14 mots contre 7 pour Bestbuy. Ainsi que des catégories plus intéressantes, car plus propices à trouver des commentaires plus objectifs. Bestbuy contenant majoritairement des commentaires de produits liés à l’audiovisuel (films, musique, …) .
Pour la suite du prototype, nous avons donc uniquement sélectionné les commentaires utilisateurs relatifs aux produits vendus sur Walmart.
… de la catégorie…
Plus spécifiquement dans la catégorie des produits d’entretien ménager (« Household Essentials ») contenant environ 8 552 avis (en ayant retiré les avis en doublons).
… et enfin, du Produit !
En outre, pour l’évaluation du modèle, décrite par la suite, nous utiliserons le produit sélectionné ci-dessous. Pour rappel, comme mentionné dans la problématique, notre produit réalise une sélection de commentaires pour un utilisateur et un produit donnés.
Rentrons dans le cœur du projet : de la donnée brute à la sélection de commentaires !
Traitement des textes
La première étape, sur laquelle repose en grande partie l’efficacité des algorithmes évoqués plus tard, consiste au traitement des données textuelles des commentaires utilisateurs de sorte à les rendre « compréhensibles » par des modèles de machine learning. Pour cette phase, nous utiliserons la librairie de référence « Spacy » sous Python, connue pour ses modèles de traitements de textes certes complexes, mais bien plus performants que des modèles issus de l’autre librairie de référence « NLTK ».
Le pre-processing peut être résumé par le schéma suivant :
« Nous adorons tous la Data Science, mais encore plus les produits d’entretien ménagers » → « nous, adorons, tous, data, science, mais, plus, les, produits, d’entretien, ménagers ».
Passons ensuite à nos modèles. Dans le but énoncé plus haut – la similarité entre l’entrée utilisateur et notre base de commentaires
Comment quantifier la similarité entre deux textes ?
Une similarité entre deux textes peut-être de plusieurs types : sémantique, grammaticale, thématique ou autre. Dans notre cas, nous procédons en deux temps.
D’abord en étudiant la similarité thématique. Nous extrayons les thèmes principaux de tous les commentaires du produit donné, pour ainsi pouvoir sélectionner les commentaires dont les thèmes principaux sont très proches des thèmes extraits de l’entrée utilisateur. Pour cette première étape, nous utilisons un LDA.
Ensuite, en étudiant la similarité sémantique nous cherchons parmi les commentaires en sortie de notre LDA, les 3 étant le plus sémantiquement proches de l’entrée utilisateur. Pour cela, nous utilisons un doc2vec avec pour mesure de similarité, la similarité cosinus.
Etape 1. Extraction des thèmes principaux
Rapide explication du LDA (Latent Dirichlet Allocation). Le LDA fait parti des modèles d’extraction de topics ou « Topic modeling » . Ces algorithmes partent du postulat qu’il existe, au sein d’un corpus de textes, des thèmes latents. Ainsi, ces modèles attribuent à chaque texte un pourcentage d’appartenance à chacun des thèmes détectés au sein d’un corpus.
Nous appliquons donc notre meilleur modèle de LDA, entraîné sur un corpus de commentaires relatifs à la catégorie « Household Essentials », pour attribuer à chaque commentaire des coefficients d’appartenance aux 6 topics identifiés. Nous faisons de même pour l’entrée utilisateur. Les commentaires les plus similaires thématiquement (quantile 75%) sont envoyés en entrée du modèle suivant le doc2vec.
Cette étape, effectuée en amont de notre Doc2vec est primordiale dans notre calcul de similarité. Plutôt que de longues explications, voici un exemple pour mieux comprendre : (a) Si l’on utilise un Doc2vec (de même pour Word2vec) pour prédire les documents similaires à un texte contenant le mot « French », on obtiendra probablement des documents contenant « German » ou « English » , car ces mots sont utilisés dans des contextes grammaticaux similaires. (b) Si l’on utilise un LDA en amont et que l’on cherche à prédire les mots similaires à un texte contenant le mot « French » et évoquant le thème de la « nourriture », on obtiendra cette fois non plus des documents contenant « German » ou « English » mais plutôt « baguette », « vin », « boulangerie ».
Etape 2. Calcul de similarité sémantique entre textes
En sortie de l’étape précédente, nous avions donc plusieurs commentaires qui ont été sélectionnés. Ensuite parmi ces commentaires on sélectionne les 3 commentaires ayant les plus hauts scores de similarité sémantique.
Une fois que deux textes sont représentés sous forme de vecteur grâce au doc2vec, il est possible de calculer leur similarité cosinus.
Nous sommes donc à présent en possession d’une relation d’ordre !
Notre sélection actuelle n’est basée que sur ce score de similarité. Des améliorations ont bien entendu été envisagées, notamment l’ajout de features telle que la longueur du message, le nombre de verbes/adjectifs, etc. Nous avons également songé à entraîner un algorithme supervisé dont la variable à prédire est l’utilité d’un message (ie champ « ce commentaire vous a été utile ? »).
Comment évaluer notre sélection ?
Du non supervisé au supervisé
Notre modèle étant non supervisé, nous n’avons pas accès à une méthode directe permettant de l’évaluer. En effet, nous donnons un top 3 des commentaires les plus pertinents, mais il est impossible de garantir que ce sont bien ceux qu’il fallait choisir dans l’ensemble disponible. Pour pallier cela, une approche classique consiste à rendre le problème supervisé afin de pouvoir l’évaluer. Nous avons alors aléatoirement extrait 100 commentaires d’un produit donné, puis nous avons écrit 100 entrées utilisateurs. Nous avons ensuite associé à chacune des entrées les 3 commentaires que nous jugions les plus pertinents parmi ceux extraits. Grâce à cet « étiquetage » manuel, nous avons donc les entrées et les sorties du modèle qui devient alors supervisé. Finalement, nous comparons le résultat renvoyé par le modèle à celui que nous avons indiqué.
Qu’en est-il des résultats ?
21 % des commentaires sélectionnés par notre modèle sont jugés pertinents par les utilisateurs.
Comme on peut l’imaginer assez naturellement, les scores fournis plus haut peuvent être améliorés en ne considérant pas un top 3, mais un top 5 ou plus. On constate effectivement qu’en augmentant le nombre de commentaires à prédire, on a potentiellement plus de chances de choisir les bons.
Ces scores sont relativement faibles, mais il est difficile d’en conclure quoi que ce soit. En effet, la sélection de commentaires pertinents est un sujet très subjectif. Ainsi, notre test est biaisé par la personne qui a écrit et labellisé les entrées utilisateurs. De plus, notre procédure de test est appliquée sur un faible volume de données qui ne suffit pas à conclure.
Déploiement, commercialisation
Notre produit peut s’intégrer sous forme d’API au sein du site d’un partenaire. Pour faire ses preuves en utilisation, nous pouvons fournir un accès gratuit à nos services durant un période de 2 mois, période durant laquelle notre solution sera soumise à un A/B test dont l’objectif sera de quantifier l’augmentation d’indicateurs de performance utilisés par l’entreprise (le taux de conversion/vente semble pertinent). Après une période de tests, notre outil sera vendu sous forme d’abonnement mensuel, dont le tarif sera calculé sous forme d’un pourcentage du nombre de ventes réalisées.
Simulation de déploiement
Les gains potentiels grâce à notre solution sont aujourd’hui difficilement évaluables. Cependant, l’essor des plateformes d’achat en ligne nous garantit que de plus en plus de gens consommeront en ligne, et seront donc sensibles aux commentaires des autres utilisateurs. En considérant que notre modèle aura une influence sur le volume des ventes d’un produit donné, nous pouvons estimer le gain pour des plateformes à différentes échelles. Ci-dessous, un exemple avec le produit “Clorox wipes” vendu 5.99$ sur walmart.com.
Depuis quelques années, le taux de criminalité global à New York a décliné, contrairement à d’autres grandes villes des USA. Pour autant, le taux de “hate crimes” (meurtres, viols, assauts graves) a beaucoup augmenté ces dernières années : 3,3 millions de victimes en 2018 contre 2,7 en 2015.
A la suite de ces constatations, le maire de New York, Monsieur Bill de Blasio, a lancé “the office for the prevention of Hate Crimes”, ou aussi appelé le MOCJ (Mayor’s office of Criminal Justice), en été 2019 afin d’empêcher ce type de crimes.
Pour aider le maire de New York, nous voulons créer un outil d’aide à la décision. Ce dernier permettrait de prédire l’impact de la modification de certains éléments, ou couples d’éléments, sur la criminalité pour chaque quartier de New York.
Quelles données utiliser ?
Nous avons cherché des données Open Data qui pourraient être liées à la criminalité, suite à la lecture de documents scientifiques traitant du sujet. Nous nous sommes ainsi concentrés, en premier lieu, sur des données socio-démographiques. Nous avons trouvé 7 variables d’intérêt comprenant le nombre d’habitants, le taux de personnes nées à l’étranger, le taux de pauvreté, le taux de chômage, le taux de diversité ethnique et le taux de jeunes déconnectés, par quartier de New York et par année entre 2000 et 2018.
Cependant, il est difficile pour le maire de mener des actions qui auront un impact direct sur ces variables. Comment avoir un impact direct sur la pauvreté ou le taux de chômage ?
Nous avons donc cherché d’autres sources de données qui permettaient d’avoir des renseignements notamment sur le nombre de commissariats, sur les infrastructures présentes dans différents quartiers et sur les évènements sociaux. Ce sont sur ces critères que le maire de New-York pourra influer.
Que faire de toutes ces données ?
Dans un premier temps, il s’agissait d’effectuer une préparation des données, qui a pris beaucoup de temps. En effet, le défi était de fusionner 11 bases de donnés puis de les regrouper en un seul dataset qui nous permette de répondre à notre problématique.
Le dataset final regroupe les données par quartiers et par années entre 2006 et 2018.
Pour fusionner les différents datasets, nous disposions des coordonnées GPS des événements et infrastructures. Il fallait donc faire correspondre ces coordonnées GPS aux Community District auxquels elles appartenaient. Cela a été effectué à l’aide d’une librairie Python de traitement des données géospatiales : geopandas. La ville de New-York met également à disposition des fichiers contenant les formes de chaque Community District, ce qui a permis d’effectuer l’opération.
Suite à ce travail nous nous sommes retrouvés avec le dataset suivant:
Mais la préparation des données ne s’est pas arrêtée là. En effet, notre problématique étant d’observer l’impact de certaines actions sur la variation de crime dans un quartier, nous avons décidé de faire d’autres modifications au dataset afin que notre étude soit plus adaptée à nos besoins.
Dans un second temps, nous avons donc décidé d’ajouter des colonnes qui expriment les variations de données d’une année sur l’autre plutôt que seulement les chiffres de l’année en cours. Par exemple, à partir de la colonne “Commissariats” on ajoute la colonne “Différence de commissariats” qui correspond au nombre de commissariats sur l’année étudiée moins le nombre de commissariats de l’année précédente.
Une fois toute cette base de données regroupée et afin d’avoir une première idée des influences de certaines variables, nous avons fait une première étude de corrélation. Nous avons retrouvé des corrélations plutôt intuitives et cohérentes. En temps normal ces études de corrélations permettent de supprimer les variables redondantes. Mais dans le cadre de notre modèle nous n’avons pas jugé utile d’en retirer, permettant à notre client d’avoir plus de choix de modification de données lors de la simulation de l’évolution du nombre de crimes dans un quartier.
La base de donnée finale est donc de 767 lignes par 55 colonnes.
Un problème de classification …
Plutôt que de prédire le nombre de crimes d’un quartier d’une année sur l’autre nous avons décidé de prédire la variation de crimes et de la regrouper en 3 classes : Augmentation, Diminution ou Stagnation du nombre de crimes par rapport à l’année précédente. La stagnation correspond à une variation du nombre de crime inférieure, en valeur absolue à 200.
Deux algorithmes nous intéressent tout particulièrement : l’arbre de décision et la régression logistique. En effet, ces deux algorithmes ont la particularité d’être facilement lisibles, ils ne sont pas des boîtes noires. Il est donc possible d’extraire les règles permettant de mener à la décision de l’appartenance à une catégorie ou à une autre.
Evaluation de nos modèles
Algorithme
Temps d’exécution
Précision
Aire ROC
Arbre de décision
< 1 seconde
55%
0.61
Random Forest (50 arbres)
~ 1 seconde
75.9%
0.77
Régression
Logistique
< 1 seconde
78.1%
0.51
Ainsi, l’algorithme de Random Forest est le plus performant dans notre étude (Aire ROC bien supérieur à 0.5, qui correspond à une classification faite au hasard).
De plus, il est toujours intéressant d’étudier l’arbre de décision sachant que cela nous permet d’identifier des associations de variables influençant la variation de crime dans le même sens pour aider à jouer sur les facteurs pour trouver les bonnes combinaisons de facteurs réduisant le crime.
Des scénarios prometteurs
Ainsi, nos modèles nous ont permis d’identifier des facteurs influençant la criminalité positivement et négativement. Nous avons donc simulé différents types de scénarios pour visualiser l’impact sur la criminalité.
Nous avons réalisé un premier scénario augmentant le nombre d’évènements sociaux de 30% : la criminalité diminuerait dans 3 quartiers.
Avec un deuxième scénario, nous avons cette fois augmenté le nombre d’événements sociaux de 10% et les infrastructures sociales de 2% : nous remarquons alors que la criminalité baisse dans 10 quartiers. Nous conseillons donc au maire de se concentrer en premier temps sur ces quartiers et d’y mettre en place d’avantage d’évènements sociaux.
Des améliorations sont tout à fait envisageables. Nous pourrions déterminer des associations de variables plus précis à l’avenir pour permettre la réalisation de scénarios encore plus efficaces pour la diminution du crime à New York. De plus, il serait intéressant de réaliser les modèles sur des groupes (clusters) de quartiers afin d’avoir des résultats encore plus précis selon le type de quartier. En effet, les variables n’influencent pas les quartiers de la même manière.
La somnolence au volant représente un véritable danger pour les automobilistes. En effet, une étude de l’American Automobile Association démontre que le risque est conséquent car plus d’un accident mortel sur six est lié à l’assoupissement au volant.
De plus, les conséquences économiques sont lourdes avec un préjudice estimé à plus de 30 milliards de dollars. C’est d’autant plus le cas pour les sociétés de transport routier dont les conducteurs sont confrontés à un haut facteur de risque puisqu’ils travaillent pendant de longues durées et souvent de nuit. Effectivement, une étude indique que près de 20% des conducteurs professionnels interrogés affirment s’être déjà endormis au cours du mois courant.
Une start-up imaginaire désireuse de sauver des vies
Pour être fidèles aux considérations business présentes en Data Science, nous nous sommes projetés dans le futur en start-upers, souhaitant mettre en pratique nos compétences pour répondre à des problèmes du quotidien. Ainsi, notre jeune start-up Rouse envisage-t’elle de développer une application mobilisant le Machine Learning pour exploiter les données d’un bracelet connecté porté par le conducteur qui surveillera ses constantes biologiques et l’alertera si jamais elle détecte un assoupissement.
Le business plan de Rouse est divisé en deux phases de déploiement. En effet, il s’agira dans un premier temps de concevoir un modèle sur des données académiques obtenues au cours d’étude sur le sommeil qui permettra de valider la faisabilité d’un tel projet. Dans un second temps, nous déploierons cette solution au sein d’un environnement de test représentatif du cas d’utilisation réel.
Des données pertinentes … issues d’Apple watches !
Le jeu de données utilisé provient de la banque de données open data en ligne PhysioNet, spécialisée dans les données physiologiques. Il a été collecté au département de Neurologie de l’université du Michigan via une étude sur le sommeil et se présente la forme de signaux de mesures de rythme cardiaque (battements par minute) et d’accélération (mesurées en g) ainsi que le nombre de pas. Ces données ont été collectées en faisant porter des Apple Watch à des participants qui les surveillaient pendant leur sommeil.
Le volume des données est assez grand pour permettre à la fois d’entraîner un modèle et de l’évaluer. En effet, les durées d’enregistrements sont de 7 heures en moyenne par patient, avec 75% des patients ayant au moins 8 heures d’enregistrement! Voici ci-dessous une visualisation des données à notre disposition sur une fenêtre de trente secondes :
Le patient s’endort, puis il y a un court épisode durant lequel il se réveille puis se rendort tout de suite après : on peut voir le changement dans le rythme cardiaque qui augmente puis revient à des valeurs précédentes. Cela indique que, dans une certaine mesure, les données sont pertinentes pour répondre à la problématique et sont suffisamment représentatives pour mettre en exergue une transition entre un état éveillé et un état de sommeil léger c’est-à-dire un assoupissement.
Passer le balai sur les mauvaises données
Allez hop ! Il est temps de nettoyer les données pour par la suite mettre en place notre modèle. Elles sont sous forme de fichiers .txt différents par patient et par attribut. Il a donc fallu assembler les données des différents attributs pour un même patient puis aussi rassembler les données de tous les patients confondus.
Ceci n’a pas été simple car les données ne sont pas toutes exactement de la même forme, ce qui est indispensable afin de faire une jointure et générer des attributs. L’idée est donc de mettre en forme les données du rythme cardiaque, leur attribuer le bon label, et de mettre les données d’accélérations sous la même forme pour permettre la jointure.
Place à nos algorithmes de Machine Learning
Des considérations liées à la nécessité de classifier en temps réel et ne pas avoir à traiter les flux entrants nous ont menés à implémenter un modèle de forêt aléatoire (RandomForest), et dans un deuxième temps des modèles de Naive Bayes et SVM.
Nous avons opté pour les deux critères d’évaluation suivants :
Précision : elle permet de qualifier les performances de la classification par le modèle
Rappel pour les labels 1 et 2 : il est crucial de maximiser la détection des vrais positifs qui correspondent à un état d’endormissement (passage de l’état 1 à 2).
Parmi les modèles de classifieurs entraînés, nous pouvons conclure avec certitude que Random Forest est le plus adapté. Comme nos données sont des signaux physiologiques collectés par un dispositif électronique, nous devons tester notre modèle face au bruit éventuel qui peut s’infiltrer. Nous avons donc classifié des données auquel on a ajouté du bruit, pour différents SNR (rapport signal à bruit) et nous avons comparé les performances obtenues par le modèle que nous avons sélectionné : le Random Forest. Les résultats illustrés ci-dessous sont des résultats auxquels on pouvait s’attendre : plus le SNR est bas (plus l’intensité bruit dépasse celle du signal) plus les performances du modèle faiblissent.
On se prépare pour la suite !
Ces résultats prometteurs nous permettent de suivre le déroulement prévu du projet et donc de planifier une phase de déploiement qui nous servira à suivre la performance du modèle dans des cas réels.
Il sera alors nécessaire de porter notre attention sur de nouvelles considérations, en particulier le fondement juridique. En effet, jusqu’alors nous avions utilisé une base de données sous la licence permissive OPEN DATA ODC-BY 1.0. Les personnes soumises à l’enregistrement de leurs données biologiques étaient Américaines ; conséquemment la conformité à la RGPD n’était pas requise.
Néanmoins, le cadre légal sera plus contraignant une fois le dispositif mis en place puisqu’il faudra respecter la RGPD. Plus spécifiquement, le signal physiologique qu’est la fréquence cardiaque possède un degré de protection supplémentaire en tant que donnée sensible par rapport aux données conventionnelles qui nécessite de mettre en place une solution de cryptographie adéquate.
Rouse se devra également de trouver un financement pour poursuivre un tel déploiement. Nous estimons que les résultats préliminaires encourageants permettront de convaincre des investisseurs de placer leur confiance en notre projet.
Le diabète, maladie souvent sous-estimée, touche aujourd’hui plus de 400 millions de personnes dans le monde et l’OMS prévoit plus de 600 millions de cas d’ici 2040. Cette progression est une réalité encore trop peu connue à l’heure actuelle, qu’il ne faut pas négliger. En effet, plus de 5 millions de personnes sont décédées du diabète en 2015 ce qui place cette maladie comme forte cause de mortalité dans le monde. De plus, il y a une réelle problématique concernant la connaissance de la maladie car 1 personne diabétique sur 2 ne sait pas qu’elle est atteinte. C’est pourquoi, il y a un véritable besoin de sensibilisation et de prévention de cette maladie, encore trop ignorée à ce jour.
Quelques chiffres clés
Qu’est-ce-que le diabète ?
Le diabète est une maladie liée au mauvais traitement du sucre par l’organisme, qui conduit à une hyperglycémie et donc à un taux élevé de glucose dans le sang. Lorsqu’on mange des glucides, ils sont transformés en glucose. Les cellules du pancréas détectent alors une augmentation de glycémie et sécrète en conséquence des hormones (de l’insuline) qui permettent de réguler le taux de glycémie. Chez les diabétiques, ce système de régulation n’est pas présent. On considère qu’une personne a du diabète si son taux de glycémie dépasse 1.26 g/l à deux reprises dans la journée ou est égale ou supérieure à 2 g/l à n’importe quel moment. Il existe deux types de diabètes : un type I, maladie auto-immune qui apparaît dans la jeunesse et un type II qui apparaît plus tardivement, souvent après 40 ans et qui peut être lié à une mauvaise hygiène de vie. Le premier type, beaucoup plus rare, est souvent très rapidement diagnostiqué dès le plus jeune âge. A l’inverse, le second type de diabète représente plus de 90% des diabétiques et il est souvent inconnu des personnes atteintes. C’est donc le diabète de type II qui sera le sujet de notre étude.
Mais quelles sont les causes de cette maladie ?
De nombreux facteurs de risque sont souvent cités quand on parle de diabète. Le tabac, l’alcool, le cholestérol, l’alimentation, la pratique de sport, la sédentarité constituent un panel d’exemples de déclencheurs probables du diabète.
Notre projet, d’où proviennent nos données ?
Pour palier à ce manque de prévention et sensibilisation, nous avons voulu créer un outil permettant d’évaluer le risque d’une personne de développer le diabète.
A l’aide d’un questionnaire d’une dizaine de questions, nous pouvons prédire votre risque de devenir diabétique. Cette campagne de prévention permettra ainsi de sensibiliser les gens afin qu’ils changent si besoin leurs habitudes alimentaires, sportives, ou qu’ils prennent rendez-vous pour vérifier leur état de santé. En effet, comme pour de nombreuses maladies, un dépistage précoce permettra un meilleur traitement.
Afin de suivre et de détecter tout type de maladie, l’organisme américain Centers for Disease Control and Prevention met en place tous les ans un sondage auprès de ses citoyens qui renseigne de leur état de santé, de leur suivi médical ou encore de leur hygiène de vie. Le BRFSS (Behavioral Risk Factor Surveillance System), l’entité responsable de ces travaux, recueille des données dans les 50 États ainsi que dans le District de Columbia et dans trois territoires américains. BRFSS réalise plus de 400 000 entrevues avec des adultes chaque année, ce qui en fait le plus important système d’enquête sur la santé mené de façon continue au monde. C’est cette base de donnée que nous avons utilisée durant ce projet.
Nous tenons à préciser que les données utilisées dans le cadre de cette étude sont anonymisées afin de préserver la vie privée des gens. De plus, toutes les données produites par les agences fédérales sont dans le domaine public (cf section 105 of the Copyright Act), ce qui nous a permis d’utiliser librement et légalement ces informations.
Description de notre dataset
Les individus interrogés ont été sélectionnés au hasard. On obtient un échantillon assez représentatif de la population américaine notamment vis à vis du nombre de diabétiques. Ces graphes présentent la répartition des individus par genre et âge.
Nous avons donc développé plusieurs algorithmes basés sur ce dataset permettant d’évaluer le risque d’un individu de développer du diabète.
Pour mener à bien ce projet, nous avons suivi une démarche rigoureuse, commençant par la compréhension du besoin métier jusqu’à la mise en place de notre solution.
Ce schéma présente ainsi les différentes étapes de ce projet :
Préparation des données et analyse des données
La compréhension et la préparation des données a sûrement été le plus gros challenge de notre projet. En effet, les données brutes récupérées comportaient environ 330 variables encodées qui correspondent aux différentes réponses recueillies lors du questionnaire. Nous avons choisi de travailler sur les données de différentes années soit de 2011 à 2016. En agrégeant les données, nous obtenons un unique fichier de 2.821.503 lignes.
Nous avons en premier lieu étudier chaque colonne en utilisant une documentation d’explication des résultats du sondage, fourni par le BFRSS. La compréhension des variables nous a permis de sélectionner 100 colonnes. Les deux critères de sélection sont : Le nombre de valeurs manquantes pour la colonne concernée et la pertinence de la question. En effet, certaines variables avaient très peu de données ou n’apportaient rien à notre étude. Nous avons donc pu faire un premier tri.
Ensuite, nous avons étudié de plus près les relations existantes entre les différentes variables en utilisant une matrice de corrélation. Cela nous a permis d’affiner notre sélection. Nous avons utilisé 28 colonnes afin de construire des attributs pertinents.
Quels algorithmes ?
Nous nous sommes attaqués ici à un problème de classification, il s’agit de déterminer à l’aide de différents paramètres (taille, poids, fréquence de sport, etc…) si un individu risque d’être diabétique ou non.
Il existe de nombreux algorithmes de machine learning pour résoudre ce genre de problématique. Nous avons décidé de nous pencher sur 4 algorithmes qui sont en général particulièrement efficace pour ce type de classification binaire : la régression logistique, l’arbre de décision, le random forest et le support machine vector.
Comment évaluer nos modèles ?
Il existe plusieurs manières d’évaluer ce type de modèle.
Dans le cadre du machine learning et des algorithmes de type supervisé, on sépare souvent le dataset en deux parties (70%-30%), un qui servira à créer notre modèle (entraînement) et un deuxième à tester notre modèle.
Une première manière simple et efficace d’évaluer notre modèle est de regarder la matrice de confusion et ses métriques :
La courbe de ROC prenant en argument la sensibilité et la spécificité permet également d’évaluer un modèle à sortie binaire. On réalise la courbe de ROC de notre algorithme et on calcule ensuite l’aire sous la courbe (valeurs comprises entre 1 et 0.5). Plus l’aire est proche de 1 plus le modèle est pertinent, une aire proche de 0.5 sera équivalente à la probabilité de lancer une pièce et de deviner si le résultat sera pile ou face, autrement le hasard.
Voici un tableau récapitulatif des résultats des algorithmes réalisés avec le langage de programmation R (temps d’exécution obtenus sur une machine bureautique basique en 2018).
Algorithme
Temps d’exécution
Précision
Aire ROC
Régression logistique
7 minutes
91,69%
0,91
Arbre de décision
3 secondes
90,59%
0,5
Random Forest (250 arbres)
37 minutes
94,31%
0,92
Support Vector Machine
5 heures
90,58%
0,5
On constate donc que le Random Forest est l’algorithme le plus adapté à notre projet.
Une solution fiable et efficace
Afin de constituer le questionnaire de notre outil, nous avons cherché les variables qui influent le plus notre prédiction. Ces facteurs de risque sont présentés par ordre d’importance, ordre trouvé grâce à nos algorithmes.
Améliorer les résultats grâce à des technologies Big Data
L’exécution de certains algorithmes comme le Random Forest est assez coûteuse en temps, comme on peut le voir sur dans le tableau précédent. C’est pourquoi, nous nous sommes intéressés à l’utilisation d’une plateforme Big data pour réduire ce temps d’éxécution.
L’Institut Mines-Télécom et le GENES ont mis en place une plateforme de traitement de données massives : “Teralab”. Elle a une capacité de traitement importante avec une mémoire vive de plusieurs teraoctets et permet un traitement distribué des données: notre algorithme ne tourne plus sur une seul machine mais sur plusieurs à la fois d’où une réduction de son temps d’exécution.
Nous avons donc décidé d’utiliser cette plateforme pour notre projet. Pour cela, nous avons réécrit nos algorithmes en un autre langage : PySpark. Et le résultat est sans appel, nous obtenons un gain d’apprentissage de 9 !
Notre algorithme permet de prédire le risque d’avoir du diabète. Cette solution peut être utilisée afin de sensibiliser des individus au sein d’une population. Nous avons pensé développer une interface web permettant de recueillir les habitudes de vie d’une personne grâce à un questionnaire. Notre algorithme va ainsi pouvoir évaluer les probabilités que cette personne soit atteinte de cette maladie. Dans une version ultérieure, l’algorithme pourrait aussi faire des recommandations pour diminuer ce risque.
D’autres améliorations sont possibles. Il est probablement intéressant d’utiliser un dataset plus adéquat au problème pour l’apprentissage de l’algorithme. En effet, des informations sur l’hérédité pourraient améliorer la précision des résultats. Il pourrait aussi être judicieux de faire la distinction entre les différents types de diabètes.
Wikipedia est non seulement l’un des sites Web les plus visités, mais aussi l’une des plus grandes plateformes collaboratives du Web 2.0. Des millions d’éditeurs participent librement à l’élaboration et l’amélioration du contenu. Cependant, comme beaucoup d’autres choses dans la vie, la collaboration n’aboutit pas toujours de façon normale, surtout dans des articles plus controversés qui sont sujets à ce qu’on appelle les “Edit wars”.
Pour un visiteur de Wikipedia, Il est évident que par rapport à des pages comme “Pumpkin” et “Rivière” qui sont paisiblement développées, ils en existent d’autres qui sont très controversées : “Homosexualité” ou “Première guerre mondiale” à titre d’exemple. Or par souci de neutralité ces pages nécessitent d’être suivies et gérées par les administrateurs.
Notre intérêt est d’optimiser la détection de ces pages controversées afin de réduire les temps d’interventions, en mettant en œuvre un processus d’analyse de données.
Pour ce faire, nous avons travaillé sur un dataset de wikipedia où sont stockées les traces de révisions (modifications) des pages.
Chaque trace correspond à la version d’une page à un instant donné et contient des informations sur l’éditeur (nom ou adresse ip), la page (identifiant, titre, longueur en bytes …) et la modification qui a été faite (i.e. un code caractérisant de façon unique le contenu de la page après la révision qu’on notera dorénavant sha1).
Deux types d’actions sont possibles pour éditer une page wikipedia : 1) Faire sa propre modification en ajoutant/modifiant des passages du document ; 2) Faire un revert, c’est-à-dire annuler une ou plusieurs modifications faites sur un article pour revenir à une version antérieure.
Préparation à la guerre
Avant de commencer à élaborer des algorithmes complexes pour identifier les pages en conflit d’édition, découvrir les données et les préparer pour le traitement était une étape indispensable du projet.
Après avoir pris connaissance de la structure des traces de révisions et identifié le sens de chaque variable, nous avons procédé à une étape de préparation et sélection de données nécessaires pour la réalisation des objectifs de notre projet. En effet, Wikipedia fournit une base de données assez complète au niveau d’édition de pages Wiki où on trouve toutes les métadonnées de chaque page, e.g : taille de la page après chaque édition, titre, auteur/ éditeur, identifiant de la page, … etc.
Comme les données sont collectées de façon automatique, elles peuvent présenter des valeurs aberrantes (par exemple : identifiant de la page = 0). Il s’avérait donc nécessaire de commencer par vérifier et nettoyer le jeu de données avant d’appliquer une procédure analytique, en commençant tout d’abord par la suppression des données incomplètes (par exemple : Valeurs N/A ou NULL) et ensuite la création de nouvelles variables/indicateurs permettant de détecter les conflits éditoriaux sur une page Wiki.
Armes et munitions
La guerre éditoriale sur les articles de Wikipédia reste un sujet pour le moins… controversé et très subjectif. Une page sujette à une guerre éditoriale est difficile à définir et à identifier. Les avis diffèrent et les méthodes de détection se complètent comme s’opposent les unes aux autres.
Un choix doit être fait : quels signes pourraient nous permettre de reconnaître la présence de la guerre sur une page ?
Nous avons choisi six caractéristiques, en nous basant sur ce qui nous paraissait révélateur d’un conflit éditorial, et bien sûr, ce qu’on pouvait obtenir à partir des métadonnées à notre disposition, tout en nous appuyant sur les études publiées sur cette problématique (ici ou là).
Deux principaux indicateurs de la guerre éditoriale étaient bien sûr le nombre d’éditions et d’éditeurs sur la page. Ces deux informations à la fois faciles d’accès et assez révélatrices étaient le point de départ de notre fouille des pages. Elles ont d’ailleurs été prises en compte par l’étude faite par l’université de technologie et d’économie de Budapest : Characterization and prediction of Wikipedia edit wars.
Comme mentionné avant, les reverts (annuler une ou plusieurs modifications faites sur un article pour revenir à une version antérieure) ont leur importance. Quand le contenu d’une page est remis sans cesse à un état antérieur, l’avancement de l’écriture de celle-ci est clairement freiné par son caractère controversé ou par le fait qu’elle soit ciblée par des vandales, ce qui nous fait une transition directe à l’indice suivant : le degré de polémique. Le degré de polémique (measure of controversy) est un indice créé de toutes pièces et fortement inspiré de la recherche académique mentionnée un peu plus haut. On procède au calcul du nombre d’éditions confirmées (éditions ayant survécu pendant au moins 24 heures aux reverts) des utilisateurs impliqués dans les reverts et on l’utilise comme poids éliminant ainsi les vandales qui ont tendance à ne pas avoir d’éditions constructives.
Dans un niveau moindre, le temps qui s’écoule entre les éditions d’une page est important, si celui-ci est court, cela indique une activité dense et dynamique sur la page qui d’après nous peut indiquer qu’elle est en conflit. Ainsi nous avons rajouté la médiane de temps d’inter-éditions à nos indices.
Finalement, chaque article de Wikipédia peut contenir une page de Talk associée. Celle-ci regroupe les différentes discussions que peuvent avoir les utilisateurs sur le contenu de la page. Une page sous conflit éditorial est une page sur laquelle la discussion fait rage. La taille de la page Talk associée est quelque chose qu’on peut obtenir et qui renforcera notre pouvoir de détection de la guerre éditoriale.
Une fois ces indicateurs définis, il s’agit de sélectionner les pages qui se positionnent en tête selon un seuil défini en s’appuyant sur les histogrammes. À chaque page est donc attribué un score traduisant le nombre de critères validés (autrement dit l’indicateur vérifie le seuil prédéfini).
Et la guerre est déclarée à…
Le tableau suivant montre le top 15des pages jugées en conflit.
Ce processus d’analyse est plus ou moins subjectif et dépend de la façon de choisir le seuil de chaque indicateur. Il était donc nécessaire de vérifier l’exactitude des résultats avant de valider l’ensemble de seuils.
Avoir un jeu de données de référence contenant la labellisation des pages « page en conflit » ou « page sans conflit » aurait été le meilleur moyen pour valider nos résultats. Malheureusement, le dataset fourni ne contient pas cette information vitale.
Nous avons donc proposé de vérifier manuellement les résultats en jetant un œil sur l’historique des éditions de ces pages, ainsi que le contenu de la page de discussion. Une méthode, qui certes, se base entièrement sur le jugement humain, mais qui nous a permis de nous assurer de l’efficacité de notre modèle.
Dans l’exemple ci-dessus, nous voyons clairement que les reverts sont systématiques et immédiats après chaque révision. Ceci étant, sur cet exemple, nous avons mis en lumière probablement l’action de robots. Une étude plus poussée doit être menée pour identifier si les actions sont bienvenues ou pas.
L’implémentation de notre algorithme pour la détection des conflits au sein de Wikipédia peut donc réduire les temps d’intervention des administrateurs, voire améliorer la détection elle même (mais cela demande à être validé !!!). De plus, le fait qu’une grande partie du code est écrite en Pyspark (langage de parallélisation d’exécution) permettra le passage à l’échelle en l’appliquant sur les jeux de données des autres versions de Wikipedia (English Wikipedia à titre d’exemple).
Yelp est une entreprise créée en 2004 sur le marché de la recommandation. Les utilisateurs de Yelp, nommés les Yelpers, peuvent laisser des commentaires et des notes sur les différents commerces présents dans l’application en se créant un compte sur l’application. Ainsi les Yelpers ont accès aux évaluations et aux descriptions via l’expérience d’autres Yelpers. Chaque gérant de commerce (ou dirigeant) peut créer un compte gratuit pour publier des photos et envoyer des messages à ses clients. Yelp gagne de l’argent en vendant des publicités aux commerces de proximité. Elles sont clairement identifiées « Annonces Yelp » sur le site. Il y a un peu plus de 121000 publicités sur la plateforme aujourd’hui. Les commerces-annonceurs ne peuvent ni modifier les avis ni changer leur ordre d’apparition. De plus, Yelp possède en son sein un logiciel automatisé pour recommander les avis les plus utiles et fiables pour sa communauté, parmi les millions d’avis existants.
Une des solutions est une des stratégies de génériques de Porter : se différencier par rapport à la concurrence sur les services proposés. Pour se faire, Yelp a lancé la réalisation d’une étude par notre groupe.
Pour mener à bien cette étude nous avons décidé d’utiliser une méthode pour ce projet de data-mining nommée CRISP-DM (Cross-Industry Standard Process for Data Mining). En tant que méthodologie, CRISP-DM comprend des descriptions des phases typiques d’un projet et des tâches à réaliser lors de chaque phase, et une explication des relations entre ces tâches. En tant que modèle de processus, CRISP-DM offre un
aperçu du cycle de vie d’un projet de data mining. Il y a 6 phases distinctes dans cette méthode. Une phase de compréhension du besoin métier, puis une autre pour comprendre les données fournies, ensuite préparer les données pour les utiliser lors de la phase de modélisation, et enfin une phase d’évaluation par rapport aux besoins métiers avant la phase de déploiement. Ces phases vont être le vecteur de présentation du projet dans cet article !
Compréhension du métier
Des objectifs commerciaux ont été définis pour répondre à cette problématique de différenciation par rapport à la concurrence :
Sauvegarder la communauté de Yelpers
Rendre plus user friendly l’application
Augmenter la communauté de Yelpers
Pour pouvoir évaluer le projet des critères de réussite ont été définis :
Diminuer le taux de churn de 10%
Augmenter le taux d’acquisition de 5%
Respect délai et coût
Yelp est une société habituée à avoir dans son sein de l’expertise en data-mining pour améliorer la pertinence du contenu et cibler au mieux la publicité sur la plateforme. De même, l’entreprise a déjà lancé de nombreux concours sur des problématiques variées en data-mining. Nous allons travailler en collaboration avec les experts en data-mining de Yelp et le pôle marketing. Yelp ayant plus de 12 ans d’existence et une grande communauté de Yelpers et de business, notre équipe dispose de nombreuses données bien formalisées. Pour ce projet seulement une partie des données sera étudiée. Toutefois, le programme pourra être étendu aux autres données si l’étude est une réussite. Enfin, la société ne prend pas beaucoup de risques mis à part le temps consacré par les experts de Yelp à travailler en collaboration avec notre équipe. L’entreprise, ayant souvent recours à des compétitions en ligne avec des récompenses, pourra arrêter l’étude si le délai n’est pas respecté pour faire passer le projet en mode compétition.
Les objectifs commerciaux du projet en commun avec notre équipe et les experts de Yelp ont été traduits en objectifs Data-Mining :
Définir une sous-catégorie de commentaires pertinente pour vérifier la véracité des catégories choisies pour les labelliser avec labels: Food, Service, Worthiness, Ambiance
Puis labelliser des commentaires avec les labels définis
Puis appliquer des méthodes d’apprentissage supervisées (méthode qui apprend par rapport à un jeu de données et applique après ce qui a été appris) sur la sous-catégorie de commentaires, tester la performance de chacun pour choisir la meilleure
Bilan à réaliser avec la direction marketing pour savoir si on réitère le processus
Si bilan positif, réitération à d’autres sous-catégories
Pour aller plus loin, il nous faut maintenant comprendre les données fournies…
Compréhension des données
Nous avons pu travailler sur un dataset fourni par Yelp comprenant des données assez diversifiées. Il comprend plus de 8 millions de lignes qui concernent plus de 77000 commerces, avec des informations sur les caractéristiques de l’établissement comme l’ambiance, le service, la nourriture dans le cas des restaurants, etc.
Comme expliqué plus tôt, nous nous intéressons à classifier des commentaires. Pour cela une première étape est d’explorer les données sur les commentaires afin d’en juger la qualité. On retrouve alors 1980658 commentaires avec des informations sur le rating de chaque commentaire, à quel business il se rapporte, quel utilisateur l’a publié, etc.
Notre but est d’extraire des variables sur lesquels entraîner un modèle d’apprentissage (nous détaillerons cette partie-là par la suite). Il était donc nécessaire de savoir si nous disposons de commentaires de longueur suffisante.
Nous pouvons voir que la plupart des commentaires ont une longueur supérieure à 100 caractères. On peut en conclure que les commentaires sont de longueur suffisante pour pouvoir extraire une information pertinente.
Aussi, à la lecture des commentaires, il n’est pas évident de savoir pourquoi un utilisateur a préféré noter tel commentaire en quatre étoiles plutôt qu’en cinq, ou en deux étoiles plutôt qu’en une, c’est pour cela qu’on a préféré ne pas tenir compte du nombre d’étoiles attribuées à un commentaire pour notre démarche.
Pour nous atteler à la création d’un modèle d’apprentissage, nous devons préparer les données pour réaliser l’apprentissage sur un choix de données pertinent et ainsi réaliser des itérations sur le projet de manière intelligente…
Préparation des données
Les données sur lesquelles on a travaillé durant ce projet proviennent d’un dataset que Yelp a mis à disposition pour le challenge. On s’est proposé, dans un premier temps, de restreindre notre étude à une seule des catégories de restaurants présents dans nos données. Dans notre cas, la catégorie ayant le plus de commentaires est la catégorie des restaurants mexicains; notre étude s’est donc portée sur cette partie-là du dataset.
Afin d’avoir notre dataset pour l’étude, il nous a fallu faire une jointure entre les tables businesses et reviews du dataset. Nous avons ensuite conservé uniquement les attributs sur lesquels on va faire notre apprentissage (les commentaires) et on a créé quatre variables de sortie pour la catégorisation (nourriture, service, ambiance et rapport qualité-prix).
Dans le but d’avoir des données sur lesquelles on peut entraîner notre modèle, on devait labelliser à la main un minimum de reviews. Cependant, sachant que cette partie de notre étude peut être vraiment longue et n’ayant pas beaucoup de temps pour mener à bien le projet, il nous fallait trouver une autre solution. Nous avons donc trouvé un dataset labélisé de Yelp qui convenait très bien à ce qu’on voulait faire. En effet, il était constitué en prenant 10.000 commentaires aléatoirement dans le dataset pour avoir finalement, après nettoyage, 9.000 commentaires labellisés. Les mots les plus fréquents dans tous les commentaires ont été pris afin de tester leur présence ou non dans les commentaires à labelliser afin de constituer nos attributs en entrée. Nos attributs de sorties sont les catégories listées auparavant. Tous nos attributs dans notre table finale sont des attributs booléens (1 ou 0).
Avec la récupération d’un dataset pertinent, nous pouvons nous atteler à tester des modèles paramétrables ou non…
Modélisation
Après avoir vérifié quelques hypothèses lors de l’étape précédente (pas de données manquantes et encodage binaire des features) il convenait de déterminer le type de problème que nous devions résoudre. Ici il s’agit d’un problème de classification multi label. En effet, une review peut être classée dans plusieurs catégories différentes en même temps. Ainsi nous avons choisi les algorithmes les plus performants et les plus utilisés pour ce type de situation. Il s’agit du Random Forest, Gradient Boosting, Support Vector Machine et Naive Bayes.
Dans l’optique de simplifier le problème initial, nous avons choisi d’entraîner des classifieurs binaires, un pour chacune des catégories. Ainsi une review pourrait bien appartenir à plusieurs catégories. Nous avons répété cette opération sur les quatre algorithmes sus-cités afin de les comparer.
Nous avons choisi séparé le dataset d’origine comme suit: 80% des données pour l’entraînement des modèles et 20% pour le test.
Nous avons choisi la précision comme mesure de performance des modèles. La précision sera définie comme le pourcentage du nombre de reviews correctement classées sur le nombre de reviews évaluées. La figure suivante présente les résultats obtenus sur les données de test, après entraînement.
Algorithme
Random Forest
Gradient Boosting
SVM
Naive Bayes
Précision
71%
75%
62%
54%
Nous retiendrons le Gradient Boosting, ses performances sur le critère mesuré étant plus élevées.
Deux étapes sont primordiales pour terminer cette première itération …
Évaluation
Pour réaliser l’évaluation de la première itération du projet, nous avons pensé à un test sur groupe de population pour voir un changement de comportement par rapport à la plateforme sans et avec. Cette méthode se nomme l’A/B testing. De plus, nous pensons à un autre test en gardant pendant 1 mois une plateforme différente pour les utilisateurs anglophones pour évaluer le taux d’acquisition. Yelp est une société ayant l’habitude des projets de Data-Mining avec la méthode CRISP-DM. Notre équipe a dû se familiariser avec cette nouvelle méthode. Nous avons été hésitants au début sur les “retours arrière” possibles dans le processus. Par contre, comme toute méthode agile, nous avons bien compris l’intérêt d’un processus cyclique pour pouvoir fonctionner en itération du modèle sur des sous-catégories du dataset. Cette méthode a permis à notre équipe et à Yelp de comprendre les points suivants :
l’exploration des données est une étape primordiale pour pouvoir choisir correctement les sous-catégories utilisées pour la modélisation
la préparation des données n’a pas été simple, mais cette étape est primordiale pour pouvoir avoir les données choisies dans la modélisation
le besoin métier ne doit pas être éclipsé à cause des difficultés techniques et le travail sur les données
la phase de test à la fin de la première itération doit être menée rigoureusement pour savoir si notre première idée répond aux objectifs commerciaux.
Si l’évaluation est positive, nous nous devons de déployer la solution en collaboration avec les métiers nécessaires…
Déploiement
Pour réussir un déploiement, nous devons collaborer et donner les informations nécessaires aux personnes concernées dans le projet.
Les décideurs devront être informés des changements sur la plateforme web, sur l’application mobile et le changement dans la structure de la base de données. En plus de l’utilité de ces changements. Si les résultats de l’étude sont jugés concluants, nous devons collaborer et informer le personnel suivant :
Les experts en Data-Mining devront mettre en place le modèle de catégorisation des commentaires en fonctionnement pour les nouveaux commentaires
Les experts en base de données devront être informés du changement de la base de données pour mettre en place la nouvelle base.
Les développeurs web devront incorporer la nouvelle organisation des commentaires pour les commerces sur la plateforme web et récupérer les nouvelles infos de la base.
Les développeurs de l’application mobile devront incorporer la nouvelle organisation des commentaires sur les commerces et récupérer les nouvelles données de la base.
Le pôle communication et marketing devront informer les Yelpers des changements apportés et mettre en avant cette différenciation verticale par rapport aux applications concurrentes
Au niveau surveillance, les tâches seront :
Surveillance de la plateforme web et de l’application mobile pour vérifier que les utilisateurs ont les commentaires catégorisés pour les commerces.
Vérifier que les nouveaux commentaires sont correctement labellisés
Au niveau de la maintenance, les tâches seront :
relancer le modèle avec les données récentes régulièrement avec une fréquence à définir.
Ainsi, la première itération s’achève. Si le résultat est probant, les décideurs peuvent décider de relancer d’autres itérations sur un autre jeu de données ou même changer la stratégie de data mining. Le but de la méthode CRISP-DM est de pouvoir adapter le projet et apprendre de chaque itération pour aller plus vite.