Académique Documents
Professionnel Documents
Culture Documents
BASES DE DONNES
DECISIONNELLES
&
FOUILLE DE DONNEES
Anne LAURENT
LIRMM POLYTECH'MONTPELLIER
http://www.lirmm.fr/~laurent
laurent@lirmm.fr
CNAM 2004/2005
2
Plan
Fouille de donnes
Conclusion
3
Bases de donnes
transactionnelles
Dfinition et Historique
Objectifs
limites
4
OLTP (On-Line Transactional
Processing)
Requtes
Frquentes
Nombreux oprateurs
5
Modles relationnels
Codd, annes 70
Besoins de
Cohrence
Gestion du personnel
Bibliothque
Service facturation
...
7
Limites
Historique
Objectifs et applications
Modlisation multidimensionnelle
9
Besoin de systmes d'analyse
Annes 1990
Reporting
Navigation
Extraction de connaissances
...
11
Applications
Churning
Anticipation
...
12
Requtes dcisionnelles
Complexes
Rares
Redondance ?
14
Donnes historises
Matrialises
Volumineuses
Sources htrognes
Utilisation dcisionnelle
Entrepts de donnes
15
Codd 1993
catgorie d'applications et de technologies permettant de
collecter, stocker, traiter et restituer des donnes multidi-
mensionnelles, des fins d'analyse.
Requtes complexes
Quel est le total des ventes de chaussures ?
Quel est le type des meilleures ventes sur une priode donne, pour
une ville prcise et un groupe dge ?
Requtes what if
Que se passerait-il si les prix diminuaient de 10% ?
OLAP
16
(On-Line Analytical Processing)
Requtes complexes
Optique dcisionnelle
Vision ensembliste (tendances ...)
Destin aux analystes et dcideurs
(peu nombreux)
Requtes simples
Production et Mise jour des donnes
Vision au niveau individuel
Destin aux agents oprationnels (nom-
breux)
OLAP vs. OLTP
(On-Line Transaction Processing)
OLAP vs OLTP
17
Exemple
PRODUIT
V
I
L
L
E
M
O
I
S
55000 92000
21000
65000 91000 43000
55000
12000 56000
78000
23000
85000
8000
88000
Cube des ventes
C : Produit x Ville x Mois Ventes
te
n
te
s
c
a
n
o
s
b
o
i
s
s
o
n
s
c
h
o
c
o
l
a
t
janvier
fvrier
mars
Boston
Chicago
New York
85000
18
Dimensions
Organisation des informations selon des
dimensions plates
et des dimensions hirarchises
hirarchies simples (arborescentes)
hirarchies complexes
Exemple :
SEMAINE MOIS
JOUR
TRIMESTRE
19
Fonctionnement gnral
Magasins
de donnes
(multidimensionnels)
Systmes de
fouille de don-
nes
Rgles
Assoc.
Sources de donnes
htrognes
Entrept
de donnes
Donnes externes
Mta
base
ETL
Analyse OLAP
Reporting
C
O
N
N
A
I
S
S
A
N
C
E
20
ETL 80% du travail !
E-xtract
Accs aux diffrentes sources
T-ransform
Nettoyage
gestion des inconsistances des donnes sources
formats de donnes
dtection des valeurs non valides
L-oad
Chargement dans l'entrept
21
Tables de faits : entit centrale
Objet de l'analyse, taille trs importante
Tables de dimensions : entits priphriques
Dimensions de l'analyse, taille peu importante
Table de faits normalise (BCNF)
N-uplets de la tables de faits :
Cls trangres formant une cl primaire
Valeurs associes chaque cl primaire (mesures)
Associations de type (0,n) (1,1) connectant les
diffrentes dimensions aux faits
Conception de l'entrept
22
Normalisation des tables
Etoile : tables dimensions non normalises
Flocon : tables de dimensions normalises
Rduction de la redondance
Maintenance simplifie
MAIS navigation coteuse
schma en toile
schma en flocon
23
Exemple : toile
Time Dimension
time_key
day_of_week
month
quarter
year
holiday_flag
Sales Fact
time_key
product_key
store_key
dollars_sold
units_sold
dollars_cost
Product Dimension
product_key
description
brand
category
Store Dimension
store_key
store_name
address
floor_plan_type
granularit de la table de
faits ?
24
Exemple : flocon
25
Magasins de donnes
Partie de l'entrept
Modlisation multidimensionnelle
Types de faits
Additif
Semi-additif
Non additif
27
Calcul de l'hypercube
Comment le construire ?
Incrmentale
Additif
Quantit vendue
Semi-additif
Non additif
Visualisation :
Rotation
Gnralisation (roll-up)
Spcialisation (drill-down)
32
Rotation
33
Inversion
34
Slection sur les cellules
DICE
Critre de slection : valeurs infrieures 15
35
Slection sur les tranches
SLICE
36
Gnralisation/Spcialisation
37
Outils commerciaux
Business Objects
SAS
38
Oracle et OLAP
OLAP OPTION
Requtes de partitionnement
Fonctions d'analyse
Outils ETL
Outils d'analyse
39
MOLAP ROLAP - HOLAP
40
Requtes 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
41
Requtes 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.
42
Requtes 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.
43
Requtes 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 BON 4
BEZIER ABIME 2
BEZIER Tous etats confondus 6
MONTPELLIER BON 18
MONTPELLIER ABIME 2
MONTPELLIER Tous etats confondus 20
Toutes les villes Tous etats confondus 26
44
Requtes 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
45
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
46
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
47
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
48
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
49
Vues matrialises : cration
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.
50
Vues matrialises : 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
51
Vues matrialises :
rafrachissement
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
52
Fouille de donnes
Quest-ce que la fouille de donnes ?
Fayyad (1996) Knowledge Discovery in
Databases :"the non-trivial process of identifying
valid, potentially useful and ultimately understand-
able patterns in data"
KDD vs. Data Mining
statistiques
I.A.
apprentissage
Bases de
donnes
I.H.M.
53
exemples dapplication
diagnostic mdical
profils de clients, mailing, accord de prts
bancaires, ...
reconnaissance de caractres manuscrits
finance, prvision dvolutions de marchs
Customer Relationship Management (CRM) : trouver,
gagner et garder ses clients !
churning,
dtection de fraudes,
donnes bruites
donnes manquantes
Donnes aberrantes
doublons
donnes numriques, symboliques
pr-traitements
post-traitements
58
Quelques algorithmes
Intelligence artificielle
Plusieurs algorithmes :
Segmentation (clustering)
Naive bayes
Rseaux de neurones
Arbres de dcision
...
classe majoritaire
classe pondre
Le rsultat change en fonction de tous
ces choix (distance, combinaison, cal-
cul de la classe)
65
Exemple : va-t-on jouer au
tennis avec cette mthode ?
on choisit k = 4
distance euclidienne
d(A,A)=0
d(A,B)=1
calcul des voisins
combinaison des classes des voisins
66
Exemple : va-t-on jouer au
tennis ?
Va-t-on jouer sil y a du soleil, beauc-
oup dhumidit et pas de vent ?
Soleil
pluvieux
Soleil
pluvieux
pluvieux
nuageux
Soleil
Soleil
TEMPS
? Non haute
Non Non Basse Ex7
Oui Oui Basse Ex6
Non Oui Basse Ex5
Non Oui Haute Ex4
Oui Oui Basse Ex3
Non Non Basse Ex2
Oui Oui Haute Ex1
TENNIS VENT HUMIDITE
67
Arbres de dcision
Sinon
Slectionner un attribut test
Crer le sous-arbre
Calcul de H(C|temps)
Calcul de H(C|humidit)
Calcul de H(C|vent)
Division de la base dexemple
Nuds terminaux ?
74
Exemple : va-t-on jouer au
tennis ?
Va-t-on jouer sil y a du soleil, beauc-
oup dhumidit et pas de vent ?
Soleil
pluvieux
Soleil
pluvieux
pluvieux
nuageux
Soleil
Soleil
TEMPS
? Non haute
Non Non Basse Ex7
Oui Oui Basse Ex6
Non Oui Basse Ex5
Non Oui Haute Ex4
Oui Oui Basse Ex3
Non Non Basse Ex2
Oui Oui Haute Ex1
TENNIS VENT HUMIDITE
75
Attributs continus
ID3 ne les prend pas en charge
discrtisation par un expert
algorithme C4.5 :
Topologie connatre
78
Une mthode issue des modles biologiques
Alors poids w
i
w
i
+ (a - s)x
i
Jusqu ce que tous les exemples soient
bien classs
84
Segmentation (Clustering)
Exemple : notes
85
Algorithme des k-moyennes
1. Choisir le nombre de groupes crer k
2. Choisir k centres initiaux c
1
, .., c
k
3. Pour chaque exemple, laffecter au groupe i
dont le centre est le plus proche
4. Si aucun exemple ne change de groupe
5. Alors STOP
6. Sinon
a) Calculer les nouveaux centres :
Pour i = 1 k
c
i
est la moyenne des lments du groupe
b) Aller en 3)
86
Exemple : faire 2 groupes
dtudiants
10
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 :
c1 = ((14+10)/2,(14+11)/2) = (12,12.5)
c2 = ((12+16+14)/3),(17+20+16)/3)=(14,17.6)
calcul de d(e1,c1) d(e1,c2)
rsultat inchang FIN
1 14 14
2 12 17
3 16 20
4 10 11
5 14 16
e
e
e
e
e
e1
e2
e3
e4
e5
87
Problmes
Ncessit de lexistence dune dis-
tance
Choix de k
Influence du choix des centres initiaux
sur le rsultat
Normalisation des attributs
88
Evaluation des mthodes
n apprentissages :
n = 10 fonctionne bien
Rseaux de neurones
Arbres de dcision
Clustering
...
94
Logique floue
Lotfi Zadeh
Extension du contexte boolen classique
Vrit partielle, entre compltement vrai et com-
pltement faux
Une personne est-elle grande ?
Monde discret monde continu
Appartenance granduelle
Thorie des sous-ensembles classique : apparten-
ance ou non (0 ou 1)
Thorie des sous-ensembles flous : appartenance
comprise entre 0 et 1
95
Fonctions d'appartenance
Taille d'une personne
Partition floue des tailles possibles
Sous-ensemble flous : petit moyen grand
Pour chaque taille (en cm), on dfinit quel point
cette taille correspond petit, moyen, grand
Une personne peut tre considre dans plusieurs
sous-ensembles flous de la partition
Une personne est petite, moyenne, grande avec des
degrs de vrit
96
d appartenance
taille
0
1
moyen
petit
grand
97
Donnes floues
Gnralisation des donnes classiques
prcises (singleton) et certaines (confiance 1)
Donnes imprcises
il est jeune
Donnes incertaines
il a vraisemblablement 18 ans
degr de confiance 0.8
Donnes imprcises et incertaines
d appartenance
ge
0
1
jeune
0.2
18
0
1
18
1
0
1
98
Arbres de dcision flous : historique
Janikow (1984)
Ramdani (1992)
Marsala (1998)
...
99
Partitionner la base
Sur l'attribut A ayant m valeurs, on cre m sous-bases
Cas classique : les exemples sont facilement sparables
selon qu'ils correspondent l'une ou l'autre branche de
l'arbre
Cas flou : recouvrements
Straggies possibles :
Fuzzy C-Means
http://www.oracle.com