Partager via



Décembre 2018

Volume 33, numéro 12

Artificially Intelligent - analyse du panier

Par Frank La La

Frank La VigneIl est un peu de l’intelligence artificielle (IA) que vous avez, sans aucun doute, rencontré, surtout à mesure que les jours fériés saison d’achat est en cours d’exécution, l’achat recommandée. Presque chaque détaillant en ligne affiche des recommandations de produits supplémentaires, parfois sous l’en-tête de « Fréquemment achetés ensemble » ou « Les clients qui ont acheté X également acheté Y. » Selon une étude par McKinsey dans 2013 (bit.ly/2yK3Bu8), 35 % de ce que les consommateurs acheter sur Amazon proviennent des algorithmes de recommandation de produit. De plus, cette tactique n’est plus limitée aux détaillants, des services de diffusion en continu en ligne tels que Netflix et YouTube utilisent des algorithmes de recommandation sophistiquées pour conserver les visionneuses réglés dans plus de temps.

Clairement, systèmes de recommandation ont un impact sur nos vies quotidiennes. Vous pourriez dire qu’il s’agit de la forme la plus importante de l’intelligence artificielle que les consommateurs trouvent. Dans cet article, j’explorerai un formulaire de base du système de recommandation appelé analyse du panier.

Analyse du panier

Analyse du panier, également appelé affinité Analysis, est une technique de modélisation basée sur la théorie que si vous achetez un certain groupe d’éléments, vous êtes plus susceptible d’acheter un autre groupe d’éléments. Par exemple, une personne achetant confiture et bread est beaucoup plus susceptible de vouloir également acheter gelée. Toutefois, pas toutes les relations sont aussi évidentes. Notion préalable de comportement du consommateur peut augmenter les ventes et donner le détaillant un avantage significatif par rapport à des concurrents. À proprement parler, analyse du panier est qu’une seule application de techniques d’analyse association, bien que de nombreux articles en ligne et les didacticiels risque de perturber les deux. Pour la replacer dans la perspective d’autres techniques que j’ai déjà parlé auparavant, analyse du panier est un outil d’apprentissage non supervisé d’apprentissage, qui nécessite peu de conception de fonctionnalités et une quantité limitée de préparation et nettoyage des données. Dans la pratique, les informations recueillies à partir de l’analyse du panier peuvent être examinées plus en détail avec d’autres outils de science des données ou d’intelligence artificielle.

En dépit de sa capacité à découvrir des tendances cachées, analyse du panier est relativement facile à expliquer et ne nécessite pas connaissance des statistiques avancées ou de calcul. Toutefois, il existe quelques termes et les notations conventionnelles pour passer en revue. Tout d’abord, les notions de causes et les effets sont appelées antécédent et qui en découlent. Dans l’exemple mentionné précédemment, confiture et bread sont l’antécédent et jelly est doive. La notation formelle pour cette relation serait {confiture, pain} -> {Jelly} indiquant qu’il existe une connexion entre ces éléments. Notez également que les antécédents et consequents peut se composer de plusieurs éléments.

Il existe trois mesures mathématiques importants requis pour l’analyse du panier : Prise en charge, de courbes d’élévation et de confiance. Prise en charge représente le nombre de fois antécédents apparaissent ensemble dans les données. Pour simplifier l’exemple, imaginez la relation suivante : {confiture} -> {Grape Jelly}. Étant donné les 100 clients (et une seule transaction par client), considérez le scénario suivant :

  • 15 clients a acheté confiture
  • 13 a acheté Grape Jelly
  • 11 a acheté confiture et Grape Jelly

Prise en charge représente le nombre de fois où les éléments apparaissent dans une transaction ensemble, c'est-à-dire dans cet exemple 11 100 ou 0,11. Pour utiliser les termes du contrat de statistiques, il est probable de 11 % que toutes les transactions inclura confiture et Grape gelée. Niveau de confiance prend la valeur de prise en charge (. 11) et le divise par la probabilité d’une transaction d’avoir Grape Jelly seul, équivaut à une valeur de 0.846. Cela signifie que près de 85 % du temps Grape Jelly achetés, il a été acheté en même temps que la confiture. Enfin, il existe de courbes d’élévation, qui prend le niveau de confiance (0.846) et le divise par la probabilité de la confiture. Ce sont équivalentes à 5.64 (arrondie à deux décimales).

Tout cela peut être plus clair dans un graphique simple, comme illustré dans Figure 1.

Figure 1 prise en charge confiance et les valeurs de courbes d’élévation

Mesure Formula Valeur
Support technique P (confiture & Jelly Grape) .011
Niveau de confiance Prise en charge / P (Jelly Grape) 0.846
Courbes d’élévation Confiance / P (confiture) 5.64 (arrondi)

 

Analyse du panier en Action

En conservant les mesures précédentes à l’esprit, il est temps pour essayer de l’analyse du panier sur un jeu de données réel. La première étape consiste à obtenir des données de vente au détail à analyser. Heureusement, l’Université de Californie, Irvine, fournit un jeu de données qui contient des transactions pour un site Web de société basée au Royaume-Uni. Plus d’informations sur le jeu de données sont disponibles à l’adresse bit.ly/2DgATFl. Créer un bloc-notes Python 3 sur votre plateforme préférée (j’ai abordé les blocs-notes Jupyter dans une colonne précédente à msdn.com/magazine/mt829269). Créer une cellule vide, entrez le code suivant pour télécharger les exemples de données et exécuter la cellule :

! curl http://archive.ics.uci.edu/ml/machine-learning-databases/00352/Online%20Retail.xlsx -o retail.xlsx

Une fois cette opération terminée, entrez le code suivant dans une nouvelle cellule pour charger la feuille de calcul Excel dans une trame de données Pandas et imprimer les colonnes du jeu de données :

import pandas as pd
df = pd.read_excel('retail.xlsx')
print( df.columns)
The output will look something like this:
Index(['InvoiceNo', 'StockCode', 'Description', 'Quantity', 'InvoiceDate',
       'UnitPrice', 'CustomerID', 'Country'],
      dtype='object')

Tandis que l’analyse du panier ne nécessite pas des données strictes en matière de changement de format, il n’est pertinent pour supprimer les enregistrements superflus, tels que ceux avec des valeurs null numéros de facture et commandes annulées. Il est également utile supprimer les espaces superflus dans les descriptions de produit et de convertir tous les numéros de facture en chaîne. Que faire en exécutant le code suivant :

df['Description'] = df['Description'].str.strip()
df.dropna(axis = 0, subset=['InvoiceNo'], inplace = True)
df['InvoiceNo'] = df['InvoiceNo'].astype('str')
df = df[~df['InvoiceNo'].str.contains('C')]

Entrez maintenant le code suivant pour agréger les données et l’afficher à partir d’un niveau pays :

df.groupby('Country').count().reset_index().sort_values(
  'InvoiceNo', ascending = False).head()

Ensuite, je vais réorganiser les données avec chaque produit un encodés à chaud et une transaction par ligne. Un encodage à chaud est une technique de transformation de données d’où les valeurs de catégorie sont converties en colonnes, avec la valeur de 1 entrée où se trouve une valeur catégorique. J’ai également limite l’étendue du jeu de données à un seul pays, dans ce cas, France, de comparer le comportement de consommateur dans un marché individuel. Entrez et exécutez le code suivant pour ce faire (Notez que la forme de la trame de données basket_uk dans la sortie de la cellule ; l’encodage à chaud un développe les colonnes à partir de 8 à 4175) :

basket_fr = (df[df['Country']=="France"]
          .groupby(['InvoiceNo', 'Description'])['Quantity']
          .sum().unstack().reset_index().fillna(0)
          .set_index('InvoiceNo'))
basket_fr.head(10)

Un rapide coup de œil les résultats révèle un problème avec mon un encodage à chaud. Le sixième élément vers le bas a une valeur de 24.0 dans la deuxième colonne. Mon intention était d’avoir un ou un zéro dans les données, pas de quantités. Par conséquent, je dois rechercher toutes les valeurs zéro et de les convertir en 1. Pour résoudre ce problème, exécutez le code suivant et notez que le 24.0 a été converti en 1 :

def sum_to_boolean(x):
  if x<=0:
    return 0
  else:
    return 1
basket_fr_final = basket_fr.applymap(sum_to_boolean)
basket_fr_final.head(10)

Je vais utiliser MLXTEND (rasbt.github.io/mlxtend) pour obtenir une analyse les données. MLXTEND est une bibliothèque Python des outils utiles pour les tâches courantes de science des données, y compris l’analyse du panier d’achat. Pour installer cette bibliothèque à partir de l’ordinateur portable, exécutez le code suivant :

! pip install mlxtend

Le package MLXTEND installé, il est temps d’importer les bibliothèques pertinentes à partir de MLXTEND, comme suit :

from mlxtend.frequent_patterns import association_rules
from mlxtend.frequent_patterns import apriori

Dans une nouvelle cellule, entrez le code suivant pour afficher les jeux d’éléments avec au moins 6 % prennent en charge :

frequent_itemsets_fr = apriori(basket_fr_final, min_support = 0.06,
  use_colnames = True)
frequent_itemsets_fr.sort_values('support', ascending = False).head()

Avec les jeux de clés des éléments identifiés, je peux maintenant appliquer la bibliothèque de règles d’association pour découvrir les comportements d’achat de clients. Entrez le code suivant et exécutez-le :

a_rules = association_rules(frequent_itemsets_fr, metric = "lift",
  min_threshold = 1)
a_rules.sort_values('lift',ascending = False)

Les résultats triés par élévation, doivent ressembler à ceux de Figure 2, révélant les modèles d’achats des clients Français sur le site. Un rapide coup de œil les résultats montre que les clients qui achètent des enfants couverts SPACEBOY également acheter des enfants couverts chariot FILLE, et que les clients qui achètent une alarme dans une couleur également acheter une alarme dans une autre couleur. Aussi loin qu’exploitables, je pourrais recommande aux propriétaires de site à l’offre d’offre groupée d’offres sur spécifiques couverts, ainsi que proposer des offres groupées de réveil multicolore.

Règles d’association à partir de clients Français
Figure 2 règles d’Association à partir de clients Français

Toutefois, n’oubliez pas que cette liste est triée par Lift- and -pas d’occurrence. Il peut être pas judicieux d’introduire une nouvelle offre groupée ou un produit offre si elle n’est pas suffisamment populaire. Pour obtenir un affichage de la popularité ces éléments couverts, entrez le code Python suivant :

print( basket_fr_final['CHILDRENS CUTLERY SPACEBOY'].sum())
print( basket_fr_final['CHILDRENS CUTLERY DOLLY GIRL'].sum())

Les résultats ne sont pas prometteurs ; 27 uniquement pour SPACEBOY et 28 pour chariot FILLE. Avec l’exploration un peu, je trouve une règle d’association avec une promesse plus. Il s’avère que l’index de règle d’association 50 (jeu/20 RED RETROSPOT papier couches) est l’antécédent de tasses de livre rouge et assiettes en rouge. Entrez le code suivant pour voir combien d’unités est vendues :

basket_fr_final['SET/20 RED RETROSPOT PAPER NAPKINS'].sum()

Bien que le nombre est faible, il est évident que les clients achetant tasses jetables souhaitez assiettes de papier et les couches de mise en correspondance. Un détaillant expérimenté pourrait facilement empaqueter ces applications dans une offre groupée pour inciter les clients d’acheter.

Lecteurs Sharp-eyed Remarquez qu’il n’y a deux autres mesures dans la trame de données obtenue : Tirer parti et condamnation. Il s’agit des valeurs supplémentaires à prendre en compte lors de l’analyse du panier d’achat. Vous trouverez plus d’informations à ce sujet en explorant ce que l'on appelle « autres mesures d’intérêt et de pertinence ». Wikipedia est très utile pour démarrer (bit.ly/2AECRNh).

Rappelez-vous que lorsque j’ai agrégées les données à partir d’un niveau de pays, ont été considérablement plus factures du Royaume-Uni que tout autre pays. Peut-être plus pourraient être appris en examinant le comportement des clients avec des données brutes plus. Examinons cela en entrant le code suivant dans une nouvelle cellule et l’exécuter, comme suit :

basket_uk = (df[df['Country']=="United Kingdom"]
          .groupby(['InvoiceNo', 'Description'])['Quantity']
          .sum().unstack().reset_index().fillna(0)
          .set_index('InvoiceNo'))
basket_final_uk = basket_uk.applymap(sum_to_boolean)
frequent_itemsets_uk = apriori(basket_final_de, min_support = 0.06,
  use_colnames = True)
a_rules_uk = association_rules(frequent_itemsets_uk, metric = "lift",
  min_threshold = 1)
a_rules_uk.sort_values('lift',ascending = False).head()

Pour le Royaume-Uni, la durée d’exécution est beaucoup plus longue en raison du plus grand jeu de données. Notez également que les résultats sont très différentes. Il peut y avoir un résultat de modification de l’analyse, ou simplement une fonction des préférences des clients différents sur un autre marché plus de données ? Ou cela peut être que le détaillant propose différents produits pour la vente dans des marchés différents ? Voici les types de variables, que vous devez comprendre lorsque vous travaillez via votre analyse. Dans ce cas, nous avons contexte peu au-delà de ce qui est un détaillant en ligne basé au Royaume-Uni. Toutefois, dans un projet réel, l’engagement avec les spécialistes de l’entreprise est un élément essentiel pour la réussite dans les projets d’analytique de données.

Pour résumer

Dans cet article, j’ai exploré l’utilisation de l’analyse du panier pour découvrir des modèles de comportement du consommateur. Analyse du panier auquel appartient le champ plus d’affinité d’analyse, les grandes sociétés pour inciter les clients à dépenser plus d’argent sur les produits et plus de temps sur les plates-formes de diffusion en continu.

Analyse du panier fournit un point d’entrée excellent pour les personnes et les organisations qui souhaitent pour Explorer la science des données. L’obstacle à l’entrée est faible en termes de la compétence mathématique. En fait, les calculs mathématiques ne vont au-delà des simples division et de base théorie des probabilités. Il est un simple problème d’espace pour Explorer pour les débutants et offre un excellent point de départ dans l’application d’intelligence artificielle à l’entreprise. Cela dit, ne pas croyez pas que ce n’est pas un moyen puissant pour mener la science des données ou d’afficher la valeur de la direction de l’entreprise. L’impact sur la ligne inférieure peut être significatif.


Frank La Vigneworks chez Microsoft en tant que Solutions de technologie d’intelligence artificielle professionnel où il aide les entreprises gagnez en efficacité en obtenant le meilleur parti de leurs données avec l’analytique et d’intelligence artificielle. Il a également des hôtes le DataDriven podcast. Blog régulièrement à FranksWorld.com et vous pouvez lui regarder sur son canal YouTube, « De Frank type « télévision World » (FranksWorld.TV).

Merci à l'expert technique suivant d'avoir relu cet article : Andy Léonard (données d’entreprise & Analytique)


Discuter de cet article sur le forum MSDN Magazine