3.2. L’arrˆ
et pr´
ematur´
e
Dans la section pr´
ec´
edente, les modifications apport´
ees `
a l’algorithme du DSOM ont permis de r´
eduire sa
complexit´
e algorithmique, dans les sections suivantes, nous allons montrer comment grˆ
ace `
a quelques techniques
d’impl´
ementation, il est possible d’acc´
el´
erer son temps d’ex´
ecution de mani`
ere importante.
Lors de la phase de repr´
esentation, `
a l’it´
eration let pour chaque mod`
ele j, on cherche `
a calculer le minimum des
Sl(j, k). Ce calcul est r´
ealis´
e informatiquement au sein d’une boucle en k, que nous appelerons la boucle externe.
Cette boucle externe effectue deux op´
erations `
a chacune de ses it´
erations : premi`
erement elle calcule grˆ
ace `
a une
seconde boucle (boucle interne) la valeur de Sl(j, k)pour un kdonn´
e (voir la somme en uapparaissant `
a la droite
de l’´
equation 2), puis elle compare le r´
esultat trouv´
e avec le meilleur r´
esultat calcul´
e lors des it´
erations pr´
ed´
edentes.
Afin d’am´
eliorer l’efficacit´
e de ce calcul, une id´
ee simple consiste `
a d´
eplacer cette ´
etape de comparaison dans
la boucle interne : le calcul de la boucle interne est arrˆ
et´
e pr´
ematur´
ement d`
es lors que la sous-somme Σk=
Pm′
u=1 hl(u, j)Dl(u, k)calcul´
ee `
a l’it´
eration m′(avec m′< M ) est sup´
erieure au minimum.
Afin de favoriser la strat´
egie d’arrˆ
et pr´
ematur´
e, la boucle interne ainsi que la boucle externe doivent ˆ
etre or-
donn´
ees. Pour la boucle interne, l’ordre optimal serait d’accroˆ
ıtre Σkle plus rapidement possible en sommant
d’abord les grandes valeurs de hl(u, j)Dl(u, k). Pour la boucle externe, l’ordre optimal serait de commencer avec
les valeurs faibles de Sl(j, k)(i.e. avec un bon candidat pour le prototype du mod`
ele j) : une faible valeur de
Sl(j, k)arrˆ
etera la boucle interne plus tˆ
ot qu’une grande valeur. En pratique cependant, calculer ces ordres op-
timaux est extrˆ
emement coˆ
uteux. Nous utiliserons donc des ordres efficaces mais non optimaux qui sont induits
par la topologie du DSOM. La d´
efinition de hlimplique que hl(u, j)est petit quand δ(u, j)est grand. Il est donc
raisonnable d’ordonner la boucle interne en udans l’ordre d´
ecroissant des hl(u, j), i.e. dans l’ordre croissant des
δ(u, j). Pour la boucle externe, nous utilisons les propri´
et´
es d’organisation du DSOM : les individus sont affect´
es `
a
la classe du prototype le plus proche. Donc, la qualit´
ea priori d’un individu xkcomme prototype pour le mod`
ele j
est plus ou moins l’inverse de la distance δentre le mod`
ele jet le mod`
ele repr´
esentant la classe de xk. On ordonne
donc la boucle externe dans l’ordre croissant de δ. Ces divers optimisations ne modifie pas les r´
esultats produits.
3.3. La m´
emorisation
Une autre source d’optimisation vient du fait que les classes Cl
uproduites par le DSOM ont tendance `
a se
stabiliser lors des derni`
eres it´
erations de l’algorithme. Il n’est pas rare que d’une it´
eration `
a l’autre, le contenu
d’une (ou plusieurs) classe reste strictement identique. Dans de tels cas, les Nvaleurs Dl(u, k)correspondantes
restent inchang´
ees, et il est donc inutile de les recalculer. La mise en œuvre informatique de cette optimisation peut
facilement ˆ
etre r´
ealis´
ee en associant `
a chaque classe Cuune variable bool´
eenne. Lors de la phase d’affectation, cette
variable est positionn´
ee si on constate un changement de classe. Le Dl(u, k)correspondant sera alors recalcul´
e
lors de la phase de repr´
esentation.
Bien que cette strat´
egie de m´
emorisation se r´
ev`
ele ˆ
etre tr`
es efficace, son mode d’action est un peu grossier.
En effet, le calcul complet des Dl(u, k)pour deux valeurs de u(i.e., pour deux classes) peut ˆ
etre d´
eclench´
e par
le changement de classes d’un unique individu. Il semble donc int´
eressant de chercher une solution plus fine.
Consid´
erons en effet le cas o`
u la classe ne subit qu’une seule modification : l’individu xi. On a alors :
Dl(cl−1(i), k) = Dl−1(cl−1(i), k)−d(xi,xk)[3]
Dl(cl(i), k) = Dl−1(cl(i), k) + d(xi,xk)[4]
Appliquer ces formules de mise-`
a-jour induit 2Nadditions et Naffectations. Si plusieurs individus se d´
eplacent
de leur ancienne classe `
a leur nouvelle classe, les op´
erations de mise-`
a-jour doivent ˆ
etre effectu´
ees pour chaque
d´
eplacement. Dans le cas extrˆ
eme o`
u tous les individus changent de classes, le nombre total d’additions serait de
2N2(et N2affectations). Ce coˆ
ut de remise-`
a-jour est donc sup´
erieur `
a un recalcul total (N2additions et N2
affectations). Ceci implique que pour un nombre de modifications de classes inf´
erieur `
a approximativement N
2,
l’approche par mise-`
a-jour est plus efficace que le recalcul total. Il est impotant de noter que dans le cas o`
u le
recalcul total est n´
ecessaire, la strat´
egie de m´
emorisation pr´
esent´
ee au paragraphe ci-dessus peut ˆ
etre utilis´
ee.