Vous êtes sur la page 1sur 105

BASES DE DONNES DECISIONNELLES

&

FOUILLE DE DONNEES

Anne LAURENT LIRMM – POLYTECH'MONTPELLIER http://www.lirmm.fr/~laurent laurent@lirmm.fr

CNAM – 2004/2005

Plan

Bases de données transactionnelles

Bases de données décisionnelles

Entrepôts de données et OLAP

Fouille de données

Logique floue et fouille de données

Conclusion

Bases de données transactionnelles

Définition et Historique

Objectifs

limites

OLTP (On-Line Transactional Processing)

Bases de données de production

Requêtes

Simples (accès à une partie de la base)

Fréquentes

Nombreux opérateurs

Modèles relationnels

Codd, années 70

Besoins de

Cohérence

Non redondance (normalisation 3NF, BCNF)

Fraîcheur (mises à jour fréquentes)

Gestion des accès concurrents (transactions concurrentes)

Exemples

Gestion de stock (achats / ventes)

Gestion du personnel

Bibliothèque

Service facturation

Limites

Limites liées aux objectifs des bases transactionnelles :

Incapacité à fournir des services décisionnels (coût élevé du calcul des jointures)

Requêtes complexes impossibles

Navigation dans les données dans un but analytique impossible

Connaissance du SQL indispensable à la manipulation des données

Bases de données décisionnelles

Historique

Objectifs et applications

Modélisation multidimensionnelle

Besoin de systèmes d'analyse

Années 1990

Codd (le même !) - Arbor Software

Croissance des volumes de données traités

Impossibilité aux décideurs de les traiter sans outils informatiques

Besoins de plus en plus complexes

Objectifs

Fournir aux décideurs des outils d'analyse de leurs données

Reporting

Navigation

Extraction de connaissances

Applications

Analyse des résultats

Suivi de clientèle (CRM – Customer Relationship Management)

Définition de profils clients

Détection des mauvais fraudes

Churning

Anticipation

Requêtes décisionnelles

Complexes

Rares

très gros volumes de données

Décideurs (petit groupe)

Vision des données à un niveau agrégé

Vision multidimensionnelle

Analyse de faits en fonction de dimensions

Analyse des ventes selon la période, le lieu, le type de produit

Gestion de gros volumes de données

Redondance ?

Entrepôts de données

Données historisées

Matérialisées

Volumineuses

Sources hétérogènes

Utilisation décisionnelle

OLAP

On-Line Analytical Processing

Codd 1993

catégorie d'applications et de technologies permettant de collecter, stocker, traiter et restituer des données multidi- mensionnelles, à des fins d'analyse.

Exemples de requêtes OLAP

Requêtes complexes

Quel est le total des ventes de chaussures ?

Quel est le type des meilleures ventes sur une période donnée, pour une ville précise et un groupe d’âge ?

Requêtes what if

15 Que se passerait-il si les prix diminuaient de 10% ?

OLAP vs OLTP

OLAP

vs.

(On-Line Analytical Processing)

OLTP

(On-Line Transaction Processing)

  • Requêtes complexes • Requêtes simples • Optique décisionnelle • Production et Mise à
  • Requêtes complexes • Requêtes simples • Optique décisionnelle • Production et Mise à
  • Requêtes complexes • Requêtes simples • Optique décisionnelle • Production et Mise à
 

Requêtes complexes

Requêtes simples

Optique décisionnelle

Production et Mise à jour des données

Vision ensembliste (tendances

)

Vision au niveau individuel

• Destiné aux analystes et décideurs (peu nombreux) • Destiné aux agents opérationnels (nom- breux)

Destiné aux analystes et décideurs (peu nombreux)

Destiné aux agents opérationnels (nom- breux)

• Destiné aux analystes et décideurs (peu nombreux) • Destiné aux agents opérationnels (nom- breux)

VILLE

Exemple

Cube des ventes C : Produit x Ville x Mois Ventes

mars février 56000 12000 janvier MOIS Boston 43000 91000 78000 65000 Chicago 55000 21000 8000
mars
février
56000
12000
janvier
MOIS
Boston
43000
91000
78000
65000
Chicago
55000
21000
8000
23000
New York
85000
85000
55000
92000
88000
tentes
canoës
boissons
chocolat
55000 21000 8000 23000 New York 85000 85000 55000 92000 88000 tentes canoës boissons chocolat PRODUIT

PRODUIT

Dimensions

Organisation des informations selon des dimensions plates et des dimensions hiérarchisées hiérarchies simples (arborescentes) hiérarchies complexes

Exemple :

hiérarchisées hiérarchies simples (arborescentes) hiérarchies complexes Exemple : TRIMESTRE JOUR SEMAINE MOIS 18

TRIMESTRE

JOUR
JOUR

SEMAINE

MOIS

Fonctionnement général

Méta base ETL Données externes
Méta
base
ETL
Données externes
Fonctionnement général Méta base ETL Données externes Règles Assoc. Systèmes de fouille de don- nées
Fonctionnement général Méta base ETL Données externes Règles Assoc. Systèmes de fouille de don- nées
Fonctionnement général Méta base ETL Données externes Règles Assoc. Systèmes de fouille de don- nées
Fonctionnement général Méta base ETL Données externes Règles Assoc. Systèmes de fouille de don- nées
Fonctionnement général Méta base ETL Données externes Règles Assoc. Systèmes de fouille de don- nées
Fonctionnement général Méta base ETL Données externes Règles Assoc. Systèmes de fouille de don- nées
Règles Assoc.
Règles Assoc.
Règles
Règles

Assoc.

Assoc.
Systèmes de fouille de don- nées
Systèmes de fouille de don- nées

Systèmes de fouille de don- nées

Analyse OLAP

Analyse OLAP

Reporting
Reporting

Reporting

de fouille de don- nées Analyse OLAP Reporting Entrepôt de données Magasins de données
de fouille de don- nées Analyse OLAP Reporting Entrepôt de données Magasins de données
de fouille de don- nées Analyse OLAP Reporting Entrepôt de données Magasins de données

Entrepôt de données

Magasins de données (multidimensionnels)

Sources de données hétérogènes

OLAP Reporting Entrepôt de données Magasins de données (multidimensionnels) Sources de données hétérogènes 19
OLAP Reporting Entrepôt de données Magasins de données (multidimensionnels) Sources de données hétérogènes 19

ETL – 80% du travail !

E-xtract

Accès aux différentes sources

T-ransform

Nettoyage

gestion des inconsistances des données sources

formats de données

détection des valeurs non valides

L-oad

Chargement dans l'entrepôt

Conception de l'entrepôt

Tables de faits : entité centrale

Objet de l'analyse, taille très importante

Tables de dimensions : entités périphériques

Dimensions de l'analyse, taille peu importante

Table de faits normalisée (BCNF)

N-uplets de la tables de faits :

Clés étrangères formant une clé primaire

Valeurs associées à chaque clé primaire (mesures)

Associations de type (0,n) – (1,1) connectant les différentes dimensions aux faits

Normalisation des tables

Etoile : tables dimensions non normalisées

Flocon : tables de dimensions normalisées

Réduction de la redondance

Maintenance simplifiée

MAIS navigation coûteuse

de la redondance – Maintenance simplifiée – MAIS navigation coûteuse schéma en étoile schéma en flocon
de la redondance – Maintenance simplifiée – MAIS navigation coûteuse schéma en étoile schéma en flocon
de la redondance – Maintenance simplifiée – MAIS navigation coûteuse schéma en étoile schéma en flocon

schéma en étoile

de la redondance – Maintenance simplifiée – MAIS navigation coûteuse schéma en étoile schéma en flocon
de la redondance – Maintenance simplifiée – MAIS navigation coûteuse schéma en étoile schéma en flocon
de la redondance – Maintenance simplifiée – MAIS navigation coûteuse schéma en étoile schéma en flocon

schéma en flocon

23

Exemple : étoile

  Time Dimension   time_key day_of_week month quarter year holiday_flag
 

Time Dimension

  Time Dimension   time_key day_of_week month quarter year holiday_flag
  Time Dimension   time_key day_of_week month quarter year holiday_flag
 

time_key

day_of_week

month

quarter

year

holiday_flag

  Time Dimension   time_key day_of_week month quarter year holiday_flag
day_of_week month quarter year holiday_flag Sales Fact time_key product_key store_key dollars_sold
day_of_week month quarter year holiday_flag Sales Fact time_key product_key store_key dollars_sold

Sales Fact

time_key

product_key

store_key

dollars_sold

units_sold

dollars_cost

product_key store_key dollars_sold units_sold dollars_cost granularité de la table de faits ? Product Dimension

granularité de la table de

faits ?

Product Dimension product_key description brand category Store Dimension store_key store_name address
Product Dimension
product_key
description
brand
category
Store Dimension
store_key
store_name
address
floor_plan_type

Exemple : flocon

Exemple : flocon 24

Magasins de données

Partie de l'entrepôt

Dédiés à une analyse particulière

Modélisation multidimensionnelle

Fouille de données / reporting / navigation OLAP

Problématiques associées

Calcul de l'hypercube (cube) de données

Stockage des données

Mise à jour des données

Types de faits

Additif

Semi-additif

Non additif

Calcul de l'hypercube

Quel cube construire ?

Comment le construire ?

Requêtes de type group by

SELECT mois, produit, ville, count(*) FROM Ventes GROUP BY mois, produit, ville

Ajout des agrégats (oracle)

GROUP BY CUBE GROUP BY ROLLUP GROUP BY GROUPING SETS

Stockage du cube

ROLAP (Relational OLAP) : les données sont stock- ées dans une base de données relationnelle. Le cube n'est pas matérialisé du tout sauf au moment de la phase de requête

MOLAP (Multidimensional OLAP) : tout le cube est matérialisé physiquement

HOLAP (Hybrid OLAP) : seule une partie du cube est matérialisée sous forme multidimensionnelle. Les autres données sont laissées dans la base relation- nelle et extraites de manière dynamique au moment des requêtes

Les cubes sont très clairsemés (sparsity)

Mise à jour des données

Incrémentale

Recalcul total du cube

Additif

Types de faits

On peut faire la somme des valeurs sur toutes les dimensions

Quantité vendue

Semi-additif

Il est impossible de sommer les valeurs sur certaines dimensions

Niveau de stock (pas sur la dimension temps)

30

Non additif

On ne peut faire la somme sur aucune dimension

Moyenne des ventes

Opérations OLAP

Visualisation :

Rotation

Inversion des valeurs de dimensions (switch)

Modification des données :

Sélection sur les cellules (slice)

Sélection sur les tranches (dice)

Généralisation (roll-up)

Spécialisation (drill-down)

Rotation

Rotation 32

Inversion

Inversion 33

Sélection sur les cellules

DICE
DICE

Critère de sélection : valeurs inférieures à 15

Sélection sur les tranches

SLICE
SLICE

Généralisation/Spécialisation

Généralisation/Spécialisation 36

Outils commerciaux

Business Objects

Hyperion Solutions (Essbase)

IBM (DB2 OLAP Server)

Microsoft (SQL Server)

Oracle (Express – Oracle 9i – Oracle 10g)

SAS

Oracle et OLAP

OLAP OPTION

Analytic Workspace et OLAP DML (TAD)

Requêtes de partitionnement

Fonctions d'analyse

Outils ETL

Outils d'analyse

MOLAP – ROLAP - HOLAP

39

MOLAP – ROLAP - HOLAP 39

Requêtes de partitionnement :

group by

SQL> select ville, etat, count(*) from abonne, emprunt, exemplaire where abonne.num_ab = emprunt.num_ab and exemplaire.numero = emprunt.num_ex group by ville, etat;

VILLE

------------------------------ --------------- ----------

ETAT

COUNT(*)

BEZIER

BON

4

BEZIER

ABIME

2

MONTPELLIER

BON

18

MONTPELLIER

ABIME

2

Requêtes de partitionnement :

group by cube

SQL> select ville, etat, count(*) from abonne, emprunt, exemplaire where abonne.num_ab = emprunt.num_ab and exemplaire.numero = emprunt.num_ex group by cube(ville, etat);

VILLE

------------------------------ --------------- ----------

ETAT

COUNT(*)

 

26

 

BON

22

ABIME

4

BEZIER

6

BEZIER

BON

4

BEZIER

ABIME

2

MONTPELLIER

20

MONTPELLIER

BON

18

MONTPELLIER

ABIME

2

9 rows selected.

Requêtes de partitionnement :

group by rollup

SQL> select ville, etat, count(*) from abonne, emprunt, exemplaire where abonne.num_ab = emprunt.num_ab and exemplaire.numero = emprunt.num_ex group by rollup (ville, etat);

VILLE

------------------------------ --------------- ----------

ETAT

COUNT(*)

BEZIER

BON

4

BEZIER

ABIME

2

BEZIER

6

MONTPELLIER

BON

18

MONTPELLIER

ABIME

2

MONTPELLIER

20

26

7 rows selected.

Requêtes de partitionnement : group by rollup avec fonction DECODE

SQL> select decode(grouping (ville),1,'Toutes les villes', ville ) ville,

2 decode(grouping (etat),1,'Tous etats confondus', etat ) etat,

3 count(*)

4 from abonne, emprunt, exemplaire

5 where abonne.num_ab = emprunt.num_ab

6 and exemplaire.numero = emprunt.num_ex

7 group by rollup (ville, etat);

VILLE

------------------------------ -------------------- ----------

ETAT

COUNT(*)

BEZIER BEZIER BEZIER MONTPELLIER MONTPELLIER MONTPELLIER Toutes les villes

BEZIER BEZIER BEZIER MONTPELLIER MONTPELLIER MONTPELLIER Toutes les villes
BEZIER BEZIER BEZIER MONTPELLIER MONTPELLIER MONTPELLIER Toutes les villes
BEZIER BEZIER BEZIER MONTPELLIER MONTPELLIER MONTPELLIER Toutes les villes
BEZIER BEZIER BEZIER MONTPELLIER MONTPELLIER MONTPELLIER Toutes les villes
BEZIER BEZIER BEZIER MONTPELLIER MONTPELLIER MONTPELLIER Toutes les villes
BEZIER BEZIER BEZIER MONTPELLIER MONTPELLIER MONTPELLIER Toutes les villes

BON ABIME Tous etats confondus BON ABIME Tous etats confondus Tous etats confondus

BON ABIME Tous etats confondus BON ABIME Tous etats confondus Tous etats confondus
BON ABIME Tous etats confondus BON ABIME Tous etats confondus Tous etats confondus
BON ABIME Tous etats confondus BON ABIME Tous etats confondus Tous etats confondus
BON ABIME Tous etats confondus BON ABIME Tous etats confondus Tous etats confondus
BON ABIME Tous etats confondus BON ABIME Tous etats confondus Tous etats confondus
BON ABIME Tous etats confondus BON ABIME Tous etats confondus Tous etats confondus

4

2

6

18

2

20

26

Requêtes de partitionnement : group by grouping sets

SQL> select ville, etat, count(*) from abonne, emprunt, exemplaire where abonne.num_ab = emprunt.num_ab and exemplaire.numero = emprunt.num_ex group by grouping sets ((ville, etat), ()) ;

VILLE

------------------------------ --------------- ----------

ETAT

COUNT(*)

BEZIER

BON

4

BEZIER

ABIME

2

MONTPELLIER

BON

18

MONTPELLIER

ABIME

2

26

Fonctions d'analyse : rank

SQL> select * from (select ville,etat,count(*), rank() over (order by count(*) desc) as rnk from emprunt, abonne, exemplaire where emprunt.num_ab = abonne.num_ab and exemplaire.numero=emprunt.num_ex group by ville, etat) ;

VILLE

------------------------------ --------------- ---------- ----------

ETAT

COUNT(*)

RNK

MONTPELLIER

BON

18

1

BEZIER

BON

4

2

BEZIER

ABIME

2

3

MONTPELLIER

ABIME

2

3

Fonctions d'analyse : TOP-N

SQL> select * from (select ville,etat,count(*), rank() over (order by count(*) desc) as rnk from emprunt, abonne, exemplaire where emprunt.num_ab = abonne.num_ab and exemplaire.numero=emprunt.num_ex group by ville, etat) where rnk <= 2 ;

VILLE

------------------------------ --------------- ---------- ----------

ETAT

COUNT(*) RNK

MONTPELLIER

BON

18

1

BEZIER

BON

4

2

Fonctions d'analyse : BOTTOM-N

SQL> select * from (select ville,etat,count(*), rank() over (order by count(*)) as rnk from emprunt, abonne, exemplaire where emprunt.num_ab = abonne.num_ab and exemplaire.numero=emprunt.num_ex group by ville, etat) where rnk <= 2 ;

VILLE

------------------------------ --------------- ---------- ----------

ETAT

COUNT(*)

RNK

BEZIER

ABIME

2

1

MONTPELLIER

ABIME

2

1

Fonctions d'analyse :

ratio_to_report

SQL> select abonne.num_ab, ville, count(*), ratio_to_report(count(*)) over (partition by ville) as ratio from emprunt, abonne where emprunt.num_ab = abonne.num_ab group by ville, abonne.num_ab ;

NUM_AB VILLE

COUNT(*) RATIO

---------- ------------------------------ ---------- ----------

911007

BEZIER

6

1

901001

MONTPELLIER

4

,2

902043

MONTPELLIER

4

,2

902075

MONTPELLIER

2

,1

911021

MONTPELLIER

1

,05

911023

MONTPELLIER

6

,3

921102

MONTPELLIER

3

,15

Vues matérialisées : création

SQL> CREATE MATERIALIZED VIEW OLAPV_EMPRUNTS

2 REFRESH START WITH SYSDATE NEXT SYSDATE+1

3 ENABLE QUERY REWRITE

4 AS

5 SELECT VILLE, ETAT, COUNT(*)

6 FROM EMPRUNT, EXEMPLAIRE, ABONNE

7 WHERE EMPRUNT.NUM_AB=ABONNE.NUM_AB AND EXEMPLAIRE.NUMERO=EMPRUNT.NUM_EX

8 GROUP BY VILLE, ETAT;

Materialized view created.

Vues matérialisées : interrogation

SQL> select * from olapv_emprunts;

VILLE

------------------------------ --------------- ----------

ETAT

COUNT(*)

BEZIER

BON

4

BEZIER

ABIME

2

MONTPELLIER

BON

18

MONTPELLIER

ABIME

2

SQL> insert into emprunt values

(911007,1010,SYSDATE,NULL,NULL,NULL);

1 row created.

SQL> select * from olapv_emprunts;

VILLE

------------------------------ --------------- ----------

ETAT

COUNT(*)

BEZIER

BON

4

BEZIER

ABIME

2

MONTPELLIER

BON

18

MONTPELLIER

ABIME

2

Vues matérialisées :

rafraîchissement

SQL> begin dbms_mview.refresh('olapv_emprunts');

end;

/

PL/SQL procedure successfully completed.

SQL> select * from olapv_emprunts;

VILLE

------------------------------ --------------- ----------

ETAT

COUNT(*)

BEZIER

BON

5

BEZIER

ABIME

2

MONTPELLIER

BON

18

MONTPELLIER

ABIME

2

Fouille de données

Qu’est-ce que la fouille de données ?

Fayyad (1996) Knowledge Discovery inFouille de données Qu’est-ce que la fouille de données ? Databases : " the non-trivial process

Databases :"the non-trivial process of identifying valid, potentially useful and ultimately understand- able patterns in data"

52

KDD vs. Data Miningand ultimately understand- able patterns in data" 52 I.H.M. I.A. apprentissage statistiques Bases de données

I.H.M. I.A. apprentissage statistiques Bases de données
I.H.M.
I.A.
apprentissage
statistiques
Bases de
données

exemples d’application

diagnostic médical profils de clients, mailing, accord de prêts bancaires, reconnaissance de caractères manuscrits
profils de clients, mailing, accord de prêts bancaires, diagnostic médical reconnaissance de caractères manuscrits
reconnaissance de caractères manuscritsdiagnostic médical profils de clients, mailing, accord de prêts bancaires,

finance, prévision d’évolutions de marchésprêts bancaires, reconnaissance de caractères manuscrits Customer Relationship Management ( CRM ) : trouver, gagner

Customer Relationship Management (CRM ) : trouver, gagner et garder ses clients ! CRM) : trouver, gagner et garder ses clients !

churning,

détection de fraudes,

détection de mauvais payeurs, …

Tâches de fouille de données

ClassificationTâches de fouille de données Estimation Prédiction Règles d’association Segmentation 54

EstimationTâches de fouille de données Classification Prédiction Règles d’association Segmentation 54

PrédictionTâches de fouille de données Classification Estimation Règles d’association Segmentation 54

Règles d’associationTâches de fouille de données Classification Estimation Prédiction Segmentation 54

SegmentationTâches de fouille de données Classification Estimation Prédiction Règles d’association 54

Algorithmes supervisés et non supervisés

Apprentissage supervisé :Algorithmes supervisés et non supervisés  On dispose d'un fichier décrivant des données al- liant une

On dispose d'un fichier décrivant des données al- liant une description et une classe

On cherche une fonction de classification per- mettant d'induire la classe en fonction d'une de- scription

Apprentissage non supervisé :d'induire la classe en fonction d'une de- scription  On dispose d'un fichier de description des

On dispose d'un fichier de description des don- nées sans classes connues a priori

On cherche à diviser ces données en catégories

Algorithmes prédictifs et descriptifs

Veut-on Trouver une fonction permettant de prédire la classe d'une données jamais vue Ou Trouver des descriptions résumées et per- tinentes expliquant les données La limite entre les 2 est floue ! (méthodes descriptives pour la prédiction)

et per- tinentes expliquant les données La limite entre les 2 est floue ! (méthodes descriptives
et per- tinentes expliquant les données La limite entre les 2 est floue ! (méthodes descriptives
et per- tinentes expliquant les données La limite entre les 2 est floue ! (méthodes descriptives

Problématiques associées

données pas forcément très propres : propres :

données bruitées

données manquantes

Données aberrantes

doublons

données numériques, symboliquesdonnées bruitées  données manquantes  Données aberrantes  doublons pré-traitements post-traitements 57

pré-traitements données manquantes  Données aberrantes  doublons données numériques, symboliques post-traitements 57

post-traitements données manquantes  Données aberrantes  doublons données numériques, symboliques pré-traitements 57

Quelques algorithmes

Intelligence artificielle

Plusieurs algorithmes :

Segmentation (clustering)

Naive bayes

K plus proches voisins

Apprentissage par renforcement

Réseaux de neurones

Arbres de décision

58

Règles d'association et motifs séquentiels

Méthode de Bayes naïf

Comment classer un nouvel exemple en fonction d’un ensemble d’exemples pour lesquels on connaît la classe ?

Soit un exemple d = (d1,

, dn) et c

classes k = 1,

, c

Classe(d) = argmax P(di|k) . P(k)

59

k

i

proportion d’exemples di parmi ceux de la classe k

proportion d’exemples de la classe k

 P(di|k) . P(k) 59 k i proportion d’exemples di parmi ceux de la classe k
 P(di|k) . P(k) 59 k i proportion d’exemples di parmi ceux de la classe k
 P(di|k) . P(k) 59 k i proportion d’exemples di parmi ceux de la classe k

Exemple : va-t-on jouer au tennis ?

 

TEMPS

HUMIDITE

VENT

TENNIS

Ex1

Soleil

Haute

Oui

Oui

Ex2

Soleil

Basse

Non

Non

Ex3

nuageux

Basse

Oui

Oui

Ex4

pluvieux

Haute

Oui

Non

Ex5

pluvieux

Basse

Oui

Non

Ex6

Soleil

Basse

Oui

Oui

Ex7

pluvieux

Basse

Non

Non

 

Soleil

haute

Non

?

Basse Non Non   Soleil haute Non ? Va-t-on jouer s’il y a du soleil, beauc-

Va-t-on jouer s’il y a du soleil, beauc- oup d’humidité et pas de vent ?

k plus proches voisins

Raisonnement à partir de cas

Utilisation des cas similaires pour prendre une décision

Pas d’étape d’apprentissage (avantages et inconvénients)

Algorithme

Décider du nombre de voisins à utiliser k (souvent k = nbre d’attributs + 1)Algorithme Pour un enregistrement sur lequel il faut décider :  trouver les k plus proches

Pour un enregistrement sur lequel il faut décider :voisins à utiliser k (souvent k = nbre d’attributs + 1)  trouver les k plus

trouver les k plus proches voisins

combiner les classes des k plus proches voisins en une classe c

Choix de la distance

d(A,A) = 0

Rappel : distance d  d(A,B) = d(B,A) d(A,C) < d(A,B) + d(B,C) : distance d d(A,B) = d(B,A) d(A,C) < d(A,B) + d(B,C)

Distance sur chacun des attributsd  d(A,B) = d(B,A) d(A,C) < d(A,B) + d(B,C) d(x,y) = |x-y| d(x,y) = |x-y|

d(x,y) = |x-y| d(x,y) = |x-y| / distance_max

puis combinaison. distance euclidienne : distance euclidienne :

d(x,y) = [d 1 (x 1 ,y 1 ) 2 +

+

d n (x n ,y n ) 2 ]

Choix de la classe

on dispose des k classes des k plus proches voisinsChoix de la classe choix de la classe du nouvel exemple :  classe majoritaire 

choix de la classe du nouvel exemple :classe on dispose des k classes des k plus proches voisins  classe majoritaire  classe

classe majoritaire

classe pondérée

Le résultat change en fonction de tous ces choix (distance, combinaison, cal- cul de la classe)des k plus proches voisins choix de la classe du nouvel exemple :  classe majoritaire

Exemple : va-t-on jouer au tennis avec cette méthode ?

on choisit k = 4Exemple : va-t-on jouer au tennis avec cette méthode ? distance euclidienne d(A,A)=0 d(A,B)=1 calcul des

distance euclidiennejouer au tennis avec cette méthode ? on choisit k = 4 d(A,A)=0 d(A,B)=1 calcul des

d(A,A)=0

d(A,B)=1

calcul des voisinsavec cette méthode ? on choisit k = 4 distance euclidienne d(A,A)=0 d(A,B)=1 combinaison des classes

combinaison des classes des voisinsjouer au tennis avec cette méthode ? on choisit k = 4 distance euclidienne d(A,A)=0 d(A,B)=1

Exemple : va-t-on jouer au tennis ?

 

TEMPS

HUMIDITE

VENT

TENNIS

Ex1

Soleil

Haute

Oui

Oui

Ex2

Soleil

Basse

Non

Non

Ex3

nuageux

Basse

Oui

Oui

Ex4

pluvieux

Haute

Oui

Non

Ex5

pluvieux

Basse

Oui

Non

Ex6

Soleil

Basse

Oui

Oui

Ex7

pluvieux

Basse

Non

Non

 

Soleil

haute

Non

?

Basse Non Non   Soleil haute Non ? Va-t-on jouer s’il y a du soleil, beauc-

Va-t-on jouer s’il y a du soleil, beauc- oup d’humidité et pas de vent ?

Arbres de décision

Arbres de décision ➲ Représentation graphique d’une procédure de décision Représentation compréhensive 

Représentation graphique d’une procédure de décision Représentation compréhensive règles

tem- pérature normale forte gorge ir- ritée malade oui non malade non malade 67
tem-
pérature
normale
forte
gorge ir-
ritée
malade
oui
non
malade
non malade
67
feuille Classes Attributs nœud arc Tests sur les attributs
feuille
Classes
Attributs
nœud
arc
Tests sur
les attributs

Problématiques associées

Choix des attributs tests (divisions success- ives de la base d’apprentissage) (divisions success- ives de la base d’apprentissage)

Critère d’arrêt(divisions success- ives de la base d’apprentissage) But : construire un arbre le plus petit possible

But : construire un arbre le plus petit possible construire un arbre le plus petit possible

Heuristique. Algorithme glouton . . Algorithme glouton.

Plusieurs algorithmes (ID3, C4.5)Critère d’arrêt But : construire un arbre le plus petit possible Heuristique . Algorithme glouton .

Algorithme de construction

Nœud Courant  racine racine

RépéterAlgorithme de construction Nœud Courant  racine  Si le nœud courant est terminal  Alors

Si le nœud courant est terminal

Alors l’étiqueter Nœud Courant Classe

Sinon

Sélectionner un attribut test

Créer le sous-arbre

Passer au nœud suivant non exploré

Jusqu’à obtention d’un arbre obtention d’un arbre

Critère d’arrêt

Plusieurs tests possibles pour décider si le nœud courant est terminal :Critère d’arrêt  il n’y a plus assez d’exemples  les exemples ne sont pas trop

il n’y a plus assez d’exemples

les exemples ne sont pas trop mélangés (une classe se dégage). seuil d’impureté.

On étiquette avec la classe majoritairea plus assez d’exemples  les exemples ne sont pas trop mélangés (une classe se dégage).

Sélection de l’attribut test

Quel est l’attribut dont la connaissance nous aide le plus sur la classe ?Sélection de l’attribut test Plusieurs critères possibles : test de Gini, gain d’information, entropie, ID3 :

Plusieurs critères possibles : test de Gini, gain d’information, entropie,test Quel est l’attribut dont la connaissance nous aide le plus sur la classe ? ID3

ID3 : entropie de Shannonnous aide le plus sur la classe ? Plusieurs critères possibles : test de Gini, gain

Entropie de Shannon

Entropie de l'attribut AEntropie de Shannon A a i valeurs possibles X 1 , Il y a k classes

A a i valeurs possibles X 1 , 1 ,

Il y a k classes C 1 , 1 ,

C k

,

,

X i

H s (C|A) = - P(X ) P(C k |X i ). log((P(C k |X i )))

i

i

k

Exemple : va-t-on jouer au tennis avec cette méthode ?

Construction de l’arbreExemple : va-t-on jouer au tennis avec cette méthode ? Racine : choix du 1er attribut

Racine : choix du 1er attribut testau tennis avec cette méthode ? Construction de l’arbre  Calcul de H(C|temps)  Calcul de

Calcul de H(C|temps)

Calcul de H(C|humidité)

Calcul de H(C|vent)

Division de la base d’exemple1er attribut test  Calcul de H(C|temps)  Calcul de H(C|humidité)  Calcul de H(C|vent) Nœuds

Nœuds terminaux ?test  Calcul de H(C|temps)  Calcul de H(C|humidité)  Calcul de H(C|vent) Division de la

Exemple : va-t-on jouer au tennis ?

 

TEMPS

HUMIDITE

VENT

TENNIS

Ex1

Soleil

Haute

Oui

Oui

Ex2

Soleil

Basse

Non

Non

Ex3

nuageux

Basse

Oui

Oui

Ex4

pluvieux

Haute

Oui

Non

Ex5

pluvieux

Basse

Oui

Non

Ex6

Soleil

Basse

Oui

Oui

Ex7

pluvieux

Basse

Non

Non

 

Soleil

haute

Non

?

Basse Non Non   Soleil haute Non ? Va-t-on jouer s’il y a du soleil, beauc-

Va-t-on jouer s’il y a du soleil, beauc- oup d’humidité et pas de vent ?

Attributs continus

ID3 ne les prend pas en chargeAttributs continus discrétisation par un expert algorithme C4.5 :  test et calcul de l’entropie avec

discrétisation par un expertAttributs continus ID3 ne les prend pas en charge algorithme C4.5 :  test et calcul

algorithme C4.5 :ID3 ne les prend pas en charge discrétisation par un expert  test et calcul de

test et calcul de l’entropie avec toutes les coupures possibles entre les valeurs suc- cessives

exemple sur les valeurs 3,4,8 on testera

< 3,5 vs. > 3,5 < 6 vs. > 6

Avantages et inconvénients

attention au sur-apprentissage  élagage élagage

performances moins bonnes si beaucoup de classesinconvénients attention au sur-apprentissage  élagage algorithme non incrémental on peut expliquer une décision

algorithme non incrémentalélagage performances moins bonnes si beaucoup de classes on peut expliquer une décision permet la sélection

on peut expliquer une décisionbonnes si beaucoup de classes algorithme non incrémental permet la sélection des attributs pertinents ( feature

permet la sélection des attributs pertinents (feature selection ) feature selection)

classification rapide d’un nouvel exemple (parcours d'un chemin d’arbre)non incrémental on peut expliquer une décision permet la sélection des attributs pertinents ( feature selection

Réseaux de neurones

Méthode de type boîte noire

Nombreuses applications (notamment re- connaissance d’écriture manuscrite)

Méthode coûteuse en temps de calcul

Topologie à connaître

Une méthode issue des modèles biologiques

  • Chaque neurone disposer en moyenne de 10.000 points de contacts (synapses) avec les
 
 

Chaque neurone disposer en moyenne de 10.000 points de contacts (synapses) avec les neurones qui l'entourent, et jusqu’à 50.000 !

Nous disposons de quelques dizaines de milliards de ces neurones à l'intérieur de notre cerveau

De synapse en synapse, l'information transite dans la totalité de notre corps, au travers d'environ 500 000 milliards de synapses

 
 
transite dans la totalité de notre corps, au travers d'environ 500 000 milliards de synapses  

78

transite dans la totalité de notre corps, au travers d'environ 500 000 milliards de synapses  
transite dans la totalité de notre corps, au travers d'environ 500 000 milliards de synapses  

Neurone biologique

un neurone (biologique) est un noeud qui a plusieurs entrées et une sortie plusieurs entrées et une sortie

Les entrées proviennent d’autres neurones ou organes sensorielsest un noeud qui a plusieurs entrées et une sortie Les entrées sont pondérées Les poids

Les entrées sont pondérées pondérées

Les poids peuvent être positifs ou négatifs poids peuvent être positifs ou négatifs

Les entrées sont sommées au niveau du noeud pour produire une valeur d’activa- ation sommées au niveau du noeud pour produire une valeur d’activa- ation

Si l’activation est plus grande qu’un certain seuil , le neurone s’active seuil, le neurone s’active

f 
f

Problèmes linéairement ou non linéairement séparables

Problèmes linéairement ou non linéairement séparables on distingue 2 types de problèmes pour 2 types de

on distingue 2 types de problèmes pour 2 types de solution

x1 x2 OU XOR 0 0 0 0 0 1 1 1 1 0 1
x1
x2
OU
XOR
0
0
0
0
0
1
1
1
1
0
1
1
1
1
1
0
x2 OU XOR 0 0 0 0 0 1 1 1 1 0 1 1 1
OOUU 11 11 00 11
OOUU
11
11
00
11

perceptron

0 1 1 1 1 0 1 1 1 1 1 0 OOUU 11 11 00

XXOORR

00

11

00

11

0 1 1 1 1 0 1 1 1 1 1 0 OOUU 11 11 00

perceptron

multi-couches

Approche informatique :

perceptron

Approche informatique : perceptron ENTREES POIDS SOMMATION SORTIE FONCTION SEUIL PLUSIEURS CLASSES 81

ENTREES

POIDS

SOMMATION

SORTIE FONCTION SEUIL

Approche informatique : perceptron ENTREES POIDS SOMMATION SORTIE FONCTION SEUIL PLUSIEURS CLASSES 81

PLUSIEURS

CLASSES

Approche informatique : perceptron ENTREES POIDS SOMMATION SORTIE FONCTION SEUIL PLUSIEURS CLASSES 81
Approche informatique : perceptron ENTREES POIDS SOMMATION SORTIE FONCTION SEUIL PLUSIEURS CLASSES 81

Perceptron multi-couches

Perceptron multi-couches COUCHE D’ENTREE COUCHE CACHEE COUCHE DE SORTIE 82

COUCHE D’ENTREE

COUCHE CACHEE

COUCHE DE SORTIE

Algorithme d’apprentissage des poids

Initialiser les poids de manière aléatoireAlgorithme d’apprentissage des poids Répéter  Pour chaque exemple i  Si la sortie s n’est

Répéterdes poids Initialiser les poids de manière aléatoire  Pour chaque exemple i  Si la

Pour chaque exemple i

Si la sortie s n’est pas égale à la sortie attendue a Alors poids w i w i + (a - s)x i

Jusqu’à ce que tous les exemples soient bien classésSi la sortie s n’est pas égale à la sortie attendue a  Alors poids w

Segmentation (Clustering)

But : diviser la population en groupes

Minimiser la similarité intra-groupe

Maximiser la similarité inter-groupes

Exemple : notes

en groupes ➲ Minimiser la similarité intra-groupe ➲ Maximiser la similarité inter-groupes ➲ Exemple : notes
en groupes ➲ Minimiser la similarité intra-groupe ➲ Maximiser la similarité inter-groupes ➲ Exemple : notes

Algorithme des k-moyennes

1. Choisir le nombre de groupes à créer k

2. Choisir k centres initiaux c 1 ,

3. Pour chaque exemple, l’affecter au groupe i dont le centre est le plus proche

4. Si aucun exemple ne change de groupe

5. Alors STOP

6. Sinon

c k

,

a) Calculer les nouveaux centres :

Pour i = 1 à k

c i est la moyenne des éléments du groupe

b) Aller en 3)

Exemple : faire 2 groupes d’étudiants

• Centres initiaux : c1=(11,13) c2=(14,18) • d(e1,c1)= [(14-11) 2 + (14-13) 2 ] 1

Centres initiaux : c1=(11,13) c2=(14,18)

d(e1,c1)= [(14-11) 2 + (14-13) 2 ] 1/2 = 3.16

• d(e1,c2) = [(14-14) 2 + (14-18) 2 ] 1/2 4

• d(e2,c1)= 4.12 d(e2,c2) 2.24

• d(e3,c1) > d(e3,c2)

• d(e4,c1) < d(e4,c2)

• d(e5,c1) > d(e5,c2)

Nouveaux centres :

c’1 = ((14+10)/2,(14+11)/2) = (12,12.5)

• c’2 = ((12+16+14)/3),(17+20+16)/3)=(14,17.6)

calcul de d(e1,c’1) d(e1,c’2) …

résultat inchangé FIN

= ((12+16+14)/3),(17+20+16)/3)=(14,17.6) • calcul de d(e1,c’1) d(e1,c’2) … • résultat inchangé  FIN

1

14

14

2

12

17

3

16

20

 

4 10

11

 

5 14

16

e

e

e

e

e

e3 e2 e5 e1 e4 10
e3
e2
e5
e1
e4
10
14 2 12 17 3 16 20   4 10 11   5 14 16 e

Problèmes

Nécessité de l’existence d’une dis- tanceProblèmes Choix de k Influence du choix des centres initiaux sur le résultat Normalisation des attributs

Choix de kProblèmes Nécessité de l’existence d’une dis- tance Influence du choix des centres initiaux sur le résultat

Influence du choix des centres initiaux sur le résultatProblèmes Nécessité de l’existence d’une dis- tance Choix de k Normalisation des attributs 87

Normalisation des attributsNécessité de l’existence d’une dis- tance Choix de k Influence du choix des centres initiaux sur

Evaluation des méthodes

Apprentissage supervisé : évaluation sur une base d’exemples test

Méthodes de séparation entre les bases d’apprentissage et de test.

on dispose de deux bases séparées

on coupe la base en deux

validation croisée. Leave One Out.

Validation croisée

Découpage de la base d'exemples en n

sous-base b 1 ,

, b n

n apprentissages :

On apprend sur n-1 sous-bases

On teste sur la sous-base restante

Moyenne des n résultats

n = 10 fonctionne bien

Leave one out

Critères d’évaluation

Taux de bon apprentissageCritères d’évaluation Parmi tous les exemples, quelle proportion est bien classée ? Précision de la classe

Parmi tous les exemples, quelle proportion est bien classée ?

Précision de la classe ktous les exemples, quelle proportion est bien classée ? Parmi les exemples classés dans la classe

Parmi les exemples classés dans la classe k, quelle proportion est effectivement de la classe k ?

Rappel de la classe kk, quelle proportion est effectivement de la classe k ? Parmi les exemples de la classe

Parmi les exemples de la classe k, quelle proportion se retrouvent classés dans la classe k ?

Précision contre Rappelde la classe k, quelle proportion se retrouvent classés dans la classe k ? Matrice de

Matrice de confusion : table de contingenceParmi les exemples de la classe k, quelle proportion se retrouvent classés dans la classe k

Matrice de confusion

Prédit OBSERVE Payé Retardé Impayé TOTAL Payé 8 0 1 5 5 1 0 0
Prédit
OBSERVE
Payé
Retardé
Impayé
TOTAL
Payé
8
0
1 5
5
1
0 0
Retardé
1
1 7
2
2 0
Impayé
5
2
2
3
3 0
TOTAL
8
6
3
4
3
0
1
5 0

Validité du modèle (taux d’apprentissage) : nombre de cas exacts (=somme de la di- agonale) divisé par le nombre total : 120/150 = 0.8

Rappel de la classe Payé : nombre de cas prédits et observés « payé » divisé par le nombre total de cas observés « payés » : 80/86 = 0.93 Précision de la classe Payé : nombre de cas observés et prédits « payé » divisé par le

nombre total de cas prédits « payés » : 80/100 = 0.8
91

Logiciels de fouille de données

Intelligent Miner (www.ibm.com)Logiciels de fouille de données Entreprise Miner (SAS Institute) MineSet (Silicon Graphics Inc.) Clementine (Integral

Entreprise Miner (SAS Institute)de fouille de données Intelligent Miner (www.ibm.com) MineSet (Silicon Graphics Inc.) Clementine (Integral

MineSet (Silicon Graphics Inc.)Miner (www.ibm.com) Entreprise Miner (SAS Institute) Clementine (Integral Solutions Ltd, racheté par SPSS)

Clementine (Integral Solutions Ltd, racheté par SPSS)Miner (SAS Institute) MineSet (Silicon Graphics Inc.) DBMiner (www.dbminer.com) Oracle Darwin data mining suite

DBMiner (www.dbminer.com)Inc.) Clementine (Integral Solutions Ltd, racheté par SPSS) Oracle Darwin data mining suite Oracle Discoverer Weka

Oracle Darwin data mining suiteInc.) Clementine (Integral Solutions Ltd, racheté par SPSS) DBMiner (www.dbminer.com) Oracle Discoverer Weka Rainbow 92

Oracle Discoverer(Integral Solutions Ltd, racheté par SPSS) DBMiner (www.dbminer.com) Oracle Darwin data mining suite Weka Rainbow 92

WekaSolutions Ltd, racheté par SPSS) DBMiner (www.dbminer.com) Oracle Darwin data mining suite Oracle Discoverer Rainbow 92

RainbowSolutions Ltd, racheté par SPSS) DBMiner (www.dbminer.com) Oracle Darwin data mining suite Oracle Discoverer Weka 92

LOGIQUE FLOUE ET FOUILLE DE DONNEES

Logique floue 1965LOGIQUE FLOUE ET FOUILLE DE DONNEES Contrôle flou Fouille de données floue (éviter les coupures brutales)

Contrôle flouLOGIQUE FLOUE ET FOUILLE DE DONNEES Logique floue 1965 Fouille de données floue (éviter les coupures

Fouille de données floue (éviter les coupures brutales) :ET FOUILLE DE DONNEES Logique floue 1965 Contrôle flou  Réseaux de neurones  Arbres de

Réseaux de neurones

Arbres de décision

Clustering

Logique floue

Lotfi ZadehLogique floue Extension du contexte booléen classique Vérité partielle, entre complètement vrai et com- plètement

Extension du contexte booléen classiqueLogique floue Lotfi Zadeh Vérité partielle, entre complètement vrai et com- plètement faux Une personne est-elle

Vérité partielle, entre complètement vrai et com- plètement fauxfloue Lotfi Zadeh Extension du contexte booléen classique Une personne est-elle grande ? Monde discret 

Une personne est-elle grande ?partielle, entre complètement vrai et com- plètement faux Monde discret  monde continu Appartenance granduelle

Monde discret  monde continu monde continu

Appartenance granduellepersonne est-elle grande ? Monde discret  monde continu Théorie des sous-ensembles classique : apparten- ance

Théorie des sous-ensembles classique : apparten- ance ou non (0 ou 1)? Monde discret  monde continu Appartenance granduelle Théorie des sous-ensembles flous : appartenance comprise

Théorie des sous-ensembles flous : appartenance comprise entre 0 et 1 monde continu Appartenance granduelle Théorie des sous-ensembles classique : apparten- ance ou non (0 ou

Fonctions d'appartenance

Taille d'une personneFonctions d'appartenance Partition floue des tailles possibles Sous-ensemble flous : petit – moyen – grand Pour

Partition floue des tailles possiblesFonctions d'appartenance Taille d'une personne Sous-ensemble flous : petit – moyen – grand Pour chaque taille

Sous-ensemble flous : petit – moyen – grandd'une personne Partition floue des tailles possibles Pour chaque taille (en cm), on définit à quel

Pour chaque taille (en cm), on définit à quel point cette taille correspond à petit, moyen, grand à quel point cette taille correspond à petit, moyen, grand

Une personne peut être considérée dans plusieurs sous-ensembles flous de la partitionquel point cette taille correspond à petit, moyen, grand Une personne est petite, moyenne, grande avec

Une personne est petite, moyenne, grande avec des degrés de vérité degrés de vérité

d° appartenance

1

0

 petit  moyen  grand
petit
 moyen
 grand

taille

Données floues

Données imprécises « il est jeune »

Données incertaines « il a vraisemblablement 18 ans » degré de confiance 0.8

Données imprécises et incertaines

d° appartenance

 jeune 1 0
jeune
1
0

0.2

âge 1 18 1 0
âge
1
18
1
0

Généralisation des données classiques précises (singleton) et certaines (confiance 1)

1 0 18
1
0
18

Arbres de décision flous : historique

Chang et Pavlidis (1977), Adamo (1980) : util- isation floue d'arbres de décision classiques (respect des tests à chaque nœud de l'arbre)

Bouchon (1981) : questionnaires flous (étiquettes floues sur les tests)

Nombreux développements après ID3 (Quinlan – 1984)

Janikow (1984)

Ramdani (1992)

Marsala (1998)

Partitionner la base

Sur l'attribut A ayant m valeurs, on crée m sous-bases

Cas classique : les exemples sont facilement séparables selon qu'ils correspondent à l'une ou l'autre branche de l'arbre

Cas flou : recouvrements

Stragégies possibles :

Répétition des exemples affectés d'un degré d'appar- tenance

-coupe (Salammbô) création d'une partition classique

Dupliquer les exemples de l'intersection floue dans les deux sous-bases avec un degré 1

Création d'une branche spécifique à l'intersection (con- struction d'un sous-arbre sur ce sous-ensemble d'ex-

99

emples)

Inférence dans l'arbre flou

Utlisation du modus ponens généralisé

La nouvelle donnée est injectée dans la racine et traverse l'arbre :

Utilisation de l'algorithme min-max :

Sur chaque branche on considère le minimum des évaluations par les tests

On considère la classe correspondant à la branche évaluée avec la valeur maximale

Exemple, donnée test (NOP=11.0, DAM=0.6)

1 9 15
1
9
15
● Exemple, donnée test (NOP=11.0, DAM=0.6) 1 9 15 NOP NOP 5 12 1 NOP 0.65
● Exemple, donnée test (NOP=11.0, DAM=0.6) 1 9 15 NOP NOP 5 12 1 NOP 0.65
● Exemple, donnée test (NOP=11.0, DAM=0.6) 1 9 15 NOP NOP 5 12 1 NOP 0.65

NOP

NOP

5 12
5
12

1

NOP 0.65 0.35 0.7 0.55 8 NOP DAM 0.7 0.3 0.2 0.8 0 1 1
NOP
0.65
0.35
0.7
0.55
8
NOP
DAM
0.7
0.3
0.2
0.8
0
1
1
0

DAM

1

0.2

0.65

0.35

0.3

9 15 NOP NOP 5 12 1 NOP 0.65 0.35 0.7 0.55 8 NOP DAM 0.7

Clustering flou

Fuzzy C-Means

Une donnée peut appartenir à plusieurs catégories

Degré d'appartenance entre 0 et 1

Degré de « flou » (recouvrement) défini dans l'algorithme (fonction de calcul des appartenances)

Réseaux de neurones flous

Seuils de transition moins brutaux

Calcul de systèmes de règles floues Si – Alors

Représentation du système de règles par un réseau

Détermination des paramètres par les algorithmes de calcul des poids

Conclusion

Nécessité d'outils dédiés aux bases de données décisionnellesConclusion Navigation OLAP / fouille de données / reporting / tableaux de bord il existe de

Navigation OLAP / fouille de données / reporting / tableaux de bordd'outils dédiés aux bases de données décisionnelles il existe de nombreuses (autres) méthodes et pas de

il existe de nombreuses (autres) méthodesOLAP / fouille de données / reporting / tableaux de bord et pas de meilleure méthode

et pas de meilleuretableaux de bord il existe de nombreuses (autres) méthodes méthode à choisir selon les données (continues

méthode à choisir selonexiste de nombreuses (autres) méthodes et pas de meilleure les données (continues ? manquantes ? volumineuses

les données (continues ? manquantes ? volumineuses ? denses ? ) la tâche le temps
les données (continues ? manquantes ? volumineuses ? denses ? ) la tâche le temps
les données (continues ? manquantes ? volumineuses ? denses ? ) la tâche le temps

les données (continues ? manquantes ? volumineuses ? denses ? ) la tâche le temps de calcul dont on dispose

les données (continues ? manquantes ? volumineuses ? denses ? ) la tâche le temps de
les données (continues ? manquantes ? volumineuses ? denses ? ) la tâche le temps de

règle du rasoir d’Ockham :? denses ? ) la tâche le temps de calcul dont on dispose « pluralitas non

« pluralitas non est ponenda sine neccessitate » « Les choses essentielles ne doivent pas être multipliées sans nécessité »

autres types de donnéesnon est ponenda sine neccessitate » « Les choses essentielles ne doivent pas être multipliées sans

Bibliographie

Ralph Kimball, Entrepôts de Données, Vuibert,

2002.

Jiawei Han, Micheline Kamber, Data Mining:

Concepts and Techniques, Morgan Kaufmann Publishers, 2000.

http://www.oracle.com