Bonjour,
Voici un problème en relation avec l'algorithmique et qui implique un peu de Maths, que je voudrais résoudre.
Merci d'avance.
On souhaite faire une classification des primates (dans le but de comprendre l'évolution du singe). Pour ce faire, l'ADN d'un individu de chaque espèce est analysé :
est un humain,
est un chimpanzé,
3 est un bonobo,
est un gorille,
est un orang-outan et
est un gibon. Les distances euclidiennes entre chacun de ces individus, caractérisant leur ressemblance quant à l'ADN, sont données dans le tableau incomplet suivant :
1/ Montrer qu'à la première itération de la boucle répéter de l'algorithme du CAH, on a :
2/ Poursuivre l'algorithme du CAH en utilisant le critère de la moyenne. Représenter le dendrogramme.
3/ Si l'on decide de couper l'arbre pour former 4 clusters; quelles seront ces classes ?
4/ Proposer des commandes
pour répondre aux questions 2 et 3 précédentes.
Voici l'algorithme du CAH en question et des informations supplémentaires.
Algorithmique du
- Initialisation
- Chaque individu est placé dans son propre cluster.
- Calcul de la matrice de ressemblance A entre chaque couple de clusters
- Répéter
- Sélection dans A des deux clusters les plus proches
et
.
- Fusion de
et
pour former un cluster
.
- Mise à jour de
en calculant la ressemblance entre
et les clusters existants .
Jusqu'à la fusion des 2 derniers clusters.
Critère du saut minimal
Critère du saut maximal
Critère de la moyenne
Critère de Ward
N.B:
la distance entre clusters et $d$ la distance euclidienne entre individus.
Pour la 1ère question :
Pour calculer D(Cg,Ci) à chaque étape du CAH, j'ai essayé d'utiliser la distance euclidienne entre les points correspondant aux individus Cg et Ci. On peut utiliser la fonction dist() du package MASS en R pour calculer cette distance. Par exemple :
# Charger le package MASS
library(MASS)
# Calculer la distance euclidienne entre P1 et P2
dist(P1[1], P2[1])
#> [1] 0.84
# Calculer la distance euclidienne entre P2 et P3
dist(P2[1], P3[1])
#> [1] 0.70
# Calculer la distance euclidienne entre P3 et P4
dist(P3[1], P4[1])
#> [1] 0.35
# Calculer la distance euclidienne entre P4 et P5
dist(P4[1], P5[1])
#> [1] 0.01
# Calculer la distance euclidienne entre P5 et P6
dist(P5[1], P6[1])
#> [1] 0.02
On peut ensuite appliquer les règles du CAH pour obtenir D(Cg,Ci) à chaque étape, mais je ne sais pas si je suis sur la bonne voie.