Diego García M. 1162205
Joaquín León M. 1162101
Enrique Peña A. 1162110
Instituto Tecnológico de Estudios Superiores Monterrey
Aprendizaje Automático
Actividad de programación 3 – Árboles de decisión
a. Breve descripción del medio ambiente.
El medio se basa en el análisis de una base de datos que se llenó con información real proporcionada por estudiantes. La información contenida en la base de datos nos dice el nivel de estrés que maneja una persona dependiendo de varios síntomas. La base de datos tiene como columna a cada síntoma, y se llena con una de cuatro opciones (nada, pocas veces, ocasionalmente, frecuentemente). Y al final todos estos valores convergen al resultado final del nivel de estrés de la persona que puede ser: Nada, Poco, Regular y Alto.
b. Descripción detallada de la actividad o acción que va a aprender tu agente.
El sistema aprende a decidir el nivel de estrés que maneja una persona con base a todos los ejemplos que tiene en su base de datos y nos dá un resultado sin tener que preguntar por todos los síntomas.
c. Descripción detallada de los patrones obtenidos del medio ambiente para el entrenamiento. Explicar la razón por la que se escogieron cada uno de los atributos del patrón.
Los patrones se obtuvieron por medio de una encuesta realizada por internet. Los atributos de los patrones están basados en un estudio previamente realizado por la alumna de la carrera de Psicología Organizacional, Adriana Sánchez Ávalos.
d. Solución planteada al problema utilizando árboles de decisión (pueden utilizar ID3, C4.5, etc.). Describe con detalle cada elemento del planteamiento:
I. Algoritmo de aprendizaje mediante árboles de decisión, ¿cuál algoritmo utilizaron y por qué?
Utilizamos el algoritmo de aprendizaje ID3 ya que fue el que conocíamos y vimos en clase. Utilizamos una implementación previa del algoritmo creada por Christopher Roach.
II. Patrones de aprendizaje:
i. ¿Cuántos patrones se utilizaron para el entrenamiento y por qué?
Se utilizaron 150+ ejemplos para el aprendizaje del sistema. Es el número de encuestas contestadas después de restarle el porcentaje considerado para la validación.
ii. ¿Cuántos patrones se utilizaron para la validación y por qué?
Decidimos utilizar el 15% de las encuestas para validación
iii. Ejemplos de patrones con todo y el atributo de clasificación (clasificación correcta e incorrecta).
Ejemplos:
|
Donde:
A = Alto
M = Medio
B = Bajo
N = Nada
III. ¿Funciona en tiempo real o fuera de línea su programa? ¿Por qué?
El programa funciona fuera de línea, se realizó una única copia de la base de datos y se transfirió al programa. Se hizo de esta forma para poder tener un acceso más rápido a los datos dentro de la base y así agilizando el aprendizaje, además de que, dado que la base de datos en tiempo real proviene de google docs, no tenemos manera de accesarla en tiempo real, nada más se puede importar a un archivo de excel pero manualmente.
IV. ¿Sobreclasifica los patrones (overfitting)? ¿Por qué?
Se sobreclasifica un poco ya que nuestro número de atributos es bastante grande (19) y el número de ejemplos que obtuvimos no es completamente suficiente para generar un árbol muy general, es decir, se “aprende” un poco las respuestas obtenidas en la encuesta. Sin embargo, sigue pudiendo clasificar nuevos ejemplos de prueba de una manera bastante aceptable.
V. ¿Cómo mejorarías el desempeño de tu programa?
Utilizando un mayor número de patrones de ejemplo para que termine de aprender correctamente el sistema y genere un árbol adecuado y lo suficientemente general.
e. Conclusiones después de la programación.
Nos costó un poco de trabajo terminar de entender el funcionamiento de ID3 con árboles más grandes ya que los ejemplos vistos en clase eran muy pequeños (solo 2 niveles) Lo cual nos llevó mucho más tiempo para poder adaptar la implementación de ID3 a nuestra base de datos.
Árbol generado:
Referencias:
· Roach, C. (2006). Building Decision Trees in Python. Obtenido el 14 de abril del 2011 de: http://onlamp.com/pub/a/python/2006/02/09/ai_decision_trees.html?page=1