Vous êtes sur la page 1sur 6

Intelligence Artificielle

Correction TD1

Exercice 1 :
Etant donnée 𝓜 la matrice des écarts de la première partition ℘𝟎 qui comporte 5 clusters.
Chaque cluster contient une seule observation
℘𝟎 = {{𝐚}, {𝐛}, {𝐜}, {𝐝}, {𝐞}}

𝓜 {𝐚} {𝐛} {𝐜} {𝐝} {𝐞}


{𝐚} 0 23 35 43 50
{𝐛} 0 21 32 45
{𝐜} 0 11 25
{𝐝} 0 17
{𝐞} 0

Appliquer l’algorithme CAH pour déterminer une meilleure partition de clusters. L’écart
entre deux groupes est calculé par « average linkage »
1. Déterminer la partition ℘𝟏
𝐞({𝐜}, {𝐝})=11 est le plus petit
→ ℘𝟏={{𝐜, 𝐝}, {a},{b},{e}}

2. Calculer la matrice des écarts associée à ℘𝟏

𝓜 {𝐜, 𝐝} {a} {b} {e}


{𝐜, 𝐝} 0 39 26.5 21
{a} 0 23 50
{b} 0 45
{e} 0

𝟏 𝟏
𝐞({𝐜, 𝐝}, {𝐚})=𝟐×𝟏 (𝐝(𝐜, 𝐚) + 𝐝(𝐝, 𝐚))= 𝟐 (𝟑𝟓 + 𝟒𝟑) = 𝟑𝟗
𝟏 𝟏
𝐞({𝐜, 𝐝}, {𝐛})=𝟐×𝟏 (𝐝(𝐜, 𝐛) + 𝐝(𝐝, 𝐛))= 𝟐 (𝟐𝟏 + 𝟑𝟐) = 𝟐𝟔. 𝟓
𝟏 𝟏
𝐞({𝐜, 𝐝}, {𝐞})=𝟐×𝟏 (𝐝(𝐜, 𝐞) + 𝐝(𝐝, 𝐞)) = 𝟐
(𝟐𝟓 + 𝟏𝟕) = 𝟐𝟏

3. Déterminer la partition ℘𝟐
𝐞({𝐜, 𝐝}, {𝐞})=21 est le plus petit
→ ℘𝟐={{𝐜, 𝐝, 𝐞}, {a},{b}}

1/6
4. Calculer la matrice des écarts associée à ℘𝟐

𝓜 {𝐜, 𝐝, 𝐞} {a} {b}


{𝐜, 𝐝, 𝐞} 0 42.67 32.67
{a} 0 23
{b} 0

𝟏 𝟏
𝐞({𝐜, 𝐝, 𝐞}, {𝐚})=𝟑×𝟏 (𝐝(𝐜, 𝐚) + 𝐝(𝐝, 𝐚) + 𝐝(𝐞, 𝐚))= 𝟑 (𝟑𝟓 + 𝟒𝟑 + 𝟓𝟎) = 𝟒𝟐. 𝟔𝟕
𝟏 𝟏
𝐞({𝐜, 𝐝, 𝐞}, {𝐛})=𝟑×𝟏 (𝐝(𝐜, 𝐛) + 𝐝(𝐝, 𝐛) + 𝐝(𝐞, 𝐛))= 𝟑 (𝟐𝟏 + 𝟑𝟐 + 𝟒𝟓) = 𝟑𝟐. 𝟔𝟕

5. Déterminer la partition ℘𝟑
𝐞({𝐚}, {𝐛})=23 est le plus petit
→ ℘𝟑={{𝐜, 𝐝, 𝐞}, {a, b}}

6. Calculer la matrice des écarts associée à ℘𝟑

𝓜 {𝐜, 𝐝, 𝐞} {a, b}
{𝐜, 𝐝, 𝐞} 0 37.67
{a, b} 0

𝟏 𝟏
𝐞({𝐜, 𝐝, 𝐞}, {𝐚, 𝐛})=𝟑×𝟐 (𝐝(𝐜, 𝐚) + 𝐝(𝐝, 𝐚) + 𝐝(𝐞, 𝐚) + 𝐝(𝐜, 𝐛) + 𝐝(𝐝, 𝐛) + 𝐝(𝐞, 𝐛))= 𝟔 (𝟑𝟓 + 𝟒𝟑 +
𝟓𝟎 + 𝟐𝟏 + 𝟑𝟐 + 𝟒𝟓) = 𝟑𝟕. 𝟔𝟕
7. Déterminer la partition ℘𝟒
Il ne reste plus que deux clusters {𝐜, 𝐝, 𝐞} et {a, b} (à regrouper dans le même cluster)
→ ℘𝟒={{𝐜, 𝐝, 𝐞, a, b}}
→ Le processus s’arrête
8. Construire le dendrogramme des partitions

2/6
9. Quelle est la meilleure partition ? Justifier
Saut important par passage de la partition ℘𝟑 à la partition ℘𝟒
→ ℘𝟑 est la meilleure partition

Exercice 2:
Soit le jeu de données d’apprentissage Ω de 8 observations (𝐀𝟏, 𝐀𝟐, 𝐀𝟑, 𝐁𝟏, 𝐁𝟐, 𝐁𝟑, 𝐂𝟏, 𝐂𝟐)
et 2 descripteurs (X , X )

𝛀 𝐗𝟏 𝐗𝟐
𝐀𝟏 2 10
𝐀𝟐 2 5
𝐀𝟑 8 4
𝐁𝟏 5 8
𝐁𝟐 7 5
𝐁𝟑 6 4
𝐂𝟏 1 2
𝐂𝟐 4 9

Supposons que nous attribuons 𝐀𝟏, 𝐁𝟏 et 𝐂𝟏 aux barycentres des groupes G1, G2, et G3
respectivement. Appliquer l’algorithme K-Means (avec K=3) pour déterminer les trois
derniers clusters. La fonction de distance est la distance euclidienne

10. Calculer les distances entre les observations et les barycentres des groupes G1, G2, et G3

𝛀 𝐀𝟏 𝐀𝟐 𝐀𝟑 𝐁𝟏 𝐁𝟐 𝐁𝟑 𝐂𝟏 𝐂𝟐
G1
𝐀𝟏 0 5 8.49 3.61 7.07 7.21 8.06 2.24
G2 3.61 4.24 5.0 0 3.61 4.12 7.21 1.41
𝐁𝟏
G3 8.06 3.16 7.28 7.21 6.71 5.39 0 7.62
𝐂𝟏
𝐝(𝐀𝟏, 𝐀𝟐) = (𝟐 − 𝟐)𝟐 + (𝟏𝟎 − 𝟓)² = 𝟓
𝐝(𝐀𝟏, 𝐀𝟑) = (𝟐 − 𝟖)𝟐 + (𝟏𝟎 − 𝟒)² = 𝟖. 𝟒𝟗

from math import *
import numpy as np
t=np.array([[2,10],[2,5],[8,4],[5,8],[7,5],[6,4],[1,2],[4,9]]) # espace de descripteurs
c_g=np.array([[2,10],[5,8],[1,2]])
l=[]
for c in c_g:
for i in t:
d=sqrt((i[0]-c[0])**2+(i[1]-c[1])**2)
l.append(round(d,2))
print(np.array(l).reshape(3,8))

3/6
11. Déduire les clusters obtenus
Pour 𝐀𝟏 ; min(𝐝(𝐀𝟏, 𝐀𝟏), 𝐝(𝐁𝟏, 𝐀𝟏), 𝐝(𝐂𝟏, 𝐀𝟏)) =𝐝(𝐀𝟏, 𝐀𝟏) = 𝟎 ; alors 𝐀𝟏 dans G1
Pour 𝐀𝟐 ; min(𝐝(𝐀𝟏, 𝐀𝟐), 𝐝(𝐁𝟏, 𝐀𝟐), 𝐝(𝐂𝟏, 𝐀𝟐)) =𝐝(𝐂𝟏, 𝐀𝟐) = 𝟑. 𝟏𝟔 ; alors 𝐀𝟐 dans G3
G1= { 𝐀𝟏 }
G2= { 𝐀𝟑, B1, B2, B3, C2 }
G3= { 𝐀𝟐, C1 }

12. Calculer les nouveaux barycentres 𝐠 𝐆𝟏, 𝐠 𝐆𝟐, et 𝐠 𝐆𝟑des groupes G1,G2 et G3 respectivement
𝐠 𝐆𝟏= A1= (2, 10)
𝟖 𝟓 𝟕 𝟔 𝟒 𝟒 𝟖 𝟓 𝟒 𝟗
𝐠 𝐆𝟐= { 𝟓
, 𝟓
}= (6, 6)
𝟐 𝟏 𝟓 𝟐
𝐠 𝐆𝟑= {𝟐
, 𝟐 }= (1.5, 3.5)

13. Calculer les distances entre les observations et les nouveaux barycentres 𝐠 𝐆𝟏, 𝐠 𝐆𝟐, et 𝐠 𝐆𝟑, puis
déduire les clusters obtenus

𝛀 𝐀𝟏 𝐀𝟐 𝐀𝟑 𝐁𝟏 𝐁𝟐 𝐁𝟑 𝐂𝟏 𝐂𝟐
𝐠 𝐆𝟏 0 5 8.49 3.61 7.07 7.21 8.06 2.24
𝐠 𝐆𝟐 5.66 4.12 2.83 2.24 1.41 2 6.4 3.61
𝐠 𝐆𝟑 6.52 1.58 6.52 5.7 5.7 4.53 1.58 6.04
𝐝(𝐠 𝐆𝟐 , 𝐀𝟐) = (𝟔 − 𝟐)𝟐 + (𝟔 − 𝟓)² = 𝟒. 𝟏𝟐

from math import *
import numpy as np
t=np.array([[2,10],[2,5],[8,4],[5,8],[7,5],[6,4],[1,2],[4,9]])
c_g=np.array([[2,10],[6,6],[1.5,3.5]])
l=[]
for c in c_g:
for i in t:
d=sqrt((i[0]-c[0])**2+(i[1]-c[1])**2)
l.append(round(d,2))
print(np.array(l).reshape(3,8))

G1= { 𝐀𝟏, C2 }
G2= { 𝐀𝟑, B1, B2, B3 }
G3= { 𝐀𝟐, C1}
14. Calculer les nouveaux barycentres 𝐠 𝐆𝟏, 𝐠 𝐆𝟐, et 𝐠 𝐆𝟑des groupes G1,G2 et G3 respectivement
𝟐 𝟒 𝟏𝟎 𝟗
𝐠 𝐆𝟏= {𝟐
, 𝟐 }= (3, 9.5)
𝟖 𝟓 𝟕 𝟔 𝟒 𝟖 𝟓 𝟒
𝐠 𝐆𝟐= { 𝟒
, 𝟒
}= (6.5, 5.25)
𝟐 𝟏 𝟓 𝟐
𝐠 𝐆𝟑= {𝟐
, 𝟐 }= (1.5, 3.5)

4/6
15. Calculer les distances entre les observations et les nouveaux barycentres 𝐠 𝐆𝟏, 𝐠 𝐆𝟐, et 𝐠 𝐆𝟑, puis
déduire les clusters obtenus

𝛀 𝐀𝟏 𝐀𝟐 𝐀𝟑 𝐁𝟏 𝐁𝟐 𝐁𝟑 𝐂𝟏 𝐂𝟐
𝐠 𝐆𝟏 1.12 4.61 7.43 2.5 6.02 6.26 7.76 1.12
𝐠 𝐆𝟐 6.54 4.51 1.95 3.13 0.56 1.35 6.39 4.51
𝐠 𝐆𝟑 6.52 1.58 6.52 5.7 5.7 4.53 1.58 6.04

𝐝(𝐠 𝐆𝟐 , 𝐀𝟐) = (𝟔. 𝟓 − 𝟐)𝟐 + (𝟓. 𝟐𝟓 − 𝟓)² = 𝟒. 𝟓𝟏


from math import *


import numpy as np
t=np.array([[2,10],[2,5],[8,4],[5,8],[7,5],[6,4],[1,2],[4,9]])
c_g=np.array([[3,9.5],[6.5,5.25],[1.5,3.5]])
l=[]
for c in c_g:
for i in t:
d=sqrt((i[0]-c[0])**2+(i[1]-c[1])**2)
l.append(round(d,2))
print(np.array(l).reshape(3,8))

G1= { 𝐀𝟏, B1, C2}


G2= { 𝐀𝟑, B2, B3}
G3= { 𝐀𝟐, C1}
7. Calculer les nouveaux barycentres 𝐠 𝐆𝟏, 𝐠 𝐆𝟐, et 𝐠 𝐆𝟑des groupes G1,G2 et G3 respectivement
𝟐 𝟓 𝟒 𝟏𝟎 𝟖 𝟗
𝐠 𝐆𝟏= { 𝟑
, 𝟑 }= (3.67, 9)
𝟖 𝟕 𝟔 𝟒 𝟓 𝟒
𝐠 𝐆𝟐= { 𝟑
, 𝟑 }= (7, 4.33)
𝟐 𝟏 𝟓 𝟐
𝐠 𝐆𝟑= { 𝟐
, 𝟐 }= (1.5, 3.5)

8. Calculer les distances entre les observations et les nouveaux barycentres 𝐠 𝐆𝟏, 𝐠 𝐆𝟐, et 𝐠 𝐆𝟑, puis
déduire les clusters obtenus

𝛀 𝐀𝟏 𝐀𝟐 𝐀𝟑 𝐁𝟏 𝐁𝟐 𝐁𝟑 𝐂𝟏 𝐂𝟐
𝐠 𝐆𝟏 1.95 4.33 6.61 1.66 5.2 5.52 7.49 0.33
𝐠 𝐆𝟐 7.56 5.04 1.05 4.18 0.67 1.05 6.44 5.55
𝐠 𝐆𝟑 6.52 1.58 6.52 5.7 5.7 4.53 1.58 6.04

from math import *


import numpy as np
t=np.array([[2,10],[2,5],[8,4],[5,8],[7,5],[6,4],[1,2],[4,9]])
c_g=np.array([[3.67,9],[7,4.33],[1.5,3.5]])
l=[]
for c in c_g:
for i in t:
d=sqrt((i[0]-c[0])**2+(i[1]-c[1])**2)
l.append(round(d,2))
print(np.array(l).reshape(3,8))

5/6
G1= { 𝐀𝟏, B1, C2}
G2= { 𝐀𝟑, B2, B3}
G3= { 𝐀𝟐, C1}
→Stabilisation des centroïdes
→Le processus s’arrête

9. Etant donnée les écarts 𝐞(𝐆𝟏, 𝐆𝟐)= 3.61 et 𝐞(𝐆𝟏, 𝐆𝟑)=4.24, est-ce que A1 est dans le bon groupe ?
Expliquer
𝐛(𝐢) 𝐚(𝐢)
𝐒(𝐢)=𝐦𝐚𝐱{𝐚(𝐢),𝐛(𝐢)}

𝐚(𝐢) la moyenne des distances entre 𝐰𝐢 et les observations de son groupe


𝐛(𝐢) la moyenne des distances entre 𝐰𝐢 et les observations du groupe le plus proche de celui
auquel il appartient
G2
G1
A1 A3
C2 B2
B1 B3

Plus 𝐒(𝐢) est proche de 1, plus l’appartenance de l’observation 𝐢 est justifiée→l’observation 𝐢 est
dans le bon groupe
G1= { 𝐀𝟏, B1, C2}
𝐝(𝐀𝟏,𝐁𝟏) 𝐝(𝐀𝟏,𝐂𝟐) 𝟑.𝟔𝟏 𝟐.𝟐𝟒
𝐚(𝐀𝟏) = 𝟐
= 𝟐 =2.925

***
𝐞(𝐆𝟏, 𝐆𝟐)= 3.61 et 𝐞(𝐆𝟏, 𝐆𝟑)=4.24 alors G2 est plus proche à G1 que G3
G2= { 𝐀𝟑, B2, B3}
𝐝(𝐀𝟏,𝐀𝟑) 𝐝(𝐀𝟏,𝐁𝟐) 𝐝(𝐀𝟏,𝐁𝟑) 𝟖.𝟒𝟗 𝟕.𝟎𝟕 𝟕.𝟐𝟏
b(A1)= 𝟑
= 𝟑
=7.59
𝟕.𝟓𝟗 𝟐.𝟗𝟐𝟓
𝐒(𝐀𝟏)= 𝟕.𝟓𝟗
=0.614>0 et →1

alors A1 est dans le bon groupe

6/6

Vous aimerez peut-être aussi