Le Big Data : Aspects théoriques et pratiques Stéphane TUFFERY IIèmes Rencontres STAT. à l’UBS 21 novembre 2014 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 1 Plan Le Big Data Méthodes statistiques et Machine Learning pour le Big Data Réduction de la complexité et agrégation de modèles Les réseaux sociaux Exemple d’analyse d’un réseau social avec R Conclusion 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 2 Le Big Data 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 3 L’escalade de la puissance Avant 1950 : la statistique avec quelques centaines d’individus et quelques variables, recueillies dans un laboratoire selon un protocole strict pour une étude scientifique Années 1960-1980 : l’analyse des données avec quelques dizaines de milliers d’individus et quelques dizaines de variables, recueillies de façon rigoureuse pour une enquête précise Années 1980-2000 : le data mining avec plusieurs millions d’individus et plusieurs centaines de variables hétérogènes, recueillies dans le système d’information des entreprises pour de l’aide à la décision À partir des années 2010 : le Big Data avec plusieurs centaines de millions d’individus et plusieurs milliers de variables, de tous types, recueillies dans les entreprises, les systèmes, Internet, pour de l’aide à la décision, de nouveaux services 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 4 L’explosion de la production de données Données signalétiques et sociodémographiques Données de comportement (utilisation du téléphone, de la carte bancaire, du véhicule…) Données CRM (contact avec un service client, carte de fidélité, fidélisation…) Données externes provenant des administrations (Open Data) ou des mégabases de données privées Informations remontées par les capteurs industriels, routiers, climatiques, puces RFID, NFC, objets connectés (caméras, compteurs électriques, appareils médicaux, voitures…) Géolocalisation par GPS ou adresse IP Données de tracking sur Internet (sites visités, mots-clés recherchés...) Contenu partagé sur Internet (blogs, photos, vidéos…) Opinions exprimées dans les réseaux sociaux (sur une entreprise, une marque, un produit, un service…) 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 5 Caractérisation des données Big Data : les 3 « V » Volume L’ordre de grandeur de ces volumes est le pétaoctet (1015 octets) L’accroissement du volume vient de l’augmentation : du nombre d’individus observés (plus nombreux ou à un niveau plus fin) de la fréquence d’observation et d’enregistrement des données (mensuel quotidien, voire horaire) du nombre de caractéristiques observées Cet accroissement vient aussi de l’observation de données nouvelles, provenant notamment d’Internet : pages indexées, recherches effectuées, messages postés, éventuellement avec des données de géolocalisation Cet aspect est peut-être le plus visible et le plus spectaculaire, mais il n’est pas le plus nouveau (grande distribution, banque, téléphonie manipulent de grands volumes de données) 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 6 Caractérisation des données Big Data : les 3 « V » Variété Ces données sont de natures et de formes très diverses : numériques, logs web, textes (Word, PDF, courriels, SMS…), sons, images, données fonctionnelles… Cette variété rend difficile l’utilisation des bases de données usuelles et requiert une variété de méthodes (text mining, web mining…) 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 7 Caractérisation des données Big Data : les 3 « V » Vitesse, ou Vélocité Vélocité des données qui proviennent de sources où elles sont mises à jour rapidement, parfois en temps réel (streaming data) Vitesse des traitements à mettre en œuvre sur ces données la décision du client sur Internet se fait vite car il suffit d’un clic pour changer de site, aussi faut-il instantanément lui faire la meilleure offre commerciale la détection de la fraude par carte bancaire doit bien sûr aussi être instantanée Dans certains cas, vitesse de mise à jour des modèles, et pas seulement vitesse de leur application 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 8 Méthodes statistiques et Machine Learning pour le Big Data 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 9 Méthodes statistiques pour le Big Data Les principales méthodes de modélisation statistique appliquées aux Big Data sont fondées sur les techniques avancées d’échantillonnage, le Machine Learning, les estimateurs du type Lasso, l’analyse des données fonctionnelles et bien sûr le text mining pour l’analyse des textes en langage naturel On peut ajouter la détection des règles d’association, utilisée dans la grande distribution pour l’analyse des tickets de caisse, qui sont des Big Data avec des nombres de tickets de plusieurs centaines de millions et des nombres de produits de plusieurs dizaines de milliers On peut mentionner un autre axe de recherche, sur la visualisation des données en grande dimension, qui est importante aussi parce qu’il faut communiquer des informations à des interlocuteurs non spécialistes 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 10 Matrices en grande dimension L’étude des matrices en grande dimension survient naturellement, avec des matrices dont les lignes sont des clients et les colonnes des produits téléchargés, achetés ou recommandés. Il peut aussi s’agir de matrices représentant des relations entre individus, dans des contextes de marketing, de sociologie, de bio-statistique… ou entre institutions financières cotées (rendements journaliers) dans un contexte d’étude du risque systémique Recherche dans ces grandes matrices de sous-matrices (clusters) correspondant à des sous-ensembles pertinents de produits et d’individus intéressés par ces produits Biclustering (co-clustering) pour la classification simultanée des lignes et des colonnes trouver des groupes de documents caractérisés par certains groupes de mots associer des groupes de phénotypes à des groupes de gènes 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 11 p >> n La régression en grande dimension pose le problème classique de sélection des variables On rencontre aussi, par exemple en bio-statistique (séquençage de l’ADN) ou en chimiométrie (statistique appliquée aux données chimiques), des situations où le nombre de variables est supérieur, voire très supérieur, au nombre d’individus (on parle de tableaux plats), et où les méthodes classiques de régression ne s’appliquent pas et cèdent la place à des méthodes telles que la régression Lasso ou PLS Le nombre de variables étudiées peut varier entre 104 et 108, alors que le nombre d'observations est de quelques centaines 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 12 Données fonctionnelles Les données fonctionnelles sont des données qui ne sont pas ponctuelles mais sont continues, comme des courbes ou des images Ces données se sont multipliées avec les progrès technologiques qui permettent la collecte et le stockage d’observations de plus en plus fines, captant en continu les informations sur un objet étudié (météorologique, environnemental, médical, alimentaire…) Ces données sont de grande taille, mais posent aussi des problèmes de corrélation élevée entre deux observations proches d’un même phénomène continu Au lieu de discriminer des individus au vu de quelques caractéristiques en nombre fini observées en quelques instants choisis, on n’a pas d’a priori sur le moment et la durée des différences entre deux courbes d’évolution, ce qui amène à les considérer dans leur intégralité au lieu de les discrétiser Travaux récents sur les séries temporelles fonctionnelles 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 13 Nouvelles approches en Machine Learning Les méthodes de Machine Learning (agrégation de modèles, SVM, réseaux de neurones…) sont utilisées pour leur pouvoir prédictif élevé, dans des situations où la lisibilité du modèle n’est pas recherchée et où leur caractéristique « boîte noire » n’est pas un inconvénient Exemple d’une librairie en ligne, qui veut proposer des titres à ses clients. Dans ce problème, les variables (titres déjà achetés) sont excessivement nombreuses et créent des matrices creuses difficiles à modéliser. L’approche courante est de décomposer la clientèle en un très grand nombre de segments, éventuellement des milliers, recalculés en permanence par des techniques statistiques qui permettent de situer chaque client dans un petit segment de clients ayant des goûts proches. Ensuite, on lui propose les titres souvent acquis par les autres clients de son segment, que lui-même n’aurait pas encore acquis. Ces calculs sont refaits en permanence, sans recherche de segments et de modèles robustes et lisibles. 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 14 Les méthodes d’agrégation Les méthodes d'agrégation, ou méthodes d'ensemble, ainsi que le stacking, consistent à combiner entre elles des méthodes prédictives Dans le stacking, on combine différentes méthodes ; dans les méthodes d’agrégation, on applique un grand nombre de fois la même méthode Quand on agrège des modèles prédictifs, parfois simplement en faisant la moyenne de leurs prédictions, il vaut mieux agréger des modèles moins poussés, individuellement moins performants, pour obtenir un modèle final plus performant ! Cela vient de ce que les modèles individuels plus poussés se ressemblent plus, et que le gain de leur agrégation est beaucoup moins grand On touche ici au besoin de puissance du Big Data, car ces méthodes peuvent être très gourmandes en temps de calcul 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 15 Remarque sur les méthodes appliquées au Big Data Toutes les méthodes utilisées pour le Big Data ne sont pas toutes très récentes, et la plupart faisait du Big Data comme Monsieur Jourdain : « Par ma foi ! il y a plus de quarante ans que je dis de la prose sans que j'en susse rien, et je vous suis le plus obligé du monde de m'avoir appris cela. » Molière, Le Bourgeois gentilhomme, 1670 À côté des méthodes classiques, on utilise des méthodes plus modernes (les méthodes « d’agrégation » par exemple) mais aussi des perfectionnements très récents de méthodes classiques (les méthodes « pénalisées », par exemple) C'est comme la musique dite classique, qui ne s'est pas arrêtée au XIXe siècle, et qui s'enrichit en permanence de nouvelles œuvres, certaines plus novatrices et originales que des œuvres de musique dite moderne 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 16 Réduction de la complexité et agrégation de modèles 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 17 Fonction de perte et risque d’un modèle Si un modèle relie X et Y en sorte que Y = (X) + ε, avec E(ε) = 0 et V(ε) = σ², et si estime , des fonctions de perte L courantes sont : y continue ⇒ L(y, (x)) = (y – (x))² y = –1/+1 ⇒ L(y, (x)) = ½ |y – (x)| Risque (ou risque réel) = espérance de la fonction de perte sur l’ensemble des valeurs possibles des données (x,y) comme on ne connaît pas la loi de probabilité conjointe de x et y, on ne peut qu’estimer le risque l’estimation la plus courante est le risque empirique ∑ − ( ) ou ∑ − ( ) (n = effectif) on retrouve le taux d’erreur pour y = –1/+1 Dans le cas quadratique, le risque se décompose en : Erreur irréductible σ² + Biais²(modèle) + Variance(modèle) Variance de y autour de sa valeur moyenne + (différence entre espérance de la prédiction f(x) et valeur moyenne de y)² + variance de la prédiction 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 18 Dilemme Biais-Variance Plus un modèle est complexe, plus son biais diminue mais plus sa variance augmente Nous devons trouver le bon compromis entre biais et variance, entre ajustement aux données d’apprentissage (biais) et capacité de généralisation (variance) Dans quelques cas simples, la complexité d’un modèle est égale à p+1, où p est le nombre de paramètres Dans certaines situations, on ne peut pas diminuer le nombre de paramètres car les utilisateurs veulent voire apparaître simultanément des critères même s’ils sont fortement corrélés : médecine, avec des mesures physiologiques, des résultats d’analyses banque, avec des critères qualitatifs saisis sur les entreprises La complexité peut être diminuée par l’introduction de bornes ||β|| ≤ C dans la recherche des coefficients d’un modèle de régression (les observations étant dans une sphère de rayon R) complexité ≤ min[partie entière (R²C²),p] + 1 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 19 Solutions de réduction de la complexité La régression avec pénalisation Ld (d ≥ 0) Minimiser -2.log-vraisemblance (ou Σ des carrés) + λΣ|βi|d, d ≥ 0 minimiser -2.log-vraisemblance avec la contrainte λΣ|βi|d ≤ C d ≤ 1: sélection de prédicteurs (AIC, BIC si d = 0 , Lasso si d = 1) d > 1: rétrécissements de coefficients (Ridge si d = 2) La régression ridge (ou logistique ridge) est la plus répandue elle réduit les coefficients dans toutes les directions, surtout celles à faible variance (le coefficient de la ridge sur la 1ère composante principale diminue moins que le coefficient sur la 2e composante, etc.) La complexité peut aussi être réduite par la régression PLS avec une seule composante : les signes des coefficients sont égaux aux signes des corrélations entre prédicteurs et variable réponse la régression PLS réduit les coefficients dans les directions à faible variance, mais peut provoquer une hausse trop grande dans les directions à forte variance ⇒ l’erreur de prédiction de la PLS est souvent un peu supérieure 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 20 Ridge plot Évolution des coefficients en fonction de la pénalisation Régression ridge 21/11/2014 Régression lasso Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 21 Introduction aux méthodes d’agrégation Nous avons vu que la complexité d’un modèle doit être maîtrisée pour lui assurer une faible somme « biais² + variance » et donc une bonne généralisation La complexité d’un modèle peut être diminuée par : la diminution du nombre de prédicteurs l’introduction de bornes sur les coefficients de régression de ces prédicteurs l’augmentation de la marge des SVM Nous allons voir une autre approche avec les méthodes d’agrégation (« méthodes d’ensemble ») qui consistent à agréger les prédictions de plusieurs modèles de même type, d’une façon qui permette de réduire la variance voire le biais du modèle agrégé Si les prédictions sont identiquement distribuées mais dépendantes, avec une corrélation ρ > 0, la variance de la prédiction moyenne est ² + ², et diminue si B est grand et ρ est faible 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 22 Bagging 1/2 En moyennant des classifieurs (par exemple des arbres) sur B échantillons bootstrap, on obtient un classifieur : dont le biais n’a pas diminué dont la variance a diminué d’autant plus que la corrélation entre les classifieurs est faible Les B modèles sont agrégés : par un vote ou une moyenne des probabilités P(Y=1|X) quand on sait calculer cette moyenne (classement) par une moyenne des estimations (régression) C’est le bagging : Bootstrap AGGregatING, Breiman, 1996 La procédure de vote appliquée à des arbres de faible qualité peut conduire à un résultat pire lors de l’agrégation supposons que Y = 1 pour tout x et que chaque classifieur prédise 1 avec la probabilité 0,4 et 0 avec la probabilité 0,6. L’erreur de classement de chaque classifieur vaudra 0,6 mais l’agrégation par vote donnera un classifieur dont l’erreur vaudra 1. 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 23 Bagging 2/2 Le classifieur de base est le même à chaque itération : arbre de décision, réseau de neurones… La corrélation entre les classifieurs est diminuée par : le mécanisme de bootstrap l’augmentation de la complexité ⇒ Le bagging s’applique mieux aux classifieurs à faible biais et variance élevée ⇒ particulièrement les arbres de décision ⇒ La stratégie d’élagage est simple : préférer le bagging sur des arbres profonds Bagging inefficace sur un classifieur fort, dont les différents modèles seront trop corrélés pour réduire la variance R : packages ipred, randomForest 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 24 Forêts aléatoires 1/3 Le bagging manque d’efficacité quand les modèles sont trop corrélés ⇒ on veut donc les décorréler Introduction d’une 2e randomisation : sur les individus (bagging) mais aussi sur les prédicteurs, en ajoutant à chaque scission un tirage aléatoire d’un sous-ensemble de taille q (constante) parmi l’ensemble des p prédicteurs (forêts aléatoires, Breiman, 2001) Plus la corrélation baisse (elle peut atteindre ρ = 0,05) plus la variance du modèle agrégé diminue : ² + ² Évite de voir apparaître trop souvent les mêmes variables les plus discriminantes Chaque arbre élémentaire est moins performant mais l’agrégation conduit à un modèle agrégé plus performant : l’augmentation du biais est plus que compensée par la diminution de la variance R : packages randomForest (sur arbre CART) et party (sur arbre Ctree) 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 25 Forêts aléatoires 2/3 Diminuer le nombre q de prédicteurs augmente le biais mais diminue la corrélation entre les modèles et la variance du modèle final ⇒ q permet de régler le compromis entre biais et variance Pour le classement, Breiman suggère un sous-ensemble de q = √p variables ou [log(p)+1] ou 1 Mais il ne faut pas que ce nombre q soit trop faible si une forte proportion de variables sont peu discriminantes Les forêts aléatoires commencent à être très efficaces lorsque la probabilité de sélectionner un prédicteur discriminant est > 0,5. Cette probabilité est donnée par la loi hypergéométrique. Si 6 variables discriminantes sont mélangées à 30 non discriminantes, la probabilité de tirer au moins une variable discriminante parmi 6 est : > sum(dhyper(1:6, 6, 30, 6)) [1] 0.6951548 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 26 Forêts aléatoires 3/3 Le nombre q de prédicteurs est le seul paramètre réellement à régler Le nombre d’itérations est moins sensible à régler, et on a intérêt à le choisir assez élevé Le nombre de modèles à agréger devrait croître avec le nombre de prédicteurs À noter la convergence des performances atteinte avec un nombre de modèles agrégés parfois très inférieur au nombre de combinaisons de p variables parmi n (n!/p!(n–p)!), c’est-à-dire bien avant que toutes les combinaisons possibles de variables soient apparues. Les forêts aléatoires résistent bien au sur-apprentissage (contrairement aux réseaux de neurones et au boosting) même quand le nombre de modèles agrégés est grand 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 27 Similitudes entre forêts aléatoires et régression pénalisée ridge Le rétrécissement λ des coefficients dans la régression ridge sélection de q < p prédicteurs aléatoirement parmi les p prédicteurs Augmenter λ ou réduire q : augmente le biais, puisque la solution est cherchée dans un sousespace fixé par la contrainte réduit la variance, de façon à compenser la hausse du biais Autre analogie : tous les prédicteurs peuvent apparaître dans le modèle par rétrécissement de leurs coefficients dans la régression ridge ou par sélection au hasard dans les forêts aléatoires ⇒ le travail de sélection des variables est simplifié ! ☺ Pouvoir prédictif élevé ! 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 28 Différences entre forêts aléatoires et régression pénalisée ridge Le paramètre de pénalisation λ permet un ajustement continu du biais-variance, alors que le nombre q est discret Il permet d’ajuster les coefficients à l’aide du ridge plot en sorte que tous les coefficients aient un signe cohérent voire que certains coefficients soient supérieurs à un certain seuil fixé par les experts du domaine La régression pénalisée est déterministe Les calculs de la régression pénalisée sont plus rapides mais les calculs des forêts aléatoires peuvent être parallélisés Manque de lisibilité d’un modèle de forêts aléatoires, qui détruit la structure d’arbre 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 29 Agrégation de modèles : le boosting BOOSTING, Freund et Schapire, 1996 Algorithme adaptatif et généralement déterministe : on travaille souvent sur toute la population et à chaque itération, on augmente le poids des individus mal classés ou mal ajustés dans les itérations précédentes à la fin, on agrège les modèles en les pondérant par leur qualité Diminue le biais et pas seulement la variance (grâce au mécanisme d’agrégation) mais peut être sujet au sur-ajustement Nombreux algorithmes : Discrete AdaBoost, Real AdaBoost, Gentle AdaBoost, LogitBoost, Arcing (Adaptative Resampling and Combining)… performances pas toujours très différenciées sur des données réelles R : packages ada, gbm et mboost 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 30 Illustration (Robert Schapire) Extrait d’une conférence visible ici : http://videolectures.net/mlss05us_schapire_b/ 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 31 Les réseaux sociaux 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 32 Les réseaux sociaux Un réseau social est un ensemble d'acteurs (individus, groupes ou organisations) reliés par des liens sociaux (familiales, amicales, professionnelles) On le représente sous la forme d’un graphe dont les acteurs sont les sommets et les liens sont les arêtes On peut étudier le graphe, son nombre de sommets (= nœuds), d’arêtes (= liens), sa densité, son diamètre, ses éléments centraux (avec le plus de liens) Dans la recherche sur Internet, on peut aussi s’intéresser à des réseaux de sites et regrouper les sites par similarité Les sites de commerce en ligne identifient des groupes d’acheteurs en ligne pour formuler des conseils d’achat 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 33 Recherches sur les réseaux sociaux Prédiction de liens (link mining) détection de liens anormaux, ou au contraire de liens cachés, par exemple par l’évaluation du score d’un lien entre deux sommets Détection de communautés s’apparente à la classification en analyse des données, et est utile dans des domaines tels que le marketing viral Identification des acteurs importants Systèmes de recommandation Rôles des individus en fonction de leurs liens Analyse de la diffusion de l’information, de l’influence Évolution des graphes et des communautés 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 34 Caractéristiques des graphes 1/2 Voisinage d’un sommet = ensemble des sommets adjacents (directement connectés) Degré d’un sommet = nombre d de ses voisins Un chemin est une suite d’arêtes et de sommets reliant deux sommets longueur du chemin = nombre d’arêtes Distance entre deux sommets = distance minimale des chemins les reliant (exprimée en « hops » : deux voisins sont à un hop de distance) graphe « petit-monde » : faible distance moyenne entre deux sommets (≤ log(nombre sommets)) Diamètre d'un graphe = distance maximale entre deux sommets du graphe Densité d’un graphe = nombre d’arêtes / nombre maximal d’arêtes possibles (quand toute paire de sommets est directement connectée) densité = # arêtes / n(n–1)/2, avec n = # sommets 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 35 Caractéristiques des graphes 2/2 Un graphe est connexe si toute paire de sommets est reliée par un chemin (aucun sommet n’est isolé) un graphe connexe n’a pas nécessairement une forte densité, car le chemin entre deux sommets peut être plus ou moins long La distribution du degré des sommets est variable graphe « sans échelle » : graphe où cette distribution suit une loi de puissance : le nombre de sommets ayant un degré donné d est proportionnel à d–k, où k est une constante (comprise entre 2 et 3 pour beaucoup de réseaux) cela se traduit par le fait que beaucoup de sommets ont un faible degré et quelques sommets ont un degré élevé loi de puissance ≈ notion de sparsité Un graphe peut être ou non orienté, distinguant une arête entre sommets A et B, et entre B et A (arc = arête orientée) Les arêtes peuvent être pondérées, par exemple par le nombre de messages entre A et B poids d’un chemin = somme des poids des arêtes qui le composent 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 36 Exemples de graphes « petit-monde » Stanley Milgram a réalisé en 1967 une expérience pour tester une hypothèse formulée par Frigyes Karinthy en 1929, selon laquelle, si deux personnes sont reliées quand elles se connaissent, la distance entre deux individus sur Terre est toujours inférieure ou égale à 6 : autrement dit, elles sont séparées par au plus 5 intermédiaires Le graphe formé par Facebook (720 millions d’utilisateurs et 69 milliards de connexions) a une distance moyenne entre utilisateurs de 4,74, avec 92 % des paires d’utilisateurs qui ont une distance de 5 ou moins (https://www.facebook.com/notes/facebook-data-team/anatomy-offacebook/10150388519243859) cette distance moyenne est inférieure (environ 4) si l’on se limite à un pays cette distance moyenne diminue au fil des années (5,28 en 2008, mais 4,74 en 2011) 84 % des connexions restent à l’intérieur d’un pays Selon une étude de 2010, la distance moyenne vaut 5,67 pour Twitter 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 37 Caractérisation des réseaux sociaux Les réseaux sociaux sont des graphes avec des propriétés particulières : ils sont très grands et peuvent avoir des millions de sommets les sommets ont un ensemble d’attributs (nom, adresse, âge, langue…) les sommets avec des attributs proches sont plus souvent connectés (propriété d’homophilie, bien sûr particulièrement vraie de la langue) ce sont des graphes « sans échelle » ce sont des graphes « petit-monde » ils ont un coefficient de clustering (transitivité) élevé : probabilité que deux voisins d'un sommet choisis aléatoirement soient eux-mêmes connectés ils se décomposent généralement en « communautés », qui sont des sous-graphes dont les sommets sont fortement connectés entre eux et faiblement connectés aux sommets des autres communautés 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 38 Méthodes de détection des communautés : classification hiérarchique descendante Méthode de Girvan-Newman (edge betweenness) : classification hiérarchique descendante (divisive) procédant en retirant une à une les arêtes en commençant par celles à fort degré d’intermédiarité, car les arêtes reliant des communautés différentes sont plus souvent contenues dans des géodésiques (il y a peu de chemins pour passer d’une communauté à une autre) complexité en O(m².n), où n = # sommets et m = # arêtes Méthode de Radicchi et al. du même type complexité en O(m²) Méthode de Fortunato et al. du même type (centralité d’information) complexité en O(m3.n) Méthode spectrale (leading eigenvector) : classification hiérarchique descendante binaire (comme Varclus) complexité en O(n3) 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 39 Méthodes de détection des communautés : classification hiérarchique ascendante Algorithme « glouton » (greedy) de Newman, perfectionné par Clauset, Newman et Moore : classification hiérarchique ascendante (agglomérative) partant des sommets et les fusionnant de proche en proche de façon à maximiser une fonction de modularité (proportion d’arêtes intra-communautés par rapport à une répartition aléatoire des arêtes dans un graphe ayant la même distribution des sommets) complexité en O((m+n).n) = O(m.n), améliorée en O(n.log²(n)), où n = # sommets et m = # arêtes assez rapide seulement pour les graphes non orientés Méthode de Wakita et Tsurumi : variante passant mieux à l’échelle Méthode de Louvain : aussi basée sur la notion de modularité et très rapide ces deux algorithmes peuvent traiter plusieurs millions de sommets 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 40 Méthodes de marches aléatoires Algorithme Walktrap de Pons : effectue un certain nombre de marches aléatoires, en se basant sur le fait qu’une marche aléatoire tend à faire rester dans la même communauté (sommets faiblement connectés aux sommets des autres communautés) permet de définir une distance utilisable dans une méthode de classification hiérarchique ascendante complexité en O(n²log(n)) ou au pire O(m.n²) Algorithme Markov Cluster de van Dongen : calcule les probabilités de transition entre tous les sommets complexité en O(n3) Autres méthodes : Harel et Koren, Zhou et Lipowsky… complexité en O(n3) Nombreuses autres méthodes 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 41 Réseaux sociaux et statistique publique L’analyse des messages Twitter aux Pays-Bas a montré une corrélation entre les sentiments exprimés et l’indice public de confiance des ménages Twitter a succédé aux médias classiques dans les analyses classiques en sciences humaines sur les discours, l’opinion… Les journalistes de Bloomberg intègrent aussi les données de Twitter D’autres données peuvent aussi être utiles : tickets de caisse et calcul du taux d’inflation, sites de recherche d’emploi et estimation du taux de chômage, recherches sur Google et apparition d’une épidémie… Ces exemples illustrent l’apport possible des analyses privées de Big Data à la statistique publique, avec des indicateurs équivalents mais calculés bien plus rapidement et peut-être, du moins à terme, à moindre coût 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 42 Exemple d’analyse d’un réseau social avec R 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 43 R pour explorer Twitter Il faut d’abord se connecter à l’interface Twitter (https://dev.twitter.com/) avec un compte et créer une application avec le bon paramétrage des droits d’accès Récupérer des codes qui permettent de se connecter à l’API Twitter api_key <- "YOUR API KEY" api_secret <- "YOUR API SECRET" access_token <- "YOUR ACCESS TOKEN" access_token_secret <- "YOUR ACCESS TOKEN SECRET" setup_twitter_oauth(api_key,api_secret,access_token,ac cess_token_secret) Quelques commandes de base getUser(“xxx")$followersCount # nombre de followers getUser(“xxx")$friendsCount # nombre de followees userTimeline(“xxx",n=100) # fil d’un utilisateur trend <- availableTrendLocations() # tendances getTrends(trend[which(trend$country=="France"),]$woeid ) # tendances sur la France 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 44 Récupération de tweets Extraction de tweets sur un sujet entre deux dates tweets <searchTwitter("Patrick Modiano", lang='fr', n=30000, since='2014-10-01', until='2014-10-10') Conversion en data frame df <- twListToDF(tweets) df <do.call("rbind", lapply(tweets, as.data.frame)) # commande équivalente table(as.Date(df$created)) # date des tweets table(df$screenName) # auteurs des tweets table(df$longitude), table(df$latitude) # localisation texte <unlist(lapply(df$text, function(x) gsub("[^[:print:]]", "", x))) # suppression des caractères non imprimables 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 45 Mise en forme du corpus 1/2 Création d’un corpus : ensemble de documents myCorpus <- Corpus(VectorSource(texte)) Affichage du corpus inspect(myCorpus[1:6]) Passage en bas de casse myCorpus <- tm_map(myCorpus, tolower) Suppression des mots commençant par @ myCorpus <tm_map(myCorpus, function(x) gsub("@[[:alnum:]]*", "", x)) Suppression de la ponctuation myCorpus <tm_map(myCorpus, function(x) removePunctuation(x, preserve_intra_word_dashes = TRUE)) Suppression des URL myCorpus <tm_map(myCorpus, function(x) gsub("http[[:alnum:]]*", "", x)) 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 46 Mise en forme du corpus 2/2 Définition de mots-outils (« mots-vides », ou stop-words) myStopwords <- c(stopwords('french'), "via", "amp", "a", "rt", "où", "ça") Les mots-outils sont des termes, comme les prépositions, les articles, les pronoms et les conjonctions (« mots grammaticaux »), qui, par opposition aux « mots lexicaux » (substantifs, adjectifs, verbes), apportent peu d’information car leur distribution est uniforme dans la plupart des textes Comme ils sont assez nombreux (environ 20% à 30% des mots d’un texte standard), on les supprime à l’aide d’un « anti-dictionnaire », qui peut être éventuellement enrichi en fonction du contexte Suppression des mots-outils myCorpus <- tm_map(myCorpus, removeWords, myStopwords) Suppression des blancs inutiles myCorpus <- tm_map(myCorpus, stripWhitespace) Export du texte du corpus texte.corpus <- data.frame(text=unlist(myCorpus), date=as.Date(df$created), lon=df$longitude, lat=df$latitude, stringsAsFactors=F) 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 47 Racinisation Le but des transformations précédentes est de diminuer le nombre de termes différents tout en perdant le moins d’information possible simplifier l’analyse et réduire la sparsité Définition d’un dictionnaire dictCorpus <- myCorpus Racinisation (stemming) : passage au radical (suppression de la fin du mot) corpus.stem <tm_map(myCorpus, stemDocument, language = "fr") Inconvénient de la racinisation : la racine n'est pas toujours un mot réel et le résultat manque de lisibilité et de pertinence > stemDocument("fraises",language = "french") [1] "frais" > stemDocument("cherche",language = "fr") [1] "cherch" > stemDocument("cherchent",language = "fr") [1] "cherchent" 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 48 Lemmatisation "stem completion" : remplacer chaque radical par sa forme originale la plus fréquente (ou la 1ère ou au hasard…) dans un dictionnaire spécifié corpus.stem <tm_map(corpus.stem, dictionary=dictCorpus) stemCompletion, Lemmatisation : passage des flexions à la forme canonique (lemme) pour un verbe : infinitif pour un nom, adjectif, article… : masculin singulier difficulté : une même forme graphique (homographie) peut correspondre à plusieurs formes canoniques, et seule l’analyse grammaticale permet de déterminer la forme canonique pertinente exemples : suis (suivre, être), été (être, été), sens (sens, sentir) on peut tenter une désambiguïsation automatique mais il faut peut-être exclure certaines formes graphiques de la lemmatisation automatique La lemmatisation est plus complexe et plus longue que la racinisation mais plus adaptée aux langues latines, qui ont un fort taux de flexion 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 49 Exemple : tweets parlant du Crédit Agricole 3945 tweets extraits entre le 16 septembre et le13 octobre 2014 > df <- twListToDF(searchTwitter("Credit_Agricole", lang='fr', n=5000)) > table(as.Date(df$created)) 2014-09-16 2014-09-17 2014-09-18 2014-09-19 2014-09-20 2014-09-21 2014-09-22 7 103 125 128 216 174 211 2014-09-23 2014-09-24 2014-09-25 2014-09-26 2014-09-27 2014-09-28 2014-09-29 175 101 130 77 64 89 155 2014-09-30 2014-10-01 2014-10-02 2014-10-03 2014-10-04 2014-10-05 2014-10-06 213 137 186 231 142 113 203 2014-10-07 2014-10-08 2014-10-09 2014-10-10 2014-10-11 2014-10-12 2014-10-13 173 157 186 133 121 87 108 Les six premiers tweets > head(df$text) [1] "Crédit agricole Assurances crée une plate-forme unique en assurance vie patrimoniale: UAF Patrimoin... http://t.co/KEF0pwNMu5 #Assurance" [2] "La banquiere le retour vendredi dans les bacs du crédit agricole à Blain .. Qui veut placer son argent ? Venez venez :)" [3] "RT @CreditAgricole: #Logement : Faut-il un apport personnel pour acheter ? http://t.co/a5EbDpboI3 #CreditAgricole" [4] "RT @CreditAgricole: #Assurance : Profitez de votre domicile en toute tranquillité avec nos assurances http://t.co/w1KFNiXD0S" [5] "RT @CreditAgricole: #MozaicM6 : Jusqu'au 30 septembre, gagnez vos places pour le concert de @Yodelice à Paris http://t.co/F0FW9MK7jP" [6] "Demain go to Crédit Agricole." 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 50 Mise en forme des tweets Transformation du corpus (sans racinisation) Passage du corpus transformé à un data frame > texte.corpus <data.frame(text=unlist(sapply(myCorpus, `[`, "content")), date=as.Date(df$created), lon=df$longitude, lat=df$latitude, stringsAsFactors=F) Résultat de la mise en forme du texte > head(texte.corpus$text) [1] "crédit_agricole assurances crée plate-forme unique assurance vie patrimoniale uaf patrimoin assurance" [2] " banquiere retour vendredi bacs crédit_agricole blain veut placer argent venez venez " [3] " logement faut- apport personnel acheter crédit_agricole" [4] " assurance profitez domicile toute tranquillité assurances " [5] " mozaicm6 jusqu 30 septembre gagnez places concert paris " [6] "demain go to crédit_agricole" 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 51 Passage à une forme matricielle Construction d’une matrice « termes (lignes) / documents (colonnes) » à partir du corpus > tdm <TermDocumentMatrix(myCorpus, list(wordLengths=c(1,Inf))) > nTerms(tdm) # nb de termes de la matrice [1] 4534 control = On a 4534 termes et une matrice très « sparse » : seulement 29910 cases non nulles sur 17 886 630 (= 4534 x 3945) 0 2 > Zipf_plot(tdm) 4 Vérification de la loi de Zipf log(frequency) 6 8 > tdm A term-document matrix (4534 terms, 3945 documents) Non-/sparse entries: 29910/17856720 Sparsity : 100% Maximal term length: 44 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 0 2 4 log(rank) 6 528 Wordcloud Le wordcloud permet de repérer les termes les plus fréquents (plus gros, et placés au centre du graphique) conseil plus coupe calme bien inaugurer prend plan tond thepub tank of f toute santé hf cliente nouvelle 3si alerte comment grand lanceurs unique partout rh bastille sécuricompte handicap f inanceinnov ation v eut accepter = FALSE, surendettement tout groupedécouv rez va france gouvernance accompagne tour etat agricole semaine record prendre demande nepassezpasacote solutions domicile télésurveillance 1 banque pret aca siège paris protégez assurance application rse participant préconisé emploi clients lindustrie saisit f rançois bancaire engagement près auto septembre candidats niort situation comme village engage belle mozaicm6 pubs générale crédit_agricole > wordcloud(d$word, d$freq, min.freq=5, random.order colors=grayLevels, rot.per=.2, max.words=100) problème of f re 2014 assurances banques f inancière hollande analy ste chez licenciée contre-pied recrute caisse Limite : le wordcloud ne rapproche pas les termes voisins dans le corpus 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 53 On veut rapprocher les termes voisins dans le corpus, en considérant des termes comme d’autant plus proches qu’ils sont co-occurrents dans un plus grand nombre de documents La structure matricielle construite permet d’appliquer les méthodes habituelles d’analyse factorielle et de classification (ici une CAH) 40 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 54 va innovation village hollande françois record off the france bancaire 2014 groupe agricole tond sécuricompte clients comment partout accompagne toute application banque lanceurs - problème alerte gouvernance etat conseil saisit banques nouvelle solutions protégez domicile télésurveillance assurance 20 0 Height 60 crédit_agricole 80 100 Classification des termes Classification des documents On peut classer des termes mais aussi des documents Une méthode permet d’identifier 5 classes, caractérisées par les termes suivants : cluster 1 : accompagne banque crédit_agricole nouvelle partout application toute cluster 2 : assurance domicile protégez solutions télésurveillance - 2014 cluster 3 : crédit_agricole banque agricole alerte comment problème cluster 4 : gouvernance conseil crédit_agricole nouvelle etat banques saisit cluster 5 : hollande village crédit_agricole françois off the record Les classes (ou « clusters ») sont de tailles inégales : > kmeansResult$size [1] 328 136 3041 184 135 121 Plusieurs méthodes de classification existent (k-means, k-medoids…) Certaines méthodes peuvent déterminer un nombre de classes optimal selon un certain critère exemple : les k-means avec l’algorithme clusterSim qui s’appuie sur un critère tel que l’indice Silhouette de Rousseeuw (s’assurant d’une faible distance entre les éléments d’une même classe et d’une distance moyenne plus grande entre eux et les éléments d’une autre classe) 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 55 Score d’opinion (ou analyse de sentiments) Méthode de base : partir d’une liste de mots positifs et d’une liste de mots négatifs, compter dans chaque document le nombre de mots positifs et lui soustraire le nombre de mots négatifs Cela donne le « score » du document Voici sur le corpus de tweets la distribution des scores : > table(texte.corpus$score) -3 -2 -1 0 1 2 6 199 485 1609 1060 187 3 395 4 4 La brièveté des tweets entraîne bien sûr la faible amplitude du « score d’opinion » La qualité du score dépend de celle des listes 1500 count 1000 500 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 56 0 -2 0 texte.corpus$score 2 4 Évolution du score d’opinion dans le temps -2.0 -1.5 -1.0 -0.5 Score médian Score moyen 0.0 0.5 1.0 1.5 2.0 2.5 3.0 On calcule le score moyen et le score médian chaque jour sept. 15 sept. 16 sept. 18 sept. 20 sept. 22 sept. 24 sept. 26 sept. 28 sept. 29 sept. 30 oct. 02 oct. 04 oct. 06 oct. 08 oct. 10 oct. 12oct. 13 Date 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 57 Graphe des termes avec leur connotation On crée un graphe dont les sommets sont les termes, et dont les arêtes relient deux termes s’ils sont co-occurrents dans un document Les termes plus fréquents correspondent à des sommets plus gros Les sommets sont coloriés en rouge s’il s’agit de « mots négatifs » et en vert si ce sont des « mots positifs » 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 58 Graphe des termes avec leur connotation 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 59 Détection des communautés # plusieurs méthodes disponibles cm <- fastgreedy.community(g) cm <- edge.betweenness.community(g) cm <- walktrap.community(g) length(cm) # nombre de communautés sizes(cm) # taille des communautés # association de chaque sommet à sa communauté memb <community.to.membership(g,cm$merges,which.max(cm$modularity)-1) # coloriage des communautés colbar <- rainbow(length(cm)) col <- colbar[memb$membership+1] # graphe interactif tkplot(g,vertex.color=col) 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 60 Communautés dans le graphe des termes Méthode Walktrap 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 61 Communautés dans le graphe des termes Méthode Gloutonne 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 62 Géolocalisation des tweets Représentation cartographique du lieu du tweet quand il est connu Point rouge si le score du tweet est < 0, vert s’il est > 0 et bleu s’il est = 0 Mais cette information est rarement disponible, car l’option de géolocalisation est désactivée par défaut sur Twitter 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 63 R et Big Data R travaille nativement en mémoire vive (RAM) ce qui limite la longueur des objets (231-1) et la « scalabilité » read.table() charge les données dans la RAM toutes les données manipulées par R sont des objets chargés en RAM traditionnel message « cannot allocate vector of size _ Mb » Par défaut, R n’utilise qu’un seul cœur, même sur une machine multi-cœur Mais R a des packages pour le traitement des données dépassant les capacités de la RAM (bigmemory, ff, ffbase…), le traitement plus rapide des données en RAM (data.table), le calcul parallèle (multicore, snow, parallel, foreach…) Pour le vraiment Big Data (> 100 Go), il y a des packages pour intégrer Hadoop (RHIPE, HadoopStreaming…) et se connecter avec diverses bases de données SQL ou NoSQL Liste des packages dédiés Big Data : http://cran.rproject.org/web/views/HighPerformanceComputing.html Package biglm pour ajuster des modèles linéaires généralisés sur des données ne tenant pas en RAM (utilisable avec les packages bigmemory et ffbase) 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 64 Conclusion 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 65 Le Big Data et l’emploi Le Big Data fait partie des 34 plans industriels lancés par le gouvernement français le 12 septembre 2013 Le Big Data a besoin de « data scientists » qui connaissent : les enjeux métiers (marketing, risque, production…) les technologies informatiques (architecture, algorithmes, logiciels) les méthodes de statistique et de Machine Learning Nous espérons avoir montré comment ces connaissances se combinent pour des analyses nouvelles des Big Data Des applications dans de nombreux domaines et des centaines de milliers d’emplois de data scientists annoncés dans le monde Le manque de data scientists se fait sentir dans tous les pays. On peut l'imputer à la prise de conscience récente du potentiel recelé par les données, et à une valorisation encore insuffisante du data scientist en entreprise. Premières formations spécialisées en 2013 aux USA et en France 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 66 Bibliographie P. Bühlmann, S. van de Geer (2011). Statistics for High-Dimensional Data, Springer Arthur Charpentier (ed.) (2014). Computational Actuarial Science with R, Chapman and Hall/CRC T. Hastie, J. Friedman and R. Tibshirani (2009). The Elements of Statistical Learning: Data Mining, Inference and Prediction, Springer Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani (2013). An Introduction to Statistical Learning, with Applications in R, Springer N. Marz and J. Warren (2014). Big Data, Principles and best practices of scalable realtime data systems, Manning Eric Siegel (2013). Predictive Analytics: The Power to Predict Who Will Click, Buy, Lie, or Die,Wiley Mireille Gettler Summa, Léon Bottou, Bernard Goldfarb, Fionn Murtagh, Catherine Pardoux et Myriam Touati (2012). Statistical Learning and Data Science, Chapman & Hall/CRC Un article sur le Big Data dans la revue des anciens de l’Ensae : http://www.ensae.org/docs/2013164614_v46-focus1.pdf Un article dans le Journal du CNRS de novembre-décembre 2012 (pp. 20-27) : http://www.cnrs.fr/fr/pdf/jdc/JDC269.pdf 21/11/2014 Big Data – IIe Rencontres STAT. à l’UBS – S.Tufféry 67