Machine learning

Si vous passez vos journées à regarder les données de votre base de données CRM, de vos annonces Google ou, en fait, si vous avez été à proximité de tout article sur le marketing au cours des dernières années, vous avez probablement déjà rencontré le terme machine learning .

Bien que «machine learning » puisse sembler être le genre de chose que d’autres personnes utilisent ou que vous devez acheter pour une plate-forme dont vous pouvez tirer parti, vous pouvez en créer une vous-même. Dans une ligne de code.

Oui, si vous souhaitez implémenter ML à grande échelle, en temps réel sur votre site Web, vous aurez besoin de compétences spécialisées, mais pour exécuter des analyses manuelles hors ligne?  Facile.

Encore une fois, choisir le bon type de modèle, l’optimiser et, souvent, interpréter le résultat peut nécessiter beaucoup de connaissances en informatique, mais de la même manière que vous pourriez utiliser l’une des stratégies d’enchères automatisées de Google Ads sans savoir exactement comment cela fonctionne, mais vous savez que c’est le cas (du moins pour cette campagne, car vous l’avez rigoureusement testée par rapport à d’autres stratégies d’enchères, bien sûr…), vous pouvez créer un modèle de machine learning  et l’utiliser pour faire des prédictions.

Le but de cet article

Le but de cet article n’est pas de faire de vous un expert en machine learning , mais d’essayer de démystifier ce en quoi consiste tout machine et l’intelligence artificielle. En essayant vous-même, vous serez plus conscient de la manière dont ils peuvent être utilisés pour améliorer vos activités de marketing.

Pour les besoins de cet article, nous allons utiliser R et RStudio, ainsi que quelques packages complémentaires, pour créer un type de modèle appelé forêt aléatoire. Bien que le terme « forêt aléatoire » puisse sembler un peu ridicule, une forêt aléatoire n’est en réalité qu’une collection « d’arbres de décision », et les arbres de décision sont faciles.

Juste comme un organigramme. Presque.

Imaginez un organigramme qui indique aller à gauche si le client dépense plus de 10 €, aller à droite sinon; allez à gauche si le client portait un pantalon violet, allez à droite si pas, et ainsi de suite, jusqu’à ce que cela vous indique si le client fera ses emplettes à nouveau, ou pas. Une forêt aléatoire prend une collection d’arbres de décision, leur demande à tous ce qu’ils pensent et vous donne le verdict de la majorité. C’est la démocratie de machine learning .

Comment le modèle sait-il ce que sont ces « organigrammes » ? Vous lui donnez une collection de données historiques dans lesquelles vous savez si le client a acheté à nouveau une période donnée. L’algorithme se met ensuite au travail en examinant les données et en élaborant un ensemble de «règles» qui maximisent la fréquence à laquelle il devine correctement. Vous pouvez prendre ce modèle, lui donner un nouvel ensemble de données et lui demander de faire ses prédictions.

Nous allons utiliser ces outils pour créer un modèle prédictif afin de déterminer si un client achètera de nouveau ou s’il est une merveille.

J’ai rassemblé un ensemble de données qui contient quelques variables sur le client et sa transaction, et sur le fait qu’il soit ou non revenu et acheté à nouveau. Dans cet ensemble de données, les variables sont les suivantes:

  • gender: le sexe
  • transaction_value: combien ont-ils dépensé
  • transaction_quantity: combien d’articles ils ont acheté
  • festive: faisaient-ils leurs achats à Noël?
  • for_self: était l’achat pour eux
  • returned: ont-ils magasiné à nouveau l’année prochaine

Ce que nous essayons de faire est de construire un modèle prédictif de manière à ce que, après certaines transactions futures, nous puissions prendre ces données et essayer de prédire si notre nouveau groupe de clients est susceptible de convertir. Si cela semble ne pas être le cas, nous pouvons peut-être vous proposer un coupon ou une offre promotionnelle.

L’analyse exploratoire des données

D’accord, nous avons un ensemble de données. La première chose que nous ferions habituellement est une analyse exploratoire des données, pour essayer de déterminer quelles variables ont une valeur prédictive et de ne les utiliser que pour construire notre modèle. Cependant, il y a quelques raisons pour lesquelles nous n’allons pas le faire cette fois-ci:

  • Cet article traite de la création d’un modèle machine learning et non d’EDA.
  • De toute façon, j’avais prévu de faire un article sur EDA, et si je le fais ici, cet article sera très long et il faudra que je trouve quelque chose d’autre sur lequel écrire.
  • J’ai créé le jeu de données – et il est vraiment artificiel – alors je pense que nous allons nous en sortir. Cette fois au moins.

Abandonnant l’analyse exploratoire des données, passons à la partie, assez brève, de l’élaboration de notre modèle et de certaines prédictions.

Qu’est-ce que machine learning ?

Qu’est-ce que nous essayons réellement de faire ici ? En réalité, tout ce que nous voulons, c’est prendre une colonne de nos données, celle que nous essayons de prédire, et utiliser les autres colonnes pour essayer de la prédire.

Les colonnes (variables) que nous utilisons pour établir notre prédiction sont appelées variables indépendantes (ou variables explicatives, ou prédicteurs, ou autre chose). La colonne que nous voulons prédire s’appelle la variable dépendante (ou variable de réponse, variable de sortie ou autre chose).

Si nous essayons de mettre quelque chose dans un groupe particulier (vont-ils acheter à nouveau, sont-ils intéressés par des ventes supplémentaires), le type de problème est alors la classification . Si nous voulons essayer de prédire quelque chose sur une échelle continue (combien vont-ils dépenser la prochaine fois, quel montant de réduction leur faut-il avant de convertir)

Si nous essayons de mettre quelque chose dans un groupe particulier (vont-ils acheter à nouveau, sont-ils intéressés par des ventes supplémentaires), le type de problème est alors la classification . Si nous voulons essayer de prédire quelque chose sur une échelle continue (combien vont-ils dépenser la prochaine fois, quel montant de réduction leur faut-il avant de convertir), vous voulez créer un modèle de régression .

Dans ce cas, nous avons un ensemble de cinq prédicteurs que nous voulons utiliser pour prédire un résultat binaire (choix de deux): vont-ils revenir et acheter à nouveau, ou pas?

Votre premier modèle marketing ML

Avec R et R Studio installés et activés, nous allons commencer par créer un nouveau script et charger les packages nécessaires à la construction de notre modèle:

bibliothèque (lecture)
bibliothèque (dplyr)
bibliothèque (randomForest)
bibliothèque (caret)

La première étape du processus consiste à définir une graine aléatoire:

set.seed (1234)

Cela devrait simplement garantir que notre flux de travail et notre sortie sont reproductibles. La bonne première étape du processus est l’ importation des données:

customer_data <- read_csv (« repeat_customer.csv »)

Après cela, nous voulons convertir notre variable de genre d’une classe de caractères de variable à un facteur et la variable de sortie (renvoyée) d’un entier à un facteur:

customer_data $ gender <- as.factor (customer_data $ gender)

customer_data $ retourné <- as.factor (customer_data $ retourné)

Si nous avons glimpseles données, nous pouvons jeter un coup d’œil rapide et nous assurer que les variables sont comme nous le voulons et dimnous indiquer le nombre de lignes et de colonnes dont nous traitons:

aperçu (customer_data)
dim (customer_data)

Voici le résultat que nous voyons:

> aperçu (customer_data)
Observations: 340
Variables: 6
$ sexe <fct> masculin, masculin, masculin, masculin, masculin, masculin, …
$ transaction_value <int> 34, 45, 27, 57, 33, 28, 61 , 13, 12, 7, …
$ transaction_quantity <int> 4, 2, 6, 2, 7, 4, 2, 1, 1, 2, 4, 2, 3, …
$ festive <int> 0 , 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, …
$ for_self <int> 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1, 0, 0, 0, …
$ renvoyé <fct> 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, …
> dim (customer_data )
[1] 340 6

Tout cela a l’air bien et nous pouvons voir que nous avons 340 lignes (observations) avec lesquelles travailler. Peu de données volumineuses, mais, au fur et à mesure de la création du jeu de données, cela devrait suffire.

 

Si nous courons :

table (customer_data $ retourné)

nous obtenons cette sortie:

0 1 169 171

Précision et jeux de données équilibrés

Cela nous indique que, dans notre ensemble de données, 169 clients n’ont plus magasiné et 171 l’ont fait. Un ensemble de données sympa, équilibré, facile à utiliser et rendant nos résultats faciles à interpréter.

Quelle différence cela fait-il ? Eh bien, nos résultats sont d’environ 50:50. Donc, si quelqu’un nous donne des informations sur un nouveau client et que nous jetons une pièce pour décider s’il va faire ses achats à nouveau, nous aurons raison de 50% du temps. Donc, si nous avons un modèle qui convient à 90% du temps, c’est vraiment bien.

Si notre base de référence est que 95% des clients achètent à nouveau (réalisons leur rêve…), si nous recevons de nouvelles données sur les clients et si nous devinons toujours «oui, ils achèteront de nouveau», nous aurons raison 95% des temps. Si notre modèle est correct 90% du temps, c’est pire que de toujours deviner oui.

Et c’est pourquoi regarder cela compte. Vous devez savoir quelle est votre base de référence pour savoir si votre modèle est bon ou non.

Construire le modèle

Les variables converties en facteurs, le cas échéant, et les dimensions des données comprises, il est temps de construire. La première tâche consiste à créer des ensembles de formation et de test pour nos données. Notre ensemble de formation est utilisé pour construire le modèle, et l’ensemble de test nous fournit un ensemble de données dont le résultat est connu, que notre modèle n’avait pas encore vu, à tester. Nous y parviendrons en subdivisant notre ensemble de données en un ensemble d’apprentissage composé des lignes 1 à 200 et un ensemble test des lignes 201 à 340 :

train <- customer_data [1: 200,]test <- customer_data [201: 340,]

Ensembles construits, le temps de construire enfin ce modèle. Je pense que nous pouvons le faire en une seule ligne de code, mais nous verrons si la largeur de Medium est la même:

rf_model <- randomForest (retourné ~., data = train)

Le code est assez simple: «  rf_modell’objet randomForestdans » lequel nous voulons stocker notre modèle, la fonction que nous utilisons (dans ce cas, un algorithme de forêt aléatoire), returnednotre variable de sortie, ~signifie en utilisant les éléments suivants comme variables prédictives’ et les  .moyennes utilisent toutes les autres variables de l’ensemble de données.  Enfin, cela signifie que les données que nous voulons utiliser correspondent à notre train de données.

Hit run et votre modèle sont construit. Il est temps de prédire sur notre ensemble de test. Nous allons créer une nouvelle colonne appelée predictedet stocker la meilleure estimation de notre modèle à cet endroit: test $ predite <- predire (rf_model, test)

Vous pouvez faire défiler la table et comparer la returnedcolonne contre la predictedcolonne, mais ce n’est pas très ninja de données. Pour être plus que cela, utilisons la confusionMatrixfonction du caretpaquet.

Une matrice de confusion semble assez ridicule, mais il s’agit en réalité d’un simple tableau comparant nos colonnes réelles et prédites et additionnant nos vrais positifs, vrais négatifs, faux positifs et faux négatifs. La fonction nous fournit également quelques métriques récapitulatives intéressantes.

Si nous courons :

confusionMatrix (test $ prédit, test $ renvoyé)

Nous obtenons la sortie:

Prévision de référence 0 1
0 69 2
1 2 67

Précision: 0,9714
IC 95%: (0,9285, 0,9922)
Aucune information. Taux: 0,5071
Valeur P [Acc> NIR]: <2e-16

Code: 0,9428
Test de Mcnemar           Valeur P: 1

Sensibilité: 0,9718
Spécificité: 0,9710
Valeur prédiction: 0,9718
Valeur prédite: 0,9710
Prévalence: 0,5071
Taux de détection: 0,4929
Prévalence de détection: 0,5071
Précision équilibrée: 0.9714 Classe

‘positive’: 0

Analyse du modèle

En regardant le tableau en haut de la sortie, vous pouvez voir que notre modèle est assez bon (presque comme si quelqu’un avait manipulé les données). Lorsque la sortie réelle doit être un 0, nous avons 69 0, alors que cela aurait dû être un 1, nous avons 67 1. Comparez cela à quand nous aurions dû avoir un 0 et un 1 (faux positifs, deux de ceux-ci), et quand nous aurions dû avoir un 1, nous avons un 0 (faux négatifs, deux de ceux-là aussi).

Notre sortie nous dit que notre modèle est précis à 97,14% et que le taux d’information zéro, le mieux que nous puissions faire en devinant le résultat le plus commun, a une précision de 50,71%; pas un mauvais soulèvement.

Compte tenu de ce modèle, vous pouvez vous adresser correctement aux futurs clients, mais n’oubliez pas que les faux négatifs et les faux positifs ne sont pas toujours identiques, vous devez donc prendre en compte le coût de l’envoi de bons de réduction à des personnes mal classées et qui reviendraient. de toute façon dans vos calculs, mais c’est pour un autre jour.

? Ebook gratuit : 7 soft skills essentiels pour devenir Data Scientist

? Cet article peut intéresser un ami(e), partagez lui

? Participe gratuitement à nos prochains Meetup

La note globale de cet article est
[Total: 1 Average: 5]
Est-ce que cet Article vous a été utile? Utile Pas utile
Partager cet article