7.règles D'association Python.0

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 31

Introduction to Market Basket Analysis in

Python
Les règles d’association sous Python

CYCLE INGENIEUR
INGÉNIERIE DES SYSTÈMES D’INFORMATION ET BIG DATA
‫هندسة االنظمة المعلوماتية و المعطيات الضخمة‬

HRIMECH HAMID
Module : Fouille de doonées
Les règles d’association
Plan
• Introduction

• Pourquoi une analyse d'association?

• Quelques termes utilisés

• Mlxtend

• Conclusion
Les règles d’association

L’analyse d'association : tente de trouver des modèles


communs d'éléments dans de grands ensembles de
données
• Examiner les transactions de vente
• le suivi du flux de clics
• la commande de pièces de rechange
• les recommandation des moteurs de recherche en ligne
• ….
Les règles d’association

• scikit-learn ne prend pas en charge cet algorithme ?

• bibliothèque MLxtend de Sebastian Raschka a une implémentation de


l' algorithme Apriori pour extraire des ensembles d'éléments
fréquents pour une analyse plus approfondie
Pourquoi une analyse d'association?

Clustering
• Le défi avec beaucoup de ces approches est qu'elles
Regression peuvent:
• être difficiles à régler
• difficiles à interpréter
Neural Networks • nécessitent un peu de préparation des données et
d'ingénierie des fonctionnalités pour obtenir de
Random Forests bons résultats.
En d'autres termes, ils peuvent être très puissants mais
SVM nécessitent beaucoup de connaissances pour être mis en
œuvre correctement.

etc.
Pourquoi une analyse d'association?
• Clustering

• Regression

• Neural Networks

• Random Forests

• SVM

• etc.
Support

Confidence

Lift
MLxtend

Mlxtend (extensions d'apprentissage automatique) est une bibliothèque


Python d'outils utiles pour les tâches quotidiennes de science des
données.

• Documentation: http://rasbt.github.io/mlxtend

• Dépôt de code source: https://github.com/rasbt/mlxtend

• PyPI: https://pypi.python.org/pypi/mlxtend
Data

Nous avons un tableau de données sur deux colonnes : la première


correspond aux identifiants de transaction, la seconde aux noms des
produits. Voici les premières lignes du fichier
Installation

pip install mlxtend


Importation des données
Transformation en tableau binaire

La librairie que nous utiliserons prend en entrée un tableau binaire


‘’transactions x produits’’ où sont recensés la présence (codé 1 ou True)
des produits dans chaque caddie (l’absence est codée 0 ou False). Un
tableau croisant ID et PRODUCT fait parfaitement l’affaire. Nous
affichons les 20 premières transactions et les 3 premiers produits
Transformation en tableau binaire
Transformation en tableau binaire
Transformation en tableau binaire

Nous pouvons obtenir la liste des produits en affichant les en-têtes de


colonnes du tableau TC.

Nous travaillons à partir de ce tableau binaire


dorénavant.
Extraction des itemsets fréquents

Nous importons la fonction apriori() et nous l’appliquons à nos données en


fixant un support minimum de 0.025 c.-à-d.

Nous acceptons les itemsets avec un support (min_support=0.025) supérieur


ou égal à 0.025 x 1360 = 34 transactions.

Un cardinal inférieur ou égal à 4 (max_len=4), et nous demandons à ce que les


noms des items apparaissent explicitement à l’affichage (use_colnames=True).
Extraction des itemsets fréquents
Extraction des itemsets fréquents

Pour nos données et avec les paramètres ci-dessus, nous avons obtenus 603
itemsets fréquents

Affichons les 15 premiers :


Extraction des itemsets fréquents

Pour nos données et avec les paramètres ci-dessus, nous avons obtenus 603
itemsets fréquents

Affichons les 15 premiers :


Filtrage des itemsets

Nous souhaitons pouvoir filtrer les itemsets selon la présence d’items en


particulier (ex. quels sont les itemsets qui contiennent le produit ‘’Aspirin’’
?).

Pour ce faire, nous devons déjà comprendre la structure de la colonne


‘’itemsets’’ du DataFrame. Il s’agit d’une ‘’pandas. Series’’ .
Filtrage des itemsets

la méthode apply() de l’objet pandas.Series. Elle permet


d’appliquer une fonction sur chaque élément de la série de
valeurs
Filtrage des itemsets

Les itemsets (13, 208, 249, etc.) comprennent le produit


‘Aspirin’. Nous pouvons les afficher explicitement.
Filtrage des itemsets
Filtrage des itemsets
Extraction (déduction) des règles
d’association
Nous produisons les règles à partir des itemsets fréquents. Elles peuvent être très nombreuses, nous en limitons la
prolifération en définissant un seuil minimal (min_threshold = 0.75) sur une mesure d’intérêt, en l’occurrence la confiance
dans notre exemple (metric = ‘’confidence’’).
Extraction (déduction) des règles
d’association
Extraction (déduction) des règles
d’association

Il faudrait adapter l’affichage pour disposer de toutes les informations.


Dans ce qui suit, nous nous en tiendrons à l’antécédent, le conséquent
et le lift. Nous modifions aussi le format d’affichage
Filtrage des règles

Nous pouvons filtrer ou organiser les règles de différentes manières.

Afficher les règles qui présentent un LIFT supérieur ou égal à 7

Les 10 règles qui présentent les LIFT les plus élevés. Nous passons par un tri
décroissant de la base de règles selon le LIFT.

Liste des règles menant à la conclusion {‘2pct_Milk’}

Liste des règles dont l’antécédent comporte l’item ‘Aspirin’.


Filtrage des règles

Vous aimerez peut-être aussi