Knowledge Management - Gestion des Connaissances

Case Based Reasoning : Recensement des Cas

LAURENT Jean-Marc - Méthode OCSIMA Audit - Conseil - Développement - Formation

Case Based Reasoning - Cas et Base de CasCas et Base de Cas

Case Based ReasoningCase Based Reasoning

Case Based Reasoning - Exemple d'ApplicationExemple d'Application


Case Based Reasoning - DiaBC - Recensement d'une Base de Cas

III.1 Des exemples de ce que l'on peut lire dans la littérature

  • Pour Strube & al [STR, 95] un cas est une instance d'une sous tâche réoccurrente. Ils proposent donc de décomposer le problème complet en sous tâches.
"This can be done along the physical components involved in the overall domain task. The task-structure may reflect the structure of the physical components that occur in planning or design. Another way of factoring an overall task into sub-tasks is by focusing on reoccurring problems that are separated from other problems by having unique input or output".

La première méthode proposée ne peut être appliquée, comme nous le répéterons plus loin, que lorsque le nombre de composants est faible. La deuxième méthode est un meilleur point de départ, mais n'est pas assez développée: ils rappellent simplement plus loin dans leur texte l'existence des techniques d'élucidation de la connaissance.

  • Fuchs & al [FUC, 95] proposent une représentation intéressante de la connaissance, connaissance décomposée en structures, topologie, fonctions, événements et concepts. Mais leur simple assertion :
"There are several advantages of the CBR approach :
- It is an alternative to other methods when the domain knowledge is weak or when we don't want to spend a lot of time for knowledge acquisition."

représente un escamotage du problème réel.

  • Kolodner [KOL, 93] affirme :
"Knowledge acquisition for a case based system is natural."

Si cette affirmation semble assez proche de la réalité par exemple dans le domaine du diagnostic médical (un médecin va assez "naturellement" évoquer le cas d'un patient avec un confrère), elle paraît un peu trop optimiste pour de nombreux autres domaines non analytiques (ex.: les architectes ne s'expriment pas naturellement en terme de cas).

Bien que dans cet article figure un paragraphe ayant pour titre "Collecting Cases: How ?", les conseils sont plutôt axés sur la question "Comment collecter un "bon" cas ?"

III.2 Les recensements simples : exemple du diagnostic

III.2.A Décomposition hiérarchique du système

L'opération de diagnostic [CHA, 83] consiste en l'identification d'une description (partielle) d'une situation avec un noeud spécifique de la hiérarchie représentant le système diagnostiqué: les niveaux les plus élevés de cette hiérarchie correspondent aux concepts les plus généraux (niveau fonctionnel), les niveaux spécifiques (niveau des composants) se trouvant à la partie inférieure. Le raisonnement affine progressivement le problème posé par une analyse globalement top-down pour déterminer où se situe dans la hiérarchie le dysfonctionnement, origine des symptômes observés.

Partant de cette définition, il est possible de décomposer le système selon plusieurs niveaux d'abstraction, la plupart des cas seront recensés au niveau le plus bas, les niveaux supérieurs correspondront aux dysfonctionnements qui font intervenir plusieurs composants élémentaires, ou auxquels il est difficile d'attribuer un composant précis.

III.2.B Utilisation d'un réseau causal

Un diagnostic peut également être établi grâce à un modèle causal décrivant les possibilités de comportement anormal du système sous contrôle. Console & al [CON, 91] décrivent une approche "focusing (model based) diagnosis". L'opération de diagnostic est composée de deux processus :

  • le premier (backward) part des observations et tente de déterminer les états initiaux ou intermédiaires qui impliquent ces observations,
  • le deuxième (forward) vérifie que les états déduits ci-dessus n'introduisent pas d'incohérence avec l'ensemble des observations.

Réseau causal

fig3. d'après Console et al

Les auteurs proposent de compiler le réseau causal afin de déterminer pour chaque noeud du réseau l'ensemble de ses conditions nécessaires (l'ensemble des observations nécessaires pour que le noeud corresponde au dysfonctionnement courant). Cet ensemble de conditions nécessaires permet d'éviter l'étude de branches d'alternatives. Par exemple pour le noeud "incr_engine_temp" cet ensemble sera :

temp_indicator (red)

& acceleration (irregular)

& [vapour (present) V not ext_temp_high]

& oil-gauge (red)

& [oil_below_car (present) V stack_smoke (black)]

En prolongeant cette compilation, on aboutit à quatre cas représentant l'ensemble du réseau causal de la figure 3 :

cas1

 

cas3

 

 

 

nom

piston_rings_used

 

nom

dirty_carburator

 

symptômes

stack_smoke (black)

temp_indicator (red)

oil_gauge (red)

acceleration (irregular)

 

symptômes

acceleration (irregular)

gazoline_smell (intense)

engine_noise (irregular)

 

contexte

vapour (present)

V not ext_temp_high

 

contexte

1

 

thérapie

....

 

thérapie

....

 

 

cas 2

 

cas 4

 

 

nom

oil_cup_holed

 

nom

irregular_battery

 

symptômes

temp_indicator (red)

oil_gauge (red)

acceleration (irregular)

oil_below_car (present)

 

symptômes

acceleration (irregular)

engine_noise (irregular)

light_status (off)

 

contexte

vapour (present)

V not ext_temp_high

 

contexte

1

 

thérapie

...

 

thérapie

...

III.3 Critique de ces Solutions

On constate que les différentes méthodes proposées pour le recensement des cas tentent de partir de deux points distincts :

  • décomposition hiérarchique du domaine pour recenser les cas à partir des composants (exemple du diagnostic par réseau causal),
  • décomposition du système en ses sous tâches, pour identifier les cas à partir de celles-ci (exemple de la conception architecturale).

La démarche consistant à identifier les cas après énumération des composants peut paraître plus rassurante dans la mesure où elle semble aboutir à une collection de cas présentant une meilleure couverture du domaine (il semble aisé d'identifier tous les composants susceptibles d'être défectueux). Mais elle présente deux défauts principaux :

  • l'identification des cas (des composants défectueux pour les systèmes de contrôle, des éléments à insérer dans le bâtiment pour les systèmes de conception, etc.) ne prend en compte qu'un aspect statique, négligeant les aspects dynamique et/ou de contrôle. Soit le système représenté par la figure 4a: un composant à découpage de phase R permet de réguler la tension appliquée aux bornes d'une lampe en fonction de l'éclairement mesuré par une cellule photométrique CP et contrôlé par un analyseur A qui commande le régulateur par l'intermédiaire du composant C.

fig. 4a

fig. 4b

En fait le montage représenté par la figure 4a n'assure pas un fonctionnement correct du régulateur R (placé avant le transformateur, il fonctionne sous 220V et sous trop faible intensité). Le montage correct est représenté par la figure 4b. Aussi, sans qu'aucun des composants ne soit (statiquement) défectueux, on aboutit avec le montage de la figure 4a à une mauvaise régulation de la lumière (dysfonctionnement dynamique et de contrôle) et le transformateur bourdonne jusqu'à ce qu'il "claque". A ce moment on sera en présence d'un dysfonctionnement statique. Ce problème semble simple à résoudre parce que seuls les câbles dédiés à la fonction de régulation ont été représentés. Il n'en est pas du tout de même lorsque tous les câbles assurant les différentes fonctions sont rassemblés et plus ou moins enchevêtrés.
  • lorsque le système devient quelque peu complexe, le nombre de composants augmente, et le nombre d'interconnexions entre ceux-ci devient très important. Un dysfonctionnement ne pourra que très rarement être rattaché à un seul composant. La décomposition hiérarchique du système sera bloquée au niveau des sous fonctions de ce système.

Il semble donc souhaitable de suivre l'approche par décomposition fonctionnelle en sous tâches. Mais d'une part l'identification des composants demeure nécessaire, d'autre part aucun conseil méthodique n'est présenté dans la littérature concernant cette approche par décomposition.

Conclusion

Il serait souhaitable de disposer d'une méthode permettant une analyse décomposée en trois parties :

  • analyse fonctionnelle : identification des utilisateurs du système permettant l'identification des interfaces entre ces utilisateurs et ce système. D'où la possibilité de l'étude de la transmission des ordres (les fonctions assumées par le système) et des réponses, et l'identification des différents indicateurs, voyants, instruments de mesure, ... cette dernière conduisant également à l'identification des différents paramètres des symptômes.
  • analyse statique : identification des différents composants physiques et des liens statiques entre eux. Que se passe-t-il lorsque tel composant est défectueux ? Comment affirmer si ce composant fonctionne ou non ?
  • analyse dynamique : identification des interactions de contrôle / commande entre composants. Quels composants jouent ce rôle vis à vis de quels autres composants ? Que se passe-t-il lorsque cette commande n'est pas correcte et pourquoi ? Pourquoi cette commande est-elle incorrecte ?

III.4 Pourquoi la Méthode OOSE de Jacobson ?

III.4.A Pourquoi une Méthode de Génie Logiciel ?

Trois principales raisons ont amené à considérer l'intérêt des techniques du génie logiciel pour l'analyse d'un domaine en vue du recensement d'une base de cas :

  • on oublie parfois qu'un système expert est avant tout un logiciel (ou un progiciel). Bien que le cheminement du raisonnement (par exemple le déclenchement d'une série de règles de production) ne semble pas prévisible a priori, l'ensemble, composé du moteur d'inférences et des règles, est traduit sous la forme de 0 et de 1 pour pouvoir être exécuté sur une machine.
  • la connaissance incluse peut être exprimée sous différentes formes (règles, cas, contraintes, ...). La forme retenue correspond ni plus ni moins à un langage de programmation, et comme pour tout développement de logiciel, la phase d'analyse doit demeurer indépendante du langage de programmation, du type de SGBD retenu, etc.
  • la réalisation d'un système RBC suit le même cycle de développement que celui d'un autre logiciel: la spirale traversant de manière cyclique les phases d'analyse, de construction et de test. En effet les cas doivent être recensés, intégrés à la base de cas, testés, puis affinés (nouvelle analyse), ...

On pourrait dire que dans le domaine du diagnostic, on souhaite recenser les dysfonctionnements, alors que ce n'est pas la fonction première d'une analyse classique d'un logiciel. Il est facile de répondre qu'une bonne analyse doit identifier les exceptions, celles-ci n'étant rien d'autre que des fonctionnements anormaux du système.

III.4.B Pourquoi une Méthode Objet ?

Les principales origines de l'approche objet sont au nombre de quatre :

  • la simulation (langage Simula 1967, développement de simulations de processus parallèles) ;
  • la communication homme - machine (langage Smalltalk 1976, développement d'environnement graphiques) ;
  • les systèmes embarqués (langage Ada 1980, développement de systèmes temps réel) ;
  • et l'intelligence artificielle (différents langages de représentation de données, de connaissances complexes).

C'est cette dernière origine qui a tout naturellement conduit à étudier les approches objet pour l'analyse des systèmes RBC.

Parallélisme entre Cas et Objet

Il existe en effet un parallélisme certain entre la composition d'un cas et la définition d'un objet telle que présentée par Bouché [BOU, 94], suivant le courant de pensée de Booch :

Un objet se définit comme tout ce qui possède

Un cas est constitué de champs représentant

 

- une identité

 

- les index

 

- un état

 

- le contexte

 

- un comportement

 

- l'action ou thérapie

Finalement, un "bon cas" doit satisfaire aux mêmes contraintes ou critères que ceux auxquels doit satisfaire un "bon objet", notamment en terme de maintenance :

  • maintenance corrective: qui corrige les erreurs,
  • maintenance adaptative: qui adapte le système à un nouvel environnement,
  • maintenance évolutive: qui permet l'ajout de nouvelles fonctions.

Le cas est à la représentation des connaissances ce qu'est l'objet aux langages de programmation. Un cas est une entité qui reste indépendante des autres cas. La lisibilité est meilleure et du fait de cette indépendance, la maintenance est facilitée.

L'Analyse Orientée Objet

Les raisons précédentes sont des raisons qui nous font préférer une représentation des cas par des objets, une analyse de la base de cas en suivant une méthode objet.

Mais ici le premier objectif est d'analyser le système (sous contrôle, de conception, de planning, etc.) pour pouvoir recenser la base de cas, et non d'analyser la base de cas.

Bouché [BOU, 94] situe cette étape: "l'analyse permet de modeler un environnement en identifiant les classes et objets du vocabulaire du domaine du problème" et rappelle une suggestion de Shlaer et Mellor pour l'identification des classes et objets: "les choses tangibles, les rôles, les événements, les interactions".

Un objet doit posséder, suivant la définition présentée ci-dessus, un état et un comportement. Ainsi on retrouve les souhaits exprimés plus haut à savoir une analyse statique et dynamique.

Et surtout l'approche objet permet une grande cohérence entre les objets et leur dynamique, contrairement à l'approche systémique classique où l'on modélise séparément les données et les traitements, séparation risquant d'introduire des incohérences, des accès concurrents aux données, etc.

III.4.C Pourquoi la Méthode OOSE d'Ivar Jacobson ?

Comme le reconnaît Bouzeghoub [BOUZ, 94], OOSE est une méthode objet originale, dont le cycle de développement est l'un des plus complets. Elle suit une démarche à la fois structurée et systémique tout en intégrant l'approche objet. Ses deux principales caractéristiques et avantages sont :

  • l'identification des cas d'utilisation, scénarios fonctionnels ou vues concrètes du système, permettant une analyse modulaire et incrémentale;
  • l'introduction de trois types distincts d'objets: les objets entité (aspect statique), les objets de contrôle (aspect dynamique) et les objets interfaces (aspect fonctionnel).

On constate immédiatement que ces deux caractéristiques, présentées comme des avantages, satisfont pleinement les souhaits formulés en conclusion du paragraphe précédent.

III.4.D La Méthode OOSE

Description de l'exemple

Une analyse chromatographique en phase liquide repose sur le principe suivant: les composés chimiques d'un mélange, mélange introduit dans le système à l'aide d'un injecteur, sont plus ou moins retenus par une phase stationnaire solide (contenue dans une colonne) lorsqu'ils sont entraînés par un mélange de solvants, mélange poussé par une pompe haute pression. En sortie de colonne, ils seront détectés les uns après les autres, et la surface de chaque pic (calculée par un intégrateur) du chromatogramme résultat est proportionnelle à leur concentration dans le mélange. Il est ainsi possible de déterminer la composition inconnue d'un mélange donné de composés en comparant les surfaces de ses pics à celles obtenues avec un mélange de composition connue. Le schéma de principe du système est représenté figure 5.

fig. 5 Schéma de principe d'un système d'analyse chromatographique en phase liquide

La Phase d'Analyse de OOSE

Cette phase construit deux modèles: le modèle des besoins et le modèle d'analyse (remarque: dans tout ce paragraphe, le terme système fait référence au système sous contrôle, de conception, ou de planning et non au système RBC, sauf expressément stipulé)

Le Modèle des Besoins

Jacobson indique que ce modèle doit préciser les acteurs, les cas d'utilisation, les interfaces et les objets du domaine.

Les acteurs

Jacobson fait une distinction entre un utilisateur (instance d'une personne) et un acteur (instance du rôle que cet utilisateur joue). Cette distinction n'est pas nécessaire pour le recensement de la BC, les deux notions seront regroupées sous le terme d'utilisateur. Il en sera de même pour la distinction entre acteurs primaire (utilisateur direct du système) et secondaire (superviseur du système). Ces simplifications sont la conséquence du fait qu'une base de cas est dédiée à un type d'utilisateur précis.

Les cas d'utilisation

Un cas d'utilisation est une manière spécifique d'utiliser le système en faisant appel à une partie de sa fonctionnalité.

Les utilisateurs du système étant identifiés, il est facile de recenser les cas d'utilisation, les questions suivantes proposées par Jacobson pouvant servir de guide :

  • quelles sont les principales tâches de chaque acteur ?
  • l'acteur aura-t-il à lire/écrire/modifier une information du système ?
  • l'acteur devra-t-il informer le système des modifications extérieures ?
  • l'acteur souhaite-t-il être informé des modifications inopinées ?
Les interfaces

Une interface utilisateur reflète le point de vue logique de l'utilisateur sur le système. Mais il faut aussi identifier les interfaces entre sous-systèmes, opération plus complexe: certaines s'avéreront peut-être inutiles, mais dans ce cas les deux sous-systèmes devront être considérés comme un seul, au contraire un sous-système pourra être décomposé et une interface ajoutée.

Les objets du domaine

Leur identification et définition permet les dialogues avec l'expert et les utilisateurs. L'objectif ici est de simplement constituer un dictionnaire des concepts du domaine. Dans le cas d'une application complexe et/ou importante, l'analyste doit en effet tout d'abord acquérir une connaissance et une expérience du domaine:

Modèle de Rumbaugh

fig. 6 L'élaboration du Modèle d'analyse d'après Rumbaugh [RUM, 94]

Le Modèle d'Analyse

Le modèle d'analyse structure le modèle des besoins en trois types d'objets: les objets interfaces, les objets entités et les objets de contrôle. Durant cette phase les comportements décrits dans les cas d'utilisation sont répartis entre ces trois types d'objets.

Remarque : La phase d'analyse de OOSE doit recenser les objets au sens langage informatique. Dans la phase d'analyse du système (domaine du diagnostic, de la conception, du planning, etc.) on veut recenser les objets au sens composants, matériels ou logiciels, et déterminer leur rôle (interface, contrôle, liaisons statique ou dynamique).

Cette confusion concernant les deux significations du concept d'objet est volontairement maintenue. Le soin d'identifier le sens qu'il faut donner au mot "objet" est laissé au lecteur, afin de maintenir le parallélisme entre les deux phases d'analyse.

Les Objets Interfaces

Le rôle des objets interfaces utilisateur est de traduire les actions d'un utilisateur en événements dans le système et d'informer l'utilisateur des événements du système qu'il doit connaître. Le chromatogramme résultat est un objet interface, constitué de ("constitué de" est une liaison statique) pics, autres objets interfaces. La forme de ceux-ci constitue un paramètre subjectif (pic symétrique fig. 7a, ou présentant une traînée fig. 7d).

Chromatogrammes

fig. 7 Différentes configurations de pics

Le rôle des objets interfaces entre sous-systèmes est souvent plus complexe: par exemple le détecteur envoie un signal continu à l'intégrateur. L'objet interface entre eux doit échantillonner le signal et transmettre ces données discrètes à un objet de contrôle.

N.B : On s'aperçoit que les objets interfaces permettent d'identifier les paramètres subjectifs.

Les Objets Entités

Ils sont destinés à modéliser l'information que le système traite, et le comportement naturellement associé à cette information.

Par exemple le calculateur de surface de pic est un objet entité.

N.B.: Ils permettent d'identifier les composants et les liaisons statiques.

Les Objets de Contrôle

Ils sont destinés à recevoir les comportements qui ne seraient pas naturellement associés aux deux autres types d'objets. Typiquement ces comportements sont du type transaction, ou cloisonnement entre les objets interfaces et les objets entités.

Par exemple l'objet de contrôle entre l'interface et le calculateur de surface de pics : ce dernier doit actionner une alarme lorsque la pente de la ligne de base, calculée à partir des données transmises par l'interface, a dépassé en augmentant un certain seuil depuis un certain temps (début de pic), est passé en dessous d'un certain seuil depuis un certain temps (fin de pic) ou a changé de sens (sommet du pic ou début d'un pic non séparé du précédent). Sur la figure 7 les débuts de pic sont indiqués par l'intégrateur par un petit trait vertical vers le bas, les fins de pic par un petit trait vertical montant; ces marques fonctionnent comme des parenthèses imbriquées.

Cet objet de contrôle utilise deux paramètres principaux pour détecter les débuts et fins de pic :

  • PT (pour Pic Threshold) permet de les différencier du bruit de fond et doit être adapté à la sensibilité réglée au niveau du détecteur;
  • PW (pour Pic Width) permet de différencier les traînées de pic, les plateaux, etc. Ce paramètre doit être adapté à la largeur des pics de l'analyse.

L'observation des marques de début et de fin de pic permet de vérifier si ces paramètres ont bien reçu des valeurs correctes, ou si ces valeurs doivent être modifiées.

N.B.: Les objets de contrôle permettent d'identifier les liaisons dynamiques entre objets.

III.4.E Rappel: Les Techniques d’interview

Ces techniques doivent être employées de la même manière qu'elles le sont pour l'acquisition des connaissances. Cette étape nécessite de la part de l'analyste psychologie et pédagogie, une préparation appropriée, un enregistrement et une documentation des données (verbales, graphiques, observées, qualitatives et quantitatives), et demeure un processus plus complexe qu'un "bon" ordonnancement de "bonnes" questions. Comme indiqué plus haut, l'analyste doit tout d'abord acquérir une bonne connaissance des concepts du domaine, il pourra ensuite s'aider des schémas suivants:

  • Interview centré : Phase initiale normale la plus employée, comportant trois parties: le but ou sujet, les questions / réponses et un résumé; les réponses les plus utiles proviennent plus de questions précises que de questions générales, questions pouvant se référer à: - l'application dans son environnement, - comment est-elle réalisée, - les acteurs et les objets, - les caractéristiques des différents utilisateurs.
  • Interview structuré : Permet d'analyser peu de thèmes en profondeur plutôt que beaucoup superficiellement, demandant continuellement des éclaircissements, des explications, des conséquences, des justifications, des exemples et des contre-exemples, orienté vers l'aspect statique de l'application.
  • Introspection : On demande au spécialiste comment il résout tel problème, orienté vers les stratégies, les décisions, justifications; utilisation de scénarios de simulation
  • Enonciation : Cheminement à l'intérieur de l'application; énoncé à voix haute; sélection de sujets ni trop complexes ni trop évidents; obtention d'information concernant les aspects de contrôle, les enchaînements.
  • Dialogues spécialiste <-> utilisateur : Identification des objets interfaces; caractéristiques des utilisateurs; fonctionnalité du système.
  • Vérification : Vérification des données et de leur interprétation; aspects non résolus.

Case Based Reasoning - Cas et Base de CasCas et Base de Cas

Case Based ReasoningCase Based Reasoning

Case Based Reasoning - Exemple d'ApplicationExemple d'Application


LAURENT Jean-Marc - Consultant Gestion des Connaissances - OCSIMA Conseil Knowledge Management

Dernière révision janvier 06

Plan du site OCSIMA

Pour nous écrire, cliquez ici :