[:fr]Instagram : Business model d’une plateforme de partage de photo[:]

[:fr]Les nouvelles technologies ont bouleversé les rapports humains dans la société, notamment la façon d’interagir. Les réseaux sociaux reflètent particulièrement cette évolution. Les communications deviennent virtuelles, les souvenirs sont partagés et affichés devant tout le monde. Mais plus que de simples supports de partage, les réseaux sociaux sont aussi des entreprises avec un business modèle bien établi et dont les cotations en bourse révèlent leur potentiel commercial. Nous allons nous intéresser au business modèle des réseaux sociaux et notamment celui d’Instagram, un réseau social de partage de photos et vidéos. Quelles sont les caractéristiques du marché des réseaux sociaux ? Quel est le business modèle d’Instagram ? Tout d’abord nous verrons les caractéristiques économiques de ce marché et comment Instagram se positionne dessus, ensuite nous étudierons le business model d’Instagram et enfin nous analyserons l’écosystème autour de cette application.

1. Étude du marché des réseaux sociaux et positionnement d’Instagram

1.1.        Les offres

Les nouvelles technologies ont permis un nouveau support de diffusion de photos et videos. Un nouveau marché a pris place grâce à cette innovation de rupture, celui du partage de données numériques sur internet. Le secteur de la photographie a été impacté et des entreprises de partage de photos en ligne ont vu le jour comme Snapchat, Instagram, PhotoBucket mobile, Pinterest, Tumblr, Ficklr, etc … Ces entreprises proposent de retravailler les photos prises, souvent sur le smartphone, de les stocker et de les partager sur un réseaux social ( Facebook, twitter, Instagram ) ou encore de les imprimer en version papier ( service souvent payant). Photobox est le leader européen dans ce marché en plein essor, avec une croissance à deux chiffres [1]. Instagram essaie de s’y placer en soutenant des partenariats avec des entreprises comme Cheerz pour qu’elles puissent imprimer sous forme d’album, de carnet les photos des utilisateurs Instagram (cf III). Cela profite à l’application car elle devient alors aussi un support permettant d’accéder à un autre marché, celui des impressions photos, et donc d’offrir plus de services à ses utilisateurs.

1.1.        Les clients

Sur plus de 7 milliards d’individus sur Terre, 2,9 milliards utilisent les réseaux sociaux [2]. Le public est principalement constitué de jeunes (16 -34 ans), entre 40 et 50% pour Instagram, Pinterest ou encore Tumblr. Ils utilisent principalement ces sites de retouche de photos pour partager avec leurs amis leurs voyages, leurs moments de la vie quotidienne, leurs sorties. Ils sont aussi plus sensibles à avoir un réseau social pour pouvoir liker, commenter les photos de leurs amis. Une frange plus agée d’utilisateurs se développe aussi, pour les mêmes raisons mais aussi afin d’avoir un support pour stocker leurs photos de voyage, les retoucher, en former des albums et les imprimer [3]. En effet, avec la “fin” des appareils photos à pellicule, il n’y avait plus de moyen simple d’imprimer ses photos.

1.1.        Histoire et positionnement d’Instagram

Instagram a été créé en 2010 par  Kevin Systrom et Michel Mike Krieger après une levée de fond de 500 000$, à peu près en même temps que ses concurrents (Pinterest en 2010, Tumblr en 2007). Cependant, l’application a réussi à s’imposer sur le marché de la photo en ligne. L’application connait une croissance très soutenue depuis sa création et atteint en 2017 plus de 800 millions d’utilisateurs. C’est le deuxième réseau social le plus utilisé [4] dans le monde, possédant un public très jeune et très actif (41% qui a entre 16 et 24 ans [4], et passe 30 minutes par jour sur l’application avec 4,2 milliards de likes chaque jour). L’application a notamment profité de son rachat par Facebook en 2012 pour 1 milliard d’euros pour mettre à jour son algorithme d’affichage de publications et aussi ses conditions générales d’utilisation en utilisant davantage les données personnelles des utilisateurs (cf II).

D’autres applications de partage de photo et de vidéo existent : Snapchat, Pinterest, 500px ou encore Flickr. Flickr et 500px sont principalement utilisés par les photographes amateurs et professionnels. Contrairement à Instagram, ces deux applications proposent peu de fonctionnalités gratuites. Par exemple, pouvoir uploader un nombre illimité de photos est un service payant pour 500px. Flickr possède seulement 100 millions d’utilisateurs. Les 800 millions d’utilisateurs d’Instagram permettent donc d’offrir une meilleure visibilité.

Le principal concurrent d’Instagram est Snapchat, une application permettant le partage de photo et de vidéo de quelques secondes à ses « amis ». Cette application est très populaire chez les jeunes. Pour faire face à ce concurrent, Instagram a lancé les « Stories », permettant d’offrir un service similaire à celui de Snapchat. Les utilisateurs d’Instagram peuvent maintenant partager une photo ou une vidéo pour une durée de 10 secondes uniquement.  Instagram espère ainsi attirer une population plus jeune adepte de Snapchat. L’application Instagram est plus utilisée quotidiennement : 300 000 millions d’utilisateurs actifs par jour sur Instagram  contre 150 millions pour Snapchat [5]. De plus, Instagram est une meilleure vitrine pour les marques et les influenceurs. En effet, tout le monde peut avoir accès au contenu d’un compte Instagram. Pour pouvoir le contenu Snapchat, il faut être « ami » avec le propriétaire du compte. Pour ajouter un  « ami », il faut connaître le pseudo. Le contenu publié par une marque est donc plus visible sur Instagram pour un nombre d’utilisateurs plus important.

D ’abord, Instagram a permis gratuitement aux photographes amateurs d’améliorer leurs photos; ils pouvaient ainsi les partager avec leurs amis et en être fier. L’application se situe sur le service continu vis à vis de l’utilisation des appareils photos :

-1 fois dans de temps  en temps : achat d’un appareil photo

-suivi dans le temps (service de mise à disposition, capacité technique entretenue) : photographe

-continu : partage instantané et illimité de photo sur les réseaux sociaux: Instagram

Un avantage d’Instagram est aussi d’être un réseau social où les utilisateurs peuvent partager leurs photos, liker à la fois celles de leurs amis mais aussi celles de professionnels et de stars. Instagram a, par ailleurs, permis de vulgariser la photographie. Chaque personne possédant un smartphone et donc un appareil photo, peut devenir un photographe et exposer ses images au monde entier et à ses amis. L’application permet de créer en quelque sorte un nouveau besoin chez l’utilisateur : prendre des photos pour alimenter son compte Instagram et obtenir le plus de “like” possible. De nouveaux phénomènes ont émergé, comme le fait de prendre son plat en photo avant de le manger. Ces phénomènes témoignent d’un emballement d’une partie de la société autour des réseaux sociaux.

Par ailleurs, Instagram touche aussi un large public de publicitaires. 2 millions d’annonceurs ont un compte, et 90% des plus grandes marques sont présentes sur Instagram. Le format de pub photo ou vidéo est en effet très intéressant pour les marques car il est marquant. De ce fait, Instagram est le support privilégié des entreprises, surtout compte tenu du nombre important d’utilisateurs (fig1). Les entreprises cherchent à publier des photos qui correspondent à l’esprit de la marque, à son univers, en mettant en valeur leurs produits. Elles peuvent aussi lancer des jeux-concours autour de leurs produits, ce qui développe un centre d’intérêt autour de la marque et est souvent relayé par de nombreux utilisateurs. L’exemple type est le partage de la publication du jeu par les utilisateurs avec le hashtag du concours et ils peuvent éventuellement gagner un avantage (voyage sncf gratuit, bon d’achat…). Les entreprises cherchent ainsi à capter l’attention de ce public jeune et actif qui se détourne des médias classiques (journaux, télévision…) et cela marche car 46% des utilisateurs suivent une marque.

Figure 1 : évolution de l’utilisation des comptes des marques sur différents réseaux sociaux

Source : https://blog.globalwebindex.net/

Il faut cependant être cohérent avec l’image de la marque. On peut voir sur la figure 2 l’extrait du compte Instagram de deux marques, Citroën et Mini. Celui de Citroën est plus flou avec des images qui ne valorisent pas forcément la voiture ou qui ne sont pas attractives, alors que celui de Mini est bien plus épuré, avec la couleur de la voiture en accord avec le paysage. Ainsi Mini profite bien plus de l’intérêt artistique d’Instagram afin de mettre en valeur ses produits [6].

             

Figure 2 : extrait du compte Instagram de Citroën à gauche, et celui de Mini à droite

Source : https://www.markentive.fr/blog/instagram-un-social-media-de-pur-branding-pour-les-marques/#

2.               Le business modèle d’Instagram

2.1.        Un marché biface : services offerts par la plateforme

Instagram fonctionne sur un marché biface.

Le premier service offert est un service pour l’utilisateur. Il a la possibilité de partager des photos et de visualiser les photos des autres utilisateurs. Ce service est standardisé, mais la plateforme tend à l’individualiser. En effet, le fil d’actualité de chaque utilisateur est personnalisé. Seules les publications susceptibles d’intéresser l’utilisateur seront affichées. Des comptes pouvant plaire à l’utilisateur sont également proposés en fonction de ses intérêts et de ses goûts. Ce service est gratuit.

La plateforme propose également un service pour les entreprises, marques ou publicitaires [8]. Il permet aux professionnels de faire de la pub pour leurs entreprises ou pour un produit. Ainsi, ils espèrent gagner en notoriété, en visibilité tout en augmentant leur taux de transformation (nombre de personnes qui regardent ou cliquent sur la publicité et qui vont ensuite acheter effectivement le produit). Faire de la publicité sur Instagram présente un avantage pour les entreprises. En effet, par rapport à de la publicité classique (spots télévisés, campagne d’affiches dans les espaces publics…), Instagram propose de cibler uniquement la population susceptible d’être intéressée par le produit  suivant des critères géographiques ou des centres d’intérêts.

Figure 3 : positionnement d’Instagram coût/variété/personnalisation

Instagram propose donc des services de plus en plus individualisés grâce à l’utilisation de l’algorithme de sélection et l’utilisation des données personnelles des utilisateurs. Les professionnels n’achètent plus des produits mais des fonctionnalités.

Le service pour les professionnels est payant et représente la principale source de revenu pour Instagram. Pour l’achat de ses fonctionnalités, l’entreprise définit un budget pour chaque publicité diffusée. Instagram utilise ce budget pendant toute la durée de diffusion. Le budget représente le montant que l’entreprise souhaite ou est prêt à dépenser pour la diffusion de sa pub.

Cependant, Instagram ne donne pas d’informations précises concernant le prix d’une publicité et sur la manière dont ce prix est fixé. Les marques et les entreprises sont tout de même prêtes à payer un service leur permettant d’être visibles sur la plateforme. En effet, de plus en en plus de marques et d’entreprises sont présentes sur Instagram. En septembre 2017, il y avait plus de 2 millions d’annonceurs présent sur Instagram. Leur objectif est de profiter des 800 millions d’utilisateurs [2]. De plus, d’après le blog du modérateur, 80% des utilisateurs [2] suivent une marque ou une entreprise sur Instagram. Grâce à leur présence sur ce réseau social, les marques ont l’occasion de travailler leur image auprès de la population des 18-35 ans, les principaux utilisateurs de la plateforme.  Elles espèrent instaurer une proximité entre les utilisateurs et la marque, grâce aux photos postées reflétant l’expérience utilisateur [6] (ie ce que va vivre l’utilisateur lorsqu’il va utiliser le produit) et ainsi créer une communauté autour de la marque.

La plateforme bénéficie d’un effet réseau du côté utilisateur. Une personne sera plus encline et aura plus envie d’utiliser Instagram si ses amis sont déjà présents sur la plateforme, afin de pouvoir accéder à leur contenu et partager son propre contenu avec eux. Du côté des entreprises, on a un effet de rendement croissant d’adoption. Les entreprises ont tendance à choisir Instagram pour profiter du nombre important d’utilisateurs et maximiser leur visibilité. Le nombre d’abonnés est un élément central dans le business model d’Instagram. Parallèlement, les entreprises ou marques reconnues, comme Nike ou Chanel, publient du contenu esthétique de qualité (fig 4). Ce contenu va attirer les utilisateurs.

Figure 4 : contenu esthétique de Chanel

Source : compte instagram @chanelofficiel

La plateforme propose donc deux types de services qui sont de plus en plus personnalisés. Cela est possible grâce à l’utilisation des données personnelles combinée avec un algorithme de sélection.

2.2.        Utilisation des données personnelles et algorithme de sélection

En effet, lorsqu’un utilisateur crée un compte Instagram, il accepte les Conditions Générales d’Utilisation (CGU) [7] et la politique de confidentialité du service. Il autorise ainsi Instagram à collecter et à utiliser ses données personnelles. Même si l’utilisateur reste propriétaire de ses données, il cède le droit à Instagram de les partager avec les entreprises appartenant au groupe Facebook, aux prestataires de services et aux publicitaires.

De  plus, la plateforme utilise un algorithme de sélection. Depuis 2016, l’algorithme de sélection utilisé est celui de Facebook, le News Feed Ranking Algorithm. Il est difficile de protéger un algorithme. En effet, l’algorithme est assimilé à un principe mathématique et fait donc partie du domaine des idées. En ce sens, on ne peut donc pas breveter un algorithme. Cependant, l’algorithme peut être incorporé dans un programme qui, sous contraintes d’innovation et d’une plus-value, peut être breveté. Mais l’idée de l’algorithme pourra toujours être exploitée par un tiers. Une autre solution est de protéger l’algorithme par le secret. L’algorithme est tenu secret par l’entreprise. Elle pourra obtenir réparation en cas d’utilisation ou de divulgation d’informations protégées par le secret. L’algorithme de Facebook est protégé par le secret. Il  permet d’offrir un service personnalisé aux utilisateurs et aux professionnels, comme évoqué précédemment. Cependant, son utilisation a modifié le fonctionnement du fil d’actualité. Avant, les publications étaient affichées par ordre chronologique. L’utilisateur voyait toutes les publications des pages suivies ou aimées. Avec le nouvel algorithme, seules les publications jugées intéressantes pour l’utilisateur sont affichées [9]. L’utilisateur voit donc maintenant uniquement le contenu publié par un nombre réduit de comptes. Pour afficher le contenu d’un compte en particulier, l’utilisateur doit activer les notifications, pour manifester son intérêt. Cet algorithme favorise donc les comptes avec beaucoup de followers. En effet, les nouveaux arrivants auront moins de “like” sur leur publication. La probabilité qu’ils apparaissent sur le fil d’actualité d’un utilisateur est donc moins importante. Par cette stratégie, Instagram les pousse à investir encore plus dans leur compte, comme par exemple en payant plus de publicités et de fonctionnalités afin d’être mieux référencés dans les fils d’actualité et de profiter du nombre très important d’utilisateurs d’Instagram.

3.3.        Exploitation du contenu utilisateur

Instagram n’a  ni le droit de vendre les photos de ses utilisateurs ni le droit d’en faire des œuvres dérivées (article 17 USC paragraph 106). Cependant, ce contenu peut être utilisé pour du contenu sponsorisé ou des publicités [7]. Grâce aux publications sponsorisées, la marque peut afficher son contenu sur les fils d’actualité des utilisateurs non abonnés.

En effet, d’après les Conditions Générales d’Utilisation (CGU) d’Instagram, l’utilisateur reste propriétaire du contenu qu’il poste sur la plateforme. Il conserve ses droits d’auteurs, ce qui signifie que les tiers ne peuvent pas reproduire sur d’autres supports ses photos. Cependant, les CGU comportent une clause de licence d’utilisation au profit d’Instagram. En effet, en les acceptant, l’utilisateur cède une licence non exclusive, entièrement payée, libre de droit, transférable, sous licenciable et mondiale sur tout le contenu qu’il publie [7].  Cette licence d’utilisation peut bénéficier à Instagram, mais également à d’autres puisqu’elle est transférable

Par exemple, si un utilisateur publie une photo d’une nouvelle paire de basket, la marque peut utiliser cette photo pour faire de la publicité, à condition qu’elle ne modifie pas la photo originale. Dans ce cas, la marque paye Instagram qui lui transfère ensuite la licence. Instagram monétise le contenu utilisateur.

3.        Ecosystème autour d’Instagram

Un écosystème s’est développé autour de la plateforme, comme par exemple l’apparition d’influenceurs, ou d’applications partenaires. Instagram ne gagne pas d’argent directement mais cependant le développement de cet écosystème est bénéfique pour la plateforme.

3.1.        Influenceurs, marques et contenu sponsorisé

Une marque ou une entreprise peut faire appel à des influenceurs pour promouvoir leurs produits. Les influenceurs sont souvent des bloggers ou des youtubeurs populaires chez les jeunes, principaux utilisateurs d’Instagram.

Par exemple, une marque de cosmétique propose un nouveau produit à tester à une youtubeuse beauté. La youtubeuse postera ensuite une photo du produit avec son avis sur son profil Instagram. Elle sera rémunérée par la marque pour cette publication (cf fig 5).

Figure 5 : publication de l’influenceuse The Dollbeauty pour Lancôme

Source : compte instagram @thedollbeauty

Il s’agit d’un partenariat entre la marque et l’influenceur, bénéfique aux deux parties.

Ces partenariats sont lucratifs pour les influenceurs. Le graphique ci-dessous présente le prix moyen d’une publication sponsorisée suivant le domaine.

Figure 6 : prix moyen d’une publication sponsorisée

Source : http://www.zdnet.fr/blogs/watch-it/une-publication-sponsorisee-sur-instagram-coute-en-moyenne-300-dollars-39848694.htm

En contrepartie, la marque profite de la notoriété de l’influenceur. En effet, les jeunes, principaux utilisateurs d’Instagram, sont sensibles aux conseils et aux avis des influenceurs qu’ils suivent.

Pour le moment, Instagram ne prend aucune commission sur les publications sponsorisées résultant d’un partenariat entre une marque et un influenceur.

Les influenceurs attirent les marques sur la plateforme. Un nombre plus important de marques présentes représente également un nombre de clients potentiels pour leur service de publicité plus important. D’autre part, les marques et les influenceurs publient un contenu esthétique de qualité, recherché par les utilisateurs d’Instagram. Cela va donc attirer encore plus d’utilisateurs, fournissant un public plus important pour les entreprises faisant de la publicité, et attirant donc plus d’entreprises. Les influenceurs stimulent donc l’effet de croisé du marché biface et permettent de développer le service payant d’Instagram. La plateforme augmente ses revenus de manière indirecte.

3.2.        API et applications complémentaires

L’application est une propriété d’Instagram. Cependant, les développeurs ont la possibilité d’utiliser l’API Instagram librement, à condition d’avoir un compte Instagram. En effet, l’API est sous licence mondiale, non-exclusive, non sous-licenciable. Elle permet de développer des applications ou des services reposant sur le réseau social et video. Par exemple, une application propose un service d’impression des photos Instagram.

Cependant, ces applications doivent respecter certains critères. En effet, les CGU concernant l’API ont changé en 2016. Les applications doivent dorénavant apporter une plus-value à la plateforme. Seules les applications offrant les services suivant sont autorisées [10]:

  • partage du contenu instagram avec d’autres appli ou service comme par exemple l’impression de photo
  • pour les professionnels : analyse du public du marché potentiel, aide pour développer une stratégie de communication
  • aident les éditeurs de contenu à découvrir justement du contenu pertinent et à le partager en utilisant des systèmes d’encapsulage.

Après son développement, chaque nouvelle application doit approuver par Instagram avant d’être mise en ligne. Instagram espère ainsi éliminer toutes les applications parasites offrant une solution alternative à la plateforme. Elle espère ainsi garder le monopole.

De plus, grâce à aux services complémentaires développés, Instagram gagne en attractivité auprès à la fois des utilisateurs et des professionnels. Par exemple, l’application Cheerz propose l’impression directe des photos Instagram.

Iconosquare est une application donnant des indicateurs sur la communauté d’’un compte (évolution de l’audience, localisation des abonnés…), sur l’impact des publications, sur les performances d’un hashtag dans le but d’aider les professionnels à optimiser leur utilisation de leur compte Instagram. D’autres services sont également proposés, comme trouver le meilleur influenceur pour représenter l’entreprise. Ces services sont payants. Instagram ne touche aucune commission sur ces services payants. L’ancien nom de cette application était “Statigram”. Ils ont dû changer de nom à cause d’Instagram, l’application étant protégée par le droit des marques. En effet, leur nom, leur logo, les icônes, les boutons et les en-têtes de leurs pages sont protégés. L’imitation et l’utilisation est interdite sans autorisation écrite d’Instagram. De plus, d’après les conditions d’utilisation de l’API, l’identité de la nouvelle application ne doit pas faire référence au nom Instagram.

Grâce à ces applications et services complémentaires, Instagram veut attirer toujours plus de nouveaux utilisateurs et de professionnels. En contrepartie, les applications complémentaires peuvent utiliser le label “Instagram Partner”. Cela leur apporte de la crédibilité et de la notoriété.

 

Conclusion

En 7 ans, Instagram a su s’imposer sur le marché concurrentiel de la photo numérique, et se positionne à la 2ème place des réseaux sociaux les plus utilisés, derrière son grand frère Facebook. L’application profite de son format visuel, le partage de photos, pour attirer les marques et les utilisateurs. Elle adapte son service à chacune de ces catégories, elle affiche des pubs ciblés sur les centres d’intérêt des utilisateurs et récupère les données de ces derniers pour justement adapter le contenu des pubs à leurs goûts. Instagram cherche aussi diversifier le profil de ses utilisateurs en offrant de nouveaux services comme l’impression de photos Instagram. Ces services sont réalisés par des applications extérieures mais elles sont encouragées grâce à la mise à disposition de l’API d’Instagram. Instagram doit cependant continuer d’innover pour rester l’application la plus tendance auprès des jeunes.

Bibliographie

[1] une équipe de direction renforcée pour Photobox, Les echos, consulté le 12/12, disponiblesur : https://business.lesechos.fr/directions-generales/strategie/business-plan/0204121978188-une-equipe-de-direction-renforcee-pour-photobox-107848.php

[2] chiffres réseaux sociaux 2017, blog du modérateur, consulté le 11/12, disponible sur : https://www.blogdumoderateur.com/chiffres-reseaux-sociaux/

[3] Le marché des albums photos en ligne, Businesscoot, consulté le 11/12, disponible sur : http://www.businesscoot.com/le-marche-des-albums-photos-en-ligne-372/

[4] Chiffres d’instagram – 2017, blog du modérateur, consulté le 28/11/2017, disponible sur : https://www.blogdumoderateur.com/chiffres-instagram/

[5] Zoom sur le succès d’Instagram- krds, consulté le 5/01/2018, disponible sur : http://krds.com/fr/fr/zoom-sur-le-succes-dinstagram/

[6] Le branding sur Instagram, markentive, consulté le 13/12/2017, disponible sur : https://www.markentive.fr/blog/instagram-un-social-media-de-pur-branding-pour-les-marques/#

[7] Conditions Générales d’Utilisation d’Instagram, Instagram, consulté le 16/11/2017, disponible sur :

https://help.instagram.com/478745558852511

[8] Faire de la publicité sur Instagram, consulté le 1/12/2017, disponible sur : https://business.instagram.com/advertising/

[9] Fonctionnement du nouvel algorithme de sélection et ses conséquences, consulté le 30/11/2017, disponible sur :

https://www.actance.net/actualites/comment-fonctionne-algorithme-instagram.html

[10] Nouvelles règles concernant l’utilisation de l’API Instagram, consulté le 13/12/2017, disponible sur :

https://www.iphonologie.fr/9460-instagram-regles-utilisation-api/

[:]

[:fr]Cockos (Reaper) : business modèle et propriété intellectuelle de l’entreprise[:]

[:fr]Ce rapport présente les principaux enjeux de l’économie des logiciels de MAO (Musique Assistée par Ordinateur) et la place dans cet écosystème du logiciel Reaper, propriété de l’entreprise Cockos. La propriété intellectuelle de cette entreprise est aussi mis en lien avec sa stratégie économique.

 

Business modèle et propriété intellectuelle de Cockos (Reaper)[:]

[:fr]Netflix : Business Model d’un géant du streaming[:]

[:fr]Ce dossier présente le business model de l’entreprise Netflix, géant mondial du streaming en ligne. Il présente les différents atouts qui font de l’entreprise le large leader du secteur de la VOD, ainsi que les principales menaces qui pourraient mettre à mal sa position dominante dans les années à venir.

NETFLIX Business Model – Valerian Grosso[:]

La guerre contre les guerres d’édition dans Wikipedia

Par Amine AKKI, Hicham EL HAREM, Saad EL MAHFOUDI et Anas IRHBOULA, élèves du Parcours Data Science de l’IMT Atlantique.

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 ).

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 15 des 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).

Comment vivre une nouvelle expérience utilisateur sur Yelp

Par Houssame Berkia, Florian Caringi, Yann Feunteun, Toufik Laichaoui, élèves du Parcours Data Science de l’IMT Atlantique.

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.

Yelp fait face à la concurrence des géants du web (google et facebook avec des services pros), de Tripadvisor et aux différentes communautés ou plateforme sur la recommandation collaborative. Le nombre de clients n’augmentant pas aussi vite que la concurrence, Yelp veut tout d’abord fidéliser sa communauté existante. Le prix de la publicité vendu aux commerces dépend de la visibilité que Yelp peut proposer à ces commerces et donc du nombre de Yelpers actifs sur la plateforme. Yelp doit trouver le moyen de garder ses bénéfices malgré un coût d’acquisition de plus en plus élevé d’une nouvelle clientèle.

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.

Yelp CityHeartbeat, quelles sont les tendances dans mon quartier ?

Par Arthur Bourgeois, Lucie Crucq, Célia Hocine et Jonathan Pathmanathan, élèves du Parcours Data Science de l’IMT Atlantique.

Permettre à ses utilisateurs de trouver le meilleur restaurant, coiffeur ou garagiste dans une ville, c’est la mission de Yelp. Créé en 2004, Yelp rassemble aujourd’hui plus de 115 millions d’avis sur son site et attire toujours plus de visiteurs par mois, principalement aux Etats-Unis où il se positionne en leader en matière de recommandations.

Comme d’autres avant eux, Yelp fait aujourd’hui appel à des personnes extérieures à son équipe pour développer de nouvelles idées afin de mieux répondre aux besoins de ses utilisateurs. L’entreprise a lancé le “Dataset Challenge” : un échantillon des données collectées par Yelp est mis à disposition des internautes, qui ont pour défi de trouver une façon innovante de les utiliser.

Dans le cadre de notre parcours “Data Science” à l’IMT Atlantique, nous avons eu pour mission de proposer un projet innovant basé sur les données du Dataset Challenge. Encadré par une équipe de professeurs experts dans les domaines de l’informatique, de l’analyse des données et de l’économie, nous nous sommes donc lancés dans la valorisation des données de Yelp.

CityHeartbeat : vers un nouveau service B2B

Très tôt dans notre réflexion, nous avons décidé de nous orienter vers un service à destination non pas des consommateurs, mais plutôt des commerçants. En effet, Yelp propose déjà de nombreux services aux consommateurs : recherche d’un business avec plusieurs filtres, écriture d’avis, système de notations sur de nombreux aspects du commerce…

En ce qui concerne les commerçants, Yelp offre des services pour attirer plus de clients : mise en avant du business sur le site (Yelp Ads) et proposition de bons de réductions type Groupon (Yelp Deals). Mais il manque selon nous des services pour aider les commerçants qui ne sont pas encore installés.

Elèves rigoureux et bien organisés que nous sommes, nous avons appliqué la méthode CRISP-DM pour structurer notre projet. Cette méthode est un pilier indispensable pour la réussite d’un projet de fouilles de données. Pour rappel, la méthode CRISP consiste en plusieurs phases :

  1. La compréhension du business qui permet de fixer les objectifs du projet en se posant les questions métiers
  2. La compréhension des données qui consiste en la découverte des données à notre disposition ainsi qu’à leur exploration
  3. La préparation des données qui est une phase de nettoyage et réorganisation des données, et si nécessaire de création de nouvelles valeurs calculées à partir d’autres données
  4. La modélisation pour la sélection du modèle de fouille de données ainsi que ses paramètres
  5. L’évaluation qui consiste à juger les performances du modèle et comparer les résultats produits avec les objectifs à atteindre
  6. Le déploiement à la fin du projet, phase pendant laquelle la solution est installée et de nouvelles pratiques sont mises en place suite aux conclusions tirées du projet.

En utilisant cette méthodologie, nous avons ainsi abandonné notre idée initiale : aider des commerçants à trouver la “recette” d’un business qui fonctionne était certes une belle idée, mais la phase de compréhension des données nous a permis de nous rendre compte que nous ne disposions pas des bonnes informations pour répondre à cette problématique. De plus, il était assez complexe de définir ce qu’était un commerce qui “fonctionne”, un critère trop subjectif.

Aidés par nos tuteurs, nous avons finalement pivoter et fait émerger une problématique un peu différente. Nous cherchons à exploiter les données pour répondre à une demande centrée sur le gérant d’un commerce. Un nouvel entrant qui souhaite s’installer dans un quartier a besoin d’informations sur les commerces de ce quartier, la fréquentation de ceux-ci, leur type, leurs notes et commentaires ainsi que leur catégorie de prix.

Notre future solution permettrait donc l’exploration d’un quartier pour permettre à un gérant de prendre mesure de la concurrence et d’observer les caractéristiques des business avec le plus de succès sur Yelp. Notre produit CityHeartbeat est né.

Nous avons passé un long moment à réfléchir sur les questions auxquelles devait répondre notre produit. Selon nous, deux questions principales intéressent un business qui souhaite s’installer : qui sont les concurrents déjà installés et qui sont les consommateurs qui viennent dans ce quartier ?

Quelles données pour une étude de marché ?

Après avoir défini nos objectifs, nous sommes passés à la phase 2 de la méthode : la compréhension des données.

Nous avions à notre disposition plusieurs tables regroupant des données par thème : la table business qui regroupe de très nombreuses données sur les commerces : leurs horaires d’ouverture, leur localisation, leur catégorie, leur note et des informations sur les services proposés ; la table checkin qui regroupe le nombre de visiteurs par période de temps pour chaque business ; la table reviews qui regroupe les avis des visiteurs ; la table users qui regroupe des informations sur les visiteurs.

Une première exploration de ces données nous a permis de nous rendre compte de plusieurs choses.

Premièrement, la table users n’est pas très utile dans notre cas car elle ne regroupe que des informations relatives à la communauté Yelp (nombre d’amis, commentaires des autres Yelpers…) et non pas des informations démographiques qui nous aideraient à qualifier les visiteurs d’un quartier… mais c’est un peu normal, non ?

Deuxièmement, la table des reviews nous paraît difficilement exploitable dans un premier temps, mis à part pour calculer le nombre d’avis par business. De plus, la date de l’avis ne veut pas dire grand chose car un utilisateur peut donner son avis plusieurs jours après sa visite.

Troisièmement, la table business, mise à plat, contient plus de 1000 informations différentes pour caractériser un business, ce qui rend sa manipulation difficile.

Enfin, nous remarquons que beaucoup d’informations, car non obligatoires, ne sont pas remplies : par exemple tous les restaurants n’ont pas rempli le champ “drive-thru” pour indiquer s’ils offrent ou non ce service. “Seulement 1% des business renseignent la case restrictions diététiques, ce qui la rend impossible à analyser” nous confie Célia, Data Quality Manager.

Suite à cette exploration, nous prenons deux décisions : utiliser uniquement les informations avec un taux de remplissage élevé pour garantir des informations pertinentes et partitionner la table business en sous-tables ne contenant que quelques colonnes pour faciliter et accélérer la manipulation des données.

Nous pouvons maintenant établir la liste des indicateurs que nous souhaitons suivre dans notre outil. CityHeartbeat permettra de visualiser :

  • la répartition des business en fonction de leurs coordonnées GPS sur une carte ;
  • leur nombre de checkins, leur nombre de reviews et leur note moyenne pour comprendre si ces business sont “performants” au sens de Yelp ;
  • des données sur les catégories de business et leur gamme de prix ;
  • des données sur les services proposés par les business (par exemple la livraison) et leurs horaires d’ouverture .

En ce qui concerne les consommateurs, nous ne pouvons rien afficher pour le moment mis à part leur nombre (grâce aux checkins).

Un POC interactif

Afin de réaliser notre tableau de bord, nous avons choisi l’outil Tableau Software, d’une part car nous connaissions déjà cet outil et d’autre part car c’est un outil puissant qui permet d’effectuer des calculs et d’en visualiser les résultats en temps réel. Il permet également une grande liberté dans la manipulation des données, les différents types de graphiques ainsi que les filtres. Dans un premier temps, par souci de simplification, notre première version de CityHeartbeat ne permet que d’observer les restaurants de la ville de Phoenix.

Le tableau de bord est très facile à prendre en main et la navigation y est intuitive. Il permet de répondre aux objectifs métiers que nous nous étions fixés et toute l’information capitale est synthétisée et présentée de la façon la plus parlante possible.

L’utilisateur peut rapidement visualiser où se trouvent les restaurants grâce à une carte de la ville observée. En fonction de la taille du point représentant le restaurant, l’utilisateur peut connaître sa fréquentation, et en fonction de la couleur allant du rouge au vert, il peut connaître la note donnée par les Yelpers. Un panel de filtres sur le côté de la carte permet de filtrer les restaurants de la zone : par leur catégorie, leurs horaires d’ouvertures et leur distance au point central de la zone étudiée.

L’outil permet également à l’utilisateur d’avoir une description globale des restaurants présents dans la zone choisie : comment sont réparties les enseignes en fonction de leur prix et de leur catégorie, combien de restaurants proposent certains services.

L’utilisateur peut aussi évaluer le poids du quartier par rapport à la ville entière : en effet, il peut voir quel pourcentage des checkins et des avis de la ville sont contenus dans la zone étudiée.

L’outil n’en est pour l’instant qu’à un stade de premier prototype. Nous avons plusieurs idées pour l’améliorer.

Premièrement, nous ne sommes pas totalement satisfaits de la façon dont la zone à explorer est définie. Aujourd’hui, nous utilisons une ville, un point de cette ville et nous calculons la distance entre chaque business de la ville et ce point central. L’utilisateur peut ensuite décider de réduire le rayon de la zone à explorer en diminuant la distance maximum au point choisi. Ce n’est pas la solution la plus pratique d’un point de vue utilisateur. La solution idéale serait de choisir une ville, puis un quartier de cette ville. Cela pose cependant plusieurs problèmes : les quartiers sont de taille très différente selon les villes (un “zoom” à l’intérieur du quartier serait alors nécessaire), de forme peu pratique à manier, et l’information du quartier n’est pas toujours disponible dans les données de Yelp.

Ensuite, comme cet outil est destiné à un commerçant qui cherche à s’installer, nous pourrions proposer plus d’options visant à lui permettre de comprendre pourquoi un business attire plus de personnes qu’un autre, en plus des checkins et de sa note. Entre autres, nous pourrions afficher une sélection d’avis : par exemple ceux qui sont notés les plus utiles, cools et drôles.

Nous pensions également indiquer quels sont les business qui ont souscrit à Yelp Ads ou Yelp Deals dans la zone observée, l’idée étant que de tels business devraient avoir une plus grande fréquentation, grâce à l’augmentation de leur visibilité. Cela pourrait idéalement inciter l’utilisateur de CityHeartbeat à souscrire lui-même à ces offres.

Dans tous les cas, nous sommes limités par les données en notre possession : certaines informations qui nous paraîtraient intéressantes ne sont pas assez remplies pour être exploitables, nous manquons d’informations sur la démographie des consommateurs… Nous devons également faire attention à ne pas montrer trop d’informations différentes sur notre tableau de bord, ce qui gênerait la lisibilité de l’outil.

Comment garantir nos revenus

En tant que membres de l’équipe Dynamic Solutions and Optimization de Yelp, notre mission n’est pas seulement d’améliorer le produit Yelp mais également de garantir des revenus. C’est la raison pour laquelle il est important de trouver un bon business model à notre projet.

Nous avons adopté un mode de vente en mensualités, avec une période d’essai où les interactions avec le tableau de bord seraient limitées pour donner envie à l’utilisateur d’acheter la version complète.

Notre produit pourrait en fait intéresser à la fois les commerçants qui souhaitent s’installer mais également des commerçants déjà implantés qui aimeraient se comparer facilement à leurs concurrents. Cela représente un nombre conséquent d’utilisateurs potentiels, sachant que rien qu’à Paris, 3 restaurants ouvrent chaque jour !

Ce que nous retenons de ce projet

Ce projet nous a permis de nous rendre compte de plusieurs choses.

Premièrement, ce n’est pas une légende : dans un projet de manipulation de données, ce n’est pas la modélisation ou la visualisation qui prennent le plus de temps.

Ici nous avons passé la majorité de notre temps à définir les objectifs de notre projet, puis à préparer les données. Une fois ces étapes passées, visualiser les données avec Tableau nous a semblé presque facile !

Ensuite, nous avons été confrontés au problème du big data, et là non plus, ce n’est pas une légende : la solution classique, mono serveur, que nous avions choisie pour la manipulation des données en Python, s’est heurtée à la quantité des données à manipuler (surtout le nombre de colonnes dans les datasets). En effet, nous n’avons pas utilisé d’architecture Big Data, et nous avons vite compris que le nombre important de calculs demandés nécessitait de changer de paradigme ! Faute de temps, nous avons donc contourné le problème en divisant les tables en sous-tables plus petites et donc faciles à manipuler, mais nous aurions cependant pu nous tourner vers des outils dédiés au Big Data comme Spark sur la plateforme Big Data TeraLab mise à notre disposition.

En conclusion, notre première version de CityHeartbeat s’est avérée fonctionnelle, facile à utiliser et pertinente. Pour évaluer sa performance, nous soumettrons un questionnaire de satisfaction à nos clients qui participeront bien entendu à l’évolution continuelle de la solution.

Affaire à suivre…

Qui se cache derrière les contributions Wikipédia ?

Par Mariam Thiam, Frédéric Tamagnan et Sébastien Guillon, élèves du Parcours Data Science de l’IMT Atlantique

Wikipédia, la plus célèbre encyclopédie du monde, compte plus de 30 millions d’articles. Sur cette plateforme, 25 000 articles sont créés quotidiennement dans plus de 280 langues. Les articles sont constamment édités, corrigés, et étoffés : il y a plus de 10 000 modifications par mois.

Mais quelle communauté se cache derrière ces contributions ? Peut-on identifier différents rôles chez les contributeurs ? Quelles sont les interactions entres les contributeurs ?

Dans cet article nous vous présenterons dans une première partie quelques statistiques sur notre dataset. Dans une deuxième partie nous étudierons les rôles des contributeurs. Enfin dans une troisième partie, en définissant comme lien social la coédition de pages (plusieurs personnes qui éditent la même page) nous découvrirons les interactions entre les contributeurs.

Quelques chiffres

Le dataset utilisé est Wikipédia simple, une version très allégée du dataset anglophone (de 2001 à 2016). Le dataset se présente comme une liste des contributions (ici nous faisons le focus sur les révisions)  : identifiant de la révision, date et heure de la révision, identifiant de la page sur laquelle porte la révision, taille de la contribution, numéro identifiant de l’utilisateur, etc. La seule information que nous avions sur l’auteur de la révision était s’il était enregistré ou non. Voici quelques chiffres sur ce dataset :

Nombre de révisions 4 936 382
Nombre d’articles 167 671
Nombre de pages total (articles, pages d’aide, etc) 391 930
Nombre de contributeurs enregistrés 49 037
Nombre de contributeurs non enregistrés 10 477

Nous travaillerons maintenant uniquement sur un dataset simplifié en ne prenant en compte que les révisions effectuées par des contributeurs enregistrés.

Détection des rôles

Namespace Majoritaire

Chaque révision -contribution- appartient à un « namespace » . Un namespace indique la catégorie dont fait partie la page de la révision. Une page peut être un article de l’encyclopédie, mais aussi une page de chat entre différents utilisateurs ou encore une page d’entraide.

Afin de déterminer les rôles des contributeurs, nous nous sommes intéressés aux namespaces utilisés par chacun d’entre eux et à leur quantité de participation.

Ci-dessous la liste  des différents namespaces et définition des namespaces que nous utiliserons :

ID

Subject Namespace

Talk Namespace

ID

Description

-2

Media

-1

Special

Pages sans wikitext

0

Main/Article

Talk

Article

2

User

User Talk

3

Utilisateurs

4

Wikipedia

Wikipedia Talk

5

Process & politique de wikipedia

6

File

File Talk

7

Wikipedia Content

8

Mediawiki

Mediawiki Talk

9

Espace d’édition pour les administrateurs

10

Template

Template Talk

11

Template d’articles

12

Help

Help Talk

13

Aide

14

Category

Category Talk

15

Regroupement de pages

Pour une description plus précise : https://en.wikipedia.org/wiki/Help:Files

A chaque subject namespace correspond un talk namespace. Par exemple Main va concerner les pages qui sont des articles en eux-mêmes alors que Talk (le talk namespace correspondant) va concerner les discussions autour de l’édition de ces articles.

Nous vous proposons de jeter un coup d’oeil sur la répartition des révisions du jeu de données par namespace. 71% des contributions concernent directement les articles (correction orthographique, ajout de contenu …).

Nous estimons que les namespaces majoritaires utilisés sont le reflet d’une activité de spécialisation pour chaque contributeur. Nous avons défini un namespace majoritaire pour un contributeur comme la catégorie de namespace où figurent plus de 30% de ses révisions. Un contributeur peut donc avoir entre 0 et 3 namespace majoritaires.

Un individu qui a 0 namespace majoritaire se disperse donc beaucoup entre les différentes catégories (ou alors n’a aucune révision à son actif) tandis qu’un individu avec 3 namespaces majoritaires se concentre sur 3 activités bien précises comme l’édition d’article, l’aide entre les membres, ou la discussion autour de certains articles (ou bien a fait très peu de révisions). Les namespaces majoritaires sont calculés de manière ordonnée. Pour un contributeur, son namespace majoritaire #1 contiendra plus de révisions que son namespace majoritaire #2 par exemple.

Cependant, une personne qui n’aurait fait que 3 révisions dans 3 namespaces différents, se verrait attribuer 3 namespaces majoritaires. Or cette personne a un impact mineur sur le site Wikipédia, on ne peut donc pas parler d’activités à proprement dit.

Score de participation

Afin de corriger le biais cité précédemment, nous avons défini un score de participation. Seul les individus avec un score de participation minimum jugé significatif pourront se voir attribuer un rôle.

Un attribut de notre dataset “minor” nous permet de savoir si une révision est mineure (le contributeur a écrit peu de texte) ou majeure (le contributeur a écrit beaucoup de texte).

Nous avons donc défini le score de participation :

Score de participation = Nombre total de révisions majeures (peu importe le namespace)

Définition des rôles

Nous vous proposons de lire notre matrice, qui définit des rôles pour la population de notre dataset.

Rôles

Score de participation

Namespace majoritaires

Contributeur Érudit

> 100 révisions majeures 

Article en #1

Contributeur dispersé

> 25

Pas de namespace majoritaire

Dépanneur

> 25

Help ou Help_Talk en #1 OU #2

Talker

> 25

N’importe quel talk namespace en #1 OU  #2

Social Networker

> 25

N’importe quel talk namespace en #1 ET #2

Catégoriseur

> 25

Category en #1

Template Creator

> 25

Template ou Template Talk en #1

Exemple : Supposons que Pierre ait effectué 300 révisions sur Wikipédia depuis 2001 dont :

  • 162 dans le namespace Article (soit 54%)
  • 120 dans le namespace Talk (soit 40%)
  • 18 dans le namespace (6%)

Grâce à  notre méthode, nous lui avons attribué 2 namespaces majoritaires (#1 = Article et #2 = User Talk). De plus, il a réalisé 150 révisions majeures parmi les 300 (donc le score de participation est assez significatif pour être validé). Par conséquent, Pierre endosse 2 rôles distincts chez Wikipédia : le premier de Contributeur Érudit (forte participation pour enrichir le contenu des articles) et le second de Talker !

Nos résultats

Rôles

Description

Population

Proportion parmi les rôles détectés

Contributeur Érudit

Membre qui contribue fortement à l’enrichissement d’articles

 722

41%

Contributeur dispersé

Membre qui n’est pas vraiment spécialisé dans une tâche

3

0%

Dépanneur

Membre qui aide les autres

4

0%

Talker

Membre qui passe son activité principale à discuter

844

47%

Social Networker

Version encore plus bavarde du Talker

3

0%

Catégoriseur

Membre qui contribue au regroupement d’articles

8

0%

Template Creator

Membre qui s’occupe de créer des canvas d’articles en amont de la création.

217

12%

TOTAL 

1801

 100%

Remarque 1 : Chaque membre peut se voir attribuer jusqu’à 2 rôles.

Remarque 2 : Nous avons identifié des rôles pour 1801 membres soit 3,6% des membres enregistrés de ce dataset.

Nous pouvons voir que les rôles majoritaires détectés concernent les articles, édition et discussion, ainsi que l’édition des canvas ou template d’articles.

La contrainte des 30% du namespace majoritaire est peut-être trop limitante pour la détermination des rôles plus subtils comme Social Networker ou Catégoriseur.

Détection des interactions

Nous avons ensuite cherché à déterminer les interactions entre contributeurs. Sur Facebook ou Twitter, les interactions sont explicites avec les likes, les liens d’amitiés ou de following. Sur Wikipédia, nous avons défini le lien social comme étant la co-édition de pages. Ainsi deux contributeurs se trouvent reliés s’ils ont contribué à la même page (article, page d’aide, etc).

Pour cette partie, nous avons travaillé sur un dataset allégé  de 10 000 contributeurs. Nous avons associé dans une structure de données (dictionnaire Python)  les groupes de contributeurs avec les pages qu’ils avaient co-édités.

Ainsi nous pouvions lire dans notre structure de données de manière : “Pierre et Jacques ont tous les deux contribués à la page sur Napoléon et à la page de discussion d’Obama. Pierre, Martin et Paul ont contribués tous les 3 au template de pages artistiques musicales”.

Nous avons ensuite extrait quelques statistiques de ces groupes de co-contribution.

Graphique du nombre de couples de contributeurs en fonction du nombre de page en commun

Voici maintenant quelques statistiques sur la distribution de la taille des couples de co édition :

Taille moyenne des groupes de co-édition

3

Ecart type de la taille des groupes de co-édition

3

Taille minimum des groupes de co-édition

2

Taille maximum des des groupes de co-édition

132

1er quartile de la distribution des tailles

2

médiane de la distribution des tailles

2

3ème quartile de la distribution des tailles

3

Conclusion

Dans cet article nous avons donc identifié avec un modèle très simpliste les rôles dans le dataset Wikipédia que nous avons utilisé. Nous avons également mis en valeur les interactions entre les différents membres au travers du lien de co-édition.

Nous pourrions imaginer, pour améliorer le modèle des rôles, de prendre en compte plus de paramètres afin d’avoir une détection plus fine : faire une détection par année ou par mois, prendre en compte les révisions mineures associées à chaque namespace et les reverts. De plus, nous pourrions mettre ça en lien avec la co-édition afin de regarder comment les rôles et le graphe de communauté se superposent.

LiveBox Foudroyée en Spark

logo_fondation Mounir Haddad, promotion 2016, a participé au Prix de la Fondation Mines-Télécom du meilleur stage de fin d’études avec son stage intitulé « LiveBox Foudroyée en Spark ». Mounir a effectué son stage chez Orange, à la DSI à Guyancourt d’avril à septembre 2015. Il nous livre ici son Executive Summary et sa vidéo.

De la preuve de concept du projet LiveBox Foudroyée à la mise en production

A partir de 2011, Orange a pressenti le potentiel des mégadonnées de ses bases de production. Le groupe a restructuré ses différents services, à différents niveaux, pour y intégrer le Big Data. Plusieurs projets de traitement de données massives ont déjà vu le jour et sont actuellement en production. Néanmoins, le Big Data est un domaine en essor et l’écosystème de Hadoop ne cesse d’évoluer. Les acteursdoivent agir en conséquence.

bigdata-orange-livebox

Dans ce cadre, la DSI d’Orange a lancé plusieurs Proof of Concept (POC), dont le projet LiveBox Foudroyée (LBF), répondant à des cas d’usage métiers, pour apprécier les avantages et les performances de Spark, un nouvel outil prometteur. Si ceux-là sont jugés concluants, un environnement de production

dédié sera mis en place et des projets Spark y seront déployés. Le sujet du stage s’est inscrit dans cette initiative, l’objectif étant l’étude de la faisabilité de LBF dans un environnement Spark.

Le dispositif LBF vise à détecter en proactif le foudroiement de LiveBox et à prévenir les risques d’endommagement d’équipements, en recoupant les données du réseau Orange avec les prévisions et rapports météorologiques fournis par météoFrance.

Le projet LBF est actuellement en production sur une application implémentée en Pig. Il a été remarqué et sélectionné pour le trophée de l’innovation du salon Big Data Paris, qui s’est tenu en mars 2015 au CNIT de Paris. Un article du Journal du Net est consacré à cette édition du trophée.

La mission du stage a consisté en la refonte de ce dispositif dans un framework Spark, en utilisant le langage Scala. Les prérequis et les performances du prototype conçu ont été identifiés, ainsi que les problèmes rencontrés et leurs gravités. Les résultats ont été remontés lors d’une réunion sur l’industrialisation de Spark, avec l’équipe du centre de compétences BI & Big Data de la DSI d’Orange.

Le projet LiveBox Foudroyée

Chaque année, à peu près 10 000 LiveBox sont foudroyées. Dans ce cadre, Orange souhaite déployer le dispositif LBF.

Orange incite ses clients à débrancher la prise électrique de leur LiveBox ainsi que le câble ADSL relié à la prise téléphonique pendant la durée des orages. Si certaines solutions comme les prises parafoudre peuvent psauver-liveboxréserver un équipement, il n’est pas plus efficace que le débranchement de la LiveBox.

En outre, Orange peut détecter les LiveBox foudroyées afin de proposer à ses clients un échange rapide en boutique Orange ou point relais. Le foudroiement des LiveBox peut coûter cher à un opérateur suivant sa politique : Orange remplace gratuitement les équipements endommagés.

Le projet LBF contient trois principaux modules
  • Référentiel : Il s’agit de transformer les données des terminaisons de lignes clients issues de différentes sources internes au réseau Orange afin de constituer des données facilement exploitables pour les traitements des deux autres modules. En l’occurrence, pour chaque LiveBox, on rassemble plusieurs informations (ligne, adresse, commutateur…) qui seront utiles pour les calculs suivants. Le référentiel est généré une fois par jour, les enregistrements de la veille sont écrasés puis remplacés.

  • Préventif : L’objectif est d’informer le client en cas d’alerte d’orage pour éviter le foudroiement de sa LiveBox, en lui préconisant de la débrancher. Ce module se base sur un algorithme recoupant les prévisions de météoFrance avec celles du référentiel. Le calcul préventif est lancé quotidiennement à deux reprises (ou campagnes).

  • Proactif : Il s’agit de détlivebox-foudroyee-crmecter en proactif le foudroiement des LiveBox et de proposer au client, après validation, un échange de son équipement. Ce module fonctionne grâce à un algorithme croisant les données de météoOrage avec celle des déconnexions de LiveBox. Le calcul proactif est lancé toutes les demi-heures, afin d’alerter les clients au plus tôt.

Le projet LBF vient en remplacement d’une ancienne application uniquement préventive.

Aussi, au vu des volumétries des sources de données, cette ancienne application devenait obsolète car elle s’exécutait sur un serveur unique : le traitement référentiel durait 10 h. Depuis début 2015, LBF est en production grâce à une application Pig sur un cluster distribué d’Orange. Le temps d’exécution du calcul référentiel est réduit à 23 min.

Aspects techniques

Le développement des modules de LBF est réalisé en local, dans un cluster pseudo-distribué. Cependant, un cluster simulé sur un ordinateur unique ne peut pas traiter de grandes quantités de données, à l’image de celle présentes en production. Un jeu de données réduit et anonymisé a donc été extrait des bases de production pour accompagner les phases de développement et de tests unitaires.

En outre, le test en local ne peut se substituer aux tests sur le cluster de tests d’Orange : les performances algorithmiques sont déterminées au cours de cette phase et certaines erreurs dans le code ne peuvent apparaître qu’en traitement distribué.

Les calculs réalisés lors des différents modules de LBF consistent essentiellement en un ensemble de filtres, de dédoublonnements et de jointures (fermées, ouvertes, élément le plus proche, jointures tridimensionnelles en temps et en surface). La difficulté réside dans les volumétries des tables sources.

Résultats

Quand on compare les performances de l’algorithme du calcul référentiel implémenté en Spark avec celles de l’application Pig en production, le constat est sans appel. Le temps d’exécution est divisé par 2 pour moins de ressources.

Référentiel en Pig (MapReduce) Référentiel en Spark
Volumétrie en entrée De l’ordre de 10 Go
Temps d’exécution 23 min 10 min
Nombre de nœuds 25 10
Nombre de cœurs 200 24
Vitesse d’exécution 0.43 Go/min 1 Go/min
Vitesse d’exécution/nœuds 17 Mo/min 300 Mo/min

Cela peut s’expliquer par le recours à la RAM plutôt qu’à HDFS pour le stockage des jeux de données intermédiaires à la sortie finale, voire à la mémoire cache pour les données amenées à être utilisées à plusieurs reprises, mais aussi par le fait qu’un job Spark n’est pas forcément une succession de paires map / reduce, contrairement à un job dans le paradigme Hadoop.

En outre, certaines techniques offertes par Spark ont aidé à atteindre ces performances. Entre autres, l’usage des variables partagées telles que le broadcast réduit significativement le temps d’exécution. Ce type d’objets a la particularité d’être connu de tous les nœuds impliqués dans le job courant et est donc idéal pour certaines opérations telles que la jointure de 2 jeux de données, dont un est à volumétrie limitée. Ce concept est très économe en bande passante.

Aussi, pour résoudre le problème de déséquilibre des volumétries à traiter en parallèle, il a fallu recourir à des fonctions de répartition, fonctions qui redistribuent un jeu de données de manière équilibrée sur les différents mappers en jeu.

Les différents résultats ont été présentés au chef de projets et aux autres membres de l’équipe. Une démonstration de LBF sur Spark a été organisée. Aussi, une présentation animée par un autre stagiaire et moi-même, portant sur Spark et son application en milieu industriel a été organisée. Les membres du centre de compétences BI & Big Data d’Orange s’y sont joints, ainsi que plusieurs personnes d’autres équipes de la DSI d’Orange, intéressées par la technologie Spark.

Suite à ce stage, la DSI d’Orange envisage de mettre en place une plateforme sur l’architecture Spark et d’y porter le dispositif LBF de même que d’autres projets en production.logo-orange

Retour d’expérience sur notre mission intitulée « Mise à disposition d’une boîte à outils pour Data Scientist ».

Par Quentin MARINIE et Fabien VIOSSAT, étudiants 3A IMT Atlantique.

social network concept

Sur Facebook, ce sont près de 10 milliards de messages et 4,75 milliards de partages qui sont enregistrés chaque jour. Sur Twitter, le maximum de tweets par seconde est de 143 199. Si l’on rapporte ces chiffres à la courte durée de vie de ces entreprises (respectivement 12 et 10 ans) on se rend compte de l’importance croissante des réseaux sociaux dans notre vie de tous les jours. Mais très certainement vous-même appartenez à d’autres réseaux sociaux ou communautés telles que Wikipédia, Copains d’avant, Instagram, LinkedIn ou encore la communauté de votre fournisseur de forfait téléphonique.

Ces nouvelles solutions de communication ont un potentiel énorme mais les entreprises font alors face à de nouvelles problématiques : Comment gérer des millions d’individus ? Comment savoir si un forum ou une communauté est en « bonne santé » ?

Ce sont les questions auxquelles Standing On Giants, fournisseur de plate-formes pour communautés et filiale de Telefonica (UK), tentent de répondre en collaboration avec le département LUSSI de Télécom Bretagne. Il nous a donc été proposé (Quentin MARINIE et Fabien VIOSSAT) dans le cadre du Projet Ingénieur de la filière ISA de mener une phase de cadrage de cette mission. Encadrés par Mme Cécile Bothorel et M. Laurent Brisson, tous deux enseignants-chercheurs dans ce même département, nous avons pu entamer la phase préliminaire du projet. Cet article constitue notre retour d’expérience sur notre mission intitulée « Mise à disposition d’une boîte à outils pour Data Scientist ».

Ancrer son travail dans la durée…

Présents sur les réseaux sociaux depuis plusieurs années, nous nous sommes aperçus que nous étions purement et simplement novices dans l’analyse de leur utilisation. Guidés par nos tuteurs, nous nous sommes intéressés aux statistiques ainsi qu’à la théorie des graphes qui, comme dans de nombreux cas, permettent de solutionner nombre de problèmes. Lecture de thèses, recherche d’ouvrages ou d’articles sur internet mais encore prise en main d’un serveur, découvertes de packages sur différents langages ont été notre quotidien. Les premiers instants s’apparentaient donc à un état de l’art du domaine, nous avons ainsi pu donner une orientation initiale au projet.

Cette démarche s’inscrivant dans une mission durable, nous devions constamment donner une traçabilité à nos recherches, rédiger des documents présentant nos résultats ou encore proposer des tutoriels sur l’utilisation de méthodes.

En effet, un des points importants était la pérennité des résultats : notre étude ne durant que 6 mois et la mission étant destinée à durer plus longtemps, nous nous devions de laisser des traces pour garantir la bonne compréhension de nos travaux.

Où chercher ? Que chercher ?

Un des intérêts d’une telle mission est que d’une semaine à l’autre, avec l’obtention de résultats, il est nécessaire de réorienter les recherches. Des réunions étaient donc prévues avec nos tuteurs de manière à présenter ces résultats, discuter de ceux-ci et enfin fixer les prochains objectifs.

S5_2016_Mission

Il a par conséquent fallut effectuer de nombreux tests sans savoir s’ils allaient être concluants. Comme prévu, nombres d’entre eux se sont révélés peu intéressants pour la poursuite de l’étude. Cet aspect peu motivant était pourtant nécessaire.

Nous avons certainement autant appris de nos échecs que de nos découvertes.

La présence de nos encadrants était bien évidemment essentielle, dotés d’une plus grande expérience dans ces domaines, leurs intuitions se sont souvent révélées utiles et vraies. Cet appui nous a permis d’avancer bien plus vite que par nos simples recherches et, avec plus de recul, nous réalisons que le projet final a très peu à voir avec l’idée initiale que nous en avions.

Le bon outil pour le bon usage !

Neo4J, Python, R, NetworkX voici les premières pistes que nous avions pour explorer les graphes. Après une première prise en main de certains et une recherche sur d’autres logiciels, langages ou packages, nous avons sélectionnés ceux qui nous paraissaient à première vue les plus adaptés. Par la suite, nous avons dû approfondir nos recherches sur ces solutions.

Quelle solution convient la mieux à nos objectifs ? Un package présent sur Python et R est-il mieux documenté ou plus efficace sur l’un ou l’autre des langages ? Là encore de nombreux tests ont été réalisés sur nos propres machines avec à nouveau des tentatives non concluantes mais permettant de comparer les différentes solutions.

Cependant, nous avons assez rapidement fait face aux limites de nos ordinateurs. N’étant pas en possession des datasets de Standing On Giants, nous avons testés différents algorithmes classiques d’études de graphes (clustering, proximité, centralité, taille de cliques…) sur des s5_2016_Scalabitydatasets trouvés sur internet et aux caractéristiques bien différentes (de 4000 individus à près de 10 millions). En concertation avec nos encadrants, nous nous sommes alors vus attribuer un serveur de calcul du département LUSSI. L’idée étant de tester la scalabilité des packages sur des graphes de dimensions semblables à ceux susceptibles d’être fournis par Standing On Giants. Nous voulions ainsi tenter de trouver des liens ou des généralisations entre le temps d’exécution de certains algorithmes gourmands en ressources et les paramètres même du graphe. Tout cela ayant pour finalité de pouvoir donner une évaluation du temps d’exécution d’un algorithme sur un graphe uniquement en fonction de ses paramètres (cf. notre article sur ce même blog). Un serveur de 128 Go de RAM et 32 cœurs a alors été mis à notre disposition pour la durée du projet.

De l’art d’utiliser un serveur !

L’utilisation de ce serveur nous a réservé quelques surprises. Entre les problèmes de connexion au serveur lui-même, les problèmes de connexion internet via tunnel SSH, les mises en place problématiques de nos environnements R et Python ou encore les scripts qui semblent tourner sans fin, il nous a fallu nous accrocher. Initialement, cela nous semblait tout aussi simple que de prendre en main un terminal sous Ubuntu mais nous nous sommes alors rendu compte qu’une tâche aussi banale qu’importer un fichier s’avérait compliquée. ferme_serveursUne fois le serveur et ses configurations mieux maîtrisées, les scripts ont pu être lancés (en tout une trentaine entre R et Python) dont certains ont été abandonnés car trop longs. De plus, une partie des résultats était à nouveau inexploitable ou n’apportaient pas d’informations quant aux relations entre temps d’exécution et paramètres du graphe (diamètre, densité, réciprocité…). Un serveur n’est pas aussi transparent qu’un ordinateur physique et cela implique pour son utilisation une grande maîtrise de ce dernier et des compétences d’administrateur système !

Ce qu’on en retient

Il y a donc différents aspects qui ressortent de ce projet.

Tout d’abord, il fut très intéressant de travailler sur une mission concrète d’entreprise d’autant plus lorsqu’elle a trait à des problématiques actuelles.

En effet, l’utilisation de la théorie des graphes pour décrire les réseaux sociaux est en pleine expansion et avoir pu en apprendre un peu plus auprès d’enseignants-chercheurs a été très enrichissant.

Cette approche assez exploratoire nous a également apporté un aperçu du travail effectué en recherche dans les différents laboratoires de Télécom ou même d’ailleurs.

Il n’est pas simple de devoir remettre souvent ses résultats en question et d’accepter que certaines tâches effectuées n’auront pas d’utilité pour la suite du projet. Enfin, et plus personnellement, cela nous a permis d’élargir notre domaine de connaissance : théorie des graphes, utilisation d’un serveur de calcul, découvertes de packages, lecture des thèses. Tous ces éléments ont fait de ce projet une expérience réellement intéressante et nous souhaiterions remercier nos deux encadrants, Cécile Bothorel ainsi que Laurent Brisson, de nous avoir soutenus, supportés et guidés lors de cette mission.

Faut-il passer sur une plate-forme Big Data ou non ?

Par Quentin MARINIE et Fabien VIOSSAT, étudiants 3A Telecom Bretagne.

L’objectif de notre projet est de pouvoir analyser des communautés de forums, parfois très populaires et très actives, à l’aide de la théorie des graphes. A terme, nous souhaitons équiper des Community Managers d’outils de monitoring de l’activité de leurs forums.

Notre projet d’étudiants en dernière année du parcours Data Science de la filière ISA est de faire un benchmark des outils existants et de pouvoir dimensionner la plate-forme d’analyse en fonction du volume des données à traiter.

Mise en place du benchmark

Nous avons, dans un premier temps établi un panorama des outils existants permettant d’analyse des réseaux d’interactions représentant l’activité d’échange sur des forums. Nous avons fait un comparatif des performances de ces outils. Ce cmontreomparatif des performances est tourné uniquement vers l’utilisation d’algorithmes d’Analyse de Réseaux Sociaux (Social Network Analysis en anglais) tel que le calcul de diamètre d’un graphe, le calcul de centralités (intermédiarité, proximité, etc.).

La première information importante que l’on a pu tirer de cela est le fait que nos machines personnelles (laptop) ne nous permettent pas de traiter des graphes de la taille des communautés de forums visées, soit quelques millions de nœuds. Nous avons donc eu recours à un serveur de recherche de l’équipe CNRS Decide du Labsticc à Télécom Bretagne (128 Go de RAM et 32 cœurs) dans l’espoir d’arriver à exécuter ces algorithmes.

S5_2016_igraph

Nous avons récupéré un panel de datasets sur le site SNAP de l’université de Stanford. Ces jeux de données réels sont échelonnés en nombre de nœuds et nombre d’arêtes, allant de 4000 nœuds et 88000 arêtes jusqu’à 3 millions de nœuds et 6 millions d’arêtes. Pour chacun de ces datasets nous avons pu calculer les caractéristiques descriptives des graphes qui nous importaient pour chacune des deux librairies en lice, Igraph-R et Igraph-Python, qui s’avèrent les plus performantes parmi les 7 librairies sélectionnées au départ dont NetworkX.

Igraph-R vs. Igraph-Python : nous avons fait un rapide comparatif des performances de 4 algorithmes sur 6 jeux de données : diamètre, intermédiarité des sommets, centralité de proximité, taille de la clique maximale. Cela nous a montré que Igraph-R est plus performant que Igraph-Python dans 23 des 24 cas comparés.

Notre machine sera-t-elle suffisante pour ce réseau d’interaction ?

Big data ou non ? Dans quel cas de forum faudra-t-il changer de paradigme et passer à une plate-forme Big Data ? Sachant les caractéristiques simples de notre forum, l’outillage sur notre serveur sera-t-il suffisant ?

La problématique est ici simple (et très répandue !)  : « puis-je continuer à utiliser mes outils historiques, que je maîtrise et qui procurent une grande valeur ajoutée, pour ce nouveau jeu de données ? Ou bien dois-je passer à une autre plate-forme, moins riche… et que je maîtrise moins ? »

s5_2016_methodo

Notre volonté de prédire les temps d’exécution des algorithmes s’applique avant tout aux algorithmes de base, utilisés par nos outils maison, et gourmands en termes de temps. Les trois principaux étant :

  • le calcul d’intermédiarité des sommets,
  • la proximité des sommets,
  • le calcul du diamètre du graphe.

Nous n’avons pas eu besoin de considérer la prédiction du calcul du diamètre car des méthodes permettant d’approximer cette valeur existent et réalisent le calcul en un temps machine négligeable (voir par exemple ce que nous avons utilisé : l’algorithme du bout du monde).

Nous avons alors effectué de multiples régressions en changeant la variable explicative de manière à trouver des corrélations avs5_2016_caracteristiques_graphesec les temps d’exécutions.

Les variables explicatives sont des descripteurs simples à calculer sur un nouveau jeu de données : on peut citer ici des caractéristiques de réseaux sociaux classiques tels que le nombre de noeuds, d’arêtes, la densité d’arêtes, ou encore le diamètre (avec la technique linéaire de calcul, nous pouvons nous servir de cette mesure comme caractéristique descriptive de notre réseau).

Ainsi, c’est prêt d’une trentaine de graphes qui ont été tracés et qui n’ont pu aboutir à aucune régression. Toutefois, nous avons obtenu les résultats suivants pour le paramètre composé : diamètre * nombre d’arêtes.

On peut constater que le coefficient de corrélation est ici de 1 avec la combinaison (diamètre * nombre d’arêtes) pour l’ensemble des datasets pris en compte. Il est important de savoir que le coefficient de corrélation maximum obtenu sur l’ensemble des autres graphes était de 0.86 lorsque l’on ne considérait que le nombre d’arêtes et qu’il était impossible d’interpoler la grande majorité des graphiques.

s5_2016_regressions

De multiples axes de progressions semblent possibles, tant sur la validation des régressions que nous avons pu réaliser, que sur les possibilités que cela pourrait apporter.