Un petit exemple L’algorithme La fonction R Clustering divisif monothétique. Le package divclust Marie Chavent, Marc Fuentes University of Bordeaux, France Inria Bordeaux Sud-Ouest, CQFD Team 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Introduction La fonction principale divclust : Méthode de classification descendant hiérarchique et monothétique. Optimise le même critère que la classification ascendante hiérarchique de WARD. Critère différent de la classification descendante hiérarchique de [Kaufman et Rousseeuw, 1990] implémentée dans la fonction diana du package cluster. Implémente la méthode DIVCLUS-T proposée par [Chavent et al., 2007]. ,→ Ajout du cas des données mixtes (quantitatives et qualitatives) non traitées dans l’article. https://github.com/chavent/divclust 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Outline 1 Un petit exemple 2 L’algorithme 3 La fonction R 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Un petit exemple library(divclust) data(protein) treeDIV <- divclust(protein) sum(treeDIV$height) n <- nrow(protein) zprotein <- scale(protein)*sqrt(n/(n-1)) treeWard <- hclust(dist(zprotein)^2/(2*n), method="ward.D") sum(treeWard$height) ## [1] 9 ## [1] 9 plot(treeDIV) plot(treeWard,main="",sub="",xlab ="",hang=-1) Nuts >= 3.55 Fruite.veg. >= 5.35 1.5 1.0 Fruite.veg. < 5.35 Height 2.0 2.5 3.0 Nuts < 3.55 Fish >= 5.75 Port Italy Spain Greece Bulg Rom Yugo Aust Alban Nether Belg Switz W_Ger Fr UK Ireland Nor 25-26 juin, Grenoble Swed Finl Den Pol E_Ger USSR Czech Hung Spain Port Greece Italy Hung Yugo Rom Bulg Alban Finl Den Swed Nor UK Ireland Belg Fr Switz W_Ger Aust Nether E_Ger Czech Pol USSR 4èmes Rencontres R 0.0 0.5 Fish < 5.75 Un petit exemple L’algorithme La fonction R Un petit exemple ⇒ Comparaison des proportion d’inertie expliquée par les partitions de 2 à 10 classes : divclust Ward k=2 0.37 0.35 k=3 0.51 0.49 k=4 0.59 0.58 k=5 0.65 0.67 k=6 0.71 0.72 k=7 0.76 0.76 k=8 0.79 0.79 k=9 0.82 0.82 k=10 0.84 0.84 ⇒ DIVCLUS-T utilise la distance Euclidienne sur données standardisées. ⇒ Quelles distances pour des données qualitatives ou mixtes ? 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Un petit exemple n=25 pays "Meilleure" bipartition ? 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Un petit exemple n=25 pays nuts < 3.55 n=16 pays nuts >= 3.55 n=9 pays Partition monothétique de plus petite inertie intra-classe 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Un petit exemple n=25 pays nuts < 3.55 n=16 pays nuts >= 3.55 n=9 pays Quelle classe diviser ? 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Un petit exemple n=25 pays nuts < 3.55 nuts >= 3.55 n=16 pays 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Un petit exemple n=25 pays nuts < 3.55 nuts >= 3.55 n=9 pays 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Un petit exemple n=25 pays nuts < 3.55 n=16 pays nuts >= 3.55 n=9 pays fruit.veg. < 3.55 Division de la classe qui donne la partition en 3 classes de plus petite inertie intra-classe 4èmes Rencontres R n=5 pays fruit.veg >= 3.55 n=4 pays 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Un petit exemple n=25 pays nuts < 3.55 n=16 pays nuts >= 3.55 n=9 pays fruit.veg. < 3.55 n=5 pays 4èmes Rencontres R fruit.veg >= 3.55 n=4 pays 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Un petit exemple n=25 pays nuts < 3.55 n=16 pays fish < 5.75 n=12 pays UK Ireland Belg Fr Switz ... ... nuts >= 3.55 n=9 pays fish >= 5.75 fruit.veg. < 3.55 fruit.veg >= 3.55 n=4 pays n=5 pays n=4 pays Fin Den Swed Nor Hung Yougo Rom Bulg Alban Spain Portugal Greece Italy 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Un petit exemple Haut du dendrogramme (3 divisions). Dendrogramme complet. treeDIV <- divclust(protein) plot(treeDIV) treeDIV_4 <- divclust(protein,K=4) plot(treeDIV_4) Nuts < 3.55 Nuts < 3.55 Fruite.veg. < 5.35 Fish < 5.75 Nuts >= 3.55 Nuts >= 3.55 Fruite.veg. >= 5.35 Fish >= 5.75 Fruite.veg. < 5.35 Fish < 5.75 C4 C3 C2 C1 ## [1] "Den" 4èmes Rencontres R "Finl" "Nor" 25-26 juin, Grenoble "Swed" Spain P4 <- cutreediv(treeDIV,K=4) P4$clusters[[2]] Port "Swed" Greece "Finl" "Nor" Italy Hung Yugo Rom Bulg Alban Finl Den Swed Nor UK Ireland Belg Fr Switz W_Ger Aust Nether E_Ger Czech Pol USSR treeDIV_4$clusters[[2]] ## [1] "Den" Fruite.veg. >= 5.35 Fish >= 5.75 Un petit exemple L’algorithme La fonction R Le principe Inertie de données qualitatives ou mixtes Outline 1 Un petit exemple 2 L’algorithme 3 La fonction R 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Le principe Inertie de données qualitatives ou mixtes L’algorithme DIVCLUS-T En entrée : - une matrice de donnée X de dimension n × p quantitative, qualitative ou mixte . - un nombre K indiquant le nombre de classes de la dernière partition (par défaut la partition des singletons). Répétition des deux étapes suivantes 1 division d’une classe en deux : la bipartition doit optimiser un critère W . L’énumération complète est évitée par la contrainte monothétique. 2 choix de la classe à diviser : la nouvelle partition doit optimiser le critère W . En sortie : une hiérarchie indicée (un dendrogramme) qui se lit comme un arbre de décision. 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Le principe Inertie de données qualitatives ou mixtes Division d’une classe Le principe Sélectionner parmi toutes les bipartitions induites par toutes les questions binaires (définies sur une unique variable) possibles, celle de plus petite inertie intra-classe W (définie sur toutes les variables). Pour une variable quantitative X j , une question binaire est notée [X j ≤ c] ? ⇒ nombre infini de questions binaires possibles sur X j mais au plus n` − 1 bipartitions d’une classe C` à n` observations. ⇒ tri des valeurs des observations de X j et les valeurs de coupures sont les milieux de deux observations consécutives. 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Le principe Inertie de données qualitatives ou mixtes Division d’une classe Pour une variable qualitative X j , une question binaire est notée [X j ∈ C] ? ⇒ le nombre de questions binaires possibles sur X j est 2mj −1 − 1 où mj est le nombre de modalités de X j . ⇒ nombre de bipartitions exponentiel avec le nombre de modalités Finallement, le nombre maximum de bipartitions est : p1 (n` − 1) + p2 X 2mj −1 − 1. j=1 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Le principe Inertie de données qualitatives ou mixtes Choix de la classe à diviser Le principe Choisir la classe C` = A` ∪ Ā` de la partition Pk qui permet d’obtenir la partition Pk+1 = {C1 , . . . , C`−1 , A` , Ā` , C`−1 , . . . , Ck } de plus petite inertie intra-classe W (Pk+1 ). L’inertie intra-classe est un critère additif : W (Pk ) = k X I (C` ) `=1 ⇒ Equivalent de choisir C` qui maximise la variation de l’inertie : h(C` ) = I (C` ) − I (A` ) − I (Ā` ). 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Le principe Inertie de données qualitatives ou mixtes Hauteur des classes dans le dendrogramme Hiérarchie indicée comme celle de Ward par la variation de l’inertie h(C` ) = I (C` ) − I (A` ) − I (Ā` ) ⇒ si K < n, ”haut” du dendrogramme complet. 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Le principe Inertie de données qualitatives ou mixtes Hauteur des classes dans le dendrogramme ⇒ La somme des hauteurs de l’arbre complet est l’inertie totale T . #inertie totale T <- sum(treeDIV$height) T # nombre de variables quantitatives ## [1] 9 ⇒ La somme des K − 1 hauteurs est l’inertie inter-classe B de la partition en K classes. #inertie inter-classe de la partition en 4 classes B <- sum(treeDIV$height[1:3]) ⇒ Pourcentages d’inertie expliquées des partitions du dendrogramme. # pourcentage d'inertie explique de la partition en 4 classes B/T*100 ## [1] 59.2 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Le principe Inertie de données qualitatives ou mixtes Inertie pour des données qualitatives ou mixtes Inertie d’une du matrice des données Z de dimension n × p : I (Z) = n 1X dM (zi , g )2 n i=1 1 Recodage des données qualitatives par les indicatrices des modalités. 2 Métrique M est la matrice diagonale des poids des colonnes : ,→ les colonnes quantitatives sont pondérées par l’inverse de la variance empirique. ,→ les colonnes des indicatrices sont pondérées par l’inverse de la fréquence de la modalités. 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Le principe Inertie de données qualitatives ou mixtes Inertie pour des données qualitatives ou mixtes ⇒ Si toutes les variables sont quantitatives, dM est la distance sur données standardises et I (Z) = p. ⇒ Si toutes les variables sont qualitatives, dM est une distance de type χ2 et I (Z) = m − p où m est le nombre de modalités. ⇒ Si les données sont mixtes, I (Z) = p1 + m − p2 où p1 et p2 sont les nombres de variables quantitatives et qualitatives. En pratique, dans la fonction divclust du package utilise : ,→ la matrice X des données brutes pour construire les questions binaires. ,→ la matrice Z des de toutes les composantes principales d’une ACP sur données mixtes pour calculer l’inertie avec M = I . 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Outline 1 Un petit exemple 2 L’algorithme 3 La fonction R 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Un exemple de données mixtes Les données gironde caractérisent les conditions de vies en Gironde. ,→ 542 communes sont décrites par 27 variables séparées en 4 groupes (Employment, Housing, Services, Environment). ,→ Le groupe housing est mixte avec 3 variables quantitatives et deux variables qualitatives. library(divclust) data(gironde) housing <- gironde$housing head(housing) ## ## ## ## ## ## ## ABZAC AILLAS AMBARES AMBES ANDERNOS ANGLADE density primaryres owners 131.7 88.8 64.2 21.2 87.5 77.1 532.0 94.9 65.7 101.2 93.8 66.5 551.9 62.1 71.5 63.8 81.0 80.5 4èmes Rencontres R houses council inf 90% sup 5% sup 90% inf 5% inf 90% sup 5% sup 90% sup 5% inf 90% inf 5% sup 90% inf 5% 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R L’arbre complet treeHousing <- divclust(housing) plot(treeHousing) density >= 1985.91 density < 1985.91 houses = { sup 90%} houses = { inf 90%} TAILLAN−ME CARIGNAN− IZON TRESSES CESTAS CAMBLANES MARCHEPR PEUJARD VERAC COIMERES SAINTE−HE VILLEGOUG SAINT−JEAN QUINSAC SAINT−LOUB SAINT−CAP BREDE LANDIRAS SAINT−AVIT GALGON ROQUILLE AMBES MAZERES ARTIGUES− SAINT−SEU SAINT−PIER RIONS SAINT−SULP SAINT−CAP RAUZAN SAINTE−CRO EGLISOTTES CUDOS BELIN−BELI PUJOLS HOSTENS LAMOTHE−L SAINT−LEGE SAINT−SYM CAPTIEUX BOMMES BOURIDEYS PIAN−MEDO GAURIAGUE POMPIGNAC BONNETAN LOUPES TARNES CENAC SAINT−SEVE SAINT−GEN ARSAC SAINT−LAUR AYGUEMOR CADARSAC LANDE−DE− COMPS POUT SAINT−PARD MARCENAIS SAINT−CIER BONZAC AUBIAC TABANAC LAROQUE JUGAZAN FALEYRAS VIRSAC CAMARSAC MARSAS SALLEBOEU BEYCHAC−E MARTILLAC CUBNEZAIS SAVIGNAC− SAINT−SAUV SAINT−MICH AVENSAN SAINT−AUBI SAINT−SELV ROAILLAN SAINT−GEN MONTUSSA LUDON−ME CEZAC PERISSAC SAINT−MOR SALAUNES CROIGNON FOURS BERTHEZ BLESIGNAC NERIGEAN SAINT−LAUR CIVRAC−DE CAPIAN CURSAN NOAILLAC CANTOIS MARANSIN BARON SADIRAC SAINT−MAR BROUQUEY SABLONS SOUSSANS DAIGNAC TIZAC−DE−C GENERAC SAINT−EXU MERIGNAS SAINT−PALA CHAMADELL LEOGEATS MOMBRIER SAINT−SAUV CESSAC BELLEBAT PRIGNAC−E PUJOLS−SU SAINT−AUBI SAINT−TROJ CAUVIGNAC MARTRES SAINTE−FLO SAINT−MICH LUGAIGNAC DOULEZON SAINT−VINC DONNEZAC VERTHEUIL SAINT−MAR PORCHERE SAINT−LAUR ESPIET BLAIGNAC CASSEUIL TIZAC−DE−L BERSON OMET SAINT−GEN GUILLAC SAINT−HILA CLEYRAC ASQUES MARIMBAUL SAMONAC SAINT−ROM ESSEINTES SAINT−PHIL TEUILLAC PIAN−SUR− SAINT−GIRO ARBIS LIGNAN−DE MADIRAC CARS SAINT−LEON PUYBARBAN LAGORCE SAINT−AND ESCOUSSAN FRANCS NAUJAN−ET BRACH MONTAGOU PONDAURAT CISSAC−ME SAINT−VIVIE LOUBENS BAIGNEAUX BUDOS BEAUTIRAN SAINT−SULP CAMBES CADILLAC−E CADAUJAC CUBZAC−LE SAINT−MAIX SAINT−GER SAINT−MAR PEINTURES CABANAC−E SAUCATS FONTET SAVIGNAC VIRELADE MIOS CANTENAC SAINT−COM FOSSES−ET LABARDE SAINT−MAG VILLENAVE− SALIGNAC BIEUJAC LOUPIAC−D MOULON SAINT−MAR SAINTE−FOY SAUMOS MOUILLAC CASTELVIEL CASTRES−G FARGUES PRIGNAC−E LUGON−ET− BAURECH CAMPS−SUR SAINT−DEN ARBANATS ARVEYRES AUBIE−ET−E HAUX TEMPLE SAINT−LOUB SAINT−AUBI LIGNAN−DE LARUSCADE MOULIETS− LADOS LOUCHATS MOURENS SOULIGNAC SAINT−BRIC PETIT−PALA BIRAC SENDETS SAINT−MAG SAINTE−TER TAURIAC CARDAN SAINT−CIBA ILLATS COUBEYRAC AILLAS BAGAS BAYAS ISLE−SAINT COURPIAC MONGAUZY CASTILLON− ARCINS CAMIAC−ET MOULIS−EN CAMIRAN CUSSAC−FO SAINT−CIER SAINTE−CO SAINT−FELI BELVES−DE BAYON−SUR HURE SAINTE−RA SAINT−GEN FIEU DONZAC SAINT−PAUL MARCILLAC SAINT−SULP SAINT−SEU PLASSAC MORIZES REIGNAC LISTRAC−M LAMARQUE LOUPIAC ROQUEBRU ROMAGNE SAINT−MAR SAINT−JEAN SAINT−GER TOURNE PORTETS LALANDE−D SAUVE LANSAC LADAUX SAINT−MAR GUILLOS SAINT−VINC SAINT−PIER SAINT−GER BRANNENS LISTRAC−DE SAUVIAC SAINT−MICH LESTIAC−SU AUROS LAVAZAN RIVIERE LIGUEUX SAINT−PHIL SAINT−AIGN DARDENAC GAJAC SAINT−HILA BERNOS−BE MAZION PREIGNAC EYRANS CIVRAC−SU FLOUDES GORNAC GANS ORIGNE BLASIMON NIZAN BARSAC SAILLANS SOUSSAC TAYAC MASSEILLES BASSANNE CABARA LANDERROU DAUBEZE SAINT−GER SAINT−AND SAINT−PEY− NOAILLAN SAINT−PIER TUZAN MONTIGNAC SAINT−VIVIE SALLES−DE PUYNORMA TAILLECAVA RIOCAUD GOURS SAINT−SULP GAILLAN−EN LUGOS ANGLADE PUY CARTELEGU GAURIAC SAINT−CHR LUGASSON SAINT−MAR SAUGON SIGALENS COIRAC BALIZAC PLEINE−SEL SAINT−YZAN GISCOS CAZATS LABESCAU MAURIAC COUTURES SAINTE−GE AURIOLLES BARIE NEUFFONS BOSSUGAN COURS−DE− SAINT−AND RUCH RIMONS SAINT−FERM GREZILLAC SAINT−ANTO POMPEJAC VIGNONET SAINT−CHR FLAUJAGUE LAPOUYADE SEMENS CAMPUGNA MESTERRIE GABARNAC MARGUERO BOURDELLE COURS−LES MONPRIMBL BELLEFOND PRECHAC CAUMONT EYNESSE LEVES−ET− ORDONNAC BEGADAN MASSUGAS QUEYRAC VALEYRAC CAZAUGITAT ESCAUDES GOUALADE PUISSEGUIN GARDEGAN SAINT−GER VILLENEUVE LANDERROU SAINT−ESTE MONTAGNE UZESTE MARIONS JUILLAC GRIGNOLS BRAUD−ET− SAINT−MAR SAINT−PEY− LERM−ET−M SAINT−SEU CAPLONG SILLAS SAINT−LAUR SAINT−MICH SAINT−ETIE SAINT−JULI SAINT−HIPP SAINT−ANTO LARTIGUE CASTELMOR CIVRAC−EN DIEULIVOL SAINT−AVIT TALAIS SAINT−CHR SAINT−QUE VENSAC JAU−DIGNAC LANTON CAZALIS LUCMAU BLAIGNAN SAINT−VIVIE PORGE GRAYAN−ET TALENCE BORDEAUX SAINTE−FOY BOUSCAT CENON BEGLES SAINT−ANTO LORMONT CARBON−BL EYSINES FLOIRAC PESSAC GRADIGNAN MERIGNAC VILLENAVE− ARTIGUES− BRUGES HAILLAN BASSENS LIBOURNE LANGON BLAYE CASTILLON− PAREMPUYR LEOGNAN MARTIGNAS SAINT−MED YVRAC SALLES AMBARES CANEJAN BLANQUEFO PODENSAC PUGNAC BIGANOS CERONS TEICH SAINT−LAUR CASTELNAU VERDELAIS CASTETS−E ABZAC FRONTENAC GIRONDE−S SAINT−CIER TESTE−DE− VILLANDRAU BRANNE SAINT−AND TOULENNE CREON SAINT−YZAN ETAULIERS COUTRAS MARGAUX PINEUILH SAINT−MED SAINT−SAVI PAUILLAC GUITRES BAZAS SAUVETERR LESPARRE− MONSEGUR CADILLAC REOLE SAINT−SEU POMEROL SAINTE−EU LATRESNE SAINT−MED BOULIAC FARGUES−S SAINT−LOU BARP VAYRES MACAU TARGON PAILLET LANGOIRAN GENISSAC AUDENGE GENSAC FRONSAC GUJAN−MES PESSAC−SU COUQUEQU SAINT−MAC BEGUEY CAUDROT SAUTERNES LUSSAC SAINT−CHR NEAC PELLEGRUE BILLAUX BOURG CAVIGNAC SAINT−QUE SAINT−EMIL NAUJAC−SU ARES ANDERNOS ARCACHON HOURTIN LACANAU SOULAC−SU VERDON−SU LEGE−CAP− VENDAYS−M CARCANS 25-26 juin, Grenoble 4èmes Rencontres R council = { sup 5%} council = { inf 5%} Un petit exemple L’algorithme La fonction R La partition en 5 classes treeHousing_5 <- divclust(housing,K=5) plot(treeHousing_5,nqbin=4) # Nombre de questions binaires houses = { inf 90%} density < 1985.91 density >= 1985.91 C5 council = { sup 5%} C3 C4 council = { inf 5%} C2 Q4=False houses = { sup 90%} C1 Q4=True afficher Ou encore avec la fonction cutreediv : P_5_div <- cutreediv(treeHousing,K=5) 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Quelques sorties ## ## ## ## ## ## ## ## ## ## Call: cutreediv(tree = treeHousing, K = 5) [1,] [2,] [3,] [4,] name "$clusters" "$description" "$which_cluster" "$B" description "list of observations in each cluster" "monothetic description of each cluster" "cluster memberships" "the proportion of explained inertia" # liste des communes de la classe C4 P_5_div$clusters$C4 ## ## ## [1] "ANDERNOS" [5] "HOURTIN" [9] "SOULAC-SUR-MER" "ARCACHON" "ARES" "LACANAU" "LEGE-CAP-FERRET" "VENDAYS-MONTALIVET" "VERDON-SUR-MER" "CARCANS" "NAUJAC-SUR-MER" # Description monothetique de la classe C4 P_5_div$description$C4 ## [1] " houses = { inf 90%} , density = [-Inf ; 1985.91[ , primaryres = [-Inf ; 68.06[" # Proportion d'inertie explique par P_5 P_5_div$B ## [1] 0.693 4èmes Rencontres R 25-26 juin, Grenoble CASTELMORON−D'ALBRET SAINT−ETIENNE−DE−LISSE SAINT−HIPPOLYTE SAINT−JULIEN−BEYCHEVELLE LARTIGUE SAINT−ANTOINE−DU−QUEYRET JUILLAC SOUSSAC BRAUD−ET−SAINT−LOUIS GRIGNOLS ESCAUDES GOUALADE LUCMAU JAU−DIGNAC−ET−LOIRAC CAZALIS LANTON VENSAC SAINT−VIVIEN−DE−MEDOC SAINT−QUENTIN−DE−CAPLONG SAINT−CHRISTOLY−MEDOC TALAIS SAINT−AVIT−DE−SOULEGE CIVRAC−EN−MEDOC DIEULIVOL BLAIGNAN SAINT−MICHEL−DE−CASTELNAU SAINT−MARTIN−LACAUSSADE LERM−ET−MUSSET SAINT−PEY−D'ARMENS SAINT−LAURENT−DES−COMBES SAINT−SEURIN−DE−CADOURNE CAPLONG SILLAS BEGADAN MASSUGAS LEVES−ET−THOUMEYRAGUES ORDONNAC QUEYRAC VALEYRAC RIMONS SAINT−FERME BOSSUGAN COURS−DE−MONSEGUR RUCH SAINT−ANDRE−ET−APPELLES NEUFFONS COUTURES AURIOLLES SAINTE−GEMME EYNESSE BARIE CAUMONT MARIONS UZESTE LANDERROUAT VILLENEUVE MONTAGNE SAINT−ESTEPHE SAINT−GERMAIN−DE−GRAVE SEMENS GARDEGAN−ET−TOURTIRAC PUISSEGUIN RIVIERE LIGUEUX ROQUEBRUNE SAINT−PHILIPPE−D'AIGUILLE DARDENAC SAINT−AIGNAN GAJAC SAINT−HILAIRE−DU−BOIS LAPOUYADE SAINT−MARTIN−DU−PUY ROMAGNE SAINT−JEAN−DE−BLAIGNAC POMPEJAC CAMPUGNAN GREZILLAC VIGNONET SAINT−ANTOINE−SUR−L'ISLE FLAUJAGUES SAINT−CHRISTOLY−DE−BLAYE CAZAUGITAT COURS−LES−BAINS GABARNAC MESTERRIEUX BOURDELLES MARGUERON PRECHAC BELLEFOND MONPRIMBLANC SAINT−LEON MADIRAC CARS PUYBARBAN PONDAURAT LAGORCE SAINT−ANDRONY BIRAC SENDETS ARBIS MOURENS SOULIGNAC LIGNAN−DE−BORDEAUX PETIT−PALAIS−ET−CORNEMPS SAINT−BRICE SAINTE−TERRE CARDAN TAURIAC BAGAS BAYAS ILLATS AILLAS COUBEYRAC SAINT−PAUL MARCILLAC SAINT−SULPICE−DE−POMMIERS SAINT−GENES−DE−CASTILLON DONZAC FIEU HURE SAINTE−RADEGONDE MAURIAC CAZATS LABESCAU BAYON−SUR−GIRONDE BELVES−DE−CASTILLON CUSSAC−FORT−MEDOC SAINT−CIERS−DE−CANESSE SAINTE−COLOMBE CAMIRAN SAINT−FELIX−DE−FONCAUDE LISTRAC−MEDOC REIGNAC LAMARQUE LOUPIAC MORIZES PLASSAC SAINT−SEURIN−DE−BOURG CAMPS−SUR−L'ISLE ISLE−SAINT−GEORGES VILLENAVE−DE−RIONS CAMIAC−ET−SAINT−DENIS MONGAUZY ARCINS CASTILLON−DE−CASTETS SAINT−MAGNE COURPIAC SAINT−CIBARD LALANDE−DE−POMEROL SAUVE LANSAC LADAUX SAINT−MARTIAL MOULIS−EN−MEDOC LARUSCADE SAINT−AUBIN−DE−BLAYE LADOS MOULIETS−ET−VILLEMARTIN LIGNAN−DE−BAZAS LOUCHATS ARVEYRES SAINT−LOUBERT BAURECH HAUX LUGON−ET−L'ILE−DU−CARNAY AUBIE−ET−ESPESSAS PORTETS ARBANATS SAINT−DENIS−DE−PILE CAMBES CASTRES−GIRONDE CUBZAC−LES−PONTS SAINT−MAIXANT SAINT−SULPICE−ET−CAMEYRAC CADAUJAC CADILLAC−EN−FRONSADAIS CANTENAC SAINT−COME FOSSES−ET−BALEYSSAC TEMPLE PEINTURES SAINT−MARIENS FARGUES PRIGNAC−ET−MARCAMPS SAINT−GERMAIN−DU−PUCH MIOS SAVIGNAC VIRELADE CABANAC−ET−VILLAGRAINS SAUCATS EYRANS MAZION PREIGNAC CIVRAC−SUR−DORDOGNE NIZAN BERNOS−BEAULAC BLASIMON GANS ORIGNE BARSAC SAILLANS SAINT−MICHEL−DE−FRONSAC BRANNENS LISTRAC−DE−DUREZE FLOUDES GUILLOS GORNAC SAUVIAC LESTIAC−SUR−GARONNE AUROS LAVAZAN SAINT−GERVAIS TOURNE SAINT−GERMAIN−DE−LA−RIVIERE SAINT−PIERRE−DE−MONS SAINT−VINCENT−DE−PAUL PUYNORMAND SAINT−VIVIEN−DE−BLAYE SALLES−DE−CASTILLON SAINT−VIVIEN−DE−MONSEGUR MONTAGOUDIN BUDOS BAIGNEAUX LOUBENS CISSAC−MEDOC MONTIGNAC LUGAIGNAC ESCOUSSANS FRANCS DOULEZON DONNEZAC SAINT−VINCENT−DE−PERTIGNAS BRACH NAUJAN−ET−POSTIAC SAINT−MARTIN−DE−LAYE VERTHEUIL SAINT−PIERRE−DE−BAT SAINT−ANDRE−DU−BOIS NOAILLAN SAINT−PEY−DE−CASTETS CABARA LANDERROUET−SUR−SEGUR TUZAN TAYAC BASSANNE MASSEILLES GOURS SAINT−SULPICE−DE−GUILLERAGUES ANGLADE PUY RIOCAUD TAILLECAVAT GAILLAN−EN−MEDOC LUGOS CARTELEGUE GAURIAC LUGASSON SAINT−CHRISTOPHE−DE−DOUBLE SAINT−MARTIN−DE−LERM SAUGON SIGALENS GISCOS SAINT−YZANS−DE−MEDOC DAUBEZE SAINT−GERMAIN−D'ESTEUIL PLEINE−SELVE BALIZAC COIRAC SAINT−PHILIPPE−DU−SEIGNAL TEUILLAC PIAN−SUR−GARONNE SAINT−GIRONS−D'AIGUEVIVES SAINT−MARTIN−DU−BOIS SAINT−ROMAIN−LA−VIRVEE SAMONAC BLAIGNAC ESSEINTES SAINT−HILAIRE−DE−LA−NOAILLE GUILLAC SAINT−GENES−DE−BLAYE CLEYRAC ASQUES MARIMBAULT ESPIET BERSON OMET PUJOLS−SUR−CIRON SAINT−AUBIN−DE−BRANNE CASSEUIL TIZAC−DE−LAPOUYADE FALEYRAS JUGAZAN LEOGEATS BELLEBAT PRIGNAC−EN−MEDOC MOMBRIER CESSAC SAINT−SAUVEUR COMPS LANDE−DE−FRONSAC POUT SAINT−PARDON−DE−CONQUES SAINT−CIERS−D'ABZAC TABANAC SAINTE−FLORENCE SAINT−MICHEL−DE−LAPUJADE CAUVIGNAC MARTRES SAINT−TROJAN CHAMADELLE SAINT−PALAIS GENERAC MERIGNAS SAINT−EXUPERY MARCENAIS TIZAC−DE−CURTON CADARSAC SAINT−GENIS−DU−BOIS CENAC BONNETAN AYGUEMORTE−LES−GRAVES SAINT−LAURENT−D'ARCE GAURIAGUET LOUPES TARNES SAINT−SEVE ARSAC SAINT−GENES−DE−FRONSAC PIAN−MEDOC POMPIGNAC BARON FONTET PERISSAC SAINT−MORILLON NOAILLAC SALAUNES BROUQUEYRAN CANTOIS MARANSIN AVENSAN CEZAC CURSAN SAINTE−FOY−LA−LONGUE SAUMOS CASTELVIEL MOUILLAC LABARDE SAINT−MAGNE−DE−CASTILLON MOULON SAINT−MARTIN−DE−SESCAS LOUPIAC−DE−LA−REOLE BIEUJAC SALIGNAC SABLONS DAIGNAC SOUSSANS SAINT−AUBIN−DE−MEDOC SAINT−GENES−DE−LOMBAUD ROAILLAN SAINT−SELVE LUDON−MEDOC BEAUTIRAN MONTUSSAN SADIRAC VIRSAC SAINT−MICHEL−DE−RIEUFRET SAINT−SAUVEUR−DE−PUYNORMAND BEYCHAC−ET−CAILLAU CAMARSAC CUBNEZAIS SAVIGNAC−DE−L'ISLE MARTILLAC MARSAS SALLEBOEUF AUBIAC BONZAC LAROQUE CROIGNON FOURS CIVRAC−DE−BLAYE SAINT−LAURENT−DU−BOIS PORCHERES SAINT−LAURENT−DU−PLAN BLESIGNAC NERIGEAN BERTHEZ CAPIAN BOUSCAT CENON SAINTE−FOY−LA−GRANDE BORDEAUX TALENCE ARCACHON HOURTIN LACANAU SOULAC−SUR−MER VERDON−SUR−MER LEGE−CAP−FERRET CARCANS VENDAYS−MONTALIVET GRAYAN−ET−L'HOPITAL PORGE CARIGNAN−DE−BORDEAUX TAILLAN−MEDOC CESTAS CAMBLANES−ET−MEYNAC IZON TRESSES BREDE SAINT−CAPRAIS−DE−BORDEAUX SAINT−LOUBES PEUJARD MARCHEPRIME SAINTE−HELENE COIMERES VERAC QUINSAC SAINT−JEAN−D'ILLAC VILLEGOUGE BOURIDEYS RAUZAN SAINTE−CROIX−DU−MONT RIONS SAINT−SULPICE−DE−FALEYRENS LAMOTHE−LANDERRON BELIN−BELIET SAINT−CAPRAIS−DE−BLAYE AMBES MAZERES SAINT−SEURIN−DE−CURSAC ARTIGUES−DE−LUSSAC SAINT−PIERRE−D'AURILLAC BOMMES SAINT−LEGER−DE−BALSON CAPTIEUX SAINT−SYMPHORIEN LANDIRAS SAINT−AVIT−SAINT−NAZAIRE CUDOS EGLISOTTES−ET−CHALAURES GALGON PUJOLS HOSTENS ROQUILLE GUJAN−MESTRAS PESSAC−SUR−DORDOGNE ARES COUQUEQUES ANDERNOS NAUJAC−SUR−MER FRONSAC GENSAC AUDENGE GENISSAC SAINTE−EULALIE LATRESNE SAINT−MEDARD−D'EYRANS MACAU TARGON VAYRES BARP SAINT−LOUIS−DE−MONTFERRAND PAILLET BOULIAC FARGUES−SAINT−HILAIRE SAINT−MACAIRE SAINT−EMILION BOURG CAVIGNAC SAINT−QUENTIN−DE−BARON PELLEGRUE NEAC SAINT−CHRISTOPHE−DES−BARDES BILLAUX CAUDROT LUSSAC SAUTERNES BEGUEY LANGOIRAN BEGLES LORMONT BRUGES HAILLAN ARTIGUES−PRES−BORDEAUX VILLENAVE−D'ORNON FLOIRAC SAINT−ANTOINE CARBON−BLANC MERIGNAC EYSINES GRADIGNAN PESSAC PAREMPUYRE LEOGNAN MARTIGNAS−SUR−JALLE SAINT−MEDARD−EN−JALLES YVRAC BLANQUEFORT PODENSAC AMBARES CANEJAN SALLES FRONTENAC SAINT−LAURENT−MEDOC TEICH ABZAC CASTETS−EN−DORTHE VERDELAIS BIGANOS CERONS CASTELNAU−DE−MEDOC PUGNAC LIBOURNE CADILLAC LANGON BLAYE CASTILLON−LA−BATAILLE GIRONDE−SUR−DROPT SAINT−CIERS−SUR−GIRONDE TESTE−DE−BUCH VILLANDRAUT GUITRES LESPARRE−MEDOC PAUILLAC MONSEGUR BAZAS SAUVETERRE−DE−GUYENNE POMEROL REOLE SAINT−SEURIN−SUR−L'ISLE BASSENS CREON TOULENNE BRANNE SAINT−ANDRE−DE−CUBZAC COUTRAS ETAULIERS SAINT−YZAN−DE−SOUDIAC SAINT−SAVIN MARGAUX PINEUILH SAINT−MEDARD−DE−GUIZIERES Height 1.0 1.5 ⇒ 0.5 ⇒ 0.0 Un petit exemple L’algorithme La fonction R Ward sur données mixtes Toutes les coordonnées factorielles de l’ ACP mixte : library(PCAmixdata) X_quanti <- split_mix(housing)$data_quanti X_quali <- split_mix(housing)$data_quali zhousing <- PCAmix(X_quanti,X_quali,ndim=5,graph=FALSE)$ind$coord Hiérarchie de Ward indicé par la variation de l’inertie. treeWard <hclust(dist(zhousing)^2/(2*nrow(zhousing)),method="ward.D") 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Ward sur données mixtes ⇒ Comparaison des partitions en k = 5 classes : P_5_ward <- cutree(treeWard,5) P_5_div<- P_5_div$which_cluster library(ClustOfVar) #Indice de Rand entre les deux partitions rand(P_5_div,P_5_ward) ## [1] 0.981 ⇒ Comparaison des proportion d’inertie expliquée: divclust Ward k=2 0.21 0.20 k=3 0.28 0.28 k=4 0.34 0.34 4èmes Rencontres R k=5 0.39 0.39 k=6 0.41 0.42 k=7 0.44 0.44 25-26 juin, Grenoble k=8 0.45 0.46 k=9 0.46 0.47 k=10 0.47 0.48 Un petit exemple L’algorithme La fonction R Et pour des données qualitatives... services <- gironde$services treeServices <- divclust(services) plot(treeServices,nqbin=5) doctor = {3 or +,0} or doctor = {1 to 2} nursery = {0} or nursery = {1 or +} ## Q5 : ## Q3 : ARCACHON BRUGES AMBARES−ET−LAGRAVE ANDERNOS−LES−BAINS SAINT−AUBIN−DE−MEDO TEICH GUITRES BAZAS ARTIGUES−PRES−BORDE LANGOIRAN CANEJAN CARBON−BLANC MARCHEPRIME ARES SAINT−CIERS−SUR−GIRO SAINT−CHRISTOLY−DE−B CADAUJAC CADILLAC GRIGNOLS MARGAUX BELIN−BELIET AUDENGE IZON PREIGNAC PIAN−MEDOC SAINTE−EULALIE EGLISOTTES−ET−CHALAU LUSSAC QUINSAC LANDE−DE−FRONSAC SADIRAC ETAULIERS LAMARQUE SAINTE−HELENE PINEUILH SAUVETERRE−DE−GUYE BERSON VILLANDRAUT PELLEGRUE BLASIMON ARVEYRES CARCANS YVRAC PORGE SAUVE LISTRAC−MEDOC POMPIGNAC SAINT−PIERRE−D'AURILL LANDIRAS AUROS CAMBES BERNOS−BEAULAC VERDELAIS GIRONDE−SUR−DROPT GAURIAC FRONSAC CISSAC−MEDOC BRAUD−ET−SAINT−LOUIS GENSAC LARUSCADE HOSTENS MOULON PUISSEGUIN MARANSIN LUGON−ET−L'ILE−DU−CA CUBZAC−LES−PONTS SAINT−SEURIN−DE−CUR CAUDROT SAINT−YZAN−DE−SOUDIA FRONTENAC BEGADAN SAINT−MORILLON GORNAC PAILLET ARSAC TOULENNE SAINT−DENIS−DE−PILE BARSAC BEAUTIRAN LUDON−MEDOC SAINT−CAPRAIS−DE−BOR PORTETS MONSEGUR SAINT−LAURENT−MEDOC RAUZAN MACAU CAMBLANES−ET−MEYNA BOURG SAINT−GERMAIN−DU−PU VAYRES TRESSES AMBES BRANNE CARIGNAN−DE−BORDEA SALIGNAC PRIGNAC−ET−MARCAMP LAMOTHE−LANDERRON SALLEBOEUF CASTRES−GIRONDE CERONS TARGON ABZAC SAINT−ESTEPHE CARTELEGUE BREDE BARP GALGON SAINT−MACAIRE SAINT−VIVIEN−DE−MEDO REIGNAC CAPTIEUX CASTETS−EN−DORTHE CABANAC−ET−VILLAGRA PUJOLS MARSAS NOAILLAN ANGLADE SAUGON ARBANATS SAINT−MAGNE−DE−CAST ARCINS SAINT−PEY−D'ARMENS CARS GRAYAN−ET−L'HOPITAL RIONS GAILLAN−EN−MEDOC MAZERES EYRANS ILLATS BILLAUX ARTIGUES−DE−LUSSAC TEUILLAC PEUJARD SAINT−QUENTIN−DE−BAR SAINT−PEY−DE−CASTET SAINTE−CROIX−DU−MON SAINT−MAGNE HURE PEINTURES BIEUJAC CUSSAC−FORT−MEDOC JAU−DIGNAC−ET−LOIRAC SALAUNES MOULIETS−ET−VILLEMAR BEGUEY CADILLAC−EN−FRONSAD SAINT−CIERS−D'ABZAC RUCH BARON GAURIAGUET AILLAS BEYCHAC−ET−CAILLAU SAINT−MAIXANT CIVRAC−DE−BLAYE CAMPS−SUR−L'ISLE SAINT−SAUVEUR BALIZAC AVENSAN UZESTE CUBNEZAIS SAINT−SELVE FONTET SAINT−VINCENT−DE−PAU EYNESSE MARCILLAC SABLONS SOUSSANS VERTHEUIL AUBIE−ET−ESPESSAS SAINT−GIRONS−D'AIGUE SAINT−MARIENS CEZAC GENISSAC LAPOUYADE SAINT−SEURIN−DE−CADO ARBIS MADIRAC DONNEZAC GUILLAC PUYNORMAND CAMIRAN ASQUES 25-26 juin, Grenoble 4èmes Rencontres R chemist = {2 or +} chemist = {1} Q3=False Q3=True Q5=False Q5=True restaurant = {1,2,3 or +} restaurant = {0} chemist = {1,2 or +} chemist = {0} Un petit exemple L’algorithme La fonction R Tenir compte de l’ordre des modalités ⇒ Imposer un ordre sur les modalités. #ordonner les modalites services$doctor <- ordered(services$doctor) class(services$doctor) ## [1] "ordered" "factor" treeServices <- divclust(services) plot(treeServices,nqbin=5) ## Q5 : ## Q3 : doctor = {0,1 to 2} or doctor = {3 or +} nursery = {0} or nursery = {1 or +} ⇒ Réduction du nombre de questions binaires dans le cas qualitatif. 4èmes Rencontres R 25-26 juin, Grenoble Un petit exemple L’algorithme La fonction R Références I M. Chavent, Y. Lechevallier, and 0. Briant DIVCLUS-T: A monothetic divisive hierarchical clustering method. Computational Statistics and Data Analysis 52 (2007) 687-701. L. Kaufman, P. J. Rousseeuw Divisive Analysis (Program DIANA). Finding Groups in Data: An Introduction to Cluster Analysis (1990) 253-279. 4èmes Rencontres R 25-26 juin, Grenoble