khai thác dữ liệu - cours jean-daniel...
Post on 13-Oct-2019
3 Views
Preview:
TRANSCRIPT
Cours IFI M1 ©Jean-daniel Zucker
/811
Introduction à La Fouille de Données
Co
ur
s IF
I M1
Da
ta M
inin
g
Jean-Daniel Zucker
Chercheur de l’IRD à UMMISCO(Modélisation Mathématiques Et Informatiques des Systèmes Complexes)
UMI 209 UPMC/IRD
MSI/IFI Vietnam
Cours M1 IA « Systèmes Intelligents & Multimédia »
Khai thác dữ liệu
Cours IFI M1 ©Jean-daniel Zucker
/812
Administratif: 6 Séances
• Séance 1: Mercredi 16 Mai – Intro Générale
• Séance 2: Mercredi 23 Mai — Analyse et préparation des données
• Séance 3: Mercredi 30 Mai — La regression. Le principe de l’induction.
• Séance 4: Mercredi 6 Juin — Apprentissage d’arbre de décisions.
Rappel cours précédents
Arbre de décision
• Séance 5: Mercredi 13 Juin — Le clustering.
• Séance 6: Jeudi 14 Juin – Regles d’associations.
8h30 à 11h45= 3h + 15 min de pause. Les cours de déroulent dans la salle 203.
Cours IFI M1 ©Jean-daniel Zucker
/81
Site du cours3
http://ouebe.org
Cours IFI M1 ©Jean-daniel Zucker
/81
Travaux Pratiques
• Aller sur http://ouebe.org
• Puis Promotion 16, Puis TP du cours et Révisions
4
Cours IFI M1 ©Jean-daniel Zucker
/81
Data rich but information poor! : Besoins d’ 5
Définition: “L’exploration et l’analyse de grandes quantité de données afin de découvrir des formes et des règles significatives en utilisant des moyens automatique ou semi-automatique.”
Explorer, analyser, compacter, réduire, extraire, utiliser, ces données :
Khai thác dữ liệu (data mining) là quá trình khám phá các tri thức mới và các tri thức có ích ở dạng tiềm năng trong nguồn dữ liệu đã có.
... la fouille de donnéesthe extraction of interesting (non-trivial, implicit, previously unknown and
potentially useful) information or patterns from data in large databases
Cours IFI M1 ©Jean-daniel Zucker
/816
tâches de la fouille de données (typologie 1/2)
• Classification (valeurs discrètes): Oui/Non, 1/2/3, VND/US$/€réponse qualitative à un médicament, classification de demandeurs de crédits, détermination des numéros de fax, dépistage de demandes d’assurances frauduleuses, etc.
• L’estimation (valeurs continues): [1-10], [-1,1],[0,1000000] réponse quantitative à un médicament, du nombre d’enfants d’une famille, revenu total par ménage, probabilité de réponse à une demande, etc.
• La prédiction (pour vérifier il faut attendre): «Dans 2 jours l’action d’apple doublera», demain il fera beau, ... durée de vie d’un patient, des clients qui vont disparaître, des abonnés qui vont prendre un service, etc..
SUPE
RVI
SE
Succès de la tâche: critère de performances sur nouvelles données
Cours IFI M1 ©Jean-daniel Zucker
/817
tâches de la fouille de données (typologie 2/2)
• Le regroupement par similitudes (Clustering): des patients qui ont telles mutations génétiques développent tel type d’obésité, etc.
• La recherche d’association : «95% des parents qui vont au supermarché acheter des couches (3% des achats) achètent aussi des bierres». 95% est la confiance et 3% le support (Association Rules).
• La recherche d’anomalie : «Il y a une concentration de véhicule «anormale» tous les dimanche matin à 10h près de Nga The». «L’utilisateur Hung s’est connecté depuis Singapoore alors qu’il ne l’a jamais fait avant».(Anomaly analysis)N
ON
SU
PER
VISE
Succès de la tâche: critère d’intérêt des «connaissances découvertes»
Cours IFI M1 ©Jean-daniel Zucker
/818 Le processus de Fouille de données
SélectionNettoyage
Pré-traitement
ExtractionFouille de données
Interprétation/Visualisation
supervisé non-supervisé
Les règles d’association Le regroupementPrédiction/Classification
SQL / OQLadhoc
ReformulationK. domaineRéduction Dim.
Evaluation du gain...
CART, GLM APriori
Règles,Graphes,Diag. Autocorrél.Règles, 3D, RA, VR...Paramètr
es
BD clientsBD médicales,BD génomiquesBD géographiques, BD textes,BD scientifiques,BD réseaux sociaux,BD imagesBD de simulation...
SVM, RN, ID3, RF, DTree CAH, KMEANS, KMEDOIDS
DB DB
DB
máy học thuật toán
Anomalies
Estimation
Cours IFI M1 ©Jean-daniel Zucker
/81
Données de test et d’apprentissage
train
examples
feat
ures
Class.trainexamples
test
examples
feat
ures
Class.testexamples
Classifier
Learning
predictionComparison
performance
• On a vu: la validation croisée (cours 3)• Le leave-one-out (cours 3)
Cours IFI M1 ©Jean-daniel Zucker
/81
Classeur Bayesien naif
• Apprentissage et classification basé sur la théorie des probabilités.
• Theorème de Bayes est l’élement clé.
• Utilise les probabilité à priori de chaque classe.
• Classeur calcule une probabilité a posteriori d’un exemple pour chaque classe.
Cours IFI M1 ©Jean-daniel Zucker
/81
Rapels de probabilité
• Product rule
• Sum rule
• Théorème de Bayes
• Theorem of total probability
Cours IFI M1 ©Jean-daniel Zucker
/81
Théorème de Bayes
• Etant donné une hypothèse h et des données D, on a:
• P(h): probabilité a priori (prior probability)
• P(D): probabilité de D
• P(D|h): Vraisemblance (likelihood)
• P(h|D): Probabilité a posteriori (posterior probability)
Cours IFI M1 ©Jean-daniel Zucker
/81 A posteriori maximal(maximum de vraissemblance*apriori)
• A partir de la formule de Bayes, on calcul la classe ayant la probabilité a posteriori maximale
• On recherche la classe le plus probable étant donnée les données D
H: ensemble des classes
Noter qu’on peut ignorer P(D) puisque le résultat est indépendant de cette valeur.
• P(h): probabilité a priori (prior probability)
• P(D|h): Vraisemblance (likelihood)
Cours IFI M1 ©Jean-daniel Zucker
/81
Question: Pour un jour <sunny, cool, high, strong>, peut on jouer ?
L’exemple classique...
Cours IFI M1 ©Jean-daniel Zucker
/81
Exemple
Calcul de :
Prédiction définit par
Cours IFI M1 ©Jean-daniel Zucker
/81
## Example of using a contingency table: library(e1071)data(Titanic)m <- naiveBayes(Survived ~ ., data = Titanic)mpredict(m, as.data.frame(Titanic)[,1:3])table(predict(m, as.data.frame(Titanic)[,1:3]) , as.data.frame(Titanic)[,4])
## Example with metric predictors: data(iris) m <- naiveBayes(Species ~ ., data = iris) ## alternatively: m <- naiveBayes(iris[,-5], iris[,5]) m table(predict(m, iris[,-5]), iris[,5])
Cours IFI M1 ©Jean-daniel Zucker
/81
A faire
• Charger les données Golf• Tester le bayésien naïf• Calculer l’erreur du bayésien naif en leave-one-out
17
Cours IFI M1 ©Jean-daniel Zucker
/81
Remarque
On considère que les variable outlook, temp, humidity, wind sont indépendantes.
Ce n’est généralement pas le cas
C’est la source d’erreur
Cours IFI M1 ©Jean-daniel Zucker
/8119
Pl
an Les Arbre de décision
Cours IFI M1 ©Jean-daniel Zucker
/81
Algorithme de construction d’arbre de décision
• Une première approche pourrait consister à générer tous les arbres possibles et à choisir le meilleur
... trop couteux sauf si l’on a très peu d’attributs et très peu d’exemples.
• Il faut un biais
– exploration ascendante ou descendante
– forme des arbres de décision
• Le problème principal: choisir à chaque étape le bon attribut sur lequel tester ...
20
Cours IFI M1 ©Jean-daniel Zucker
/81
C) Biais de la famille ID3 (Induction of Decision tree≈3)
• Approche descendante: on part d’une racine de l’arbre et on raffine.Famille TDIDT (Top Down Induction of Decision Trees).Recherche en meilleur d’abord (avec une fonction d’évaluation) sans retour arrière.
• ID3 a été conçu pour prendre en compte de nombreux attributs et de nombreux exemples
• ID3 cherche à construire des arbres relativement simple mais ne garantit pas de produire le plus simple (qu’est-ce que la simplicité ?)
21
Cours IFI M1 ©Jean-daniel Zucker
/81
II) L’algorithme ID3. A) Hypothèses générales
Soit!p = le nombre d’exemples positifs ! !! n = le nombre d’exemples négatifs
Dans ID3, les hypothèses de bases sont:• (H1: exemples représentatifs)
Un arbre de décision approprié classera des objets inconnus dans la même proportion que celle des exemples d’apprentissage
• (H2: simplicité inhérente du monde) ! Parmi les arbres solutions, l’arbre le plus simple est préférable
+n
p-
Un objet arbitraire sera donc assigné à la classe P avec la probabilité de p/ (p+n) et à la classe N avec la probabilité de n/ (p+n)
22
Cours IFI M1 ©Jean-daniel Zucker
/81
A) Exemple illustratif
Attributs Pif Temp Humid Vent Valeurs possibles soleil,couvert,pluie chaud,bon,frais normale,haute vrai,faux
N° Pif Temp Humid Vent Golf1 soleil chaud haute faux NePasJouer2 soleil chaud haute vrai NePasJouer3 couvert chaud haute faux Jouer4 pluie bon haute faux Jouer5 pluie frais normale faux Jouer6 pluie frais normale vrai NePasJouer7 couvert frais normale vrai Jouer8 soleil bon haute faux NePasJouer9 soleil frais normale faux Jouer10 pluie bon normale faux Jouer11 soleil bon normale vrai Jouer12 couvert bon haute vrai Jouer13 couvert chaud normale faux Jouer14 pluie bon haute vrai NePasJouer
la classe
23
Cours IFI M1 ©Jean-daniel Zucker
/81
B) L’algorithme d’apprentissage d’arbres de décision (AAD)
• On choisit le premier attribut à utiliser pour l’arbre.
Temp?
• Après ce choix, on se trouve fasse au problème initial sur des sous-ensembles d’exemples. • D’où l’idée d’un algorithme récursif.
chaud bon frais
J3,J4,J5,J7,J9,J10,J11,J12,J13J1,J2, J6,J8,J14
+-
J3,J13J1,J2
+-
J4,J10,J11,J13J8,J14
+-
J5,J7,J9J6
+-
24
Cours IFI M1 ©Jean-daniel Zucker
/81
B) L’algorithme (récursif) AAD: principe
PRCEDURE AAD(T,N)
SI! tous les exemples de N sont dans la même classe Ci
ALORS affecter l'étiquette Ci au noeud courant FIN
SINON! sélectionner un attribut A avec les valeurs v1...vn
! ! ! Partitionner N selon v1...vn en N1, ..., Nn
! ! ! Pour j=1 à n AAD(Tj, Nj).
T1
E
v2v1
T2E2
T
TnEn
vn
E1
A={v1...vn}E=E1∪ .. ∪ En
25
Cours IFI M1 ©Jean-daniel Zucker
/81
B) Sélectioner le bon attribut
Vent ?
vrai faux
J3,J4,J5,J7,J9,J10,J11,J12,J13J1,J2, J6,J8,J14
+-
+-
+-
Pif ?
couvert pluie soleil
J3,J4,J5,J9,10,J13J1,J8
+-
J3,J13,J7,J12+-
J4,J5,J10J6,J14
+-
J9,J11J1,J8,J2
+-
J7,J11,J12J2,J6,J14
J3,J4,J5,J7,J9,J10,J11,J12,J13J1,J2, J6,J8,J14
26
Cours IFI M1 ©Jean-daniel Zucker
/81
B) Sur la simplicité d’un arbre de décision
• L’arbre le plus simple est celui qui permet de minimiser l’espérance du nombre de questions nécessaires à la classification d’un exemple d’apprentissage.
• Quelle fonction d’évaluation locale de l’importance d’un attribut peut correspondre à la mesure de simplicité globale ?
27
Cours IFI M1 ©Jean-daniel Zucker
/81
B) Construction d’arbres décision
• ... personne ne le sait !
• Plusieurs critères locaux ont été proposés(cf. cours suivant)
• L’entropie est une mesure du désordre règnant dans une collection d’objet. Si tous les objets appartiennent à la même classe, il n’y a pas de désordre.
• Quinlan a proposé de choisir l’attribut qui minimise le désordre de la partition résultante.
28
Cours IFI M1 ©Jean-daniel Zucker
/81
C) La mesure d’information
• Shannon en 1949 a proposé une mesure d’entropie valable pour les distributions discrètes de probabilité.
• Elle exprime la quantité d’information, c’est à dire le nombre de bits nécessaire pour spécifier la contribution
• L’entropie d'information est:
! où pi est la probabilité de la classe Ci
I = - p log (pi 2 ii=1..k
×∑ )
29
Cours IFI M1 ©Jean-daniel Zucker
/81C) L’entropie, mesure d’information
Entropie d'information de N objets:
C1 C2 C3 C4 C5 k classes équiprobables: I= lg2(k)
Ci 1 seule classe: EI=0
• Est nulle quand il n’y a qu’une classe• D’autant plus grande que les classes sont équiprobables • Vaut log2(k) quand les k classes sont équiprobables• Unité: le bit d’information
I = - log2i=1..kpr Ci pr Ci( ) ( )×∑
30
Cours IFI M1 ©Jean-daniel Zucker
/81
0,000,100,200,300,400,500,600,700,800,901,00
00,
10
0,20
0,30
0,40
0,50
0,60
0,70
0,80
0,90
1,00
C) L’entropie dans le cas de deux classes
• Pour k=2 on a ! I(p,n) = -p+ x log2(p+)- p- x log2(p-)
! D’après l’hypothèse H1 on a p+ = p/ (p+n) et p- = n/ (p+n)
! d’où! I(p,n) = - p log ( p )- n log( n )
! !! ! ! (p+n) (p+n) (p+n) (p+n) ! ! ! ! ! et
! ! ! ! ! I(P) = - P log P - (1-P) log(1-P)
I(P)
PP=p/(p+n)=n/(n+p)=0.5équiprobable
31
Cours IFI M1 ©Jean-daniel Zucker
/81
C) Exemple de calcul d’entropie d’arbre
Pour les exemples initiauxI(p,n) =- 9/14 log2 (9/14 ) - 5/14 log2 (5/14 )= 0.940 bits
Sous arbres de ! Pif?
p1=4! n1=0! I(p1,n1)=0p2=2! n2=3! I(p2,n2)=0.971p3=3! n3=2! I(p3,n3)=0.971
Sous arbres de! Temp?
p1=2! n1=2! I(p1,n1)=1p2=4! n2=2! I(p2,n2)=0.918p3=3! n3=1! I(p3,n3)=0.811
32
Cours IFI M1 ©Jean-daniel Zucker
/81
C) Gain d’entropie d’un arbre de décision
val1 val2 val3
N1+N2+N3=N
N objetsn+p=N
E(N,A)= N1/N x I(p1,n1) + N2/N xI(p2,n2) + N3/N x I(p3,n3)
Le gain d’entropie de A vaut: GAIN(A)= I(p,n)-E(N,A)
Attribut A
N1 objetsn1+p1=N1
N2 objetsn2+p2=N2
N3 objetsn3+p3=N3
I(p,n)
33
Cours IFI M1 ©Jean-daniel Zucker
/81
C) Exemple de calcul de gain
Pour les exemples initiauxI(p,n) =- 9/14 log2 (9/14 ) - 5/14 log2 (5/14 )= 0.940 bits
Information du sous-arbre en testant sur PifE(Pif)! = ! 4/14 I(p1,n1) + 5/14 I(p2,n2) + 5/14 I(p3,n3)
! ! = !0.694 bitsGain(Pif)=! 0.940 - 0.694= 0.246 bits
Gain(Temp)=! 0.029 bits
Gain(Humid)=! 0.151 bits
Gain(Vent)=! 0.048 bits34
Cours IFI M1 ©Jean-daniel Zucker
/81
D) AAD: pseudo-code
function AAD(exemples, attributs, défaut) return un arbre de décisioninput! exemples, un ensemble d’exemples d’apprentissage ! ! attributs, un ensemble d’attributs! défaut, la valeur par défaut du concept à apprendre
if exemples is empty then return défautelse if (all exemples have same class C) then return Celse if attributes is empty then return VAL-MAJ(exemples)else ! best ← CHOIX-ATRIBUT(attributes,exemples) ! tree ← a new decision tree with root test best ! for each value vi of best do
! ! exemplesi ← {elements of exemples with best =vi }
! ! subtree ← AAD(exemplesi, attributes-best, VAL-MAJ(exemples))
! ! add a branch to tree with label vi and subtree subtree
! end ! return tree
35
Cours IFI M1 ©Jean-daniel Zucker
/81
D) Exemple
• Arbre obtenu pour les 14 exemples du cours
couvert
Pif
jouer Ventoui
ne pas jouerjouer
pluie
Humid
normal haute
jouer ne pas jouer
soleil
non
36
Cours IFI M1 ©Jean-daniel Zucker
/81
III.Systèmes TDIDT
Source: vecteur d'attributs valués associés à chaque exempleCible: arbre de décision
• CLS! ! (Hunt, 1966) [analyse de données]
• ID3 ! ! (Quinlan 1979)
• ACLS ! ! (Paterson & Niblett 1983)
• ASSISTANT ! (Bratko 1984)
• C4.5 ! ! (Quinlan 1986) puis C5 et See 5
• CART! ! (Breiman, Friedman, Ohlson, Stone, 1984)
• CHAID,QUEST,
Cours IFI M1 ©Jean-daniel Zucker
/81
Rpart package arbre de décision sous R
38
#vider la mémoirerm(list=ls())#charger la bibliothèque rpartlibrary(rpart)library(rpart.plot)# utilise donnée ptitanicdata(ptitanic)summary(ptitanic)# Plot ....... (dire ce que cela fait)plot(ptitanic$survived,ptitanic$sex)# Plot ....... (dire ce que cela fait)boxplot(ptitanic$survived,ptitanic$age)# ....... (dire ce que cela fait) expliquer tout les parametrestree <- rpart(survived ~ ., data=ptitanic, maxdepth=2) # ....... (dire ce que cela fait) expliquer tout les parametresprp(tree, main="type = 4, extra = 6", type=4, extra=6, faclen=0) # ... expliquer ce que font ces lignes ?# taper ?predict et ?table pour comprendre les commandespred <- predict(tree, newdata = ptitanic, type = "class")mc <- table(ptitanic$survived,pred) #matrice de confusion
# ... expliquererr.resub <- 1.0 - (mc[1,1]+mc[2,2])/sum(mc)
print(paste("Le taux d'erreur est ",round(100*err.resub),"%"))
Cours IFI M1 ©Jean-daniel Zucker
/81
R et test http://www.statmethods.net/advstats/discriminant.html
39
########################################################## ESSAYER DE COMPRENDRE LE CODE EN LE FAISANT PAS A PAS ##########################################################n <- nrow(ptitanic) #nombre d'observationsK <- 10 # pour 10-validation croiséetaille <- n%/%K #déterminer la taille de chaque blocset.seed(5) #pour obtenir la même séquence tout le tempsalea <- runif(n) #générer une colonne de valeurs aléatoiresrang <- rank(alea) #associer à chaque individu un rangbloc <- (rang-1)%/%taille + 1 # associer à chaque individu un numéro de blocbloc <- as.factor(bloc) #transformer en factorprint(summary(bloc)) #impression de contrôle
#lancer la validation croiséeall.err <- numeric(0)for (k in 1:K){ #apprendre le modèle sur tous les individus sauf le bloc k arbre <- rpart(survived ~., data = ptitanic[bloc!=k,], method = "class") #appliquer le modèle sur le bloc numéro k pred <- predict(arbre,newdata=ptitanic[bloc==k,], type = "class") #matrice de confusion mc <- table(ptitanic$survived[bloc==k],pred) #taux d'erreur err <- 1.0 - (mc[1,1]+mc[2,2])/sum(mc) #conserver all.err <- rbind(all.err,err)}9#vecteur des erreurs recueilliesprint(all.err)
Cours IFI M1 ©Jean-daniel Zucker
/81
Travaux Pratiques
• Aller sur http://ouebe.org
• Puis Promotion 16, Puis TP3-4
40
top related