Gérer sa stratégie commerciale à partir des données de fréquentation

arnold zephir
Prevision.io
9 min readJun 18, 2020

--

Le commerce (retail) est un des secteurs qui bénéficie le plus de l’usage de technique de Machine Learning ou d’intelligence artificielle. En premier lieu, pour prédire des ventes et organiser sa comptabilité et ses stocks mais aussi, de manière moins connue, pour segmenter les lieux et les moments afin d’adapter son offre.

Lorsque l’on possède une chaine de magasin ou que l’on souhaite acquérir un nouveau pas de porte, il peut être utile de connaitre la vie des quartiers potentiels. S’agit-il d’un quartier de bureau ? D’un endroit qui vit le Vendredi et le Samedi soir ? le Week End ? Pendant les congés ?

Une bonne analyse de la typologie de vie permet d’évaluer la valeur d’une boutique avant un achat ou d’adapter son offre produit pour cibler le mieux la population type.

Un moyen d’arriver à cette segmentation est l’usage de données de trafic sur lesquelles on applique successivement un algorithme de réduction de dimension puis un autre de clustering. Ces techniques sont cependant généralement complexes à mettre en oeuvre.

Dans cet article nous allons voir comment utiliser Excel et la plateforme Prevision.io pour faire cela en quelques clics et moins d’une demi journée.

Le use case

Nous allons imaginer une situation où un gestionnaire de commerce possède plusieurs boutiques physiques et souhaiterait* choisir au mieux ses boutiques et sa gamme de produit.

Pour cela il possède des données de fréquentations qu’il a constitué lui même, acquis par une société tierce ou disponible en open data.

Les données

La donnée de base est un dataset de fréquentation. Il est constitué d’une colonne de date et d’une colonne par lieu à étudier avec à l’interieur un volume de fréquentation absolue ( nombre de visiteurs, nombre de validations, nombre de connexion, nombre de transactions, …)

Exemple de dataset de fréquentation :

Dans les sources courantes de données pour ce genre de problème on trouve :

  • les données de mobilité ( validation de transports en commun, données de trafic autoroutier, données de location de vélo, …)
  • les données de connexion ( hotspot wifi, volume de charge antenne du réseau cellulaire, contact NFC , contact bluetooth)
  • les données transactionnelles (volume ticket de caisse, nombre de visiteurs, volume de franchissement de portique d’entrée etc… )

auxquelles peuvent s’adjoindre des métas données comme les coordonnées géographiques ou la taille du lieu :

A noter que ces métadonnées n’ont pas d’importance dans un premier temps.

Pour illustrer la démarche nous allons utiliser le datapack Prevision-trafic. Les Datapack sont des jeux de données thématiques aggrégées et nettoyées proposés avec le Studio Prevision pour enrichir les cas d’usage courant.

Dans le datapack Prevision-trafic on trouve entre autre les volumes de connexions aux hotspot wifi de la ville de Paris ( provenant du site Open Data de la ville de Paris )

Transformation

Nous allons effectuer quelques transformations avant de lancer une analyse dans la plateforme. Dans la plupart des cas, ces transformations sont effectuées avec du code dans l’environnement Prevision ( onglet Notebook ) mais elles peuvent tout à fait être faites à l’aide d’un outil comme Excel en première approche.

La 1ère étape et la plus importante va être de normaliser les données. Comme nous souhaitons étudier les lieux d’après leurs variations saisonnières, chaque colonne de volume va être normalisée entre 0 et 1 pour refléter ces variations.

Sous Excel, cela peut être fait en calculant le min et le max par colonne :

Puis en calculant dans un nouvel onglet des valeurs standardisées de la manière suivant :

VALEUR_NORMALISE = ( VALEUR_BRUT — MIN(VALEUR_BRUT) ) / ( MAX(VALEUR_BRUT) — MIN(VALEUR_BRUT) )

Ré-echelonage en tre 0 et 1 par colonne des volums de fréquentation

De cette manière, on a maintenant pour chaque lieu étudié une série de valeur horodatées comprises entre 0 et 1.
Le Dataset est donc constitué de n lignes, n etant le nombre de relevé horodaté, et m+1 colonnes, où m est le nombre de lieux compris dans l’étude ( et 1 colonne supplémentaire étant consacré à la date)

Cependant, avant de pouvoir lancer une analyse dans la plateforme, il est nécessaire de transposer le dataset afin de faire une analyse des lieux.
Ce sont toujours les lignes du dataset qui sont considérées comme des échantillons et si le dataset était uploadé en l’état, nous obtiendrions une analyse par moment

Pour transposer le dataset, il suffit de copier coller toutes les données dans un nouvel onglet en sélectionnant “Transposer”.

On obtient ainsi un dataset où chaque ligne est un endroit, chaque colonne un moment et les cellules des volumes de trafic normalisés :

Il ne reste plus qu’a enregistrer cette onglet dans un csv puis de se connecter à la plateforme.
Sous Excel, sélectionner l’onglet contenant les données transposées puis “Enregistrer Sous > CSV UTF 8”

Le fichier obtenu sera celui utilisé dans la plateforme pour l’analyse.

Explorer les similitudes de fréquentation avec l’outil prévision

Quand les données se présentent sous forme de fichier plat, comme un fichier .csv issue de Excel par exemple, elles peuvent être uploadées directement dans la plateforme via la page Data :

l’écran Data où uploader ses datasets

En moins d’une minute, le dataset est intégré et il est alors possible de lancer une analyse :

( Note : cette analyse de similitude étant assez couteuse en ressources mémoires, elle n’est pas lancée systématiquement et doit être demandée explicitement)

Apres une dizaine de minute, la plateforme aura alors produit un embedding de vos données reflétant les similitudes

Note à propos des embeddings :
Les embeddings sont des vecteurs mathématiques capable de représenter n’importe quel type de données sous formes de vecteurs mathématiques en respectant les similitudes entre échantillons.
Les techniques les plus connues sont la PCA, la LSA ou les word2vec.
Prevision.io utilise une combinaison de Variational AutoEncoder, de clustering et de préparation de données ciblée.
L’énorme avantage de ces techniques est qu’elle permet de calculer des distances entre des échantillons de données même si celles-ci ne sont pas numériques à la base. Ces distances peuvent être assimilées à un indice de similarité.

Les résultats de cette opération peuvent être utilisés dans l’explorer accessible dans le menu contextuel du dataset

L’explorateur de similitude

L’écran de l’explorateur permet de profiter de la complexité des algorithme de d’embeddings de manière visuel.

Rappelons que le but ici est de rapidement voir les similitudes de fréquention entre différents lieux pour en tirer des strategies commerciales.

L’explorateur est divisé en 4 parties principales

(1) Le graphique de similitude

Cet écran représente chaque échantillon, qui sont ici les lieux, en fonctions de leurs ressemblances. Il permet de zoomer ou sélectionner des points. Des points proches spatialement sont des points similaires en termes de traffic.

Dans notre cas, par exemple on voit que lorsque on clique sur le lieu “place d’Italie” (en la retrouvant grâce au champ de recherche à droite ) les lieux à proximité sont Riquet, Buttes Chaumont ou encore Quai de Valmy , nous indiquant que ces lieux partagent une grande similarité dans le trafic (ici probablement les lieux de vie du Week End en journée des locaux)

De même si on clique sur Porte De Vanves, on retrouve plutôt des lieux comme Menilmontant ou Dugommier, plutôt propices à une fréquentation résidentielle.

(2) La liste de similarité

La partie 2 de l’écran permet d’obtenir une liste ordonnée des lieux les plus similaires à celui sélectionné, par ordre de de similarité

On peut ainsi choisir un lieu dont on connait déjà l’activité pour se voir proposer des lieux dont la fréquentation est similaire

NOTE : pour ce guide, on a utilisé un dataset relativement simple et disponible en open Data. Il est cependant tres fortement recommandé de distinguer des volumes de fréquentation par catégories de population afin de distinguer la fréquentation des étudiants de celles des touristes par ex.

On peut choisir le nombre de points similaires que l’on veut.

(3) Les options de visualisation

Ici on peut lancer un regroupement ( clustering ) automatique selon diverses techniques.

Ces algorithmes vont tenter de regrouper les points afin de faire émerger des segments qui pourront être analysés.

Si l’on choisit par exemple “UMAP” et que l’on clique sur “Run” avec les options par défaut, on obtient les regroupements suivant :

Où l’on distingue les régions suivantes :

  • en haut à gauche : les endroits touristiques
  • en haut à droite : les commerces
  • en bas : les endroits résidentiels, avec les endroits de vie nocturnes regroupés vers la droite

On voit ainsi qu’avec un dataset disponible en open Data et quelques manipulations possibles avec Excel, on obtient une première approche interessante de segmentation des quartiers parisiens selon leur fréquentation.

Aller plus loin

Dans un cas réel d’utilisation il serait intéressant d’aller plus loin.

La première étape serait de récupérer des données plus nombreuses et/ou mieux qualifiées. On pourrait rajouter des lieux, diminuer le pas de temps, rajouter des méta données,…
L’utilisation de la plateforme serait identique mais les résultats beaucoup plus fins.

Ensuite, pour une réutilisation des résultats dans une application tierce, on peut récupérer les données de l’embedding en se rendant à l’URL indiqués dans la partie 5 de l’écran d’exploration (en vert) :

Une fois le calcul d’embedding terminé, le résultat ainsi que les meta-données associées sont disponibles sur le serveur

qui indiquent où trouver les vecteurs générées.

Tous les embeddings effectués par la plateforme sont disponibles par API ou en download. L’URL suivante ( remplacer labels par tensors ):

GET https://demo.prevision.io/api/datasets/files/5ee3b4790deb5e001c2bcfa7/explorer/tensors.bytes

permet de télécharger le fichier de vecteurs.

Ceux ci sont aussi disponible via un appel à l’API ( à l’aide du token fournit dans l’écran d’administration ).

En python par exemple ( noter la route en /ext/v1 accessible grace au token) :

req = Request('https://demo.prevision.io/ext/v1/datasets/files/5ee38eea0deb5e001c2bcf99/explorer/tensors.bytes')
req.add_header('Authorization',TOKEN )
content = urlopen(req).read()
vec = np.frombuffer(BytesIO(content).read(), dtype="float32").reshape(u,v)
print(vec.shape)

>>> (60, 16)

A partir de ces vecteurs, vous pouvez développer vos propres applications, en construisant un indice de similarité entre station par exemple :

En python toujours :

req = Request('https://demo.prevision.io/ext/v1/datasets/files/5ee3b4790deb5e001c2bcfa7/explorer/labels.bytes')
req.add_header('Authorization',TOKEN )
content = urlopen(req).read()
lf = pd.read_csv(StringIO(content.decode('utf8')),sep="\t")
dist_sq = np.sqrt(np.sum((vec[:, np.newaxis, :] - vec[np.newaxis, :, :]) ** 2, axis=-1))
similarities = (1- (pd.DataFrame(dist_sq, index=lf['name'], columns=lf['name']) / dist_sq.max()))
similarities.to_csv('paris_district.csv', sep=";")
Les quartier de Paris et leur indice de ressemblance (valeur faible = forte similarité)

Pour les gens possédant un compte Prevision.io, un Notebook avec le code complet de démonstration est disponible à adresse suivante : https://demo.prevision.io/store/notebook/trafic/V1/

--

--