Razonamiento basado en casos
# Razonamiento basado en casos

Razonamiento basado en casos es el proceso de solucionar nuevos problemas basándose en las soluciones de problemas anteriores. Un mecánico de automóviles que repara un motor porque recordó que otro coche presentaba los mismos síntomas está usando razonamiento basado en casos. Un abogado que apela a precedentes legales para defender alguna causa está usando razonamiento basado en casos. También un ingeniero cuando copia elementos de la naturaleza, está tratando a esta como una “base de datos de soluciones”. El razonamiento basado en casos es una manera de razonar haciendo analogías. Se ha argumentado que el razonamiento basado en casos no solo es un método poderoso para el razonamiento de computadoras, sino que es usado por las personas para solucionar problemas cotidianos. Más radicalmente se ha sostenido que todo razonamiento es basado en casos porque está basado en la experiencia previa.

## Contextualización

Antes de empezar a tratar el tema del razonamiento basado en los casos de uso es necesario situar el contexto en el que se encuentran para poder realizar una primera aproximación al tema y poder comprender el porqué de su utilización.

Así pues el razonamiento basado en casos de uso o case base reasoning (CBR) es un tipo de sistema experto. Un sistema experto, desde el punto de vista de la inteligencia artificial, es un sistema que intenta imitar el comportamiento de un ser humano experto en alguna temática, es decir imitan las actividades de un ser humano para intentar resolver los problemas de distinta índole. Un ejemplo de sistema experto sería uno que se encargase de diagnosticar problemas mecánicos en un coche. Es suficientemente claro que el sistema experto lo que intentará será imitar el comportamiento que seguiría el mecánico para intentar determinar cual es el problema que presenta el automóvil. Para ello, lo que intentará el sistema básicamente será imitar el comportamiento que sigue el propio ser humano, en este caso un mecánico, para llegar a la misma conclusión a la que el llegaría, y poder dar la solución que daría un mecánico después de su análisis. Las ventajas de la creación de un sistema experto son claras, facilitar el trabajo de los expertos. Es evidente que con la creciente popularización de los medios informáticos y su continua implantación en la sociedad, han provocado que mucha gente busque estas soluciones para solucionar los problema cotidianos, que les hagan recomendaciones, sistemas de ayuda, etc. y los sistemas expertos lo que hacen es permitir a las empresas otorgar estos servicios sin la necesidad de que exista una persona física que lo haga, con lo que supone una reducción de los costes importantes. Por otro lado, cada día la información con la que se encuentran delante los sistemas expertos va creciendo, y eso provoca que en muchos casos el tratamiento de esta información sea lento y en muchos casos intratables, no por la dificultad del problema, sino por la gran cantidad de datos de entrada que tienen. Como podemos ver, en todos estos casos el sistema experto resulta de una enorme utilidad.

Ahora bien, deberíamos analizar cuales son los elementos necesarios para que un sistema experto sea realmente útil y una herramienta efectiva tanto en la propia interacción con el usuario como la calidad de la respuesta aportada por el mismo. Así pues, tenemos que todo sistema experto tendría que reunir dos cualidades claramente diferenciadas, de un lado debería de ser capaz de explicar sus propios razonamiento, es decir, aquel conjunto de reglas o pasos que utiliza el experto ir deduciendo diferentes hechos hasta llegar a una conclusión final. Por otro lado, si nos fijamos bien veremos que hasta ahora no habíamos mencionado una de la cualidades innatas que tienen los seres humanos y gracias a la cual han ido mejorando a lo largo de la historia, y que es la adquisición de nuevos conocimientos. Dada su importancia en los seres humanos no podría serlo menos en los sistema expertos, ya que sin esto puede que consiguiésemos un sistema de una gran calidad en la actualidad, pero la gran velocidad a la que avanza el mundo actualmente harían que rápidamente este se quedase obsoleto y por lo tanto resultará inútil. Para solucionar estos problemas los expertos recurren a mecanismos de razonamiento que sirven para modificar los conocimientos anteriores. Viendo esto podemos llegar a la conclusión de que los sistemas expertos, en muchos campos no intentan substituir a los expertos humanos, sino que lo que se persigue es realizar con más rapidez y eficacia todas las tareas que realiza. Debido a esto en la actualidad se están mezclando diferentes técnicas o aplicaciones aprovechando las ventajas que cada una de estas ofrece para poder tener empresas más seguras. Un ejemplo de estas técnicas sería los agentes que tienen la capacidad de negociar y navegar a través de recursos en línea; y es por eso que en la actualidad juega un papel preponderante en los sistemas expertos.

Una vez definidos con exactitud los objetivos que se persiguen con la utilización de los sistemas expertos sería interesante establecer en qué elementos se divide un sistema experto. Así pues podemos ver que según lo explicado hasta ahora existe en un primer lugar una base de conocimientos, que básicamente es donde se almacenara el conocimiento que tenga el experto sobre el tema que tratará. Aquí es donde se ve claramente que si se quisiese abarcar una gran cantidad de temas de conocimiento esto aumentaría desmesuradamente provocando o bien que el tamaño de la información lo hiciese intratable, o por otro lado que el ser coherentes con el tamaño utilizado nos llevase a penalizar la cantidad de conocimiento que tenemos del tema y por lo tanto obtener como resultado un experto mediocre. En segundo lugar tenemos una base de hechos, que será donde se irán almacenando todas aquellas deducciones que se vayan realizando en el proceso de inferencia. Una vez tenemos estos dos elementos, el siguiente paso lógico es tener un elemento que se encargue de a partir de los hechos y del conocimiento para ir generando conclusiones, más hechos, para ir siguiendo un proceso de razonamiento que le lleve a la solución final; estamos hablando de un motor de inferencia. Lo podríamos resumir en el elemento que modela el razonamiento humano. Por último, tenemos la interfaz con el usuario. Este, puesto que no es un elemento puramente del sistema de razonamiento tiene una gran importancia, ya que será la puerta de entrada del sistema. Su importancia recae principalmente en la forma que tendrá de recoger la información del usuario, ya que si la información recogida no es la adecuada, por muy buen motor de inferencia y reglas que tengamos, el resultado no será satisfactorio. Es por eso de la importancia de esta interfaz.

Habiendo definido perfectamente qué es un sistema experto y las partes que lo componen, el siguiente paso lógico seria comentar que tipos de sistemas existen y más concretamente que tipo de sistema deductivo utilizan para poder llegar a la conclusión. Utilizando esto último podríamos dividirlos en 3 tipos bien diferenciados:

### SE basados en reglas

Los sistemas expertos basados en reglas se utilizan para el proceso de inferencia de un conjunto de reglas que constituyen la base de conocimiento del experto. Este conjunto de reglas pueden ser activadas a medida que las condiciones son evaluadas positivamente y su utilización implica la creación de nuevos hechos. Este proceso permitirá a partir de unos hechos iniciales desarrollar un proceso deductivo que concluirá el momento en que no quede ninguna otra regla por utilizar.

Para realizar este tipo de tratamiento es posible hacerlo de dos maneras diferentes, por un lado realizarlo desde las evidencias hasta los objetivos (Forward chaining) o por otro lado en orden inverso que seria comenzar desde el objetivo hasta llegar al conjunto de evidencias que lo han provocado (Backward chaining).

### SE basados en redes bayesianas

Este otro tipo de sistema experto basa su funcionamiento como su nombre propio indica en las redes bayesianas. Así pues se trata de un modelo probabilístico que relaciona un conjunto de variables aleatorias mediante un grafo dirigido. El motor de inferencia que utiliza para procesar las evidencias se basa en la teoría de probabilidades y más concretamente con el Teorema de Bayes. Este método es especialmente una herramienta extremadamente útil en la estimación de probabilidades ante nuevas evidencias.

### SE basados en casos

Este último tipo de sistema experto será el que procederemos a explicar en este trabajo y analizaremos con más detalle en los siguientes apartados. Es importante este primer capítulo del trabajo para hacer ver el contexto en que se encuentra este tipo de sistema experto y poder entender con mayor profundidad el modo con el que trabaja.

A grandes rasgos, este tipo de sistemas basa su funcionamiento en experiencias anteriormente vividas, ya sea por el propio sistema o bien por la persona experta, y a partir de este conocimiento de vivencias realizar una asociación con estas experiencias para extraer una solución de esto. Como podemos ver de los tres métodos existentes, este es el que más se asemeja al modo de pensar que tenemos los seres humanos. Si nos ponemos a pensar en los niños pequeños, el tipo de razonamiento que utilizan es el basado en las experiencias que le proporciona su trato con el medio. Un ejemplo relacionado con esto sería que cuando un niño está en la cocina y toca una olla puesta en el fuego y se quema, habrá adquirido una nueva experiencia. Si otro día ve una olla en el fuego ya no la tocará porque tendrá esa experiencia. Aun así podría tener la experiencia de ver a su madre coger esa olla con los paños de cocina. De todo ese conjunto de experiencias, el niño, la siguiente vez que quisiese tocar una olla sabría que si quiere hacerlo debería servirse de paños para no quemarse. Este es un claro ejemplo del funcionamiento del razonamiento basado en casos. Podemos ver cómo el niño pequeño a través de vivencias anteriores, tanto si se trata de errores como de aciertos, adquiere experiencias que utilizará cuando tenga que enfrentarse a una nueva situación y que constituirán su nueva base de razonamiento. Esto es una pequeña introducción del funcionamiento. A continuación se hará una explicación mucho más detallada de su funcionamiento, así como de las diversas posibilidades que ofrece.

## Definición

En este capítulo comenzaremos a explicar uno de los tipos de sistema experto que existen: el razonamiento basado en casos o case based reasoning (CBR). La mejor forma para comenzar a entender una palabra es intentando entender su significado, es por eso que comenzaremos analizando su definición:

“A case is a contextualized piece of knowledge representing an experience that teaches a lesson fundamental to achieving the goals of the reasoner”, [Kolodner, 1993]

Como podéis ver el análisis de la expresión se hace directamente del inglés y esto viene motivada directamente por el hecho de que la propia traducción puede hacer perder parte del significado de la definición, cosa que perjudicaría su análisis. Así pues comenzando con el análisis la primera palabra importante es “case”. Este sistema de razonamiento se basa en una unidad mínima llamada caso. Un caso se puede definir como una representación de una experiencia anterior, una vivencia. Podría ser visto como una caja en la que encontramos todas aquellas cosas que pasaron en la experiencia. Una buena analogía seria utilizando reglas, podríamos describir este caso como un conjunto de reglas relacionadas con una experiencia. Debe quedar claro que las reglas por sí solas no tienen significado, ya que es en el conjunto de la experiencia donde encontramos la mínima expresión. Si considerásemos reglas sueltas de esta experiencia nos encontraríamos con que estaríamos delante de un sistema experto.

Por otro lado tenemos que este case tiene por adjetivo “contextualizad piece of knowledge”. Es importante hacer notar sobre todo lo de contextualizado ya que, como hemos dicho antes este conocimiento representa un conjunto de hechos que han transcurrido en la experiencia. Una parte de estos hechos corresponden al contexto en el que transcurre la experiencia. Este contexto en el sistema experto también tiene mucha importancia ya que en el proceso de inferencia puede ser utilizado; esto se explicará más adelante. Un ejemplo que ilustra esto, basado en el ejemplo del niño seria que su madre le hubiese dicho que no tocase la olla antes de quemarse. De este contexto bien se podría deducir en otros casos que siempre hay que hacer caso a las madres porque tienen razón.

Es muy importante lo que lo sigue: “representing an experience”, que lo que implica es que el caso está basado en un conocimiento, es decir no es algo creado artificialmente sobre hechos sino que está basado en un conocimiento existente previamente y por lo tanto que podemos considerar cierto desde el inicio. Además, el hecho de que hablemos de experiencia ya nos comienza a hacer notar que este sistema estará muy ligado a la adquisición de conocimiento externo, ya que al estar basado en las experiencias será necesario que el sistema vaya adquiriendo nuevas experiencias para mejorar su razonamiento.

Continuamos con “that theaches a lesson fundamenal”. Con esto lo que se quiere indicar es que las experiencias que tenemos en el sistema no se refieren a cualquier experiencia sino sólo a aquellas que nos aportan alguna información sobre el tema tratado por el sistema experto, además de no repetir experiencias ya existentes con el mismo contexto, ya que no aportan nueva información al sistema. Finalmente tenemos “to achieving the goals of the reasoner” que lo que nos indica que el uso de los casos persiguen directamente la consecución de los objetivos del razonamiento, que como en cualquier sistema experto es la consecución de una conclusión que dependiendo del tipo de problema puede ser muy variado.

A través de este análisis del significado del tema que vamos a tratar, podemos comenzar a introducirnos de lleno en analizar las diversas soluciones que existen para implementar este tipo de sistema experto. Aun así antes introduciremos en la historia del razonamiento basado en casos dentro de la inteligencia artificial, así como ha ido evolucionando a lo largo de los años hasta la actualidad.

## Historia

El razonamiento basado en casos tiene sus raíces en el trabajo de Roger Schank y sus estudiantes en la universidad de Yale a principio de la década de los 80. El modelo de memoria dinámica de Schank fue la base de los tempranos sistemas CBR: Janet Kolodner's CYRUS and Michael Lebowitz's IPP. Otra escuela de razonamiento basado en casos también emergió en la década del 80, investigando asuntos tales como el razonamiento basado en casos en el razonamiento legal, el razonamiento basado en la memoria (una manera de razonar con ejemplos en las máquinas masivamente paralelas, y combinaciones del razonamiento basado en casos con otros métodos de razonamiento. En los años 90, el interés en el razonamiento basado en casos creció en la comunidad internacional, como evidencia el establecimiento de una conferencia internacional sobre el razonamiento basado en casos en 1995, así como europeo, alemán, británicos, el italiano, y otros talleres de razonamiento basado en casos.

La tecnología del razonamiento basado en casos produjo numerosos casos de éxito. El primero fue en un sistema llamado Lockheed's CLAVIER utilizado para presentar a las piezas compuestas que se cocerán en un horno industrial de convección. Razonamiento basado en casos está siendo utilizado intensamente en aplicaciones de ayuda de escritorio como Compaq SMART system. Existen numerosas herramientas de soporte de decisiones basadas en el razonamiento basado en casos disponibles comercialmente, como:

* k-Commerce de eGain (anteriormente Inference Corporation).
* Kaidara Advisor de Kaidara (anteriormente AcknoSoft).
* SMART de Illation.

## Denominaciones para el razonamiento basado en casos

A lo largo de la caracterización que hemos hecho del razonamiento basado en casos hemos podido observar que el principal objetivo que persigue es identificar el problema con el que nos encontramos, y para ello es necesario encontrar uno o varios casos anteriores a este, que nos proporcionen la solución para el caso en el que nos encontramos. Una vez hayamos encontrado la solución será posible añadir este último caso dentro de la base del conocimiento del sistema. Para realizar este proceso, es necesario saber muchas cosas, como por ejemplo en que parte del proceso nos centramos, entre otros. Dependiendo de cómo elijamos cualquiera de estas consideraciones será diferente como se desarrollará el razonamiento. El problema con el que nos encontramos al analizar el paradigma del razonamiento basado en casos es que existe una gran cantidad de métodos para organizar, utilizar e indexar el conocimiento que tenemos del mundo, que en este caso se hace a través de los casos. Como ya se había comentado anteriormente los casos deben ser almacenados como unicidades de conocimiento. Para indexar esta gran cantidad de casos se puede utilizar un vocabulario prefijado o bien cualquier palabra del propio vocabulario, dependiendo de lo extenso que sea el vocabulario necesario en el contexto del problema. Así pues, habíamos dicho que la solución para un caso es extraída directamente de otras experiencias, casos, que se almacenan en la base de conocimiento, aunque también pueden usarse diversos casos para extraer la solución del que estamos trabando. Así pues se puede comenzar a intuir que cuando hablamos de razonamiento basado en casos, estamos generalizando mediante este término todos aquellos métodos que se utilizan para crear un sistema experto a partir de la filosofía del uso de casos. Aunque en este trabajo estamos utilizando el término de razonamiento basado en casos para referirnos a este problema, existen multitud de otros términos que son usados para definir, si no bien el mismo problema exactamente, problemas que podemos considerar equivalente y por lo tanto son términos equivalentes a utilizar el de razonamiento basado en casos. Todo esto ser así es conveniente analizar cuales son esas pequeñas diferencias en cada una de esas denominaciones. A continuación detallaremos las diferentes denominaciones para definir este problema, con las particularidades que presenta cada una.

· Razonamiento basado en ejemplos

Este término se utiliza para hacer hincapié en que los casos que tenemos almacenados en la base de conocimiento son realmente ejemplos de que lo ha sucedido en diferentes contextos al realizar un conjunto de acciones. El problema aquí es determinar al insertar un nuevo ejemplo si este resulta ser la extensión de un ejemplo ya existente en el sistema, es decir, añade información a un ejemplo ya existente en el sistema, o si por el contrario se corresponde con un nuevo ejemplo, el cual hay que añadir a la base de conocimiento, ya que no se corresponde con un conocimiento anterior. Así pues, podemos ver que este problema básicamente es un problema de clasificación en el que tenemos que situar correctamente el nuevo ejemplo.

· Razonamiento basado en instancias

Este término hace referencia a una especialización del anterior. La mayor diferencia que existe es que hace especial hincapié en el análisis sintáctico del razonamiento. El problema que existe principalmente en este tipo de razonamiento es la dificultad de guiar el proceso de asociación del caso del que previamente partimos con aquel que está en la base de conocimiento. Así pues este tipo de razonamiento lo que intenta es compensar la falta de guía para llegar al caso que es conocido y se encuentra en la base de conocimiento del sistema. Para ello se utilizan un gran número de instancias para dirigir el razonamiento. La representación de estas instancias es normalmente en forma de vectores. Este tipo de razonamiento ha sido estudiado recientemente por los investigadores Kibler y Aha.

· Razonamiento basado en memoria

Este término enfatiza en ver la colección de casos como una gran memoria, viendo entonces el razonamiento como un proceso de acceso y búsqueda en esta memoria. La organización de la memoria y su acceso seria la parte central del razonamiento basado en casos. Este tipo de técnicas se ven beneficiadas por las técnicas de procesamiento paralelo, cosa que los diferencia del resto de soluciones. Así pues el acceso y el guardado se basan básicamente en criterios puramente sintácticos, es decir en como está escrito algo y no el significado del mismo.

· Razonamiento basado en casos

Aunque se utiliza el término de razonamiento basado en casos como un término genérico en todo el documento, típicamente este método tiene una serie de características que lo distinguen del resto y que vale la pena comentar. Comenzaremos comentando que cuando hablamos de caso damos por hecho que este poseerá un cierto grado de riqueza en la información que contiene, es decir la descripción de la experiencia esta perfectamente descrita y se intenta que no falte información en su descripción, además es necesario que toda esta información que contiene posea un cierto grado de organización que permita su rápido entendimiento y sobre todo llegar a la información necesaria rápidamente minimizando acceder a información no necesaria. Por otro lado, nos encontramos con otra particularidad y es la capacidad que existe para modificar o adaptar este caso a una solución cuando se está solucionando un problema en un contexto diferente. Además como se había comentado cuando analizábamos la descripción del significado, es muy importante el contexto del conocimiento, concretamente la riqueza con el que estará descrito, su representación y el rol que tenga con el conocimiento principal; resulta evidente que a un mayor conocimiento del contexto las conclusiones que se podrán obtener del razonamiento serán mejores. Como contrapartida de esto, el exceso de información puede provocar que sea demasiado lento en el proceso de razonamiento. Es por eso que es necesario buscar un término medio entre estos dos términos.

· Razonamiento basado en analogías

Este término muchas veces es usado como sinónimo del razonamiento basado en casos debido a que tiene las mismas características que el anterior. Aun así tiene una serie de particularidades que lo hacen diferente. Destacar en primer lugar que a diferencia del anterior este permite la caracterización de métodos para solucionar problemas basados en casos que tenemos en la base de conocimiento pero que tienen un dominio diferente. Para entenderlo mejor podemos utilizar el ejemplo del niño y la olla y podemos ver que este caso podría ser extrapolado a otro contexto como puede ser que el niño estuviese en el campo y su madre le advirtiese de algo. Podemos ver que los contextos son totalmente diferentes, pero aun así existen las suficientes conexiones, en este caso la madre, que permite formalizar un razonamiento del nuevo caso sobre el caso preexistente. Así pues el estudio sobre este tipo de razonamiento se encuentra en el estudio de los casos existentes en la base de conocimiento y su reutilización, proceso que recibe el nombre del problema de mapeado, que básicamente consiste en encontrar la manera de transferir o mapear la solución que presenta alguna analogía (llamada fuente) con el problema que estamos tratando (llamado objetivo).

Como podemos ver, de una manera u otra todos los términos todo y que tienen sus particularidades se intentan resolver el problema de la creación de un sistema experto a partir de la misma caracterización del problema. A pesar de existir esta diversidad de términos, en este trabajo seguiremos utilizando el de “razonamiento basado en casos” pero en un ámbito genérico para englobar todas estas particularidades.

## Funcionamiento

Hasta ahora lo que hemos hecho ha sido en primer lugar la visualización del contexto en el que transcurre el desarrollo de este problema, para luego continuar con una mejor caracterización de que era realmente el razonamiento basado en casos a partir de su definición. El siguiente paso lógico una vez hemos realizado todo seria describir con mayor profundidad como es el proceso de desarrollo de este tipo de razonamiento y que es lo que se hace en cada uno de los pasos del mismo.

Como la mayoría de las cosas de la inteligencia artificial, existen multitud de técnicas para implementar una misma cosa. Este caso no es una excepción y nos encontramos diversas maneras de hacerlo, aunque en este trabajo nos centraremos principalmente en dos de ellas:

* Un modelo de proceso en forma de ciclo
* Un método estructurado en tareas

A continuación procederemos a describir los dos modelos de una forma más rigurosa y en profundidad, no sin antes añadir que estos dos modelos resultan ser complementarios entre sí y representan dos vistas diferentes del razonamiento basado en casos, es decir dos formas diferentes de ver este mismo problema. La primera de ellas se basa en los modelos dinámicos en lo que se hace es dividir el problema inicial en subproblemas, comprobando las dependencias que existen entre ellos y los productos que resultan de su unión. Es decir, estos problemas son resueltos secuencialmente en forma de ciclo hasta llegar al final del mismo ciclo.

Por otro lado tenemos el segundo método que se basa en una descomposición en diferentes tarea, en el que dar solución supone resolver esos métodos que serán la base para resolver aquellos métodos de los cuales son dependientes. Así pues en este caso los subproblemas pueden ser resueltos en cualquier orden mientras los métodos dependientes de este problema hayan sido resueltos con anterioridad.

### El ciclo del razonamiento basado en casos

En el proceso de dividir el razonamiento basado en casos en diferentes subprocesos nos encontramos el ciclo que lo conforman puede ser dividido en 4 procesos claramente diferenciados:

* RECORDAR los casos similares al que analizamos.
* REUTILIZAR la información y el conocimiento que tenemos en este caso para resolver el problema.
* REVISAR la solución propuesta.
* RETENER las partes de esta experiencia que nos puedan ser útiles para la resolución de futuros problemas.

Cuando nos encontramos delante de un nuevo problema para el cual tenemos que dar una solución lo primero que tenemos que hacer es dado ese determinado problema recordar los casos relevantes que pueden solucionarlo. Estos casos relevantes tendrá que ser una selección de aquellos casos de los que disponemos en la base de conocimiento del sistema experto. Expondremos para este caso un ejemplo diferente al del niño y la madre. Por ejemplo, supongamos que Aragonés quiere preparar el siguiente partido de la selección española para la Eurocopa. Y la experiencia más relevante que él puede recordar es aquella en la cual España ganó su primera Eurocopa, de lo cual hace muchos años. El caso de recuerdo de Aragonés estaría compuesto por todo lo que se hizo en aquel momento para ganar la Eurocopa (táctica, equipos contrarios) que hicieron que ganases, así como las decisiones que fue tomando a medida que iban avanzando en la eliminatoria.

Una vez tenemos este conjunto de casos que guardan una serie de similitudes con el caso para el cual tenemos que proponer una solución lo que tenemos que hacer es adaptar la solución de todos esos problemas, en su globalidad o solamente en alguna de sus partes que nos interese para transformar el contexto de esos problemas en el problema que tenemos actualmente. En el ejemplo que estamos siguiendo Aragonés tendría que adaptar la experiencia que tenía de aquel equipo, cambiar los jugadores por los que ahora tiene y modificar las cualidades que tienen los equipos con los que está emparejados.

Con todo esto tendríamos una primera versión de la solución. Aun así es necesario probar la solución en el mundo real o en una simulación y si es necesario revisarla. Con esto lo que se quiere decir es que este es un proceso circular en el que reutiliza diversos casos de la base de conocimiento, se revisa la solución y si no es satisfactoria se vuelve a modificar con la inclusión o la eliminación de los casos que fuesen incorrectos o añadiendo aquellos que faltasen para perfeccionar la solución. Continuando con el ejemplo que estamos utilizando esto significaría que Luis iría probando alineaciones y medida que comenzásemos a perder partidos iría modificando las alineaciones según los criterios que fuesen utilizados en la Europa que se ganó.

Finalmente el último paso es la retención. Después de que la solución haya sido adaptada satisfactoriamente para solucionar el problema dado, almacenaríamos la experiencia resultante como un nuevo caso en la memoria. En nuestro caso almacenaría la experiencia resultante de haber jugado el partido y las conclusiones a las que ha llegado. Tanto si ha ganado como si ha perdido. Recordemos que uno de los intereses del razonamiento basado en casos residen no sólo en recordar los casos resultantes que hayan sido acierto sino aquellos en que se ha fallado ya que con estos podremos mejorar el razonamiento del sistema experto ya que cuando se tenga que llevar a cabo un tipo de razonamiento similar se sabrá que no se tiene que seguir esa línea de razonamiento ya que lleva a un resultado incorrecto.

A continuación en la siguiente imagen ilustramos como se lleva a cabo este ciclo:

A través de esta imagen podemos ver con mayor claridad el ciclo que sigue este sistema de razonamiento y sobre todo es importante destacar el carácter central que tiene la base de conocimiento. Queda muy patente en este esquema como cualquiera de las etapas guardan una estrecha relación con el conocimiento existente y destacar también como el último paso reside en añadir el nuevo caso que hemos generado dentro de la base de conocimiento para poder utilizarlo en futuros razonamientos. Destacar también que la influencia que tiene esta base de conocimiento puede ser variable, de la poca influencia a la mucha influencia según el método de razonamiento basado en casos que hayamos utilizado.

### Razonamiento basado en casos basado en tareas jerárquicas

El proceso que hemos visto en forma de ciclo tiene por objetivo enfatizar el carácter secuencial que tienen sus pasos. Para una mayor descomposición y descripción de los 4 pasos que anteriormente hemos mencionado, utilizaremos una visión del problema en forma de tareas donde cada paso o subproblema, es visto como un objetivo que tiene que alcanzar el razonamiento basado en casos.

Mientras que en el proceso anterior teníamos una vista glotal, externa, de lo que estaba sucediendo en cada uno de los pasos que dábamos en el proceso de razonamiento, tener una vista orientada a las diferentes tareas que tenemos nos permite describir con un nivel de detalle superior lo que está sucediendo y los mecanismos utilizados desde la perspectiva del razonamiento basado en casos. En el nivel de la base de conocimientos, el sistema experto es visto como un agente que tiene una metas que conseguir, que es dar una solución, y los medios de los que dispone para llegar a dicha solución.

Así pues la descripción puede ser hecha desde tres perspectivas diferentes:

* las tareas que tiene que desarrollar el sistema,
* los métodos que utiliza para llegar al objetivo
* y dominio de la base de conocimiento del sistema.

Así pues, como hemos dicho antes, las tareas persiguen el objetivo del sistema, y estas tareas están elaboradas a partir de la aplicación de uno de los métodos existentes en el sistema. Pero hay que tener en cuenta que para que un método pueda alcanzar la resolución de una tarea es necesario que todas aquellas tareas de las que dependa hayan sido realizadas. Así pues, podemos ver como el marco de trabajo en el que nos movemos esta fuertemente influenciado por esta base de conocimiento.

En el gráfico hemos utilizado nombres en negrita para designar las tareas, mientras que los métodos utilizados han sido escritos en cursiva. Otra cosa importante a mencionar son las diferentes uniones existentes entre diferentes tareas que son representadas por nexos de unión entre ellos, nexos que reciben el nombre de descomposición de tareas. Lo primero que llama la atención es que el objetivo principal que se encuentra en la raíz del árbol es el objetivo final del razonamiento que es la resolución del problema. Así pues no es de extrañar encontrarnos en la parte inferior los 4 pasos en los que habíamos descompuesto el ciclo de resolución del razonamiento basado en casos.

Como podemos ver a simple vista, en estas dos cosas que acabamos de decir se hace patente la gran diferencia que existen entre ambos métodos que hemos descrito, mientras en uno teníamos que ir siguiendo cada uno de los pasos descritos, en este podemos ir realizando los pasos que queramos a medida que disponíamos de la información necesaria, que ya puede venir directamente de la base de conocimiento o como resultado de otro proceso. Así pues en este ejemplo podemos apreciar más claramente como se realiza con esta visión y es que tenemos los diversos conjuntos de tareas y estas se van agrupando progresivamente para obtener como resultado final la resolución del problema que queríamos. Así pues podemos ver como todas las tareas en que partimos el problema son suficientes para resolver todo el problema.

## Problemática

Una vez hemos analizado en profundidad todo el proceso de cómo llevar a cabo el razonamiento basado en casos seria importante antes de continuar analizar todos aquellos problemas que existen para llevar a cabo una correcta implementación y la forma más eficaz para solucionarlos. Como ya podemos intuir, estos problemas se encontraran principalmente en dos partes claramente diferenciadas, por un lado tendremos todos aquellos relacionados con el mantenimiento de la base de conocimiento, y por otro lado tendremos aquellos relacionados con la línea de razonamiento a seguir. En el fondo son dos problemas bastante relacionados ya se necesitan el uno al otro para alcanzar la solución final.

Así pues a continuación procederemos a describir cada uno de los problemas con las posibles soluciones para evitarlos.

### Representación del conocimiento

Hasta este momento no habíamos mencionado en ningún lugar como íbamos a organizar la representación de los casos, y ciertamente este es uno de las partes más importantes de la utilización de este sistema, ya que según la organización que hayamos elegido nos condicionará en gran medida la eficiencia que tendrá el sistema experto y como consecuencia de esto la calidad de la solución que obtendremos; es por eso que este apartado es merecedor de una atención especial.

El razonamiento basado en casos es muy dependiente de la estructura en que se almacenando los casos. Como un problema es solucionado mediante experiencias anteriores, el proceso de búsqueda y unión entre este caso solución y el caso que estamos intentando solucionar tiene que ser necesariamente eficiente. El principal problema con el que nos encontramos es decidir cuales serán los elementos que almacenaremos en el caso, encontrado una estructura apropiada para hacerlo. Además será necesario decidir una estructura en la que almacenaremos el conjunto de casos, es decir, como realizaremos la organización de los casos que conforman la base de conocimiento, así como su indexación, dos de las características más importantes para asegurar un rápido acceso a los casos. Finalmente nos quedaría el problema de integrar este paquete de casos dentro del modelo de la base de conocimiento de manera que este conocimiento pueda ser incorporado al sistema y accedido por el resto del sistema experto.

Una vez definida la problema con la que nos encontramos es necesario describir alguna manera para solucionar estos problemas. En este caso básicamente nos encontramos con dos posibles implementaciones: un modelo de memoria dinámica desarrollado por Schank and Kolodner y el modelo de categorías y ejemplos de Porter y Bareiss.

**Modelo de memoria dinámica**

La idea básica de este modelo consiste en organizar todos aquellos casos que comparten un conjunto de propiedades bajo una estructura más general, llamada episodio generalizado. Un episodio generalizado (EG) contiene tres tipos diferentes de objetos: normas, casos e índices.

Las normas son las características comunes de todos los casos que comparten las mismas características, es decir bajo el mismo EG. Por lo que respecta a los casos no es necesario mayor explicación ya que se trata de los propios casos estudiados hasta el momento. Finalmente los índices son aquellas características, a diferencia de las normas, que diferencian los diferentes casos que forman un EG. Así pues un índice apuntará más directamente a un episodio más generalizado o directamente a un caso. Estos índices están formados por dos partes, el nombre del índice y el valor del índice.

Es fácil ver que toda la base de conocimiento que está formada por los casos es una red que va discriminando entre los diferentes casos, donde cada nodo del grafo es una generalización del episodio. También podemos ver como cada pareja de valores de los índices apunta de una generalización de un episodio a otra. Así pues podemos ver como este esquema que planeamos es redundante ya que existen múltiples caminos hacia un caso en particular o a un EG.

Cuando tenemos una descripción de un nuevo caso y tenemos que realizar la búsqueda de la mejor coincidencia con otro, el caso que nos dan de entrada es introducido en la parte de superior de la estructura donde almacenamos la información, comenzando por el nodo principal. El proceso de búsqueda es similar tanto para la recuperación del caso como para el almacenamiento. Así pues lo que sigue a esto es un paso bastante lógico y consiste en que cuando una o varias de las características del caso coincide con una o varias de las de algún EG, el caso inicial del que partíamos es discriminando basándose en las características no comunes. Es decir lo que estamos haciendo es ir haciendo bajando el caso por el árbol que tenemos hasta llegar a alguna de las hojas. Durante el proceso de guardado de un nuevo caso, cuando alguna característica del caso coincide con alguna característica de algún caso existente, un nuevo episodio general es creado, siendo entonces los dos casos discriminados indexándose debajo de índices diferentes debajo de este episodio. En el caso de que durante el almacenaje de este caso, dos de los casos o dos de los EG terminaran con el mismo índice , una nueva generalización seria automáticamente creada. Así pues podemos ver de donde viene el nombre del método, recayendo en esta característica dinámica de recolocación de la memoria a medida que vamos introduciendo nuevos casos.

Por lo que respecta a la recuperación de los casos una vez se encuentran dentro de la estructura, el funcionamiento consiste en buscar dentro del EG que tenga más normas en común con la descripción del problema; esto resulta lógico teniendo en cuenta la descripción que habíamos dado de que era una norma. Los índices que compartan este mismo EG , son entonces revisados con el objetivo de buscar aquel caso que contenga la mayoría de las características problemáticas. Por otro lado, el almacenaje de un nuevo caso es realizado siguiendo la misma estructura pero añadiendo antes descrito de añadir dinámicamente los nuevos episodios si son necesarios. Esto provocará que fácilmente ocurra una gran crecimiento del número de índices debido al incremento del número de casos, es por eso que muchos sistemas que utilizan esta estructura imponen límites a la generación de los índices para los casos. Un ejemplo de este tipo de representación de conocimiento seria CYRUS.

**Modelo de categorías y ejemplos**

La filosofía básica de este método consiste en entender los casos como ejemplos del mundo real, no como simple conceptos. En el mundo real no todas las características de los objetos tienen la misma importancia, hay alguna que tienen más peso que otras en la descripción de los mismo, y lo que este modelo intenta destacar es esto. Además estos ejemplos pueden ser categorizados, es decir, se pueden organizar según las categorías a las cuales pertenece.

La base de hechos se encuentra dentro de una red estructurada por categorías, casos y apuntadores a índices. Tal como lo hemos definido tenemos que cada caso está asociado a una categoría determinada y los índices, teniendo la misma definición que en modelo anterior, son de tres tipos: índices que unen las características de los problemas con los casos o las categorías, también son las uniones entre diferentes casos vecinos, entendiendo por vecinos aquellos casos que solo varían en unas pocas características. El último tipo es el de aquellos que representan la unión entre las categorías y loas casos asociados a esas categorías. Como podemos ver es bueno destacar que las características no solamente pueden estar vinculadas a los ejemplos sino que también a las propias características, siendo entonces estas características comunes para todos los ejemplos que formen parte de esa categoría.

Encontrar un caso en la base de conocimientos que coincida con la descripción del mismo se hace mediante la combinación de las características de la entrada y seleccionando aquellas que sean de la misma categoría, teniendo en cuenta que para seleccionar la categoría nos tendremos que basar en aquella categoría que tenga más características en común con el caso del cual partimos. Para almacenar un nuevo caso lo que tenemos que hacer es buscar un caso que coincida con el que queremos introducir utilizando para ellos los índices. Si el caso que encontramos solamente tiene pequeñas diferencias con el caso que ya existe no existe la necesidad de guardado o bien se pueden unir las características de los dos casos, en el caso de que no se encuentre ningún caso, el nuevo caso se introducirá dentro de la base de hechos.

### Métodos de recuperación

El proceso de recuperación comienza con una descripción parcial del problema de entrada, teniendo como objetivo de la etapa de recuperación dar como respuesta un conjunto de casos, los cuales presenten un mayor número de similitudes con el caso inicial, es decir que tengan las características más parecidas posibles con el caso inicial. El proceso de identificación comienza básicamente con una serie de descripciones del problema que serán la base a partir de la cual intentaremos buscar alguna similitud con algún caso existente en la base de conocimiento.

A continuación procederemos a describir las diferentes etapas en que se puede dividir la recuperación de los casos que tenemos en la base de conocimiento.

Identificación de las características

Para la identificación de un problema en primer lugar, como ya habíamos dicho es necesario conocer unas primeras descripciones del problema, pero normalmente, y especialmente en los casos en que tratamos con problemas relacionados con grandes cantidades de conocimiento, es necesario una visión más cercana al problema, que nos permita entender el problema, así como el contexto del mismo. Así pues es necesario que se proporcione no solamente una descripción del problema principal que resolver sino también una descripción de todos aquellos elementos importantes del contexto de los problemas.

Coincidencias iniciales

El trabajo de encontrar una buena asociación entre un caso de la base de conocimiento y el problema que tenemos planteado puede ser dividido en dos subprocesos diferentes: un proceso inicial donde se buscan posibles candidatos, y un segundo proceso donde se seleccionan de todos esos candidatos los más adecuados. En primer lugar, para encontrar ese conjunto de casos que tengan alguna coincidencia con nuestro problema nos tendremos que basar en las descripciones del problema inicial, así como en las características que poseen cada uno de los casos almacenados. Existen principalmente tres maneras de recuperar un caso o un conjunto de casos: siguiendo la indexación directa que marcan los punteros hacia las características del caso, buscando dentro de la estructura indexada, o buscando un modelo de caso dentro de la base de conocimiento.

Los casos que extraigamos tienen que tener características en común con el problema que queremos solucionar, y como resulta evidente los casos que tengan gran parte de sus características en común serán los mejores candidatos para ser seleccionados, pero dependiendo de la estrategia estos no serán los únicos candidatos seleccionados, pudiendo serlo también aquellos casos que tengan un conjunto de características en común con el problema.

Selección

Después de haber realizado una búsqueda más o menos exhaustiva sobre el conjunto de casos para extraer aquellos casos que presentasen más características en común, ha llegado el punto en que será necesario seleccionar de este conjunto de candidatos aquellos casos más propensos a ser una buena solución para el problema. Muchas veces la mejor coincidencia entre el caso y el problema es determinada por una revaluación de la primera selección que se le hizo. Esto se hace con el objetivo de buscar posibles explicaciones de por qué se hizo esa selección, es decir se busca la manera de justificar esas elecciones. Si los motivos que se dieron no son lo suficientemente poderosos como para mantener ese caso como posible resultado este es descartado y se continua con el resto de casos existentes en el sistema. Este proceso de elección es más elaborado que el anterior, principalmente porque en el anterior el conjunto de casos que teníamos que comprobar era muy superior al actual y por lo tanto las comprobaciones que podíamos realizar eran menores, pero con un conjunto de casos más pequeño es posible realizar unas pruebas más exhaustivas. El proceso de selección normalmente genera una serie de consecuencias de la elección de cada caso, consecuencias que luego pueden ser revaluadas. Así mismo, en este proceso de selección los casos son puntuados según su mejor similitud con el problema inicial o no, siendo esta una manera ya de ordenarlos según su adecuación para resultar futuros candidatos finales. Otros criterios que se utilizan en este proceso de selección es el discriminar el hecho de que alguna característica determinada no sea igual, etc.

Al final de la aplicación de este paso nos encontraremos con un conjunto de casos que serán los que han sido seleccionados para ser reutilizados, es decir, para ser utilizados en la fase de elaboración de una solución para el problema de entrada que se nos planteaba. Es importante que como resultado de este proceso de selección, los casos resultantes sean lo suficientemente similares a los objetivos requeridos por el problema, ya que si este proceso no es todo lo adecuado que se quisiese, en siguientes pasos los resultados que se obtendrían no serían tan buenos como los deseados.

### Métodos de reutilización

La reutilización de los casos tiene mucha importancia ya que con una correcta implementación de esta técnica nos permitirá mejorar la forma en que aprovechamos las características que tienen los casos y por lo tanto mejorará la forma en que construimos la solución final del problema.

La reutilización de los casos recuperados se fundamenta básicamente en dos aspectos:

* Las diferencias entre el caso recuperado de la base de conocimientos y el nuevo caso.
* Que parte del caso recuperado de la base de conocimiento puede ser utilizado en el nuevo caso.

Para todo esto existen una serie de técnicas que procederemos a describir que nos permitirán mejorar la forma en que reutilizamos los casos existentes en el sistema.

Copiar

En los procesos de clasificación más simples los que se hace es en primer lugar una abstracción de las características del caso que queremos reutilizar olvidándonos de toda aquella información no relevante. Todas estas características son copiadas al nuevo caso que estamos construyendo. Como podemos ver es un método muy sencillo pero hay que tener en cuenta varias cosas como son las diferencias entre los dos casos y que muchas veces no se pueden copiar directamente algunas características sin antes adaptarlas. Este proceso de adaptación lo vemos a continuación.

Adaptar

Existen dos maneras diferentes para rehusar los casos, o bien rehusar directamente toda las solución del caso en el que nos basamos o bien reutilizar el método que utilizamos para llegar a la solución de ese caso, es decir la manera en que conseguimos llegar a esa solución. Resulta evidente que en la reutilización de un caso, este caso no es el mismo que estamos intentando solucionar actualmente y por lo tanto las soluciones que tenemos en la base de conocimiento no serán en la mayoría de los casos soluciones que ofrecer para solucionar el nuevo. Así pues, todo y que no puedan ser aplicadas las características del caso que tenemos en la base de conocimiento sobre el nuevo caso si que se puede adaptar estas para el nuevo caso mediante una operación de adaptación. Estas operaciones tienen que ser organizadas de alguna manera, y una manera de hacerlo es indexándolas mediante las diferencias entre los dos casos.

### Métodos de revisión

Otra de las cosas importantes en el proceso de construcción de la solución es la validación de que la solución que hemos construido sea realmente correcta y solucione el problema que hemos planteado. Todo y así como hemos dicho estos sistema no solo se basan en las soluciones correctas que se proporcionan, si no que las soluciones incorrectas también son introducidas en la base de conocimiento como ejemplo de errores de manera que el sistema no vuelva a generar soluciones con ese error y permitir mejorar la calidad de las soluciones. Esta fase es lo que llamamos la revisión y básicamente la podríamos dividir en 2 etapas: evaluar la solución generada, si esta es correcta la añadimos a la base de conocimiento mientras que si esta es incorrecta solucionaremos los problemas que esta tenga y aprenderemos de este error.

A continuación procederemos a describir de una manera más detalla cada uno de estos procedimientos:

Evaluación de la solución

La evaluación de la solución se realiza aplicando la propia solución en el mundo real, es decir probando que sucedería si aplicásemos la solución obtenido en el contexto que se nos había producido el problema. Es evidente que la solución no tiene por qué probarse directamente sobre el mundo real, sino que este mundo puede simularse y recoger los datos que se obtienen de esta simulación. El tiempo que tardamos en ver los resultados de la prueba pueden variar dependiendo del contexto en el que nos encontremos pero lo que si que es cierto es que el resultado que obtendremos de estas pruebas es si la elección de esta solución ha sido correcta o no. Para ello tendremos que comprar los valores obtenidos como solución de la aplicación de la solución en el contexto con los valores que esperábamos obtener, ya sea el correcto funcionamiento de un sistema, la correcta solución de un problema, etc. Por lo tanto como resultado final de esta evaluación obtendremos si la solución propuesta se ha comportado como esperábamos en el contexto de pruebas.

Reparar los errores

Una vez hecha la evaluación de la solución el siguiente paso lógico consiste en la reparación de los errores que pudiese tener la solución respecto a los datos que nos había proporcionado la experimentación. Como ya habíamos comentado antes en el proceso de corrección de los errores no solamente se persigue la corrección de los propios errores que presenta la solución, sino que lo que se persigue es añadir un nuevo caso al sistema pero en este caso referenciado como error. Esto en el fondo también es un conocimiento, ya que ayudara al sistema experto en la toma de futuras decisiones permitiendo que el sistema no vuelva a cometer los mismos errores. Estos casos en futuros razonamiento no podrán ser considerados como posibles soluciones sino que tendrán que ser considerados como soluciones no válidas, es decir si en el proceso de razonamiento se llegase a una de estas soluciones, no haría falta continuar con el proceso de validación de la solución ya que directamente podríamos llegar a la conclusión que es una solución incorrecta. Además no es solo eso sino que estos casos erróneos pueden ayudar a dirigir la línea de razonamiento hacia nuevas soluciones que antes no podrían haber sido alcanzadas. En el ejemplo que habíamos pues de Luís y la Eurocopa, un ejemplo de reparar errores seria por ejemplo poner a Cesc a jugar el primer partido y ver como no hace nada, entonces viendo esto “aprende” que Cesc no está en su mejor momento y decide que en el segundo tiempo juegue otro en su lugar. En este caso vemos que la solución que había obtenido del procedo de razonamiento la había puesto en práctica sobre un caso real, teniendo en primera mano cuales son los resultados obtenidos de ese experimento, y pudiendo aprender de esos errores.

### Métodos de aprendizaje

La línea de aprendizaje del razonamiento basado en casos es realmente la parte más importante del sistema, no solo porque es la encargada de ampliar la base de conocimiento del sistema, si no también porque constituye realmente la parte que realmente permitirá al sistema evolucionar y seguir creciendo, ya que sin esta parte, aun teniendo el mejor sistema basado en el razonamiento este sistema tendría pocos días de vida ya que no seria capaz de aprender y a poco que cambiasen las cosas externas a su conocimiento no seria capaz de resolverlas adecuadamente. A continuación expondremos los diversos pasos que se dan en este proceso de aprendizaje.

Extraer

En el razonamiento basado en casos la base de conocimiento es actualizada cuando el problema se ha resuelto. Si el problema ha sido resuelto mediante el uso de un caso anterior, un nuevo caso será construido o bien el viejo caso sobre el cual habíamos obtenido la solución será generalizado para contener este nuevo caso, Si el problema ha sido solucionado por otros métodos, incluyendo la comunicación con el usuario, un nuevo caso seria generado. En cualquier caso, se necesita saber que utilizaremos como fuente de conocimiento a guardar en la base de conocimiento. La descripción del problema, así como las soluciones del problemas son los lógicos candidatos, pero una explicación u otro tipo de justificación de por qué la solución es la solución del problema pueden ser perfectamente incluidos en el nuevo caso. Por ejemplo en CASEY y CREEK las explicaciones también son incluidas en los casos y posteriormente usadas en la modificación de la solución. CASEY usa la estructura de explicación que antes habíamos mencionado para buscar otros estados dentro del modelo de diagnóstico que expliquen el porqué de los datos de entrada del problema, con el objetivo de después de haber resuelto estas preguntas encontrar una mejor solución.

Indexar

El problema de la indexación es una de los problemas más importantes dentro del razonamiento basado en casos. Es necesario decidir que tipo de indexación vamos a utilizar para futuros accesos a los casos almacenados en la base de conocimiento, de manera que esos accesos puedan ser realizados de manera sencilla. La indexación directa, como antes habíamos mencionado, se salta el último paso, pero aun así todavía quedaría el problema de identificar que tipo de indexador utilizar. Esto seria un problema de adquisición de este conocimiento, problema que tiene que ser analizado como parte del análisis de la base de conocimiento. Una solución trivial para este problema seria utilizar directamente todas las características de los índices.

Integrar

Este es el paso final en el proceso de adquisición de nuevo conocimiento en la base de conocimiento. Si no se ha tenido que realizar ningún caso o reindexación se tratará de dejar la base de conocimiento tal y como estaba ya que no habría sido necesario realizar ninguna modificación.. Si se ha tenido que modificar la indexación de algún caso de los que se encontraban en la base de conocimiento, se tendrán que integrar estas modificaciones dentro de la base de conocimiento. Este proceso de integración dentro de la base de conocimiento de las modificaciones se tiene que realizar con la máxima atención posible, ya que el resultado final tiene que ser la de una base de conocimiento que continúe estando correctamente indexada para que permita próximos accesos a la misma.

## Ejemplos

Hasta este momento, en las explicaciones que se han realizado se ha intentado acompañar en todo momento a estas con ejemplos sencillos para facilitar el entendimiento de los temas tratados. Aun así sería interesante una vez analizado en profundidad los fundamentos del razonamiento basado en casos, analizar algunos casos de una complejidad más elevada que nos permitan mejorar nuestro entendimiento sobre el tema. A continuación presentaremos una serie de ejemplos que permitirán al lector comprobar como se realizaría una aplicación del razonamiento basado en casos en una situación real.

### Sistema basado en casos para la educación a distancia

El ejemplo de aplicación real que se propone, como el propio título indica, se basa en crear un sistema experto para la educación a distancia con el objetivo principal de automatizar el proceso de enseñanza aprendizaje en un organismo educacional a distancia. Para lo cual ha sido necesario modelar el conocimiento del proceso de enseñanza aprendizaje que se realiza entre un profesor con experiencia en educación a distancia, y sus alumnos, encontrando los procedimientos generales y reutilizables para pasar desde esos modelos a un sistema que consiga apoyar el proceso de enseñanza / aprendizaje de una manera más real y efectiva. Es decir se pretende lograr obtener descripciones razonablemente claras, completas, precisas e inequívocas de las tareas que el educador y el alumno realizan cuando se someten a un proceso de enseñanza aprendizaje a distancia, y así obtener un modelo al nivel de conocimiento que articule las distintas actividades y relaciones descritas por el alumno y el educador, y que permita conseguir un modelo formal subyacente a esa descripción que nos permita enlazarla con las primitivas computables de un entorno de programación, generando un sistema basado en el conocimiento para la educación a distancia.

El sistema basado en el conocimiento propuesto le permite por un lado al docente, generar un curso que basado en objetivos específicos permita detallar los materiales y la estrategias de enseñanza más adecuadas a un alumno “común”, estrategias de enseñanza que se modificarán con el paso del tiempo, y que se adaptarán a los usuarios según sus necesidades. Por otro lado el sistema es capaz de guiar al estudiante a lo largo del dominio particular del conocimiento propuesto por el profesor, resolviendo durante este proceso tareas tales como: la elaboración de una estrategia de tutorización, la propuesta de materiales complementarios al estudio de un tema, el registro de las actividades del usuario y la generación de nuevas estrategias para nuevos casos.

El enfoque del proceso se presenta a través de un modelo de casos de uso donde los actores (profesores, alumnos) interactúa con distintos procesos. Bajo este enfoque, cada módulo de los anteriormente mencionados representará un conjunto de uno o más agentes inteligentes. Estas entidades cooperarán entre sí, con el objetivo final de alcanzar el objetivo central del sistema: la transmisión del conocimiento al estudiante y la generación de cursos de manera más automatizada a través de la generación de estrategias de enseñanza/aprendizaje que se adapten a los alumnos.

Como podemos ver, este es un problema que se podría resolver perfectamente utilizando un sistema experto de razonamiento basado en casos, ya que lo que la idea de utilizar casos para almacenar la información y que esta sea utilizada para construir las siguientes soluciones es adecuada para el desarrollo del problema.

### Sistema basado en casos para la definición de un modelo de negocio

Este ejemplo tiene por objetivo la de diseñar un sistema basado en el conocimiento que tiene como objetivo principal la generación de modelos de negocio. Este es un problema típicamente informático, y que si se analiza en profundidad se puede ver que sigue unos patrones determinados. Es por eso que su implementación en forma de sistema experto resulta lógica. Si analizamos en profundidad la adecuación de implementar este sistema experto mediante razonamiento basado en casos podremos ver que es una buena alternativa ya que en este tipo de situaciones, todo y que también se podría construir a partir de un sistema basado en reglas, sería más adecuado utilizar el método a partir de casos, ya que el diseño de sistemas de negocio es un trabajo bastante variante, y es interesante considerar la posibilidad de construir nuevas soluciones a partir de soluciones ya existente, basándonos en casos que tuvieran contextos similares.

Esto nos permitiría ir construyendo una solución a la medida del problema que tuviéramos en la entrada. Una de las cosas que deberíamos plantearnos realmente es si el problema que queremos resolver no es demasiado grande con respecto a las posibilidades existentes para resolverlo, es decir, si existen demasiados contextos o tipos de problemas que resolver. En este caso considero que si, ya que se pueden construir modelos de negocio de cualquier sistema, y es por eso que se necesita mucho conocimiento en general. Aún así, si nos ponemos a analizar el problema podremos ver que en muchos casos no es necesario conocer tan bien el contexto del problema y que todos se resuelven de manera muy similar.

