ROC, le choix des seuils de détection et le coût de la morale

Le propre des êtres autonomes est leur capacité à identifier des signaux et à y répondre de manière adéquate.

L’œil de l’aigle dans le ciel saisit identifier la fourrure fauve dans la prairie jaunie, la luciole reconnait la pulsation lumineuse émise par les partenaire de son espèce, le radiologue le motif d’une structure cancéreuse, l’opérateur radar détermine si le point clignotant sur l’écran correspond à un vaisseau ami ou ennemi. C’est d’ailleurs avec ce problème de radar au cours de la dernière guerre mondiale, que la théorie de la détection du signal a émergé, couvrant des usages nombreux dont le point commun est d’évaluer la qualité d’une décision particulière –  le signal reçu correspond-il à une réalité ou à un bruit ? – en établissant un seuil optimum de détection.

Prenons un exemple.  Le chien qui aboie devant nous intimide-t-il avant de prendre la fuite ou va-t-il nous attaquer et nous mordre ? En conséquence faut-il lui fracasser le crâne avec le bâton qu’on tient en main, ou rester immobile jusqu’à ce qu’il se soit éloigné?
L’intensité de l’aboiement est le signal que nous devons traiter.

Pour bien se représenter le problème, nous générons un exemple hypothétique. On suppose que les attaques correspondent à des aboiements d’intensité 7 en moyenne, et la fuite de 5. Deux situation sont traitées : l’une où l’écart-type des aboiement est de 0.5, l’autre de 3. Ce qui est représenté dans la figure 1.

On a le réflexe avec ce type de donnée d’effectuer un test statistique, celui du test de student  est largement suffisant, dans les deux situations.  Il nous permet de décider pour un risque de première espèce donné, de rejeter l’hypothèse nulle d’égalité des moyennes et par conséquent de conclure que les moyennes sont distinctes et que, dans notre cas, que les décisions sont bien associées à l’intensité du signal. Dans notre exemple ( cas de la figure de gauche à forte variance)  les moyennes empiriques sont de 5, 06 et 7,04, et le test t de student a une valeur critique de 26. La probabilité que les moyennes empiriques diffèrent alors qu’elle sont égales en réalité est quasi nulle, bien en-deça du risque usuel de 5%.  Ce test cependant ne dit pas comment agir, autrement dit à partir de quelle intensité faut-il se préparer à frapper le chien fou furieux, ou ne pas agir. Il dit juste qu’il y a une différence.

On remarque cependant que lorsque les deux distributions sont bien différenciées, il est plus simple de discriminer les deux signaux. En choisissant une valeur supérieure à 6 (diagramme de droite), il y a très peu de chance de frapper cruellement la bête alors qu’elle va s’enfuir, et de se laisser mordre parce qu’on a cru a tors qu’elle enfuirait. Mais quand les distributions se superposent largement (diagramme de droite), comment pour une valeur donnée de l’aboiement décider de l’action à mener? Quel seuil se donner? L’analyse ROC va permettre de répondre à la question, mais avant poursuivons sur cette question de superposition et de discrimination du signal.

Une mesure pour ceci a été proposée depuis longtemps: la sensitivité ( ou discriminance) Elle est notée d’ et se définit par

d’=d/s

où d est la différence des moyennes des deux signaux et s la variance moyenne des signaux ( racine²(1/2(Sda²+Sdf²)). Dans le premier cas, on obtient une valeur d’ de 0,67 dans le second de 4, donc 12 fois plus forte dans la partie droite de la figure 1.

Le problème reste entier. Quelle valeur retenir pour décider l’action a entreprendre (frapper ou rester immobile) ? A partir de quel seuil doit-on interpréter l’aboiement comme un signal d’attaque?

Pour évaluer cette valeur, il suffit de compter d’une part le nombre de bonne décisions, et d’autre part les mauvaises décisions.  On comprend de suite que deux types d’erreurs peuvent se produire :

    • On peut conclure que le chien va attaquer alors qu’il ne fait qu’intimider. Le résultat de l’action est que le chien va se prendre un coup de bâton sans raison. C’est le prix d’une fausse alarme.
    • On peut aussi conclure qu’il ne va pas attaquer, alors qui bondit et nous mord au mollet. L’alerte est ratée, le signal est sous-interprêté, on sera bon pour un vaccin anti-rabique, et quelques soins à l’hôpital.

Plus précisément le problème peut se formuler sous la forme du tableau suivant

A partir du tableau différents indicateurs peut être construits, on remarquera rapidement qu’on retrouve les classiques de l’évaluation du machine learning : précision , recall et accuracy. A vrai dire c’est le même problème. Comment évaluer la capacité d’un modèle à discriminer des signaux.
      • Le taux de vrai positif ( ou recall, ou sensitivy) est égal à TP/P . Il donne la proportion de bonnes détection sur le total des détections positives. S’il est élevé, le détecteur donne trop souvent de fausse alertes.
      • le taux de faux positif : FP/N
      • taux de vrai negatif ( ou spécificité) :  FN/N
      • L’accuracy ( précision) donne la proportion de bonne prédiction : TP+TN/(P+N)
      • l’erreur en est le complément : 1- Acc = (FP+FN)/P+N
      • F : c’est la moyenne harmonique de la précision et du recall. c’est un indicateur de synthèse

L’invention des contrôleurs de radars est de représenter ces performances sous la forme d’un diagramme appelé Receiver Operational Characteristics (ROC) construit en calculant  pour différents seuils de décision ( l’intensité des aboiement)  le taux de faux positifs et en ordonnée le taux de vrais positifs.  Les deux courbes (On utilise le package RORC de r – l’ensemble du code est sous le post) de la figure suivante correspondent aux deux situations (faible et forte discriminance), la diagonale correspond à une situation de non discriminance.  La courbe la plus coudée correspond au signal le moins ambigu (Sd=0.5).

La lecture du ROC est simple : plus la courbe est coudée et meilleur est le modèle ( ou  le signal est peu bruité). Les couleurs représentent différents seuils. Le violet et le bleu correspondent au seuils les plus élevés. En lisant le diagramme on s’ aperçoit que pour accroitre le taux de vrai positif il faut concéder une proportion croissante de faux positifs. Dans le cas du « bon » modèle ceci se produire à partir d’un taux de vrai positif de plus de 90%. Dans le cas bruité, il faudra accepter un taux de l’ordre de 60% de faux positifs pour identifier 8% des vrais positifs. Quel est donc le bon trade-off?

On peut reproduire des représentations analogues avec les autres indicateurs. On a inclus ainsi le diagramme specifité/sensitivité, et bien sur le couple precision/recall bien connu des machine learners. RORC en propose de nombreux autres. Il y en a pour tous les goûts.

La détermination du seuil optimal, qui combine la plus grande proportion de signaux bien reconnus tout en minimisant l’erreur des faux positifs, suit le principe de retenir le point le moins éloigné de la situation de discrimination parfaite : 100% de taux de vrais positifs et 0% de faux négatifs. RORC automatise ce calcul par une fonction simple qui nous donne les résultats suivants.

On s’aperçoit ainsi que le seuil optimal est plus faible (5,91) dans le cas d’un signal bruité (faible discriminance) que dans celui d’un signal clair (6.01). La stratégie est donc d’être plus prudent et d’augmenter le seuil d’alerte quand le signal est ambigu.

Dans ce calcul, un facteur décisif et économique, les coûts de l’erreur, ne sont pas pris en compte. Le coût des faux positifs – penser que le chien va attaquer, alors qu’il ne le fera pas – est un coût moral. Si on milite pour l’antispécisme, qu’on considère que la douleur imposée à l’animal est criminelle, qu’on ne mérite pas de circonstances atténuantes due à la peur, ce coût sera élevé. Il peut être consacré par le droit et se traduire par de fortes amendes si ce n’est des peines de prison. Le coût des faux négatifs est celui de se faire mordre, il est moins ambigu et  il se traduit par celui d’une visite à l’hôpital pour le vaccin anti-rabique et couturer la blessure.
Une autre fonction de RORC permet d’analyser ces options en fixant un coût pour les faux négatifs et les faux positifs. On va donc calculer les seuils en envisageant deux situations qui s’ajoutent à l’analyse précédente où ces coûts sont considérés comme équivalents.

      • Forte valeur morale : On fixe à 1 le coût des faux négatifs  et à 5 celui des faux positifs (il est 5 fois plus coûteux de frapper le chien que de se faire mordre)
      • Fort égoïsme : On fixe à 5 le coût des faux négatifs  et à 1 celui des faux positifs ( il est 5 fois moins coûteux de frapper le chien pour rien que de se faire mordre).

Le résultat apparait dans la figure suivante. On s’aperçoit que lorsque le signal est clair (forte discriminance) la moralité a peu d’influence, on retient un seuil un peu plus bas en cas d’égoïsme, à peine plus élevé quand on partage des valeurs antispécistes.  Ces valeurs sont équivalents. Lorsque le signal est ambigu ( faible discriminance), on passe en revanche du simple au double. Le poids de la morale impose un seuil très élevé (8.66), celui de l’ego-préservation l’effondre de moitié (3.91). Deux stratégies totalement différentes émergent, pas tant par le calcul, mais par son imprécision ! Quand le modèle discrimine mal, l’impact des coûts, dont la valeur est fixée indépendamment du modèle, sur le seuil de décision est considérable.

Notre petite histoire de chien (en hommage au musée de la chasse dont l’objet est bien la détection) avait d’abord un but pédagogique et servira à nos étudiants ( ceux de marketing y trouveront une bonne manière d’améliorer leur connaissance des méthodes de scoring et de leurs évaluations). Elle a aussi sa leçon morale et politique.
L’opérationnalisation d’un modèle de décision – la détection d’un signal en est une variété –  ne consiste pas simplement à faire des prédictions. Elle conduit à choisir des normes pour établir la décision. Les valeurs de ses normes sont externes au modèle. On frappe le chien, pas seulement parce qu’il aboie, mais parce qu’on identifie de manière imprécise cet aboiement, et que dans cette incertitude on privilégie son propre intérêt, à moins d’être soumis à une autre norme, celle de la vie du chien. Et le modèle ne décide pas de ce choix. Il l’accuse quand il est imprécis. Autrement dit ils pourraient être neutre quand il sont précis, mais quand il ne le sont pas, ils traduisent des choix politiques et moraux.
Pour donner une idée plus concrête prenons la question de  l’octroi de crédit à la consommation. Noter les consommateurs sur une échelle de risque ( risk scoring) ne porte pas directement à conséquence pourvu que le modèle soit construit convenablement : sur des échantillons représentatifs (sans biais de sélections, ce cancer du big data)  et avec une bonne spécification ( sans biais du même nom) . Ce peut être un modèle logit qui fournissent un score sous la forme d’une probabilité de défaillance à rembourser ou pourquoi pas quelque chose de beaucoup plus sophistiqué. Sa mise en œuvre requiert une étape supplémentaire : fixer le seuil qui amènent à considérer un mauvais crédit. A quel niveau doit-on refuser le prêt? Si le risque est supérieur à 5%? ou 10%? ou 20% ?
Ce seuil dépend non seulement de la qualité du signal à traiter (le profil du demandeur de crédit qui va se résumer en un score qui discrimine les bons et les mauvais risques)  mais aussi par l’introduction de coûts associés à l’erreur qui prend un double visage. Le faux négatif c’est accorder un crédit à quelqu’un qui ne le remboursera pas, et son coût le montant perdu. Le faux positif c’est refuser un crédit à quelqu’un qui l’investira dans une startup nommée Facebook et qui vaudra 600 milliards. Les banques généralement comptent le premier risque et pas le second. On pourrait imaginer un monde où les emprunteurs opposent les opportunités perdues à celui qui leur a refusé un crédit.

Dans un monde de donnée qui se prépare à envahir le monde avec le machine learning et les nombreuses familles de modèles prédictifs, infiltrant dans tous les processus des micro-mécanismes de détection et de décision,  il y a toute les chances que les modèles restent imparfaits car ce monde reste un monde social, où les corrélations sont généralement faible, au contraire d’un monde physique plus déterministes. Cette imperfection par nature risque d’amplifier l’effet des systèmes de valeurs, qui se traduit dans l’évaluation des coûts des erreurs, sur la détermination des seuils de décision.

 Annexe code largement inspiré de  https://www.r-bloggers.com/a-small-introduction-to-the-rocr-package/


Réseaux sociaux : qu’y fait-on? Pourquoi on les fréquente?

Que fait-on sur les réseaux sociaux? Quels bénéfices y trouve-on? Quelles gratifications y obtient-on? Les fréquente-t-on parce qu’ils  nous donnent des opportunités ou parce qu’ils noient l’ennui? Y va-t-on parce qu’on est malheureux ou parce qu’on est heureux ?

A vrai dire on en sait assez peu. L’étude Wave est sans doute la plus étendue par le nombre des nations qu’elle étudie, mais peut être pas totalement convaincante sur sa méthodologie. L’univers académique néglige cette question pratique préférant des thèses plus audacieuses, ou l’étude de comportements déviants ou périphérique. Et d’ailleurs ce serait bien de l’analyser systématiquement nous savoir quelles dispositions elle met en évidence.

Un jeu de données produit par une des mes étudiantes de master va nous permettre d’aborder la question au moins sur le plan de la méthode. Son jeu de donnée (260 individus) est représentatif du cercle social d’une étudiante franco- russe qui aura recueilli dans une population majoritairement jeune et étudiante les réponses à trois questions :

  1. Quels sont les réseaux que les gens utilisent  et avec quelle fréquence ?
  2. Quelles y sont leurs activités et les gratifications qu’ils en retirent : une batterie de 36 items est exploitée à cette fin
  3. Etes-vous heureux dans la vie ? C’est une approche du concept de Customer Well Being qui semble recueillir un intérêt de plus en plus grand dans la littérature académique.

L’approche ici reste descriptive. Le plus c’est de segmenter sur une base très traditionnelle, mais fondamentale, quels sont les avanatges que recherche les utilisateurs de réseaux sociaux dans l’usage de ces réseaux? La question subsidiaire c’est de comprendre comment ces usages sont liés à leur qualité de vie.

Commençons par le début et par l’analyse des réseaux qu’ils emploient. deux critères sont mis en avant, le sexe et la nationalité. L’un reflète un ordre social qui se perpetue dans la construction du genre, l’autre au moins une différence culturelle façonné par l’histoire, les conditions économiques et sociales. En deux graphiques on y observe qu’il y a peu de différence de genre, mais des spécificités nationales importantes. Si Facebook est dominant en france, c’est vcontack qui semble exploiter la même niche en russie.

Une analyse complémentaire

 

Atelier doctoral : r pour la recherche en sciences sociales

L’objectif de l’atelier, organisé dans le cadre des enseignement de l’ED EOS,  est la prise en main de r au travers de l’interface graphique Rcmdr et de Rstudio et de découvrir la communauté r et ses ressources en 4 séances de 3 heures et quatre cas : décrire, expliquer, modéliser, traiter du texte.

Public visé et pré requis : Doctorants et autres chercheurs. Connaissance des tests statistiques et autres statistiques élémentaires. Une habitude de SAS ou SPSS fera du bien. Les participants doivent installer Rstudio au préalable. Rcommander servira d’interface pour démarrer et doit être le premier package (Rcmdr) à installer au préalable.

Calendrier de la formation (période de l’année): 11 et 12 septembre 2017 (9h30-12h30 : 13h30-16h30)

Lieu : UPOND (bât .A 3ème étage 304)

Inscription : envoyer un CV à christophe.benavent@parisnanterre.fr avant le 5 septembre 2017. – nombre maxi d’inscrits : 15.

Programme et durée

  • 1 : l’environnement r: communauté, packages, langage et prise en main  avec Rcmdr. Comparaison de moyennes, corrélation, classification automatique. Le cas de la segmentation par avantage du textile est employé. (Description)
  • 2 : régression avec r: des MCOs au modèle linéaire généralisé (Logit, Poisson, etc. Un peu de série chronologique avec le cas des retards de TGV sur la base des données open data de la Sncf. (timeseries)
  • 3 : analyses factorielles, échelles et équations structurelles avec Psych et Lavaan : le cas de l’analyse des effets du privacy concern sur le projet selfdata de la fing. (psychometrie)
  • 4 :analyse lexicale avec R.Temis , tm et éléments de text mining. Le cas de l’analyse de topic d’un flux de tweets. (lexicométrie)

ECTS : la participation au séminaire donne droit à 1.5 ECTS

Ressources :

  •  r blogger : un meta blog centré sur r , très riche en exemple et application.
  •  StackOverflow : plateforme de Q&A pour les développeurs, r y est fréquemment mis en question
  • PS : un cours similaire est donné dans le cadre du Master Management de l’innovation GDO/MOPP.
  • La doc de ggplot2, le package des graphiques élégants.

Crédit Photo : comme souvent l’excellent Jeff Safi

#IA à la moulinette du #ML

Printable up to 18″x18″

Ces dernières années les progrès du text mining renouvellent largement l’étude des contenus textuels.

Un saut a été franchi depuis les techniques classiques d’analyse factorielles des correspondances. Les outils récents inspirés du ML peuvent remplacer ou au moins compléter les bonnes vieilles techniques de l’analyse lexicale.

Alors plutôt que de faire des Sudoku pendant les vacances, autant se balader dans les packages de r et d’appliquer ces techniques à un cas pratique. Pourquoi ne pas explorer justement ce que l’on dit de ces techniques sur les réseaux sociaux. Que dit-on de l’intelligence artificielle et du machine learning ? Quels en sont les sujets de conversation?

Commençons par le début. Il nous faut un corpus. Autant le prendre là où il est facile à capturer, c’est à dire dans Twitter.

La première étape consiste à créer un compte sur l’API (REST), pour pouvoir extraire ce que l’on souhaite ( avec des limites imposées par twitter). Et lLa seconde étape consiste simplement à se connecter à l’API, via r, et à lancer une requête. Ce qui se fait de manière simple avec le code suivant :


 #accès  à l api de twitter
 consumerKey<-"Xq..."
 consumerSecret<-"30l..."
 access_token<-"27A..."
 access_secret<-"zA7..."
 setup_twitter_oauth(consumerKey, consumerSecret, access_token,access_secret)

Pour rechercher les tweets, on échantillonne sur plusieurs variantes de hashtag, en préférant la méthode des twits les plus récents (une alternative proposée par Twitter est de choisir les plus populaires, une troisième méthode mixant les deux approches). Il suffit ensuite de fusionner les fichiers, puis de dédupliquer les enregistrements identiques.


 #recherche des twits avec plusieur requetes 
tweets1 <- searchTwitter("#IA", n = 2000, lang = "fr", resultType = "recent", since = "2017-08-01") 
tweets2 <- searchTwitter("#ML", n = 2000, lang = "fr", resultType = "mixed", since = "2017-08-01") 
tweets3 <- searchTwitter("#AI", n = 2000, lang = "fr", resultType = "recent", since = "2017-08-01") 
tweets4 <- searchTwitter("#MachineLearning", n = 2000, lang = "fr", resultType = "recent", since = "2017-08-01") 
tweets5 <- searchTwitter("#Deeplearning", n = 2000, lang = "fr", resultType = "recent", since = "2017-08-01") 
#transformer en data frame 
tweets_df1 <- twListToDF(tweets1) 
tweets_df2 <- twListToDF(tweets2) 
tweets_df3 <- twListToDF(tweets3) 
tweets_df4 <- twListToDF(tweets4) 
tweets_df5 <- twListToDF(tweets5) 
tweets_df <- rbind(tweets_df1,tweets_df2,tweets_df3,tweets_df4,tweets_df5)

Le décompte se faisant tout les quarts d’heure, on peut répéter l’opération pour récupérer quelques dizaines de milliers de tweets en quelques heures. Et si l’on a un peu de budget on changera d’Api pour streamer en temps réel ce que l’on souhaite.

On dispose donc d’un corpus d’environ 6000 tweets, dont il va falloir nettoyer le contenu. C’est l’opération la plus difficile, elle demande de l’astuce et une bonne compréhension des contenus. Dans notre cas, différentes opérations vont être menées et elles constituent l’étape essentielle où l’astuce de l’analyste est la clé de l’analyse.

  • Il faut aussi éliminer les liens URL, mais aussi les mentions
  • De même les nombres, la ponctuation, mettre en minuscule
  • Certains termes risque de n’apporter aucune information, les mots de liaisons, les articles,  et naturellement les termes qui ont permis la sélection ( #IA par exemple)
  • et enfin réduire les termes à leurs racines pour éviter une trop grande fréquences de termes équivalents mais distincts ( poisson, poissonier) c’est l’opération de stemming qui identifie la racine du lexique constitué.
 
#recherche des twits avec plusieur requetes 
# creation du corpus et nettoyage du texte

tweets_corpus <- Corpus(VectorSource(tweets_text))

removeURL <- function(x) gsub("http[[:alnum:][:punct:]]*", "", x) #enlever les liens
tweets_corpus <- tm_map(tweets_corpus, content_transformer(removeURL)) #enlever les liens
removeACC <- function(x) gsub("@\\w+", "", tweets_corpus) #enlever les comptes
tweets_corpus <- tm_map(tweets_corpus, content_transformer(removeACC)) #enlever les comptes
tweets_corpus <- tm_map(tweets_corpus, removeNumbers) #enlever les nombre
tweets_corpus <- tm_map(tweets_corpus, removePunctuation) # ici cela va supprimer automatiquement tous les caractères de ponctuation
tweets_corpus <- tm_map(tweets_corpus, content_transformer(tolower)) #mettre en minuscule
tweets_corpus <- tm_map(tweets_corpus, removeWords, stopwords("french")) #supprimer automatiquement une bonne partie des mots français "basiques"
tweets_corpus <- tm_map(tweets_corpus, stripWhitespace) # ici cela va supprimer automatiquement tous les espaces vides
tweets_corpus <- tm_map(tweets_corpus, stemDocument, language = "french") #on cherche les radicaux des termes
tweets_corpus <- tm_map(tweets_corpus, removeWords,c("ai", "machinelearning","ia","ml", "deeplearning","rt")) #enlever le terme commun
tdm <- TermDocumentMatrix(tweets_corpus, control=list(wordLengths=c(5, 30))) #creation de la matrice termsXdocuments

On conduit cette opération avec les ressources du package tm qui est le véritable moteur du text mining. C’est une opération très empirique, la procédure se construit de manière itérative, en prenant soin de bien séquencer les différentes actions. Et il sera particulièrement utile de regarder ce que font les autres data-scientists, leurs astuces et les élégances de langage qu’ils emploient. C’est l’étape la plus difficile, d’un point de vue technique  mais aussi pragmatique.

La première commande transforme le fichier de données dans un format particulier qui est celui qui décrit le corpus. Chaque enregistrement est codé sous la forme d’un triplet : le terme ( un mot racine), le document ( un tweet) et la fréquence d’apparition du terme dans le document. Pour l’utilisateur d’un logiciel statistique classique, SPSS, c’est l’élément le plus troublant, r ne fonctionne pas simplement avec des tableaux individusXvariables, ses objets sont beaucoup plus subtils, complexes mais pratiques. Les commandes précedentes effectuent les transformations requises du corpus. La dernière crée la matrice termes document que nous voulons étudier.

Comme à l’ordinaire, débutons par le plus simple : quels sont les termes les plus fréquents? A cette fin, deux technique peuvent être employées. La première est simplement la représentation ordonnée par la fréquence des termes, la seconde, très visuelle est de produire une représentation très populaire, celle des nuages de mots. En fonction de ces résultats on pourra réitérer les opérations précédentes et ajuster le jeu de données et sélectionner les termes que l’on veut analyser. En voici le code et les résultats.


dim(tdm)
nTerms(tdm)
m <- as.matrix(tdm)
v <- sort(rowSums(m), decreasing = TRUE)
d <- data.frame(word = names(v),freq = v)

head(d, 350)
barplot(d[1:70,]$freq, las = 2, names.arg = d[1:70,]$word,
col ="lightblue", main ="Mots les plus fréquents dans les tweets #IA",
ylab = "Fréquences", horiz=TRUE, cex.names = .7)
x11() #pour ne pas ecraser le chart precedent
set.seed(123456)
wordcloud(tweets_corpus, max.words = 100, colors = brewer.pal(8, "Dark2"))

Les choses sérieuses viennent maintenant avec l’utilisation d’une méthode de modélisation des topics. On emploie ici le package ModelTopics et la méthode LDA ( Latent Dirichlet Allocation) , qui cherche à calculer la probabilités qu’un terme appartienne à un Topic, et qu’un topic appartiennent à un document, en ne connaissant que l’appartenance des termes aux document. L’idée est de prendre en compte que chaque document est un mélange de topic, et que chaque topic est un mélange de mots. On en trouvera une excellente présentation ici dont nous avons repris des éléments de code, pour une présentation plus technique la page Wikipedia est un bon début.


#topic modeling

r.dtm <- DocumentTermMatrix(tweets_corpus, control = list(minWordLength =0))
lda <- LDA(r.dtm,k =16, control = list(alpha = 0.01))
(term <- terms(lda, 16)) # first 6 terms of every topic

ap_topics <- tidy(lda, matrix = "beta")
ap_topics

ap_top_terms <- ap_topics %>%
group_by(topic) %>%
top_n(20, beta) %>%
ungroup() %>%
arrange(topic, -beta)

ap_top_terms %>%
mutate(term = reorder(term, beta)) %>%
ggplot(aes(term, beta, fill = factor(topic))) +
geom_col(show.legend = FALSE) +
facet_wrap(~ topic, scales = "free") +
coord_flip()

#library(LDAvis)

Le résultat principal est constitué par le diagramme suivant qui représente pour chaque topic ( on a choisit d’en identifier 9 de manière avouons le arbitraire – la question de la détermination du nombre optimum n’est pas encore résolue). Les valeurs sont les probabilités ( beta) que les termes soient associés aux topics. C’est une sorte de spectre lexical. Le topic 5, par exemple semble être relatifs aux chatbots, à l’IoT et à ses applications en marketing et dans les fintech.

Avouons- le l’interprétation n’est pas évidente. Nous avons besoin d’un nettoyage plus poussé et sans doute de jouer encore plus sur les paramètres du modèle qui consistent d’abord dans le nombre de sujets (topics) qui mérite sans doute d’être plus élevés, et dans un paramètre Alpha qui ajuste le nombre de mots associés aux sujets. Encore mieux, il serait bon d’implémenter le package Ldavis qui produit une visualisation remarquable.

On pourrait aller encore plus loin en considérant ce premier modèle comme un modèle d’entrainement, puis en l’utilisant pour classifier de nouveaux documents. Ainsi, imaginons d’extraire chaque jour un nouveau jeu de données, on peut imaginer construire un outils qui donne l’évolution des thématiques dans la conversation des réseaux-sociaux.  Il nous suffira de la commande suivante :

test.topics <- posterior(train.lda,test)

Une autre approche est celle de la méthode Tsne, fournit par le package Rtsne. C’est finalement une sorte d’analyse des similarités, à la manière du MDS ( Multi Dimensionnal Scaling) mais qui mets en jeu des calculs de distances très particulier, dont la vertu principal est de rendre compte de niveaux d’échelles différents. Ce qui est très proche sera plus ou moins éloignés, ce qui est loin est plus ou moins rapprochés. On échappe au phénomène de dégénérescence du vieux MDS, et à une meilleure représentation quand les objets sont éloignés. On contrôle ceci par un paramètre de perplexité, qui reflète sommes toute le nombre de voisins pris en compte dans les calculs. On lira ceci pour mieux en comprendre les effets.


#tsne
library(Rtsne)
tdmdata<- as.matrix(tdm)
# run Rtsne with default parameters
tsne_out <- Rtsne(tdmdata, dims=2, initial_dims = 80, check_duplicates = FALSE, verbose=TRUE, perplexity = 20, theta=0.8,  max_iter = 1000)
plot(tsne_out$Y, t='n')
text(tsne_out$Y, labels=rownames(tdmdata),cex = 0.7)

En voici les résultats pour plusieurs degrés de perplexité. La représentation est illisible ( il y a environ 4000 termes) mais des groupes de mots bien distincts apparaissent. Elle va nous servir de base pour une meilleure visualisation de cet espace.

Un modèle avec une perplexité de 20 et à 2 dimensions est choisi comme base d’une meilleure visualisation. On va se concentrer sur les termes les plus fréquents et l’on applique une méthode de classification (méthode de ward) dans l’espace définit par tsne, et avec un peu de code supplémentaire, on produit un dendogramme radial produit par le package Ape, dans lequel la taille relative des termes est proportionnelle à leur fréquence et les couleurs correspondent à un découpage en 7 classes.


X1<-tsne_out$Y[,1]
X2<-tsne_out$Y[,2]
Fq<-rowSums (tdmdata, na.rm = FALSE, dims = 1)
Rtsne<-data.frame(Fq,X1, X2)
Rtsne2 <- subset(Rtsne, subset=Fq>30, select=c(X1,X2))

#clustering
m2 <- as.matrix(Rtsne2)
distMatrix <- dist(scale(m2))
fit <- hclust(distMatrix, method = "ward.D2")
p<-plot(fit)
rect.hclust(fit, k = 7) # cut tree into 7 clusters

library(ape)
plot(as.phylo(fit), type = "unrooted")
plot(as.phylo(fit), type = "fan")

# vector of colors
mypal = c("#556270", "#4ECDC4", "#1B676B", "#FF6B6B", "#C44D58")
# cutting dendrogram in 7 clusters
clus = cutree(fit, 7)
# plot
op = par(bg = "#E8DDCB")
# Size reflects frequency
plot(as.phylo(fit), type = "fan", tip.color = mypal[clus], label.offset = 1, cex = log(Rtsne$Fq, 10), col = "red")

Voici le trail! On y lit plus clairement les sujet : on peut commençant en descendant à droite par un premier thème sur les chatbots et de Facebook naturellement qui se poursuit sur une thématique marketing et bancaire, les applications. Le troisième thème, en rouge est plus centré sur l’entreprise et l’organisation, l’impact sur les conseillers. Les thèmes du fantasme et du changement nécessaire s’enchaîne assez logiquement, un sixième thème se centre sur la résolution de problème, le dernier est relatif aux questions entrepreuneuriales et aux start-up.
On aura condensé ainsi un contenu brut de 7000 tweets et 4000 mots en une image.

Crédit Photo : Eugenia Loli – immaculate

Prêt pour la finale : jeu de position et dynamique des segments électoraux

carteslateLa dramaturgie présidentielle est pour cette première semaine de campagne particulièrement inquiète.

Le risque que le Front National parvienne à la tête de l’état, les rancoeurs ou le calcul au Parti de Gauche, les coups de com et la fébrilité médiatique ajoutent à l’anxiété. La nouveauté de la configuration incite à la plus grande prudence mais puisque certains diffusent l’angoisse sourde d’une France rancie en brandissant le risque de l’abstention, autant revenir au calcul. Les sondages ne sont pas si mauvais et d’une bonne aide. Le premier tout l’a prouvé.

Pour évaluer le résultat, on peut le faire directement, les sondages annoncent Macron avec de 58 à 62%, on peut aussi faire un calcul de prise de parts de marché qui consiste simplement à multiplier le vecteur de la répartition des votes ( et nous y incluons les abstentionnistes du premier tour) par une  matrice de transition dont les sondages nous donnent une idée de la valeur de ses éléments et qu’on peut alimenter par différentes hypothèses en alternant ses valeur en faveur de l’un ou l’autre des candidats. Compte-tenu de la nature de l’élection on considère ici l’abstention comme une option de choix pertinente. Pour le lecteur qui veut jouer les éléments sont accessibles sur cette feuille (il suffit de modifier les valeurs dans la zone grisée).

Le résultat est clair : en prenant des hypothèses pessimistes pour Emmanuel Macron, on arrive à une victoire avec 57%. Si en revanche si ceux qui ont voté Mélenchon, au lieu de voter Macron pour 40% d’entre d’eux  étaient 65% ( ils seraient alors 20% à s’abstenir au lieu des 45% qui en ont exprimés l’intention ces jours ci), le score monte à 59%. Comme on essaiera d’affiner en fonction des informations nouvelles on indiquera ici, les corrections successives du modèle.

  • le 1er mai à 13:50 : Evolution des reports de voix de Dupont-Aignan depuis Vendredi #OpinionWay Macron 44% (+13) Le Pen : 31% (-6) Abstention : 25% (-7) -> donc 58,5% pour Macron et 41,5 pour LePen (le même sondage donne 61% en question directe)

On rejoint les sondages plus directs. Ici le calcul est minimal, on devrait aller un peu plus loin et prendre ces éléments comme l’a priori d’une approche plus bayésienne que nous avons esquissée dans le post précédent en simulant des centaines de scénarios (modèle de dirichlet).

Mais restons en au problème de segmentation. On a beaucoup commenté une France coupée en deux socialement et géographiquement, en prêtant à ces catégories beaucoup d’affect. Une enquête dIpsos-Steria donne des éléments intéressants. Nous avons sélectionné deux critères qui semblent les plus discriminants au regard d’un indicateur très simple : le rapport de la fréquence maximale sur la fréquence minimale. Il s’agit de l’âge et du niveau de formation. Tous les autres critères socio-démographiques ont des valeurs inférieures.

L’age distingue l’électorat de Fillon dont le score est inférieur à 15% chez les moins de 65 ans et bondit à 45 chez les plus de 70 ans. Une population dans laquelle d’ailleurs Macron réussit bien. Les anciens rejettent les extrémismes mêmes s’ils restent majoritairement conservateurs. Le ratio est ici de 5,6 : les plus de 70 ans sont 5,6 fois plus nombreux que les plus jeunes (45% pour 8%). On notera aussi que Mélenchon a remporté la bataille de la jeunesse, c’est finalement rassurant, une jeunesse qui ne se révolte pas ce n’est pas bon pour un pays.

L’autre critère, est le même depuis longtemps, les politiques n’en tiennent pas assez compte, c’est celui de l’éducation  que se traduit par le niveau de diplôme. Ce critère distingue fortement l’électorat nationaliste. Il y a une relation décroissante entre le taux de vote FN et le niveau de diplôme et un ratio de 3,3 quand il n’y a pas de différence substantielle pour les autres candidats. Ils sont tous un peu plus représentés chez les plus diplômés. Voilà qui signifie l’idée que c’est l’espérance de progression sociale qui fait en grande partie l’élection, et que celle-ci se construit socialement dans la ressource que représentent les diplômes et les qualifications. Le critère de revenus est moins discriminant, ce qui compte est moins le revenu actuel que celui qu’on espère. Le vote du Front National n’est pas vraiment celui du vote ouvrier, il est celui des non-diplômés. C’est aussi la faiblesse de l’extrême droite : les moins diplômés sont aussi les moins participants au vote.

Avec ces quelques éléments on peut conclure sur deux points. Le premier est un conseil à Macron, s’il veut une belle victoire qu’il fasse un geste aux insoumis, ils ne sont pas sans ressources et sans espoir, ils sont inquiet d’un monde dur où la compétition et l’intolérance se dispute la société. Le second est un second conseil à Emmanuel Macron, Président – comme c’est prévisible sous réserve de rebondissement ce dont les temps actuel semblent généreux, et à son futur gouvernement. Ce n’est pas la rhétorique qui fera refluer le nationaliste et le populisme, ni le fact-checking en dépit du flot d’intox et de mensonge de ce mouvement. Il faudra se décider, s’il l’on est progressiste, à faire que le progrès soit partagé, en particulier en ciblant la jeunesse sans diplôme dont le taux de chômage est de près de 50%. Il n’y a pas une jeunesse il y en a deux, et la figure produite par l’observatoire des inégalités est éloquente.

 

 

#Sondages : En attendant l’élu

macron04Chaque jour amène son lot de sondages suscitant plus d’interrogations que de conclusions.

Pour le spécialiste des données c’est un merveilleux bac à sable, surtout quand la foule s’attache à en maintenir l’inventaire comme le fait Wikipédia.

Ce sont les données avec lesquelles nous allons nous amuser après avoir fait un peu de nettoyage et de mise en forme. Quelques jeux avec ces packages rares et précieux qui font de r une planète à explorer, une caverne d’Alibaba, un supermarché magique du nombre.

En voici une visualisation pour les 6 principaux adversaires en termes d’intention de vote. Les données sont représentée séquentiellement en fonction du temps. Les aspérités correspondent aux jours où plusieurs sondages ont été publié le même jour. On a lissé les données sur une fenêtre de 3 jours de manière exponentielle (lambda=0,5).

évolution sondage pdt2017

Macron et Le Pen sont aux coudes à coudes, Fillon est largué et semble à peine retrouver de l’air pour respirer, Hamon s’effondre avec une belle détermination, Mélanchon surgit et s’accroche à la roue de vélo de Fillon – allez encore un coup de mollet, l’autre est cuit- , Dupont Aignan s’accroche, avec un peu d’effort il sera peut être remboursé – il pique des coups de bec dans la carcasse c’est de Fillon.

Un premier jeu est naturellement celui du pronostic. Depuis les travaux de 538 les méthodes d’analyses évoluent et se sont ouvertes aux méthodes bayésiennes. Voici en quelques lignes une méthode pour établir un pronostic. Du moins une esquisse de ce qu’on pense être ce qui est utilisé par les spécialistes qui ne donnent pas toujours beaucoup de détails sauf @freakonometrics que signale @bayesreality. Les valeurs initiales sont les moyennes des trois derniers sondages publiés au 11/04/2017.

L’idée principale est que les sondages nous donne moins un résultat qu’une information a priori, lecture est insuffisante pour établir le pronostic. Celui-ci doit prendre en compte la variabilité inhérente aux sondages et fournir une idée plus précise des distributions associées. L’utilisation d’un modèle de distribution de probabilités est indispensable, il servira à générer un grand nombre de variantes possibles à partir de  cette première donnée. On simulera 100 000 échantillons pour saisir les configurations les plus inattendues.

Dans le cas d’un premier tour d’élection le bon modèle est celui de Dirichlet. Les résultats du sondage servent de probabilité a priori dans une perspective bayésienne. Pour estimer plus précisément le modèle, on peut  inclure aussi compte le nombre de répondant qui détermine la dispersion des probabilités de choix. Dans notre cas nous choissisons un paramètre de 250, pour tenir compte qu’empiriquement les échantillons utilisés sont deux fois moins précis que ce que la théorie pronostique. Avec r ceci se traduit par peu de lignes.

set.seed(789)
N <- 100000
probs <- c(.233 , .238, .187, .181, .092, .037 )    # define (extremal) class probabilities#alpha0 = 250  -> pour tenir compte de l’erreur réelle, on divise par 4 l’échantillon moyen utilisé car on l’stime au double des valeurs théorique.
alpha0 <- 250
alpha <- alpha0*probs
alpha <- matrix( alpha , nrow=N , ncol=length(alpha) , byrow=TRUE  )
alpha
x <- dirichlet.simul( alpha )

Les résultats sont donnés dans les deux diagrammes suivants. Le premier donne la distribution des probabilités de choix pour chacun des candidats, le second la distribution de probabilité d’arrivée en tête. Seul deux candidats ont une chance, sur la base des trois derniers sondages, Marine Le Pen a une toute petite avance sur Macron.

Naturellement ce qui interroge d’abord c’est la dynamique des hésitations et le jeu des reports. Qui prend à qui? L’analyse des corrélations peut nous donner une première idée. On y notera la nette corrélation négative entre les intentions de vote pour Hamon et Mélanchon – la piscine se vide- , tout autant qu’un lien positif entre celle pour Mélanchon et de manière surprenante pour Dupont-Aignan? Est-ce l’axe souverainiste? Pour Macron le point intéressant est qu’il est peu lié aux autres, il n’attire pas de camp particulier – sauf celui des modernes de tout les camps! à l’exception de Hamon – la piscine se déverse dans un second bassin. Fillon et Le Pen se déchirent ce qui reste de l’électorat de droite.

L’analyse de ces corrélations doit être prudente car elle suppose qu’elles restent stables dans le temps.

L’étude de cette dynamique va nous fournir un troisième jeu. A cette fin on utilise le package Roll de r et sa fonction roll_corr. Il s’agit de calculer une corrélation glissante en fonction du temps, selon une fenêtre d’observations ( ici 16 j) et une pondération exponentielle (0,9). 8 des 15 couples figurent dans la diapo 3.

Ces corrélations sont intéressantes, mais se lisent difficilement. Un premier résultat est la forte fluctuation des corrélation qui passent du positif au négatif, seraient-elles ératiques?  Le cas Hamon Melanchon est le plus clair, la corrélation devient de plus en plus négative, indiquant le sens de la conversion : Mélanchon monte de plus en plus parce que Hamon lui fournit ses bataillons. DAns tout les cas il n’y a pas de stabilité dans le temps, les rapports de forces varient, passe d’un pivot à l’autre.

Puisqu’il s’agit d’une matrice de corrélation on peut l’analyser avec une  ACP toute aussi glissante que nos corrélations, c’est une ACP dynamique. Le même Package Roll nous fournit la solution avec une fonction très simple Rool_eigen

—–
Corollb<-roll_eigen(Coroll, 20, min_obs = 1)
—–

On produit ainsi une série d’Acp pour chaque élément de la séquence des sondages. En voici ci dessous des exemples à t=20,40, 50,70. On peut y lire les moment de la campagne. Pour son moment le plus récent on voit clairement l’attraction de Mélanchon s’exercer sur toute les factions. Le début de campagne était plus classique dans une opposition des forces de droite et de gauche.

Il y a encore beaucoup de jeux possibles. Et nos codes sont faits à l’arrache. Une chose est sure, la statistique gagne avec ces élections, jamais on a autant calculé, et jamais on a été autant surpris. C’est que les structures de vote deviennent plus subtiles, et demandent des méthodes plus fines, plus riches, plus interprétative.

Nous n’avons pas été au bout de l’excercice, nous n’avons pas combiné les deux tours. Nous n’avons pas exploré toutes les régularisations possibles de nos modèles. Nous voulions juste inviter le lecteur à explorer les nouvelles ressources des DataSciences pour comprendre plus que pour prévoir les ressorts d’une élection à la présidence.

PS: et si quelqu’un a envie de faire du code propre, le mien est crasseux. Le tableau de donnée et le script r sont à disposition. Just mail me.

 

 

 

 

Master Management de l’Innovation GDO/MOPP – Méthodes quantitatives pour la recherche en gestion

L’objectif du cours est de donner une culture quantitative élargie aux étudiants, leur laissant le soin d’approfondir les méthodes qui pourraient être utilisées dans le cadre de leurs projets de recherche. Il est aussi de le donner le sens critique nécessaire pour évaluer les protocoles employés dans la littérature courante de gestion. Il est dispensés aux étudiants du Master management de l’Innovation parcours MOPP et GDO.
Le cours s’organise en 2 éléments :

1) Rappels élémentaires de statistique et d’analyse multivariée (tests, régression, ACP et classification) : 3 séances . L’environnement le langage r avec le package Rcmdr et  rstudio qui sont à installer au préalable. On trouvera un manuel d’initiation ici  et pour la culture générale on encourage à suivre r-blogger.

On travaillera sur un cas issu du Mémoire de Master Marketing de Pauline Vautrot. Il porte sur l’effet des preuves de transparence sur l’évaluation d’un moteur de recommandation. Les éléments se trouve sur le dossier google drive.

  1. Analyse univariée avec r
  2. Analyse bivariées : Test du khi², analyse de variance, corrélations, …
  3. Analyse factorielle
  4. Classification automatique
  5. Régressions

2) Un atelier des méthodes – présentation de protocoles méthodologiques dont les synthèses sont présentées par les étudiants sur la base d’articles significatifs dont voici un florilège. ( en Janvier 1 journée pleine)

Evaluation : au choix : une étude statistique menée avec r, ou l’exposé synthétique d’une méthode (en 4 pages). C’est un travail individuel. Inscription ici

Quelques idées de sujet :

  • Analyse conjointe et modèle de choix ()
  • Modèle de croissance ( SEM)
  • Méthode de la différence des différences (causalité)
  • Modèle de régression avec variable instrumentale ( causalité)
  • Modèles VAR ( économétrie, causalité) : avec une belle application pour l’analyse des effets croisés des médias sur les ventes.
  • Modèle linéaire hiérarchique et analyse multi-niveaux ( économétrie)
  • Mesure des attitudes implicites (Échelle), en se concentrant sur les travaux du Project Implicit
  • Machine learning et catégorisation de document en explorant les solutions proposées par MonkeyLearn pour la catégorisation.
  • Analyse des rendements anormaux (finance) ou event Analysis. Une application à l’effet des surprises ( positives ou négatives) est un très bon point de départ.
  • Régression avec auto-corrélation spatiale ( économétrie). Pour une introduction cette application en marketing en donne une très bonne idée.
  • Modélisation multi-agent appliquée au sciences sociales en passant par l’étude des modèles standard de Netlogo.
  • Analyse des réseaux sociaux ( Réseaux)
  • Data visualisation : de la grammaire des graphes à l’inventaire des solutions créatives en passant par l’ergonomie ou la psychologie.
  • Tests d’équivalence structurelle et comparaison inter-culturelle
  • ….

Les séances ont lieu les mardi de 18h00 à 20h30 à l’Ecole des Mines de Paris (Luxembourg) – Pour poursuivre voir aussi l’Atelier Doctoral.

 

Fringues, une question de regard – une courte étude

hawai1950Le burkini est avant tout une marque et le fait du marketing dans la globalisation. Avant tout, car c’est la l’invention d’une entreprise et non d’un mouvement religieux. Un marketing au pied de la lettre qui tente de satisfaire une attente d’un segment ou de plusieurs segments de consommatrices. Pas seulement celui des musulmanes mais de toutes celles (naturellement seules les femmes sont concernées) dont les normes sociales auxquelles elles adhèrent contiennent une modalité particulière de la pudeur – ne pas laisser apparaitre en public ce qui relève de l’intimité – mais aussi la revendication d’une forme de modernité  : un vêtement spécifique pour le bain en opposition à la tradition – se baigner habillée, comme le font les indiennes, ou pour des raisons de teint de peau comme le font les chinoises.

Les marques sont des signes et le vêtement est en grande partie ostentatoire. S’il présente des attributs fonctionnels (le confort, la facilité d’entretien .. ), il en comporte d’autres associés à des dimensions plus symbolique et identitaires. S’habiller c’est dire ce qu’on est.

Voilà qui m’a rappelé que je possédais un petit jeu de donnée constitué par des étudiants dans les années 2005 avec une enquête portant sur l’univers des marques surfs. Une belle occasion pour revisiter ces données avec une technique ancienne mais négligée qui s’adaptent parfaitement à nos données : en particulier une batterie de plus de 35 critères de décision de choix d’un vêtement (Slide 2) correspondant parfaitement à la notion d’avantage recherché. C’était aussi l’occasion de faire tester une vieille technique d’analyse, rarement employée en marketing, mais particulièrement utile pour traiter ce type de données : la fonction Iclust du package r Psych. le but sera d’identifier les avantages recherchés, de les construire et d’en tirer un modèle de benefit segmentation.

A la segmentation par avantage recherché on ajoutera l’étude d’une autre question portant sur les situations d’usage : porter le vêtement à  l’école ou à la campagne, pour faire les courses ou aller au travail… Ce sera l’occasion de revisiter la question du positionnement des marques (slide 7) et de leur écologie (slide 8).

La méthode Iclust est une variante de méthodes de classification hiérarchique ascendantes destinée à classer non pas les individus mais les variables. Elle permet de  mieux comprendre comment les catégories de jugements se forment et se généralisent. C’est William Revelle, l’un des principaux contributeur du package Psych de r, et un des meilleurs spécialistes de psychométrie, en est son inventeur. La mesure de similarité s’appuie sur  des critères de fiabilité. Deux réponses seront associées si le coefficient alpha de Cronbach , ou une variante -le coefficient beta –  propre à l’auteur – défini comme le plus mauvais split-half test du groupe d’items- est maximisé. Son intérêt réside dans l’identification de sous-échelles parmi un large ensemble d’items.

Passons au concret. Les données que l’on traitent d’abord (slide 2) sont une liste de critères de choix. Le résultat se présente sous la forme d’un arbre de regroupement (S3). Après quelques tâtonnements la meilleure solution s’avère comporter 9 groupes d’items, ou facteurs.

Ils se répartissent en trois groupes.  Le premier est constitué de critères fonctionnels :  la facilité à l’usage du vêtement et de son entretien, ainsi que son caractère économique. Un second à caractère hédonique est constitué d’un seul facteur : le confort du vêtement. Le troisièmes est relatif au rapport que l’on veut établir avec les autres : se conformer à la mode ou à l’avis du groupe de référence, échapper au regard des autres par la discrétion, se distinguer et exercer une certaine séduction. On apprendra à personne que le vêtement se définit essentiellement par le regard des autres même s’il est occulté.

A partir de cette analyse, 9 scores sont calculés en faisant la moyenne des items qui se rapportent aux traits latents, puis en calculant le poids relatifs de chacun des facteurs dans l’attention prêtée à l’ensemble de ces critères. Quatre grand profils sont identifiés, ils sont de poids égaux ( slide 4) égaux. Un quart des personnes interrogées ne prend en compte que les aspect fonctionnels et hédoniques : pratique et confortable. Les trois autres segments se définissent en fonction du rapport qu’ils établissent aux yeux des autres :

  • la discrétion où la stratégie de l’invisibilité
  • la stratégie du conformisme entre les modèles et l’entourage
  • la logique du standing et le principe du classique

Les 3/4 des consommateurs sont sensibles au vêtement dans la mesure où il permet de définir le rapport avec les autres : celui d’un inclusion mais parfois d’une exclusion, la distinction et le conformisme, et même échapper au regard. Les indifférents sont m’oins d’un quart.

Même méthode pour analyser les situations d’achat ( Slide 5 et 6).  On y découvre que deux types de situations se distinguent : le dehors et le dedans. On laisse au lecteur le soin d’interpréter les subdivisions plus fines. Elles se construisent aussi sur une dimension d’intimité. On les retrouve dans le biplot, où l’on situe les marques ( slide 7). Le slide suivant (slide 8) sous d’apparence d’un cladogramme donne l’arbre généalogique ou phénotypique des marques. On y retrouve des familles qui ont du sens.

Faut-il conclure ? S’habiller, ou se déshabiller, est un art. Le vêtement soit -il réduit à un tatouage, un tressage de cheveux, des colliers, ou se fait-il de mètres tissés, tâffetés, plissés, enroulés, robes de princesses ou tourbillons de voiles, est un langage. Il exprime le rapport que l’on veut établir aux autres mais aussi celui que l’on veut entretenir avec son corps. Si la liberté d’expression est un des premiers droits de l’homme et de la femme, le droit de se déshabiller ou de s’habiller est le droit fondamental de dire ce que l’on veut dire.

LinkedIn s’ajuste au modèle de Bass

Linked in2Dans ces temps où l’actualité médiatique résonne les cloches de l’Uberisation et de la disruption, laissant croire que les lois sociales (s’il en existent) changent de nature et que les plateformes sont de nouveaux monstres et que l’innovation connait un rythme foudroyant, il est parfois bon de reprendre de vieux pots pour servir une soupe plus savoureuse que le potage de l’inculture.

Le vieux pot est un des modèles les plus anciens et les plus solides du marketing. On le doit à Frank Bass (1969), il est destiné à modéliser la diffusion de l’innovation. Ses hypothèses sont élémentaires et peuvent s’interpréter aisément au travers du modèle de communication de Katz et Lazarfeld (1955). La diffusion d’un message ou d’une innovation est le fruit d’abord d’une influence directe sur des consommateurs innovateurs qui se déterminent en fonction de l’information qu’ils reçoivent, ensuite d’un processus d’interaction entre ces derniers et les autres traduisant un mécanismes d’innovation. Le modèle s’exprime comme une équation différentielle qui stipule que le nombre de nouveaux adopteurs est la somme de ces deux processus. A chaque période de temps une fraction constante de ceux qui n’ont pas encore adoptés le nouveaux produit ou la nouvelle idée se mette à l’adopter : q*(K-Nt), avec q représentant cette proportion (fonction de l’intensité des dépenses publicitaires et médiatiques), K le potentiel d’adoption et Nt, le nombre cumulés de ceux qui ont déjà adopté l’objet. S’ajoute les effets d’imitation : p*Nt*(K-Nt), où le produit Nt*(K-Nt) représente l’ensemble de toute les interactions possibles entre adopteurs et non-adopteur et p le coefficient d’imitation, c’est à dire la proportion constante des interactions qui aboutissent à une adoption. Pour plus de détail on consultera le Bass Basement Research Institute.

L’idée simple de ce post est d’évaluer dans quelle mesure le modèle rend compte de la diffusion d’un réseaux social, en l’occurence Linked in. On retrouvera les données ici.  Pour estimer les paramètres du modèle, on utilise la fonction NLS de r, on retrouvera le code ( élémentaire) sur cette page de Cheng-Jun Wang ainsi que quelques suggestions utile pour l’identification des paramètres initiaux dans les commentaires (c’est le problème majeur des procédure d’estimation de regression non linéaire). En voici les résultats, l’ajustement est quasi-parfait au niveau cumulé.

adjustParameters:
Estimate Std. Error t value Pr(>|t|)
M 5.695e+02 5.297e+01 10.752 1.17e-10 ***
P 8.744e-03 9.511e-04 9.193 2.47e-09 ***
Q 1.098e-01 1.459e-02 7.529 9.07e-08 ***

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ‘ 1
Residual standard error: 2.384 on 24 degrees of freedom

Le potentiel de marché (M) est ici de 569, 5 millions. Autrement dit Linked serait largement en phase de maturité puisqu’au premier trimestre 2016, il y a 433 millions d’inscrit ce qui représente 76% du potentiel. On restera prudent car parmi les travaux de recherche certains chercheurs montrent qu’il y a une tendance à la sous-estimation de l’ordre de 20%, surtout lorsque le nombre d’observation est faible ( Bulte et Lilien, 1997). Vraisemblablement le potentiel serait donc l’ordre de 630 millions d’utilisateurs et donc les 2/3 du potentiel étant couvert.

Avec un coefficient d’imitation de 0,1098 et un coefficient d’innovation de 0,0087 ont retrouve des valeurs qui ne sont pas éloignées des valeurs observées dans les nombreuses applications du modèles de Bass dont Farley et Al 1990, trouve des valeurs moyennes respectivement de 0,38 et de 0,03. On sera  surpris que l’effet de diffusion est inférieur à la moyenne, témoignant d’un effet d’imitation moindre que des produits d’équipement des ménages. Le réseau a été lancé en 2003, son potentiel sera atteint vers 2023, il faudra donc 20 ans pour arriver au plein potentiel. Quant au rapport innovateur/imitateurs, le modèle indique qu’il est dans un rapport 1 sur 4. C’est assez difficile à apprécier, mais on pourra sans doute être intrigué par la relative faiblesse de l’effet d’imitation dans une catégorie de produit dont la dynamique est présumée dépendre d’externalité de réseaux, et qui est illustrée dans le diagramme de droite.

BassEstim

L’exercice mené à des limites que la littérature très abondante ( plusieurs milliers d’articles) a relevé. La première est qu’ici le potentiel M est considéré comme stable alors qu’il devrait évoluer notamment en fonction du nombre d’humains connectés et de l’accroissement du nombre de cadres dans la population mondiale. Une seconde est qu’on ne prend pas en compte les évolution du service qui devrait être plus attractifs. Une troisième technique est que dans l’estimation les premières périodes n’ont pas été prises en compte.  Une quatrième est que l’on travaille à un niveau très agrégé qui néglige les disparités régionales. Il y en a d’autres.

Il reste une approximation qui s’ajuste fort bien et donne des éléments sérieux pour réfléchir à la diffusion des innovations digitales qui ne semble pas se distinguer fortement des autres catégories de produit et ne révèle pas l’illusion des accélération qu’on croit percevoir. C’est aussi une invitation à approfondir l’étude de la dynamique de cette diffusion où l’influence interpersonnelle ne semble pas aussi forte qu’on aurait pu croire. Ce n’est pas si étonnant, qui s’est inscrit sur le réseau suite à une invitation? Le mécanisme d’adoption résulte sans doute d’un autre cheminement : l’intériorisation d’une norme, la croyance qu’il est nécessaire socialement d’adopter ce type de service.

 

 

Plateformes : collectionner les papillons

NabokovCollaboratif, coopérativisme, collectif, on-demand, économie du partage, gig economy,  les termes se succèdent reflétant les idéaux utopiques, les rigueurs idéologiques, sans qu’on y voit plus clair dans un mouvement qui se singularise à la fois par le nombre, la diversité et la valeur (boursière).

Pour notre part, nous en restons à cette notion de plateforme qui souligne le trait principal de ces nouvelles organisations : elles coordonne de nombreuses micro-activités. On pourrait y ajouter au moins deux autres éléments : d’abord l’engagement dans le processus de production des biens ou des services de non-professionnels (crowsourcing) et d’une part de l’activité économique domestique rendue possible par la force de la coordination, ensuite l’importance de l’interaction entre des populations différentes qui représentent autant de versants de marchés distincts et nécessite des méthodes d’appariement que le mécanisme des prix n’assurent pas entièrement. On y ajoutera le rôle pivot des algorithmes ( plus que des données) qui orientent, disciplinent, motivent les acteurs au risque de déployer une politique propre.

Mais de tout cela, on en rediscutera quand le bouquin sera prêt à sortir (il est en cours de relecture). En attendant, la réflexion n’est pas close et il reste un chantier à finir, celui de construire, en naturaliste, une typologie qui rendent compte à la fois de l’unité de forme et de l’étendue des domaines exploité. Un travail d’entomologiste, recueillir les spécimens, les répertorier, les classer, les catégoriser. C’est au fond un travail de recherche qui n’est pas souvent entrepris, simplement car on présuppose en sciences de gestion une sorte de modèle unique de l’organisation, même si périodiquement de telles typologies apparaissent ( Pensons à celles de Mintzberg, ou celle de Miles et Snow). En voici l’embryon, une petite collection de papillons chassés sur la toile, bien incomplète, peu détaillée encore, un mémento qui aura servi dans la rédaction de l’ouvrage à confronter l’analyse au fait.

Les commentaires et suggestions sont bienvenues, pour préciser un détail ou discuter un point plus général, signaler les plateformes oubliées, ou critiquer une catégorie. En complément de la collection, le filet à papillon se trouve sur la page FB plateformes, ( à liker et partager sans modération) les news au fil de l’eau de la vie des plateformes et des réflexions qu’elles suscitent.

Crédit Photo : difficile de ne pas penser à Vladimir Nabokov….