2. Tecnologías y Herramientas

Anuncio
Tabla de contenidos
1. Introducción ........................................................................................................................... 1
2. Tecnologías y Herramientas .................................................................................................. 4
2.1 Base de datos .................................................................................................................. 4
2.1.1 Datawarehouse .......................................................................................................... 5
2.1.2 Operational datastore ODS ........................................................................................ 5
2.1.3 Datamart .................................................................................................................... 6
2.2 Proceso ETL..................................................................................................................... 7
2.2.1 Extracción de datos.................................................................................................... 7
2.2.2 Transformaciones de información .............................................................................. 7
2.2.3 Carga de repositorios ................................................................................................. 8
2.3 Weka ................................................................................................................................ 9
2.4 Algoritmos de aprendizaje supervisados..........................................................................10
2.4.1 Naive Bayes ..............................................................................................................11
2.4.2 Vecinos más cercanos (k-means) .............................................................................16
2.4.3 Redes neuronales (Perceptrón multicapa) ................................................................24
2.5 Algoritmos de aprendizaje no supervisados.....................................................................30
2.5.1 Teoría de la Resonancia Adaptativa..........................................................................31
2.5.2 Redes Bayesianas ....................................................................................................34
2.5.3 Cadenas de Markov ..................................................................................................38
2.6 Algoritmos de ensamble ..................................................................................................42
2.7 Python .............................................................................................................................51
3. Sistemas dinámicos ..............................................................................................................54
3.1 Teoría del Caos ...........................................................................................................55
3.2 Geometría Fractal ........................................................................................................57
4. Construcción de la Heurística Modelo de flor ........................................................................59
4.1 Proceso ETL Conjunto de Prueba ...................................................................................59
4.1.1 Extracción del conjunto de prueba ............................................................................59
4.1.2 Transformación del conjunto de prueba ....................................................................59
4.1.3 Carga conjunto de prueba .........................................................................................59
4.2 Construcción ...................................................................................................................59
4.2.1 Diseño.......................................................................................................................60
4.2.2 Codificación ..............................................................................................................61
4.2.3 Implementación .........................................................................................................64
4.3 Pruebas ...........................................................................................................................64
4.3.1 Cambio del tamaño fractal ........................................................................................64
4.3.2 Cambio de conjunto de entrenamiento ......................................................................67
4.4 Conclusiones de la heurística ..........................................................................................74
5. Conclusiones ........................................................................................................................75
6. Bibliografía ............................................................................................................................76
1. Introducción
En la vida cotidiana encontramos un sinfín de fenómenos en los cuales nuestra
percepción de orden parece pasar por alto el detalle de lo contemplado, tal
es el caso de la forma de las plantas, esparcimiento un virus, crecimiento de
poblaciones urbanas, el comportamiento del clima, la interferencia en las
señales de telecomunicaciones, trata de personas y fluctuaciones en la bolsa
de valores, etc. En estos casos podemos hacer una analogía con un fractal
(objeto cuya estructura básica, fragmentada o irregular, se repite a
diferentes escalas). Gracias a matemáticos como Mandelbrot podemos crear de
manera artificial recreaciones de la naturaleza con detalles asombrosos. Y
para el caso de los comportamientos aparentemente caóticos hay ya una gama de
artefactos matemáticos que permiten hacer análisis y predicción. Por ejemplo
la ecuación logística para el crecimiento de poblaciones sujeta a diferentes
parámetros y condiciones iníciales.
De manera natural es difícil encontrar líneas rectas o circulares sin embargo
las siluetas complejas, pliegues, espirales y
el aparente desorden parece
más casual. El imaginario de series fractales con cierto grado de
fluctuaciones permite modelar árboles, mapas, texturas, virus, modelos
atómicos. De manera que los caprichos de la naturaleza nos sugieren una pista
dentro de sus elaborados diseños.
Por otra parte nos encontramos en un punto histórico donde tenemos la
capacidad de procesar enormes cantidades de información (procesos ETL y Big
Data) y disponemos de algoritmos que empiezan a servir las veces de expertos
en temas específicos. No sería raro que la siguiente década los expertos en
enfermedades sean sistemas programados para tal función. Lo que nos lleva a
la premisa de este trabajo. ¿Existe una relación fractal dentro de sistemas
caóticos?
Para contestar la pregunta es conveniente analizar los algoritmos de
aprendizaje supervisado en especial Bayes ingenuo que permite hacer un cambio
entre las clasificaciones a post priori y las predicciones a priori. Y en
general los algoritmos supervisados nos permiten dar un vistazo al
comportamiento caótico así como a los sistemas de procesamiento de datos
robustos y procesos ETL.
La
información
recolectada
con
los
algoritmos
de
aprendizaje
supervisado nos socorrerán a contestar la pregunta, los algoritmos de
aprendizaje no supervisado nos pueden ayudar con los múltiples problemas que
se presentan con los datos estáticos. Más tarde haremos uso de los algoritmos
de Inteligencia Artificial para capturar la esencia de la geometría fractal y
con ella hacer que los datos de creen cúmulos de datos de manera que se
comporten como entidades fractales.
La teoría del caos es una denominación popular de la rama de las matemáticas
que trata ciertos tipos de sistemas dinámicos que son muy susceptibles a las
Proyecto de Investigación II Inteligencia Artificial
Pag 1
variaciones en las condiciones iníciales. Pequeñas variaciones en dichas
condiciones pueden implicar grandes diferencias en el comportamiento futuro
imposibilitando la predicción a largo plazo. La mayoría de los movimientos
mencionados en la teoría anterior suceden alrededor de atractores simples,
tales como puntos y curvas circulares llamados ciclos límite. Los atractores
son similares al centro de una circunferencia y sucede que encontrando un
atractor se puede describir al menos parcialmente el comportamiento del
fenómeno. El primero de éstos fue hallado, por casualidad, por el meteorólogo
Edward Lorenz cuando trataba de encontrar un modelo matemático que permitiera
predecir el comportamiento de grandes masas de aire. Consiguió ajustar el
modelo a sólo tres variables que indican cómo cambian la velocidad y la
temperatura del aire a lo largo del tiempo (atractor de Lorenz). Después de
haber estudiado el modelo, volvió a introducir los datos iniciales esta vez
con menos decimales y el resultado que obtuvo fue completamente diferente del
anterior. Cuando reflexionó sobre los resultados se dio cuenta que el sistema
era
extremadamente
sensible
a
las
condiciones
iníciales:
pequeñas
perturbaciones en los datos de partida tienen una gran influencia sobre el
resultado final. Sus ecuaciones captaban la esencia de la verdadera
atmósfera. “Aquel primer día (invierno de 1961) decidió que los pronósticos
amplios estaban condenados a la extinción”. Pero vio más que azar en su
modelo del tiempo: una fina estructura geométrica, orden disfrazado de
casualidad.
Benoit Mandelbrot es el padre de la denominada Geometría Fractal, una nueva
rama de la geometría que podemos decir que estudia los objetos tal como son.
Mandelbrot pensó que las cosas en la realidad no son tan perfectas como las
muestra la geometría euclidiana: las esferas no son realmente esferas, las
líneas no son perfectamente rectas, las superficies no son uniformes… Ello le
llevó a estudiar estas imperfecciones, derivando estos estudios en la
creación de esta nueva rama de la geometría. Las primeras ideas sobre
fractales de Mandelbrot fueron publicadas en la revista Science en 1967 a
través de su artículo ¿Cuánto mide la costa de Gran Bretaña? En él da ciertas
evidencias empíricas de que la longitud de una línea geográfica (como por
ejemplo, la costa de Gran Bretaña) depende de la regla con la que la midamos.
En líneas generales, la costa tendrá mayor longitud cuanto menor sea la
unidad de medida utilizada, esto es, cuanto más cerca estemos mirando a la
costa mayor longitud tendrá.
Ian Hacking y la domesticación del azar. Probabilidad y normalidad son los
temas que trata en su obra, en la cual detalla el desarrollo de la disciplina
de la probabilidad y como la normalidad afecta los fenómenos sociales. La
probabilidad como herramienta de encauzamiento registrando datos históricos
ha creado descripciones matemáticas que bajo condiciones de estabilidad y
acotada en todos los posibles resultados puede ser reproducida. La idea de
saber de antemano un resultado sólo citando los parámetros iniciales parece
ser irresponsable, sin embargo al disminuir el espacio de resultados se
pueden discriminar ciertos resultados lo cual permite avanzar en el proceso
de toma de decisiones. Una ley es una ecuación. Y la ecuación tiene que ver
con las mediciones que claramente difieren según mostró Mandelbrot lo cual
Proyecto de Investigación II Inteligencia Artificial
Pag 2
nos lleva a la normalidad. Esperar lo inesperado sin tratar de controlar
sistemas indeterminables. Usar las herramientas matemáticas convencionales
conlleva el riesgo de caer en vicios del mundo plano del que parece la
naturaleza no se siente atraída. Tratemos entonces de usar sistemas no
convencionales.
Nada más grande que el universo. El teorema del límite central o teorema
central del límite indica que, en condiciones muy generales, si Sn es la suma
de n variables aleatorias independientes y de varianza no nula pero finita,
entonces la función de distribución de Sn «se aproxima bien» a una
distribución normal (también llamada distribución gaussiana). Así pues, el
teorema asegura que esto ocurre cuando la suma de estas variables aleatorias
e independientes es lo suficientemente grande
Modelo Humano. Las herramientas que la raza humana ha desarrollado en el paso
del tiempo siempre son una extensión de su propio cuerpo o una emulación del
mismo, en la actualidad no es raro que se intenten producir herramientas
usando el cerebro como meta. La capacidad de transferir el intelecto y las
capacidades cognitivas es un reto que ahora ya tiene avances favorables.
Hablemos entonces de los expertos. Se cree que un experto puede, gracias a su
entrenamiento, educación, profesión, trabajos realizados o experiencia, tener
un conocimiento sobre un cierto tema que excede el nivel de conocimiento de
una persona común, de manera tal que otros puedan confiar en la opinión del
individuo en forma oficial y legal. Un sistema experto una aplicación
informática capaz de solucionar un conjunto de problemas que exigen un gran
conocimiento sobre un determinado tema. Un sistema experto (SE) es un
conjunto de programas que, sobre una base de conocimientos, posee información
de uno o más expertos en un área específica. Se puede entender como una rama
de la inteligencia artificial, donde el poder de resolución de un problema en
un programa de computadora viene del conocimiento de un dominio específico.
Estos sistemas imitan las actividades de un humano para resolver problemas de
distinta índole (no necesariamente tiene que ser de inteligencia artificial).
También se dice que un Sistema Experto se basa en el conocimiento declarativo
(hechos sobre objetos, situaciones) y el conocimiento de control (información
sobre el seguimiento de una acción).
Para el proceso de adquirir conocimiento nos auxiliamos de el aprendizaje
supervisado es una técnica para deducir una función a partir de datos de
entrenamiento. Los datos de entrenamiento consisten de pares de objetos
(normalmente vectores): una componente del par son los datos de entrada y el
otro, los resultados deseados. La salida de la función puede ser un valor
numérico (como en los problemas de regresión) o una etiqueta de clase (como
en los de clasificación). El objetivo del aprendizaje supervisado es el de
crear una función capaz de predecir el valor correspondiente a cualquier
objeto de entrada válida después de haber visto una serie de ejemplos, los
datos de entrenamiento. Para ello, tiene que generalizar a partir de los
datos presentados a las situaciones no vistas previamente.
Proyecto de Investigación II Inteligencia Artificial
Pag 3
2. Tecnologías y Herramientas
2.1 Base de datos
Las bases de datos son compendios de información en los cuales se almacenan
detalles específicos de alguna abstracción de utilidad para un negocio o
proceso. Existen diferentes modelos de bases de datos.
El modelo relacional en el cual se crean modelos de entidades puntuales
representados por tuplas y agrupados por relaciones, dependiendo de la
cantidad de detalle se crean diferentes niveles a los cuales se accede usando
consultas (lógica de predicados de primer orden). Las relaciones vienen dadas
de las asociaciones entre entidades, PE Una mochila con cuantas libretas está
relacionada, siendo las posibles respuestas: Una, ninguna o muchas. Se debe
de notar que en el caso anterior se debe especificar de qué mochila se está
señalando por tal motivo se debe de agregar un identificador único a cada
mochila con la que contemos. En el caso en que no existe relación directa
entre dos objetos de una misma base de datos puede crearse una clave
subrogada de manera que la relación se vuelve artificial. De esta manera el
modelo es muy sencillo para relaciones directas y se puede volver más
complejo para relaciones indirectas o recursivas.
Es conveniente describir los elementos que contiene una base de datos:
*Datos: Se trata de abstracciones de números, series, palabras, atributos o
cuantificaciones de ellos. Dentro de las diferentes bases de datos se
encuentran los datos de tipo Entero Números sin punto decimal, Flotante
Números con punto decimal, Char Series de letras, pueden formar palabras,
Date Para mostrar fechas, varían según la implementación, Time Para mostrar
el tiempo, varía según la implementación, Enumeraciones Son colecciones de
datos que por su naturaleza no son candidatos a volverse catálogos PE
{„Norte‟, ‟Sur‟, ‟Este‟, ‟Oeste‟}
*Atributos: Se trata de los posibles estados posibles para un dato, como su
longitud, si se permite que esté vacío o se trata de una llave.
*Tabla: Es el agrupamiento ordenado para un conjunto de datos, sujeta a
campos que definen las columnas
*Campo: Se trata de una columna la cual indica el tipo de datos y sus
atributos PE si se permite que el contenido del campo esté vacío o el tipo de
dato que contendrá
*Registro: Es un renglón de la tabla se identifica por la llave que puede
estar compuesta por uno o más campos
*Llave: Se trata del identificador único de cada renglón, no se permite que
este vacío se recomienda que sea numérico o secuencial.
Proyecto de Investigación II Inteligencia Artificial
Pag 4
*Manejador de Base de datos. El manejador de bases de datos es un programa
que realiza diferentes funciones como cuidar que se respeten las relaciones
de la información, acceder a la información de la base, gestionar las
modificaciones de la base, además de otorgar y revocar permisos para los
usuarios existen diferentes marcas entre las cuales destacan MySQL, Oracle
Sql, DB2, Informix, Progress, etc.
Existe además el modelo de Big data en el cual los datos no se almacenan en
estructuras fijas como tablas y por consiguiente no se requiere usar
consultas de cruce lo cual le resta atomicidad a la información pero agrega
valor al escalar y optimizar el rendimiento de los modelos de datos.
Las características de los datos nos permiten elegir el tipo de modelo que
utilizaremos, para este ejercicio vamos a ocupar dos bases de datos del
repositorio de aprendizaje maquinal
de la universidad de California,
primeramente usaré la base IRIS como ejemplo típico para algoritmos
supervisados. Posteriormente usaré una base con problemas de datos faltantes.
2.1.1 Datawarehouse
Según la teoría de la información propuesta por el matemático Shannon la
información contenida en un mensaje es proporcional a la cantidad de bits que
se requieren como mínimo para representar al mensaje. El concepto de
información puede entenderse más fácilmente si consideramos un ejemplo.
Supongamos que estamos leyendo un mensaje y hemos leído "cadena de c"; la
probabilidad de que el mensaje continúe con "aracteres" es muy alta. Así,
cuando efectivamente recibimos a continuación "aracteres" la cantidad de
información que nos llega es muy baja pues estábamos en condiciones de
predecir qué era lo que iba a ocurrir. La ocurrencia de mensajes de alta
probabilidad de aparición aporta menos información que la ocurrencia de
mensajes menos probables. Si luego de "cadena de c" leemos "himichurri" la
cantidad de información que estamos recibiendo es mucho mayor.
Bajo este postulado los almacenes de datos buscan poner al alcance del
usuario información de diversas fuentes para el fácil acceso y análisis de la
información sin permitir el acceso a las bases locales lo que permite un
vistazo general de la información agrupada convenientemente para fines de
explotación.
2.1.2 Operational datastore ODS
En el ODS, los datos pueden ser lavados, resueltos por la redundancia y
verificados para el cumplimiento de las reglas de negocio correspondientes.
Un ODS se puede utilizar para integrar datos dispares de múltiples fuentes
para que las operaciones de negocio, análisis y presentación de informes se
puedan llevar a cabo mientras que las operaciones comerciales se están
produciendo. Este es el lugar donde la mayoría de los datos utilizados en la
Proyecto de Investigación II Inteligencia Artificial
Pag 5
operación actual se aloja antes de que sea transferido al datawarehouse para
el almacenamiento o el archivado a largo plazo.
Un ODS está diseñado para consultas relativamente simples en pequeñas
cantidades de datos (tales como encontrar el estado de un pedido del
cliente), en lugar de las complejas consultas en grandes cantidades de datos
típicos del almacén de datos. Un ODS es similar a su memoria a corto plazo en
el que almacena información sólo muy reciente; en comparación, el almacén de
datos se parece más a la memoria a largo plazo en la que almacena información
relativamente permanente.
2.1.3 Datamart
La diferencia entre un datawarehouse y un datamart puede ser confusa porque
los dos términos se utilizan a veces incorrectamente como sinónimos. Un
almacén de datos es un repositorio central para todos los datos de una
organización. El objetivo de un mercado de datos, sin embargo, es para
satisfacer las demandas particulares de un grupo específico de usuarios
dentro de la organización, como la gestión de recursos humanos (HRM). En
general, los mercados de datos de una organización son subconjuntos de
almacén de datos de la organización.
Debido a que los mercados de datos están optimizados para ver los datos de
una manera única, el proceso de diseño tiende a comenzar con un análisis de
las necesidades del usuario. En contraste, el proceso de diseño de un almacén
de datos tiende a comenzar con un análisis de lo que ya existen datos y cómo
puede ser recogida y gestionados de una manera tal que puede ser utilizado
más adelante. Un datawarehouse tiende a ser un concepto estratégico pero algo
sin terminar; un datamart tiende a ser táctico y orientado a satisfacer una
necesidad inmediata.
Hoy en día, el software de vitalización de datos puede utilizarse para crear
datamarts virtuales, la extracción de datos de fuentes dispares y combinarla
con otros datos que sean necesarios para satisfacer las necesidades
específicas de los usuarios.
Proyecto de Investigación II Inteligencia Artificial
Pag 6
2.2 Proceso ETL
ETL por sus siglas en inglés (Extract, Transform, Load) es un proceso
mediante el cual se realiza la integración de datos de un esquema (Estructura
que describe una base de datos) a otro esquema usando una misma herramienta
con el fin de crear datamart y datawarehouses.
Se conforma de tres pasos obligatorios:
1.- Extracción (Extract). Es el proceso de adquisición de los datos de la
base o bases.
2.- Transformación (Transform) Es el proceso donde se convierten los datos
extraídos del esquema anterior al nuevo esquema. Las transformaciones que se
realizan están regidas por reglas, indexaciones, combinaciones de datos con
otros datos.
3.- Carga (Load). Es el proceso de escribir la información en un repositorio
bajo el nuevo esquema.
2.2.1 Extracción de datos
La extracción de datos es el proceso de conectar los modelos de datos con la
herramienta ETL, facilita la combinación de fuentes heterogéneas en un
repositorio central. Las fuentes de datos pueden ser archivos planos,
documentos bases de datos de diferentes formatos. Habitualmente la meta es
extraer el sistema sin modificaciones sin pasar por alto las restricciones
para asegurar que se mantiene la naturaleza de los datos en el caso de
información sensible.
2.2.2 Transformaciones de información
En este paso se identifican los datos incompletos, incorrectos, inexactos
para sustituir, modificar o eliminar, es diferente de una validación ya que
además de rechazar los datos erróneos, corrige las incidencias de acuerdo a
un criterio. La meta es crear consistencia entre los diferentes sistemas y
entre las operaciones más comunes se incluye:
La estandarización. Los datos son sustituidos de acuerdo a un vector
asociativo por ejemplo: (México, Mex, MX, Mexico) todos mapeados de acuerdo
al estándar de nombrado de país
Limpieza. Se realizan diferentes validaciones para remover o modificar datos
conflictivos
Llaves subrogadas. Se crea una nueva llave para diferentes conjuntos de datos
previniendo inconsistencias entre las llaves existentes además de agregar el
soporte para referencias cruzadas.
Proyecto de Investigación II Inteligencia Artificial
Pag 7
Transposición. Se organizan los datos de manera que se optimiza el proceso de
reportería lo cual conlleva un proceso de desnormalización y reorganización
en un modelo dimensional por ejemplo:
clave
x
x
x
x
y
y
y
y
z
z
z
z
idcta
1
2
3
4
1
2
3
4
1
2
3
4
valor
23
45
2
-54
68
84
98
-97
92
44
91
-37
En este ejemplo se tienen 3 grupos lo cual se puede representar como una
matriz:
idcta
1
2
3
4
x
23
45
2
-54
y
68
84
98
-97
z
92
44
91
-37
2.2.3 Carga de repositorios
Los datos transformados son escritos a un Datamart o a un datawarehouse. La
herramienta escogida para el desarrollo ETL, realiza las cargas a las bases
de datos generalmente sin la necesidad de crear los scripts propios del
manejador de bases de datos
Proyecto de Investigación II Inteligencia Artificial
Pag 8
2.3 Weka
Se trata de una extensa colección de algoritmos de Máquinas de conocimiento
desarrollados por la universidad de Waikato (Nueva Zelanda) implementados en
Java; útiles para ser aplicados sobre datos mediante los interfaces que
ofrece o para embeberlos dentro de cualquier aplicación. Además Weka contiene
las herramientas necesarias para realizar transformaciones sobre los datos,
tareas de clasificación, regresión, clustering, asociación y visualización.
Weka está diseñado como una herramienta orientada a la extensibilidad por lo
que añadir nuevas funcionalidades es una tarea sencilla.
Sin embargo, y pese a todas las cualidades que Weka posee, tiene un gran
defecto y éste es la escasa documentación orientada al usuario que tiene
junto a una usabilidad bastante pobre, lo que la hace una herramienta difícil
de comprender y manejar sin información adicional.
Aquí haremos pruebas del algoritmo de Bayes ingenuo, Redes bayesianas y el
algoritmo de ensamble usando la base datos Iris
Proyecto de Investigación II Inteligencia Artificial
Pag 9
2.4 Algoritmos de aprendizaje supervisados
El aprendizaje supervisado es una técnica para deducir una función a partir
de datos de entrenamiento. Los datos de entrenamiento consisten de pares de
objetos (normalmente vectores): un componente del par son los datos de
entrada y el otro, los resultados deseados. La salida de la función puede ser
un valor numérico (como en los problemas de regresión) o una etiqueta de
clase (como en los de clasificación). El objetivo del aprendizaje supervisado
es el de crear una función capaz de predecir el valor correspondiente a
cualquier objeto de entrada válida después de haber visto una serie de
ejemplos, los datos de entrenamiento. Para ello, tiene que generalizar a
partir de los datos presentados a las situaciones no vistas previamente.
Proyecto de Investigación II Inteligencia Artificial
Pag 10
2.4.1 Naive Bayes
El teorema de Bayes nos permite unir dos eventos disjuntos en los
cuales sabiendo que pasa el evento A dado B podemos saber si pasa B
dado A. se expresa a través de la formula:
Donde
son una serie de eventos mutuamente excluyentes y donde
la ocurrencia de otro evento.
es
Un clasificador bayesiano ingenuo (Naive Bayes classifier) es un
clasificador probabilístico que se fundamenta en el teorema de Bayes y
algunas hipótesis simplificadas adicionales. Es decir que realiza la
clasificación ignorando la relación que puedan guardar los atributos
entre ellos. Por ejemplo una fruta, si sabemos que es roja podríamos
asumir que es una manzana, por otra parte si sabemos que su diámetro
es de 1 cm entonces podemos suponer que se trata de una fresa, de esta
manera cada atributo individual contribuye a la adquisición del
conocimiento de clasificación. Del ejemplo anterior nos dirigimos de
inmediato a la siguiente observación, no tenemos una regla con la cual
decidir la clase a la que pertenece el ejemplo anteriormente
enumerado. La siguiente parte del clasificador
se puede dividir en
dos partes, por una parte tenemos el conjunto de entrenamiento y por
otra parte tenemos las reglas de decisión que se deben de aplicar a
cada entidad dispuesta a clasificar. La regla de decisión se tomara
del modelo generado de la información extraída del conjunto de
entrenamiento, dado el proceso por el cual tomaremos como la
información del conjunto de entrenamiento como modelo a seguir por
parte del clasificador y la regla se define como:
Donde F es la clasificación que dio el algoritmo comparada con la
clase del entrenamiento para cada terna y se toma la mayor de las
selecciones.
Observaciones.
-Se deben de conocer el número de clases con antelación.
-El conjunto de entrenamiento depende de la cantidad de información
relevante que pueda aportar cada terna.
Proyecto de Investigación II Inteligencia Artificial
Pag 11
Proyecto de Investigación II Inteligencia Artificial
Pag 12
Proyecto de Investigación II Inteligencia Artificial
Pag 13
=== Run information ===
Scheme:weka.classifiers.bayes.NaiveBayes
Relation:
iris
Instances:
150
Attributes:
5
sepallength
sepalwidth
petallength
petalwidth
class
Test mode:split 75.0% train, remainder test
=== Classifier model (full training set) ===
Naive Bayes Classifier
Class
Attribute
Iris-setosa Iris-versicolor Iris-virginica
(0.33)
(0.33)
(0.33)
===============================================================
sepallength
mean
4.9913
5.9379
6.5795
std. dev.
0.355
0.5042
0.6353
weight sum
50
50
50
precision
0.1059
0.1059
0.1059
sepalwidth
mean
std. dev.
weight sum
precision
3.4015
0.3925
50
0.1091
2.7687
0.3038
50
0.1091
2.9629
0.3088
50
0.1091
petallength
mean
std. dev.
weight sum
precision
1.4694
0.1782
50
0.1405
4.2452
0.4712
50
0.1405
5.5516
0.5529
50
0.1405
petalwidth
mean
std. dev.
weight sum
precision
0.2743
0.1096
50
0.1143
1.3097
0.1915
50
0.1143
2.0343
0.2646
50
0.1143
Time taken to build model: 0.01 seconds
Proyecto de Investigación II Inteligencia Artificial
Pag 14
=== Evaluation on test split ===
=== Summary ===
Correctly Classified Instances
Incorrectly Classified Instances
Kappa statistic
Mean absolute error
Root mean squared error
Relative absolute error
Root relative squared error
Total Number of Instances
35
2
0.9187
0.0462
0.1763
10.3886 %
37.3672 %
37
94.5946 %
5.4054 %
=== Detailed Accuracy By Class ===
TP Rate
FP Rate
Precision
Recall
F-Measure
ROC Area
Class
1
0
1
1
1
1
1
0.083
0.867
1
0.929
0.981
0.846
0
1
0.846
0.917
0.981
Iris-setosa
Iris-versicolor
Iris-virginica
Weighted Avg.
0.946
0.029
0.953
0.946
0.946
0.986
=== Confusion Matrix ===
a b c
<-- classified as
11 0 0 | a = Iris-setosa
0 13 0 | b = Iris-versicolor
0 2 11 | c = Iris-virginica
Proyecto de Investigación II Inteligencia Artificial
Pag 15
2.4.2 Vecinos más cercanos (k-means)
El algoritmo de k-means hace una separación de n elementos en k
particiones (Clases) usando la lógica del más cercano, es decir si un
punto es el más cercano a otro. Primeramente se escogen k elementos
que servirán como pivote y después se entrara en un ciclo en el cual
se calcula la distancia entre cada uno los puntos con los pivotes y
cada conjunto se formara de los elementos más cercanos al pivote. Se
escoge un nuevo pivote que minimice la distancia entre todos los
elementos del conjunto hasta que no se pueda escoger otro pivote.
Puede estar incluso en el conjunto
Es conveniente recordar que la norma euclidiana se calcula usando la
siguiente formula
Que se generaliza para n dimensiones.
El paso de actualización se da con
Cuando ya no cambian las asignaciones el algoritmo termina.
Observaciones.
-La
-El
dos
-El
elección de pivotes no asegura una distribución adecuada.
algoritmo puede presentar problemas con los puntos equidistantes a
centros.
algoritmo no funciona con clases ensimismadas.
Proyecto de Investigación II Inteligencia Artificial
Pag 16
Proyecto de Investigación II Inteligencia Artificial
Pag 17
#!/usr/bin/python
import
import
import
import
import
import
os
cx_Oracle
csv
random
math
time
SQL="SELECT * FROM iris"
con = cx_Oracle.connect('root/root@localhost:1521/xe')
cursor = con.cursor()
cursor.execute(SQL)
#Crear lista
iris = []
for renglon in cursor:
terna = []
for i in range(0,5):
terna.append(renglon[i])
iris.append(terna)
#Escoger k elementos aleatorios
entrenamiento = []
por = int(math.ceil((150 *60)/100)) #60%
print 'el cojunto de entrenaminento tiene ',por, ' elementos'
for a in range(por):
temp = random.randint(0,150) % len(iris)
entrenamiento.append(iris[temp])
iris.remove(entrenamiento[a])
#Escoger k elementos aleatorios del conjunto de entrenamiento
kmeans = []
for a in range(4):
temp = (random.randint(0,por)) % len(entrenamiento)
kmeans.append(entrenamiento[temp])
entrenamiento.remove(kmeans[a])
#Separacion
con1 = []
Proyecto de Investigación II Inteligencia Artificial
Pag 18
con2 = []
con3 = []
con4 = []
#Distancias
distancia1 =
distancia2 =
distancia3 =
distancia4 =
[]
[]
[]
[]
for a in entrenamiento:#x in range(0,4):
dis1 = 0
dis2 = 0
dis3 = 0
dis4 = 0
dim1 =[]
dim1.append(a[0])
for x in range(0,4):#for a in iris:
res = ((a[1] - kmeans[x][1])**2)
res += ((a[2] - kmeans[x][2])**2)
res += ((a[3] - kmeans[x][3])**2)
res += ((a[4] - kmeans[x][4])**2)
res = math.sqrt(res)
if x == 0:
dis1=res
if x == 1:
dis2=res
if x == 2:
dis3=res
if x == 3:
dis4=res
if dis1 < dis2 and dis1 < dis3 and dis1 <
con1.append(a)
dim1.append(dis1)
distancia1.append(dim1)
elif dis2 < dis1 and dis2 < dis3 and dis2
con2.append(a)
dim1.append(dis1)
distancia2.append(dim1)
elif dis3 < dis1 and dis3 < dis2 and dis3
con3.append(a)
dim1.append(dis1)
distancia3.append(dim1)
elif dis4 < dis1 and dis4 < dis2 and dis4
con4.append(a)
dis4:
< dis4:
< dis4:
< dis3:
Proyecto de Investigación II Inteligencia Artificial
Pag 19
dim1.append(dis1)
distancia4.append(dim1)
else:
print 'distancia igual'
distancia1.append(kmeans[0])
distancia2.append(kmeans[1])
distancia3.append(kmeans[2])
distancia4.append(kmeans[3])
#ordenando
distancia1
distancia2
distancia3
distancia4
las listas
= sorted(distancia1,
= sorted(distancia2,
= sorted(distancia3,
= sorted(distancia4,
key=lambda
key=lambda
key=lambda
key=lambda
tup:
tup:
tup:
tup:
tup[1])
tup[1])
tup[1])
tup[1])
#Buscando la el centroide para cada conjunto
c12 = kmeans[0]
c11 = con1[0]
ite =0
while (c11[0] != c12[0] and ite < 100):
temp = random.randint(0,len(con1)) % len(con1)
c11 = con1[temp]
for i in range(0,(len(con1) -1 )):
res = ((c11[1] - con1[i][1])**2)
res += ((c11[2] - con1[i][2])**2)
res += ((c11[3] - con1[i][3])**2)
res += ((c11[4] - con1[i][4])**2)
res = math.sqrt(res)
if i ==0:
acu = res
if res < acu:
c12 = con1[i]
if c11[0] != c12[0]:
ite = 100;
c22 = kmeans[1]
c21 = con2[0]
ite=0
while (c21[0] != c22[0] and ite < 100):
ite+=1
temp = random.randint(0,len(con2)) % len(con2)
Proyecto de Investigación II Inteligencia Artificial
Pag 20
c21 = con2[temp]
for i in range(0,(len(con2) -1 )):
res = ((c21[1] - con2[i][1])**2)
res += ((c21[2] - con2[i][2])**2)
res += ((c21[3] - con2[i][3])**2)
res += ((c21[4] - con2[i][4])**2)
res = math.sqrt(res)
if i ==0:
acu = res
if res < acu:
c12 = con2[i]
if c11[0] != c12[0]:
ite = 100;
c32 = kmeans[2]
c31 = con2[0]
ite=0
while (c31[0] != c32[0] and ite < 100):
ite+=1
temp = random.randint(0,len(con2)) % len(con2)
c31 = con2[temp]
for i in range(0,(len(con2) -1 )):
res = ((c31[1] - con2[i][1])**2)
res += ((c31[2] - con2[i][2])**2)
res += ((c31[3] - con2[i][3])**2)
res += ((c31[4] - con2[i][4])**2)
res = math.sqrt(res)
if i ==0:
acu = res
if res < acu:
c12 = con2[i]
if c11[0] != c12[0]:
ite = 100;
c42 = kmeans[3]
c41 = con2[0]
ite=0
while (c41[0] != c42[0] and ite < 100):
ite+=1
temp = random.randint(0,len(con2)) % len(con2)
c41 = con2[temp]
for i in range(0,(len(con2) -1 )):
res = ((c41[1] - con2[i][1])**2)
Proyecto de Investigación II Inteligencia Artificial
Pag 21
res += ((c41[2] - con2[i][2])**2)
res += ((c41[3] - con2[i][3])**2)
res += ((c41[4] - con2[i][4])**2)
res = math.sqrt(res)
if i ==0:
acu = res
if res < acu:
c12 = con2[i]
if c11[0] != c12[0]:
ite = 100;
kmeans = []
kmeans.append(c11)
kmeans.append(c21)
kmeans.append(c31)
kmeans.append(c41)
##Clasificacion de elementos restantes
print 'elementos a clasificar ', len(iris)
for a in iris:
print 'elemento a clasificar',a
acu1 = 0
acu2 = 0
acu3 = 0
acu4 = 0
for i in range(0,4):
res = ((a[1] - kmeans[i][1])**2)
res += ((a[2] - kmeans[i][2])**2)
res += ((a[3] - kmeans[i][3])**2)
res += ((a[4] - kmeans[i][4])**2)
res = math.sqrt(res)
if i==0:
acu1 = res
elif i==1:
acu2 = res
elif i==2:
acu3 = res
else:
acu4 = res
if acu1 < acu2 and acu1 < acu3 and acu1 < acu4:
print 'El centroide es: ',
print kmeans[0]
elif acu2 < acu1 and acu2 < acu3 and acu2 < acu4:
Proyecto de Investigación II Inteligencia Artificial
Pag 22
print 'El centroide es: ',
print kmeans[1]
elif acu3 < acu1 and acu3 < acu2 and acu3 < acu4:
print 'El centroide es: ',
print kmeans[2]
elif acu4 < acu1 and acu4 < acu2 and acu4 < acu3:
print 'El centroide es: ',
print kmeans[3]
else:
print 'acutancia igual'
cursor.close()
con.close()
Proyecto de Investigación II Inteligencia Artificial
Pag 23
2.4.3 Redes neuronales (Perceptrón multicapa)
La estructura
Donde
del perceptrón está representada por:
son las entradas (por las dendritas) a la neurona, estas sufren un
efecto multiplicador
por la comunicación de las mismas al núcleo de la
neurona, donde se suma. Aquí se transforma y se modifica la salida de la
neurona mediante la función de transferencia f:
Se trata de un conjunto de elementos que colaboran para generar un valor de
salida, es este caso estudiaremos el comportamiento del modelo matemático
conocido como la generalización delta para la reducción del error cuadrático
de la red por medio de un gradiente.
La regla delta generalizada fue creada generalizar la regla delta sobre redes
neuronales de múltiples capas y funciones de transferencia no lineales y
diferenciables. Su utilización consiste en ajustar pesos y bias tratando de
minimizar el error cuadrático. Esto se realiza de forma continua, cambiando
dichas variables en la dirección contraria a la pendiente del error.
El
Se
Se
Se
Se
Se
Se
algoritmo es el siguiente:
introduce un vector de
entrada y se calcula su salida
determina el error asociado
determian las direcciones que se deben de cambiar para minimizar el error
determinan las cantidades en que es preciso cambiar cada peso
modifican los pesos
repiten los pasos 1 a 5 hasta reducir el error a un valor aceptable
La salida se compara con la salida deseada
Observaciones
-El algoritmo es más lento en comparación con los otros algoritmos en la fase
de entrenamiento.
-Puede perder el conocimiento adquirido si los datos tienen dispersión.
Proyecto de Investigación II Inteligencia Artificial
Pag 24
Proyecto de Investigación II Inteligencia Artificial
Pag 25
Proyecto de Investigación II Inteligencia Artificial
Pag 26
import cPickle #Permite guardar y abrir archivos
rapidamente
from numpy import *
class nn:
def sigmoid(self,x):
return tanh(x)
# derivada de la funcion sigmoid
def dsigmoid(self,y):
#d/dx(tanh(x))=1 - (tanh(x))^2
return 1.0-y*y
def __init__(self, ni, nh, no):
# numero de nodos entrada, oculta y salidas
self.ni = ni +1 # +1 para los bias
self.nh = nh
self.no = no
# activacion de los nodos
self.ai = ones((self.ni))
self.a1 = ones((self.nh))
self.ao = ones((self.no))
# crear pesos
self.w1 = random.uniform(-2.0,2.0,(self.ni,
self.nh))
self.w2 = random.uniform(-2.0,2.0,(self.nh,
self.no))
def guardar(self,filename):
W = [self.w1,self.w2]
cPickle.dump(W,open(filename,'w'))
def cargar(self,filename):
W = cPickle.load(open(filename,'r'))
self.w1=W[0]
self.w2=W[1]
Proyecto de Investigación II Inteligencia Artificial
Pag 27
def evaluar(self, inputs):
if len(inputs) != self.ni-1:
raise ValueError, 'numero erroneo de entradas'
# activaciones entradas
self.ai[0:self.ni-1]=inputs
# acticaciones capa oculta
# a1=f1(W1*p)
self.n1 = dot(transpose(self.w1),self.ai)
self.a1= self.sigmoid(self.n1)
# activaciones salidas
# a2=f2(W2* a1)
self.n2 = dot(transpose(self.w2),self.a1)
self.ao = self.sigmoid(self.n2)
return self.ao
def backPropagate(self, targets, N):
if len(targets) != self.no:
raise ValueError, 'numero de objetivos
incorrectos'
#Propagar errores hacia atras
# Calcular errores a la salida
d2=targets-self.ao
# Calcular errores en la capa oculta
d1 = dot(self.w2,d2)
# Acutalizar pesos de la salida
#Wnuevo += Wviejo+n*(delta2*f2')*a1
d2fp= self.dsigmoid(self.ao) * d2
change = d2fp *
reshape(self.a1,(self.a1.shape[0],1))
self.w2 = self.w2 + N * change
Proyecto de Investigación II Inteligencia Artificial
Pag 28
#Actualizar pesos de las entradas
#Wnuevo += Wviejo+n*(delta1*f1')*a0
d1fp =self.dsigmoid(self.a1) * d1
change = d1fp *
reshape(self.ai,(self.ai.shape[0],1))
self.w1 = self.w1 + N * change
# calcular error
error = sum(0.5* (targets-self.ao)**2)
return error
def test(self, entrada):
#Imprime la entrada y su salida de la red neuronal
for p in range(size(entrada,axis=0)):
print entrada[p,:], '->',
self.evaluar(entrada[p,:])
def singletrain(self,inputs,targets):
#Realiza una iteracion del entrenamiento
backpropagation
self.evaluar(inputs)
return self.backPropagate(targets,0.5)
def train(self, entrada, salida, iterations=1000,
N=0.5):
#Realiza entrenamiento backpropagation
# N: factor de aprendizaje
for i in xrange(iterations):
error = 0.0
for p in range(size(entrada,axis=0)):
inputs = entrada[p,:]
targets = salida[p,:]
self.evaluar(inputs)
error = error + self.backPropagate(targets,
N)
if i % 100 == 0 and i!=0:
Proyecto de Investigación II Inteligencia Artificial
Pag 29
print 'error ' + str(error)
2.5 Algoritmos de aprendizaje no supervisados
Es el proceso mediante el cual se genera conocimiento sin tener un marco
referencial (conjunto de entrenamiento) consiste en descubrir las semejanzas
en los datos de entrada y se generen reglas de corte como resultado del
proceso. Estas reglas deben de ser aplicables a nuevos datos. Se debe
procurar que el algoritmo cuente con un modelo que asegure su correctitud ya
que el material con el que cuenta es el de las entradas y ningún conjunto de
entrada que asegure tendencias.
Proyecto de Investigación II Inteligencia Artificial
Pag 30
2.5.1 Teoría de la Resonancia Adaptativa
Uno de los comportamientos extremos que tienen los algoritmos supervisados es
que los datos nuevos pueden hacer que el conocimiento adquirido se vea
desechado un caso claro es el del perceptrón multicapa que utiliza la función
de minimización, esta puede eliminar el conocimiento adquirido. Son dos
problemas de este tipo que requieren atención:
Plasticidad: Por una parte se debe permitir aprender nuevos patrones.
Estabilidad: Se debe de permitir retener los patrones aprendidos.
En las redes ART existen dos tipos de pesos, los llamados W, que son pesos
feedforward (alimentación hacia adelante) entre la capa de entrada y la capa
de salida, y los llamados T, que son pesos feedback (alimentación hacia atrás
) entre la capa de salida y la capa de entrada.
Los pesos feedforward (W) son iguales que los pesos feedback (T), solo que
estos están normalizados:
Donde es un parámetro que toma generalmente el valor 0,5.
El funcionamiento de un modelo ART se divide en cuatro fases:
Fase de Inicialización
Se inicializan los parámetros de la RNA y se
control.
Se inicializan los pesos de la siguiente manera:
establecen
las
señales
de
para conexiones hacia adelante, siendo
el número de entradas a la RNA.
para conexiones hacia atrás
Mediante las señales de control (ganancia y reinicio) se controla el flujo de
datos a través de la RNA y se pasa a las distintas fases.
Fase de Reconocimiento
En la fase de reconocimiento se efectúa una operación con los datos de
entrada y los pesos W asociados a cada neurona de la capa de salida, el
resultado de esta operación debe indicar qué clase tiene mayor prioridad para
ver si los datos de entrada entran en resonancia con ella. Por ejemplo, se
podría calcular la distancia euclídea entre los datos de entrada y los pesos
Proyecto de Investigación II Inteligencia Artificial
Pag 31
W, la clase ganadora sería aquella cuyo W estuviese más cerca de los datos de
entrada y por lo tanto sería la primera a la que se le intentaría asociar
dicho patrón.
La fórmula propuesta por sus creadores es:
para cada neurona de la capa de salida
donde
corresponde a cada una de las neuronas de la capa de entrada. Los
índices i serán para las neuronas de la capa de entrada y los subíndices j
para las neuronas de la capa de salida.
La selección de la neurona ganadora será como la neurona que obtenga el mayor
valor, esto expresado en fómula es:
Donde J corresponde al índice de la neurona ganadora en F2
el vector generado en dicha capa serán entonces un vector binario con un
único valor en 1 el cual indica la neurona ganadora y dada por :
Fase de Comparación
El objetivo es obtener una medida de similitud entre el vector de entrada y
el vector prototipo que surge de la capa de salida.
El vector de entrada y el vector producido por los feedback (T) de la neurona
ganadora en la capa de salida son comparados en la capa de entrada generando
el vector X.
El cálculo del vector X, se realiza mediante:
Sea I el vector de entrada.
O sea, se aplica un AND entre la entrada y el vector de pesos hacia atrás
correspondientes a la neurona ganadora de la capa F2
Si se cumple que la norma de "X" dividida entre la norma de la entrada es
mayor o igual que p, entonces se puede concluir que dicha entrada forma parte
de la categoría seleccionada y se debe proceder a ajustar los pesos tanto
hacia adelante como hacia atrás:
Proyecto de Investigación II Inteligencia Artificial
Pag 32
De lo contrario se envía una señal reinicio, para que inhiba la neurona
ganadora y proceda de nuevo la selección de una ganadora, excluyendo la
neurona inhibida.
Fase de Búsqueda
De no representar la neurona ganadora la categoría del vector de entrada,
esta neurona se desactiva y se empieza la búsqueda por otras categorías que
ya posea la red. Se repiten entonces los pasos anteriores hasta que se
encuentre una neurona ganadora que represente la categoría del vector de
entrada.
Si se repitiera el proceso hasta que no quedara ninguna neurona se llegaría a
una situación de saturación de la red que podría solucionarse ampliando el
número de neuronas de la RNA de forma dinámica.
Proyecto de Investigación II Inteligencia Artificial
Pag 33
2.5.2 Redes Bayesianas
Una red bayesiana, red de Bayes, red de creencia, modelo bayesiano (de Bayes)
o modelo probabilístico en un grafo acíclico dirigido es un modelo grafo
probabilístico (un tipo de modelo estático) que representa un conjunto de
variables aleatorias y sus dependencias condicionales a través de un grafo
acíclico dirigido (DAG por sus siglas en inglés). Por ejemplo, una red
bayesiana puede representar las relaciones probabilísticas entre enfermedades
y síntomas. Dados los síntomas, la red puede ser usada para computar las
probabilidad de la presencia de varias enfermedades.
Formalmente, las redes bayesianas son grafos dirigidos acíclicos cuyos nodos
representan variables aleatorias en el sentido de Bayes: las mismas pueden
ser cantidades observables, variables latentes, parámetros desconocidos o
hipótesis. Las aristas representan dependencias condicionales; los nodos que
no
se
encuentran
conectados
representan
variables
las
cuales
son
condicionalmente independientes de las otras. Cada nodo tiene asociado una
función de probabilidad que toma como entrada un conjunto particular de
valores de las variables padres del nodo y devuelve la probabilidad de la
variable representada por el nodo. Por ejemplo, si por padres son
variables
booleanas entonces la función de probabilidad puede ser representada por una
tabla de
entradas, una entrada para cada una de las
posibles
combinaciones de los padres siendo verdadero o falso. Ideas similares pueden
ser aplicadas a grafos no dirigidos, y posiblemente cíclicos; como son las
llamadas redes de Markov.
Existen algoritmos eficientes que llevan a cabo la inferencia y el
aprendizaje en redes bayesianas. Las redes bayesianas que modelan secuencias
de variables (ej señales del habla o secuencias de proteínas) son llamadas
redes bayesianas dinámicas. Las generalizaciones de las redes bayesianas que
pueden representar y resolver problemas de decisión bajo incertidumbre son
llamados diagramas de influencia.
Proyecto de Investigación II Inteligencia Artificial
Pag 34
Proyecto de Investigación II Inteligencia Artificial
Pag 35
=== Run information ===
Scheme:weka.classifiers.bayes.BayesNet -D -Q weka.classifiers.bayes.net.search.local.K2 -- -P
1 -S BAYES -E weka.classifiers.bayes.net.estimate.SimpleEstimator -- -A 0.5
Relation: iris
Instances: 150
Attributes: 5
sepallength
sepalwidth
petallength
petalwidth
class
Test mode:split 75.0% train, remainder test
=== Classifier model (full training set) ===
Bayes Network Classifier
not using ADTree
#attributes=5 #classindex=4
Network structure (nodes followed by parents)
sepallength(3): class
sepalwidth(3): class
petallength(3): class
petalwidth(3): class
class(3):
LogScore Bayes: -481.00632967833803
LogScore BDeu: -525.3834868062277
LogScore MDL: -536.5317339418378
LogScore ENTROPY: -471.39347511858665
LogScore AIC: -497.39347511858665
Time taken to build model: 0.02 seconds
=== Evaluation on test split ===
=== Summary ===
Correctly Classified Instances
33
Incorrectly Classified Instances
4
Kappa statistic
0.8374
Mean absolute error
0.0654
Root mean squared error
0.2173
Relative absolute error
14.7117 %
89.1892 %
10.8108 %
Proyecto de Investigación II Inteligencia Artificial
Pag 36
Root relative squared error
Total Number of Instances
46.0542 %
37
=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
1
0
1
1
1
1
Iris-setosa
0.846 0.083
0.846 0.846 0.846
0.984 Iris-versicolor
0.846 0.083
0.846 0.846 0.846
0.984 Iris-virginica
Weighted Avg. 0.892 0.059
0.892 0.892 0.892
0.989
=== Confusion Matrix ===
a b c <-- classified as
11 0 0 | a = Iris-setosa
0 11 2 | b = Iris-versicolor
0 2 11 | c = Iris-virginica
Proyecto de Investigación II Inteligencia Artificial
Pag 37
2.5.3 Cadenas de Markov
Una cadena de Markov es una serie de eventos, en la cual la probabilidad de
que ocurra un evento depende del evento inmediato anterior. En efecto, las
cadenas de este tipo tienen memoria, "Recuerdan" el último evento y esto
condiciona las posibilidades de los eventos futuros. Esta dependencia del
evento anterior distingue a las cadenas de Markov de las series de eventos
independientes, como tirar una moneda al aire o un dado. En los negocios, las
cadenas de Markov se han utilizado para analizar los patrones de compra,los
deudores morosos, para planear las necesidades de personal y para analizar el
reemplazo de equipo. El análisis de Markov, llamado así en honor de un
matemático ruso que desarrollo el método en 1907, permite encontrar la
probabilidad de que un sistema se encuentre en un estado en particular en un
momento dado. Algo más importante aún, es que permite encontrar el promedio a
la larga o las probabilidades de estado estable para cada estado. Con esta
información se puede predecir el comportamiento del sistema a través del
tiempo. La tarea más difícil es reconocer cuándo puede aplicarse. La
caracteristica más importante que hay que buscar en la memoria de un evento a
otro.
Considere el problema siguiente: la compañía K, el fabricante de un cereal
para el desayuno, tiene un 25% del mercado actualmente. Datos del año
anterior indican que el 88% de los clientes de K permanecían fieles ese año,
pero un 12% cambiaron a la competencia. Además, el 85% de los clientes de la
competencia le permanecían fieles a ella, pero 15% de los clientes de la
competencia cambiaron a K. Asumiendo que estas tendencias continúen determine
¿Cuál es la parte que K aprovecha del mercado?:
En 2 años; y
En el largo plazo.
Esta situación es un ejemplo de un problema de cambio de marcas que sucede
muy a menudo que se presenta en la venta de bienes de consumo.
Para resolver este problema hacemos uso de cadenas de Markov o procesos de
Markov (qué es un tipo especial de proceso estocástico). El procedimiento se
da enseguida.
Procedimiento de solución
Observe que, cada año, un cliente puede estar comprando cereal de K o de la
competencia. Podemos construir un diagrama como el mostrado abajo donde los
dos círculos representan a los dos estados en que un cliente puede estar y
los arcos representan la probabilidad de que un cliente haga una cambio cada
año entre los estados. Note que los arcos curvos indican una "transición" de
un estado al mismo estado. Este diagrama es conocido como el diagrama de
Proyecto de Investigación II Inteligencia Artificial
Pag 38
estado de transición (notar que todos los arcos en ese diagrama son arcos
dirigidos).
Dado ese diagrama nosotros podemos construir la matriz de la transición
(normalmente denotada por el símbolo P) la qué nos dice la probabilidad de
hacer una transición de un estado a otro estado.
Sea:
Estado 1 = cliente que compra cereal de K y
Estado 2 = cliente que compra cereal de la competencia
Tenemos así la matriz de transición P para este problema, dada por
Para estado 1 2
Del estado 1 | 0.88 0.12 |
2 | 0.15 0.85 |
Note aquí que la suma de los elementos en cada fila de la matriz de la
transición es uno.
Por datos de este año sabemos que actualmente K tiene un 25% del mercado.
Tenemos que la fila de la matriz que representa el estado inicial del sistema
dado por:
Estado
1 2
[0.25, 0.75]
Normalmente denotamos esta fila de la matriz por s1 indicando el estado del
sistema en el primer periodo (años en este ejemplo en particular). Ahora la
teoría de Markov nos dice que, en periodo (año) t, el estado del sistema está
dado por el st de la fila de la matriz, donde:
st = st-1(P) =st-2(P)(P) = ... = s1(P)t-1
Tenemos que tener cuidado aquí al hacer la multiplicación de la matriz ya que
el orden de cálculo es importante (i.e. st-1(P) no es igual a (P)st-1 en
general). Para encontrar st nosotros podríamos intentar hallar P directamente
para la potencia t-1 pero, en la práctica, es mucho más fácil de calcular el
estado del sistema en cada sucesivo año 1,2,3 ,..., t.
Proyecto de Investigación II Inteligencia Artificial
Pag 39
Nosotros ya sabemos el estado del sistema en el año 1 (s1) tal que el estado
del sistema en el año dos (s2) está dado por:
s2 = s1P
= [0.25,0.75] |0.88 0.12 |
........|0.15 0.85 |
= [(0.25)(0.88) + (0.75)(0.15), (0.25)(0.12) + (0.75)(0.85)]
= [0.3325, 0.6675]
Note que este resultado tiene sentido intuitivo, e.g. del 25% comprando
actualmente al cereal de K, 88% continúan haciendolo, aunque del 75%
comprando el cereal del competidor 15% cambia a comprar cereal de K - dando
un (fracción) total de (0.25)(0.88) + (0.75)(0.15) = 0.3325 comprando cereal
de K.
De lo anterior, en el año dos 33.25% de las personas están en estado 1 - esto
es, está comprando cereal de K. Note aquí que, como un chequeo numérico, los
elementos de st deben sumar siempre uno.
En el año tres el estado del sistema se da por:
s3 = s2P
= [0.3325, 0.6675] |0.88 0.12 |
............... |0.15 0.85 |
= [0.392725, 0.607275]
Por lo tanto en el año tres 39.2725% de las personas están comprando al
cereal de K.
Recalcar que está pendiente la cuestión hecha sobre la porción que K comparte
del mercado en el largo plazo. Esto implica que necesitamos calcular st
cuando t se hace muy grande (se acerca al infinito).
La idea de la largo plazo es basada en la suposición de que, en el futuro, el
sistema alcance un "equilibrio" (a menudo llamado el "estado sustentable") en
el sentido de que el st = st-1. Ésto no quiere decir que las transiciones
entre estados no tengan lugar, suceden, pero ellos tienden "al equilibrio
global" tal que el número en cada estado permanece el mismo.
Hay dos enfoques básicos para calcular el estado sustentable:
Computational: - encontrar el estado sustentable calculando st para
t=1,2,3,... y se detiene cuando st-1 y st son aproximadamente el mismo. Esto
es obviamente muy fácil para una computadora y este es el enfoque usado por
un paquete computacional.
Algebraico: - para evitar cálculos aritméticos largos necesarios para
calcular st para t=1,2,3,... tenemos un atajo algebraico que puede usarse.
Recalcar que en el estado sustentable st = st-1 (= [x1,x2] para el ejemplo
considerado anteriormente). Entonces como st = st-1P tenemos eso
[x1,x2] = [x1,x2] | 0.88 0.12 |
.............| 0.15 0.85 |
(y también notar que x1 + x2 = 1). De esto tenemos tres ecuaciones que
podemos resolver.
Note aquí que hemos usado la palabra suposición anteriormente. Esto es porque
no todos los sistemas alcanzan un equilibrio, esto es, no cualquier sistema
tiene matriz de transición
| 0 1 |
Proyecto de Investigación II Inteligencia Artificial
Pag 40
|1 0 |
Nunca alcanza un estado sustentable.
Adoptando el enfoque algebraico anteriormente para el ejemplo del cereal K
tenemos las tres ecuaciones siguientes:
x1 = 0.88x1 + 0.15x2
x2 = 0.12x1 + 0.85x2
x1 + x2 = 1
o
0.12x1 - 0.15x2 = 0
0.12x1 - 0.15x2 = 0
x1 + x2 = 1
Note que la ecuación x1 + x2 = 1 es esencial. Sin élla no podríamos obtener
una única solución para x1 y x2. Resolviendo conseguimos x1 = 0.5556 y x2 =
0.4444
Por lo tanto, en la largo plazo, K comercializa una porción del mercado del
55.56%.
Un chequeo numérico útil (particularmente para problemas más grandes) es
sustituir el examen final calculando los valores en las ecuaciones originales
para verificar que ellos son consistentes con esas ecuaciones.
Proyecto de Investigación II Inteligencia Artificial
Pag 41
2.6 Algoritmos de ensamble
Había seis hombres de Indostán muy propensos a aprender, quienes fueron a ver
el elefante (A pesar de que todos ellos eran ciegos), para que cada uno de
ellos por observación pudieran saciar sus intelectos ellos concluyen que el
elefante es como una pared, una víbora, una lanza, un árbol, un abanico o una
soga dependiendo de la parte que tocaron. Los hombres debaten acaloradamente.
Para el uso del algoritmo de ensamble usaremos diversas opiniones de los
clasificadores anteriormente usados lo cual mejorará la clasificación pero
hará más lento el proceso de decisión, la implementación de Weka.
Aunque en muchas aplicaciones las redes neuronales son una herramienta
poderosa, en problemas de difícil resolución una única red resulta
insuficiente. Para solventar esta dificultad, los conjuntos de redes
neuronales proponen combinar diferentes redes de modo que se forme un
conjunto capaz de resolver mejor el problema en cuestión, proporcionando,
además, un diseño más sencillo y más fácilmente comprensible. Entre los
conjuntos de redes neuronales destacan los métodos de "Boosting" y,
especialmente, el algoritmo "AdaBoost".
Esquema de algoritmo Real AdaBoostEl algoritmo AdaBoost propone entrenar
iterativamente una serie de clasificadores base, de tal modo que cada nuevo
clasificador preste mayor atención a los datos clasificados erróneamente por
los clasificadores anteriores, y combinarlos de tal modo que se obtenga un
clasificador con elevadas prestaciones. Para ello, durante una serie de
iteraciones entrena un clasificador que implementa una función asignándole un
peso de salida, y lo añade al conjunto de modo que la salida global del
sistema se obtenga como combinación lineal ponderada de todos los
clasificadores base.
Para conseguir que cada nuevo clasificador preste mayor atención a los datos
más erróneos se emplea una función de énfasis que pondera la importancia de
cada dato durante el entrenamiento del clasificador. El análisis de esta
función
de énfasis nos ha permitido descomponerla en el producto de dos
términos, uno relacionado con el error cuadrático de las muestras y otro
asociado con la proximidad de estas a la frontera y, consecuentemente,
generalizar
la
estructura
de
la
función
de
énfasis
del
Adaboost,
introduciendo un parámetro de mezcla ajustable, λ, para controlar el
compromiso entre los dos términos de énfasis.
Proyecto de Investigación II Inteligencia Artificial
Pag 42
Proyecto de Investigación II Inteligencia Artificial
Pag 43
=== Run information ===
Scheme:weka.classifiers.meta.AdaBoostM1 -P 100 -S 1 -I 10 -W
weka.classifiers.trees.DecisionStump
Relation: iris
Instances: 150
Attributes: 5
sepallength
sepalwidth
petallength
petalwidth
class
Test mode:split 75.0% train, remainder test
=== Classifier model (full training set) ===
AdaBoostM1: Base classifiers and their weights:
Decision Stump
Classifications
petallength <= 2.45 : Iris-setosa
petallength > 2.45 : Iris-versicolor
petallength is missing : Iris-setosa
Class distributions
petallength <= 2.45
Iris-setosa
Iris-versicolor Iris-virginica
1.0
0.0
0.0
petallength > 2.45
Iris-setosa
Iris-versicolor Iris-virginica
0.0
0.5
0.5
petallength is missing
Iris-setosa
Iris-versicolor Iris-virginica
0.3333333333333333 0.3333333333333333 0.3333333333333333
Weight: 0.69
Decision Stump
Proyecto de Investigación II Inteligencia Artificial
Pag 44
Classifications
petallength <= 2.45 : Iris-setosa
petallength > 2.45 : Iris-virginica
petallength is missing : Iris-virginica
Class distributions
petallength <= 2.45
Iris-setosa
Iris-versicolor Iris-virginica
1.0
0.0
0.0
petallength > 2.45
Iris-setosa
Iris-versicolor Iris-virginica
0.0
0.3333333333333333 0.6666666666666667
petallength is missing
Iris-setosa
Iris-versicolor Iris-virginica
0.25 0.25 0.5000000000000001
Weight: 1.1
Decision Stump
Classifications
petalwidth <= 1.75 : Iris-versicolor
petalwidth > 1.75 : Iris-virginica
petalwidth is missing : Iris-versicolor
Class distributions
petalwidth <= 1.75
Iris-setosa
Iris-versicolor Iris-virginica
0.24154589371980675
0.7101449275362319 0.04830917874396136
petalwidth > 1.75
Iris-setosa
Iris-versicolor Iris-virginica
0.0
0.032258064516129024
0.967741935483871
petalwidth is missing
Iris-setosa
Iris-versicolor Iris-virginica
0.16666666666666666
0.5
0.33333333333333337
Weight: 1.32
Proyecto de Investigación II Inteligencia Artificial
Pag 45
Decision Stump
Classifications
petallength <= 2.45 : Iris-setosa
petallength > 2.45 : Iris-versicolor
petallength is missing : Iris-setosa
Class distributions
petallength <= 2.45
Iris-setosa
Iris-versicolor Iris-virginica
1.0
0.0
0.0
petallength > 2.45
Iris-setosa
Iris-versicolor Iris-virginica
2.4541772123292936E-17 0.5536309127248501 0.44636908727514996
petallength is missing
Iris-setosa
Iris-versicolor Iris-virginica
0.3968253968253968 0.33393610608800484
0.2692384970865984
Weight: 1.0
Decision Stump
Classifications
petalwidth <= 0.8 : Iris-setosa
petalwidth > 0.8 : Iris-virginica
petalwidth is missing : Iris-virginica
Class distributions
petalwidth <= 0.8
Iris-setosa
Iris-versicolor Iris-virginica
1.0
0.0
0.0
petalwidth > 0.8
Iris-setosa
Iris-versicolor Iris-virginica
4.876852104094112E-17
0.3136440837893929 0.6863559162106071
petalwidth is missing
Iris-setosa
Iris-versicolor Iris-virginica
0.2715149848776456 0.22848501512235284
0.5000000000000014
Proyecto de Investigación II Inteligencia Artificial
Pag 46
Weight: 1.22
Decision Stump
Classifications
petallength <= 2.45 : Iris-setosa
petallength > 2.45 : Iris-versicolor
petallength is missing : Iris-versicolor
Class distributions
petallength <= 2.45
Iris-setosa
Iris-versicolor
1.0
0.0
0.0
petallength > 2.45
Iris-setosa
Iris-versicolor
-1.2574765214077044E-17
petallength is missing
Iris-setosa
Iris-versicolor
0.1759622238061291 0.5
Iris-virginica
Iris-virginica
0.6067682992755968 0.39323170072440317
Iris-virginica
0.324037776193871
Weight: 0.74
Decision Stump
Classifications
petallength <= 4.85 : Iris-versicolor
petallength > 4.85 : Iris-virginica
petallength is missing : Iris-virginica
Class distributions
petallength <= 4.85
Iris-setosa
Iris-versicolor Iris-virginica
0.2517002096709582 0.660989158028418 0.08731063230062384
petallength > 4.85
Iris-setosa
Iris-versicolor Iris-virginica
1.379474925594973E-17
0.058064332648205416
0.9419356673517946
petallength is missing
Iris-setosa
Iris-versicolor Iris-virginica
0.1301568472386974 0.3698431527613032 0.49999999999999944
Proyecto de Investigación II Inteligencia Artificial
Pag 47
Weight: 1.37
Decision Stump
Classifications
petallength <= 2.45 : Iris-setosa
petallength > 2.45 : Iris-virginica
petallength is missing : Iris-virginica
Class distributions
petallength <= 2.45
Iris-setosa
Iris-versicolor
1.0
0.0
0.0
petallength > 2.45
Iris-setosa
Iris-versicolor
-2.17703546955402E-18
petallength is missing
Iris-setosa
Iris-versicolor
0.32003984920368916
Iris-virginica
Iris-virginica
0.4168896637524031 0.5831103362475969
Iris-virginica
0.28346835863050734
0.39649179216580344
Weight: 0.93
Decision Stump
Classifications
petallength <= 2.45 : Iris-setosa
petallength > 2.45 : Iris-versicolor
petallength is missing : Iris-versicolor
Class distributions
petallength <= 2.45
Iris-setosa
Iris-versicolor Iris-virginica
1.0
0.0
0.0
petallength > 2.45
Iris-setosa
Iris-versicolor Iris-virginica
3.621292691813957E-17
0.6437704901626133 0.35622950983738655
petallength is missing
Proyecto de Investigación II Inteligencia Artificial
Pag 48
Iris-setosa
Iris-versicolor Iris-virginica
0.2233256919345557 0.4999999999999997 0.27667430806544463
Weight: 0.96
Decision Stump
Classifications
petallength <= 2.45 : Iris-setosa
petallength > 2.45 : Iris-virginica
petallength is missing : Iris-virginica
Class distributions
petallength <= 2.45
Iris-setosa
Iris-versicolor
1.0
0.0
0.0
petallength > 2.45
Iris-setosa
Iris-versicolor
1.1378476401045689E-17
petallength is missing
Iris-setosa
Iris-versicolor
0.15437422894330288
Iris-virginica
Iris-virginica
0.4087218990793083 0.5912781009206917
Iris-virginica
0.3456257710566977 0.4999999999999995
Weight: 0.64
Number of performed Iterations: 10
Time taken to build model: 0.05 seconds
=== Evaluation on test split ===
=== Summary ===
Correctly Classified Instances
35
94.5946 %
Incorrectly Classified Instances
2
5.4054 %
Kappa statistic
0.9187
Mean absolute error
0.0868
Root mean squared error
0.1734
Relative absolute error
19.5118 %
Root relative squared error
36.7342 %
Proyecto de Investigación II Inteligencia Artificial
Pag 49
Total Number of Instances
37
=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
1
0
1
1
1
1
Iris-setosa
1
0.083
0.867 1
0.929
0.984 Iris-versicolor
0.846 0
1
0.846 0.917
0.984 Iris-virginica
Weighted Avg. 0.946 0.029
0.953 0.946 0.946
0.989
=== Confusion Matrix ===
a b c <-- classified as
11 0 0 | a = Iris-setosa
0 13 0 | b = Iris-versicolor
0 2 11 | c = Iris-virginica
Proyecto de Investigación II Inteligencia Artificial
Pag 50
2.7 Python
Python es un lenguaje de programación que apuesta por la simplicidad,
versatilidad y rapidez de desarrollo. A continuación veremos unas notas
imprescindibles del lenguaje, extractadas básicamente de la página de inicio
del lenguaje que se puede ver en www.python.org. Python es un lenguaje de
scripting independiente de plataforma y orientado a objetos, preparado para
realizar cualquier tipo de programa, desde aplicaciones Windows a servidores
de red o incluso, páginas web. Es un lenguaje interpretado, lo que significa
que no se necesita compilar el código fuente para poder ejecutarlo, lo que
ofrece ventajas como la rapidez de desarrollo e inconvenientes como una menor
velocidad.
El creador del lenguaje es un europeo llamado Guido Van Rossum. Hace ya más
de una década que diseño Python, ayudado y motivado por su experiencia en la
creación de otro lenguaje llamado ABC. El objetivo de Guido era cubrir la
necesidad de un lenguaje orientado a objetos de sencillo uso que sirviese
para tratar diversas tareas dentro de la programación que habitualmente se
hacía en Unix usando C.
El desarrollo de Python duró varios años, durante los que trabajó en diversas
compañías de Estados Unidos. En el 2000 ya disponía de un producto bastante
completo y un equipo de desarrollo con el que se había asociado incluso en
proyectos empresariales. Actualmente trabaja en Zope, una plataforma de
gestión de contenidos y servidor de aplicaciones para el web, por supuesto,
programada por completo en Python.
Características del lenguaje
Propósito general
Se pueden crear todo tipo de programas. No es un lenguaje creado
específicamente para la web, aunque entre sus posibilidades sí se encuentra
el desarrollo de páginas.
Multiplataforma
Hay versiones disponibles de Python en muchos sistemas informáticos
distintos. Originalmente se desarrolló para Unix, aunque cualquier sistema es
compatible con el lenguaje siempre y cuando exista un intérprete programado
para él.
Interpretado
Quiere decir que no se debe compilar el código antes de su ejecución. En
realidad sí que se realiza una compilación, pero esta se realiza de manera
transparente para el programador. En ciertos casos, cuando se ejecuta por
primera vez un código, se producen unos bytecodes que se guardan en el
Proyecto de Investigación II Inteligencia Artificial
Pag 51
sistema y que sirven para acelerar la compilación implícita que realiza el
intérprete cada vez que se ejecuta el mismo código.
Interactivo
Python dispone de un intérprete por línea de comandos en el que se pueden
introducir sentencias. Cada sentencia se ejecuta y produce un resultado
visible, que puede ayudarnos a entender mejor el lenguaje y probar los
resultados de la ejecución de porciones de código rápidamente.
Orientado a Objetos
La programación orientada a objetos está soportada en Python y ofrece en
muchos casos una manera sencilla de crear programas con componentes
reutilizables.
Funciones y librerías
Dispone de muchas funciones incorporadas en el propio lenguaje, para el
tratamiento de cadenas, números, archivos, etc. Además, existen muchas
librerías que podemos importar en los programas para tratar temas específicos
como la programación de ventanas o sistemas en red o cosas tan interesantes
como crear archivos comprimidos.
Sintaxis clara
Por último, destacar que Python tiene una sintaxis muy visual, gracias a una
notación identada (con márgenes) de obligado cumplimiento. En muchos
lenguajes, para separar porciones de código, se utilizan elementos como las
llaves o las palabras clave begin y end. Para separar las porciones de código
en Python se debe tabular hacia dentro, colocando un margen al código que
iría dentro de una función o un bucle. Esto ayuda a que todos los
programadores adopten unas mismas notaciones y que los programas de cualquier
persona tengan un aspecto muy similar.
Todo lo anterior resumido en los siguientes 20 aforismos:
Hermoso es mejor que feo.
Explícito es mejor que implícito.
Simple es mejor que complejo.
Complejo es mejor que complicado.
Plano es mejor que anidado.
Disperso es mejor que denso.
La legibilidad cuenta.
Los casos especiales no son suficientemente especiales como para romper las
reglas.
Aunque lo pragmático gana a la pureza.
Los errores nunca deberían dejarse pasar silenciosamente.
A menos que se silencien explícitamente.
Cuando te enfrentes a la ambigüedad, rechaza la tentación de adivinar.
Debería haber una — y preferiblemente sólo una — manera obvia de hacerlo.
Proyecto de Investigación II Inteligencia Artificial
Pag 52
Aunque puede que no sea obvia a primera vista a menos que seas holandés.
(NT: Guido van Rossum es holandés)
Ahora es mejor que nunca.
Aunque muchas veces nunca es mejor que *ahora mismo*.
Si la implementación es difícil de explicar, es una mala idea.
Si la implementación es sencilla de explicar, puede que sea una buena idea.
Los espacios de nombres son una gran idea — ¡tengamos más de esas!
Proyecto de Investigación II Inteligencia Artificial
Pag 53
3. Sistemas dinámicos
La teoría de los sistemas dinámicos es el área de las matemáticas que
describe el comportamiento de sistemas complejos dinámicos, habitualmente se
usan ecuaciones diferenciales
o recurrencias. Cuando se ocupan ecuaciones
diferenciales es llamada teoría
de sistemas dinámicos continuos. Cuando se
usan las ecuaciones de recurrencia es llamada teoría de sistemas discretos.
Cuando se hace uso de una variable temporal sobre intervalos regulares se
hace referencia a ecuaciones dinámicas sobre escalas de tiempo. Existen casos
en los que se puede representar los modelos usando una teoría mixta.
En la teoría se trata con el comportamiento a largo plazo de sistemas
dinámicos y estudia las ecuaciones de movimiento de sistemas primariamente de
naturaleza mecánica. Por ejemplo la órbita de los planetas así como el
comportamiento de circuitos eléctricos y las soluciones de ecuaciones
diferenciales parciales que existen en el campo de la biología. hay un
esfuerzo importante en los sistemas caóticos.
Proyecto de Investigación II Inteligencia Artificial
Pag 54
3.1 Teoría del Caos
“Caos: Cuando el presente determina el futuro, pero el presente aproximado no
determina el futuro aproximado”
Edward Lorenz
La teoría del caos es un campo de estudio en las matemáticas, con
aplicaciones en varias disciplinas incluyendo la Meteorología, Sociología,
Física, Ingeniería, Economía, Biología, y Filosofía. La teoría del caos
estudia el comportamiento de sistemas dinámicos sensibles a las condiciones
iniciales el llamado efecto mariposa. Pequeñas diferencias en las condiciones
iniciales conducen a cambios en estos sistemas, predecir a largo plazo en
general no es posible, pasa incluso en los sistemas deterministas sin
elementos de carácter aleatorio lo cual hace a estos sistemas no predecibles.
Este comportamiento también es conocido como caos determinista o simplemente
caos.
El comportamiento caótico puede ser observado en muchos sistemas naturales
como la meteorología y el comportamiento climático, este comportamiento ha
sido estudiado como análisis del caos a través de modelos matemáticos y
técnicas como el ploteo recurrente y los mapas de Poincaré.
In descriptive statistics and chaos theory, a recurrence plot (RP) is a plot
showing, for a given moment in time, the times at which a phase space
trajectory visits roughly the same area in the phase space. In other words,
it is a graph of
showing on a horizontal axis and
space trajectory.
on a vertical axis, where
is a phase
Eckmann et al. (1987) introduced recurrence plots, which provide a way to
visualize the periodic nature of a trajectory through a phase space. Often,
the phase space does not have a low enough dimension (two or three) to be
pictured, since higher-dimensional phase spaces can only be visualized by
projection into the two or three-dimensional sub-spaces. However, making a
recurrence plot enables us to investigate certain aspects of the mdimensional phase space trajectory through a two-dimensional representation.
A recurrence is a time the trajectory returns to a location it has visited
before. The recurrence plot depicts the collection of pairs of times at which
the trajectory is at the same place, i.e. the set of
with
This can show many things, for instance, if the trajectory
periodic with period
multiple of
is
.
strictly
, then all such pairs of times will be separated by a
and visible as diagonal lines. To make the plot, continuous time
and continuous phase space are discretized, taking e.g.
as the location
Proyecto de Investigación II Inteligencia Artificial
Pag 55
of the trajectory at time
and counting as a recurrence any time the
trajectory gets sufficiently close (say, within ε) to a point it has been
previously. Concretely then, recurrence/non-recurrence can be recorded by the
binary function
and
the
recurrence
plot
puts
a
(black)
point
at
coordinates
if
.
Caused by characteristic behaviour of the phase space trajectory, a
recurrence plot contains typical small-scale structures, as single dots,
diagonal lines and vertical/horizontal lines (or a mixture of the latter,
which combines to extended clusters). The large-scale structure, also called
texture, can be visually characterised by homogenous, periodic, drift or
disrupted. The visual appearance of an RP gives hints about the dynamics of
the system.
Proyecto de Investigación II Inteligencia Artificial
Pag 56
3.2 Geometría Fractal
La geometría fractal es una rama de las matemáticas que estudia modelos
matemáticos adecuados para formas geométricas complejas e irregulares.
Dimensión fractal
Puede definirse en términos del mínimo número
necesarias para recubrir el conjunto, como el límite:
O en función del recuento del número de cajas
de
bolas
de
radio
de una cuadrícula de anchura
que intersecan al conjunto:
Se demuestra que ambas definiciones son equivalentes, y que son invariantes
bajo isometrías.
Dimensión de Hausdorff-Besicovitch
De una definición más compleja, la dimensión de Hausdorff-Besicovitch nos
proporciona un número
,
también invariante bajo isometrías, cuya relación con la dimensión fractal
es la siguiente:
Esto permite distinguir
dimensión fractal.
en
algunos
casos
entre
conjuntos
Proyecto de Investigación II Inteligencia Artificial
con
la
misma
Pag 57
Dimensión de fractales producidos por un IFS
Un sistema iterativo de funciones (IFS) es
contractivas definidas sobre un subconjunto de
un
conjunto
de
funciones
.
Cuando no hay solapamiento entre las imágenes de cada función, se demuestra
que
y que ambas pueden calcularse como solución de la ecuación:
donde ci designa el factor de contracción de cada aplicación contractiva del
IFS.
Proyecto de Investigación II Inteligencia Artificial
Pag 58
4. Construcción de la Heurística Modelo de flor
4.1 Proceso ETL Conjunto de Prueba
Cada atributo será considerado como una dimensión independiente.
4.1.1 Extracción del conjunto de prueba
Se descarga el archivo que contiene las tuplas del sitio. Se crea un esquema
y una nueva base de datos oracle, se crean las tablas del ods y dm en caso de
que aplique. Separamos el conjunto de instancias a utilizar de manera que el
25 % sean datos que sirvan para entrenar el algoritmo y el restante 75% sean
el conjunto de prueba.
4.1.2 Transformación del conjunto de prueba
El criterio para las las transformaciones es el siguiente:
-Los datos que tengan un campo con el signo “?” debe ser sustituido por un
null (Limpieza).
-Se deben de formatear los datos para ser interpretados como tipo “double”
(Estandarización)
-Para cada campo no numérico se debe de crear una regla de correspondencia de
manera que todos los campos sean numéricos (Discretización).
-Validación, se crea una regla de para evaluar el valor de cada tupla por la
cantidad de información que proporciona.
-Se crean las dimensiones para formar el espacio fase
4.1.3 Carga conjunto de prueba
Una vez que estén los datos listos, estos
dimensional que contendrá un atributo cada vez.
se
colocan
en
un
datamart
4.2 Construcción
El modelo de flor recrea el proceso de auto similitud de un fractal, si hay
relación entre los datos, esta relación debe de ser de una dimensión fractal.
El conocimiento adquirido al revisar e implementar los demás aprendices ha
permitido encontrar algunas peculiaridades propias para esta heurística.
Imagine entonces que es tarde y algo se aproxima hacia usted; puede
considerar que existen las condiciones para reconocer el objeto por el sonido
que hace, el olor que despide y finalmente por la forma que ve…
Proyecto de Investigación II Inteligencia Artificial
Pag 59
Cuando tenemos un conjunto de entrenamiento lo que se hace es tratar de
definir la forma o atributos para realizar una clasificación a través de un
umbral o función de activación. Para un ser humano es posible reconocer
diferentes formas de un mismo objeto primero identificando una silueta y
luego acercarse y tomar detalle las características menos visibles del
objeto.
Diferentes niveles de información hacen que un atributo sea más o menos útil
atendiendo a la premisa del peligro que supone, regresando a la metáfora
anterior, si el sonido es parecido al rugido de un tigre, entonces lo más
probable es que se trate de un tigre y se ocupan las otras características
para comprobarlo.
Finalmente hay otro aspecto que es conveniente recalcar existe un error
asociado en cada una de las observaciones hechas, pero en la naturaleza ese
supuesto error nos da un margen de operatividad.
4.2.1 Diseño
Usando el concepto anteriormente expuesto:
Encontrar la ecuación dado un fractal o el comportamiento.
Encontrar atractores.
Observaciones.
-Suponemos que los datos se comportan de forma fractal.
-Al encontrar la ecuación encontramos el modelo.
-Podemos no encontrar la ecuación.
-Consideramos el error como un coeficiente de ajuste.
Paso 1. Calcular las estadísticas de acercamientos, como se ha divido en cada
atributo en un posible indicador, se encontrara la relación más común entre
los n datos, es decir todas las distancias entre elementos de manera que:
Paso 2. Calcular los atractores de la dimensión.
Paso 3. Usar los datos obtenidos en el conjunto de prueba en el conjunto de
datos fuera del conjunto de prueba, si existen datos no vistos con antelación
en el conjunto de prueba, se crea un nuevo atractor para cada dimensión.
Paso 4. Si se puede generalizar el comportamiento con una ecuación, entonces
hemos acabado si no; utilizar los atractores para los datos
Proyecto de Investigación II Inteligencia Artificial
Pag 60
4.2.2 Codificación
import
import
import
import
import
import
import
java.io.BufferedReader;
java.io.File;
java.io.FileReader;
java.io.FileWriter;
java.io.PrintWriter;
java.io.IOException;
java.util.ArrayList;
Public class Archivo {
public ArrayList<Modelo> leerArchivo(String ruta)throws Exception{
ArrayList<Modelo> lista = new ArrayList<Modelo>();
//Se crea un objeto File usando el constructor que recibe la ruta(String)
File archivo = new File (ruta);
//Usamos estos 2 objetos porque BufferedReader contiene un m�todo sencilo
//Para leer el archivo por linea
FileReader fileReader = new FileReader (archivo);
BufferedReader buffReader = new BufferedReader(fileReader);
String linea=null;
int cont= 0;
while((linea=buffReader.readLine())!=null){
try{
cont++;
if(linea.length()>0){
String[] renglonTemporal = linea.split(",");
Modelo
m
=
new
Modelo(Double.valueOf(renglonTemporal[0]),
Double.valueOf(renglonTemporal[1]),Double.valueOf(renglonTemporal[2]),
Double.valueOf(renglonTemporal[3]) );
lista.add(m);
}
}catch(Exception e){
System.out.println("ERROR "+ e.getMessage());
}
//Modelo
m
=
new
Modelo(Double.valueOf(renglonTemporal[0]),Double.valueOf(renglonTemporal[1]),Double.valueOf(rengl
onTemporal[2]),Double.valueOf(renglonTemporal[3]));
//lista.add(m);
}
//Se valida que no sea nulo y se cierra
if( null != fileReader)
fileReader.close();
return lista;
}
}
public class Modelo{
private double dato1 = 0;
Proyecto de Investigación II Inteligencia Artificial
Pag 61
private
private
private
private
double
double
double
double
dato2
dato3
dato4
media
=
=
=
=
0;
0;
0;
0;
public Modelo(double dato1,double dato2,double dato3,double dato4){
this.dato1=dato1;
this.dato2=dato2;
this.dato3=dato3;
this.dato4=dato4;
this.media = ( dato1 + dato2 + dato3 + dato4 ) / 4;
}
@Override
public String toString() {
String
salida=
getDato1()+"
"+getMedia()+"\n";
return salida;
}
"+getDato2()+"
"+getDato3()+"
"+getDato4()+"
void setDato1(double dato1){
this.dato1 = dato1;
}
void setDato2(double dato2){
this.dato2 = dato2;
}
void setDato3(double dato3){
this.dato3 = dato3;
}
void setDato4(double dato4){
this.dato4 = dato4;
}
double getDato1(){
return this.dato1;
}
double getDato2(){
return this.dato2;
}
double getDato3(){
return this.dato3;
}
double getDato4(){
return this.dato4;
}
double getMedia(){
this.media = ((getDato1() + getDato2() + getDato3() + getDato4())/4);
return this.media;
}
public boolean compara( double b, double fractal) {
double baja = (getMedia() - (getMedia()*fractal)/2);
double alta = (getMedia() + (getMedia()*fractal)/2);
if( b < alta || b >baja)
return true;
return false;
}
}
import java.util.ArrayList;
Proyecto de Investigación II Inteligencia Artificial
Pag 62
public class Atractor {
ArrayList<Modelo> listaAtractores = new ArrayList<Modelo>();
public double promedio(){
double acumulador=0;
for(Modelo x:this.listaAtractores){
acumulador+= x.getMedia();
}
double prom = acumulador/this.listaAtractores.size();
return prom;
}
}
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Principal {
public static void main(String args[]) throws IOException, Exception {
Archivo ar=new Archivo();
List<Modelo> listaPrueba = new ArrayList<Modelo>();
ArrayList<Atractor> listaAtractores = new ArrayList<Atractor>();
ArrayList<Modelo> lista = ar.leerArchivo("C:\\iris.data");
//en este ciclo se calculan los conjuntos de entrenamiento y prueba
for(Modelo x:lista ){
double ale = Math.random()*100;
//criterio de aceptacion
if(ale>68)
listaEntrenamiento.add(x);
else
listaPrueba.add(x);
}
//en este ciclo se llenan la lista de atractores
double fractal = 1;
//inicia la lista de atractores
Atractor nuevoAtractor = new Atractor();
nuevoAtractor.listaAtractores.add(listaEntrenamiento.get(0));
listaAtractores.add(nuevoAtractor);
listaEntrenamiento.remove(0);
while(listaEntrenamiento.size()>0){
int tamListaAtractores = listaAtractores.size();
for(int i =0; i<tamListaAtractores; i++) {
double
alta
=
listaAtractores.get(i).promedio()
+
(listaAtractores.get(i).promedio() * fractal ) / 2);
double
baja
=
listaAtractores.get(i).promedio()
(listaAtractores.get(i).promedio() * fractal ) / 2);
if(
listaEntrenamiento.get(0).getMedia()
<
alta
listaEntrenamiento.get(0).getMedia() > baja ){
listaAtractores.get(i).listaAtractores.add(listaEntrenamiento.get(0));
listaEntrenamiento.remove(0);
}else{
Atractor tempAtractor = new Atractor();
tempAtractor.listaAtractores.add(listaEntrenamiento.get(0));
listaAtractores.add(tempAtractor);
listaEntrenamiento.remove(0);
break;
Proyecto de Investigación II Inteligencia Artificial
(
(
&&
Pag 63
}
break;
}
}
System.out.println("Lista de entrenamiento tam= "+ listaEntrenamiento.size());
System.out.println("Lista de prueba tam= "+ listaPrueba.size());
System.out.println("Lista de atractores tam = "+listaAtractores.size());
while(listaPrueba.size()>0){
int tamListaAtractores = listaAtractores.size();
for(int i =0; i<tamListaAtractores; i++) {
double
alta
=
listaAtractores.get(i).promedio()
+
(
(listaAtractores.get(i).promedio() * fractal ) / 2);
double
baja
=
listaAtractores.get(i).promedio()
(
(listaAtractores.get(i).promedio() * fractal ) / 2);
if( listaPrueba.get(0).getMedia() < alta && listaPrueba.get(0).getMedia() > baja
){
listaAtractores.get(i).listaAtractores.add(listaPrueba.get(0));
listaPrueba.remove(0);
}else{
Atractor tempAtractor = new Atractor();
tempAtractor.listaAtractores.add(listaPrueba.get(0));
listaAtractores.add(tempAtractor);
listaPrueba.remove(0);
break;
}
break;
}
}
System.out.println("Lista de entrenamiento tam= "+ listaEntrenamiento.size());
System.out.println("Lista de prueba tam= "+ listaPrueba.size());
System.out.println("Lista de atractores tam = "+listaAtractores.size());
4.2.3 Implementación
Este código se usara en una PC con Windows 7 instalado, java 8 y se ejecutara
sobre netbens.
4.3 Pruebas
A continuación se muestran una serie de pruebas realizadas con el algoritmo
4.3.1 Cambio del tamaño fractal
Tamaño fractal = .01
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 130 clases esperadas 3
Diferencia -127
Tamaño fractal = .02
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 112 clases esperadas 3
Diferencia -109
Tamaño fractal = .03
Proyecto de Investigación II Inteligencia Artificial
Pag 64
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 103 clases esperadas 3
Diferencia -100
Tamaño fractal = .04
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 98 clases esperadas 3
Diferencia -95
Tamaño fractal = .05
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 148 clases esperadas 3
Diferencia -145
Tamaño fractal = .06
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 138 clases esperadas 3
Diferencia -135
Tamaño fractal = .07
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 137 clases esperadas 3
Diferencia -134
Tamaño fractal = .08
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 135 clases esperadas 3
Diferencia -132
Tamaño fractal = .09
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 135 clases esperadas 3
Diferencia -132
Tamaño fractal = .10
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 134 clases esperadas 3
Diferencia -131
Tamaño fractal = .20
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 114 clases esperadas 3
Diferencia -111
Tamaño fractal = .30
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 101 clases esperadas 3
Diferencia -98
Proyecto de Investigación II Inteligencia Artificial
Pag 65
Tamaño fractal = .40
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 98 clases esperadas 3
Diferencia -95
Tamaño fractal = .50
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 96 clases esperadas 3
Diferencia -93
Tamaño fractal = .60
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 90 clases esperadas 3
Diferencia -87
Tamaño fractal = .70
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 69 clases esperadas 3
Diferencia -66
Tamaño fractal = .80
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 50 clases esperadas 3
Diferencia -47
Tamaño fractal = .90
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 13 clases esperadas 3
Diferencia -10
Tamaño fractal = 1.00
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 7 clases esperadas 3
Diferencia -4
Tamaño fractal = 1.10
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 5 clases esperadas 3
Diferencia -2
Tamaño fractal =1 .20
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 1.30
Proyecto de Investigación II Inteligencia Artificial
Pag 66
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 1.40
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 1.50
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 1.60
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal =1.70
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 1.80
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 1.90
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 2.00
Valor ruleta 25% entrenamiento 75% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
4.3.2 Cambio de conjunto de entrenamiento
Tamaño fractal = .01
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 147 clases esperadas 3
Diferencia -144
Proyecto de Investigación II Inteligencia Artificial
Pag 67
Tamaño fractal = .02
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 145 clases esperadas 3
Diferencia -142
Tamaño fractal = .03
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 143 clases esperadas 3
Diferencia -140
Tamaño fractal = .04
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 141 clases esperadas 3
Diferencia -138
Tamaño fractal = .05
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 138 clases esperadas 3
Diferencia -135
Tamaño fractal = .06
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 139 clases esperadas 3
Diferencia -136
Tamaño fractal = .07
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 136 clases esperadas 3
Diferencia -133
Tamaño fractal = .08
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 137 clases esperadas 3
Diferencia -134
Tamaño fractal = .09
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 135 clases esperadas 3
Diferencia -132
Tamaño fractal = 0.10
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 134 clases esperadas 3
Diferencia -131
Tamaño fractal = 0.20
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 111 clases esperadas 3
Diferencia -108
Proyecto de Investigación II Inteligencia Artificial
Pag 68
Tamaño fractal = 0.30
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 101 clases esperadas 3
Diferencia -98
Tamaño fractal = 0.40
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 97 clases esperadas 3
Diferencia -94
Tamaño fractal = 0.50
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 94 clases esperadas 3
Diferencia -91
Tamaño fractal = 0.60
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 85 clases esperadas 3
Diferencia -82
Tamaño fractal = 0.70
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 62 clases esperadas 3
Diferencia -59
Tamaño fractal = 0.80
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 44 clases esperadas 3
Diferencia -41
Tamaño fractal = 0.90
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 14 clases esperadas 3
Diferencia -11
Tamaño fractal = 1.00
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 6 clases esperadas 3
Diferencia -3
Tamaño fractal = 1.10
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 6 clases esperadas 3
Diferencia -3
Tamaño fractal = 1.20
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 2 clases esperadas 3
Proyecto de Investigación II Inteligencia Artificial
Pag 69
Diferencia 1
Tamaño fractal = 1.30
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal =1.40
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 1.50
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 1.60
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal =1.70
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal =1.80
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Tamaño fractal = 1.90
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Valor ruleta 50% entrenamiento 50% conjunto de prueba
Tamaño fractal = 2.00
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Aumentando el conjunto de entrenamiento
Tamaño fractal = 0.01
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 147 clases esperadas 3
Diferencia -144
Proyecto de Investigación II Inteligencia Artificial
Pag 70
Tamaño fractal = 0.02
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 145 clases esperadas 3
Diferencia -142
Tamaño fractal = 0.03
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 144 clases esperadas 3
Diferencia -141
Tamaño fractal = 0.04
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 141 clases esperadas 3
Diferencia -138
Tamaño fractal = 0.05
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 140 clases esperadas 3
Diferencia -137
Tamaño fractal = 0.06
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 139 clases esperadas 3
Diferencia -136
Tamaño fractal = 0.07
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 138 clases esperadas 3
Diferencia -135
Tamaño fractal = 0.08
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 138 clases esperadas 3
Diferencia -135
Tamaño fractal = 0.09
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 134 clases esperadas 3
Diferencia -131
Tamaño fractal = 0.10
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 130 clases esperadas 3
Diferencia -127
Tamaño fractal = 0.20
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 115 clases esperadas 3
Diferencia -112
Proyecto de Investigación II Inteligencia Artificial
Pag 71
Tamaño fractal = 0.30
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 101 clases esperadas 3
Diferencia -98
Tamaño fractal = 0.40
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 98 clases esperadas 3
Diferencia -95
Tamaño fractal = 0.50
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 96 clases esperadas 3
Diferencia -93
Tamaño fractal = 0.60
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 82 clases esperadas 3
Diferencia -79
Tamaño fractal = 0.70
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 76 clases esperadas 3
Diferencia -73
Tamaño fractal = 0.80
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 50 clases esperadas 3
Diferencia -47
Tamaño fractal = 0.90
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 16 clases esperadas 3
Diferencia -13
Tamaño fractal = 1.00
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 8 clases esperadas 3
Diferencia -5
Tamaño fractal = 1.10
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 4 clases esperadas 3
Diferencia -1
Tamaño fractal = 1.20
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Proyecto de Investigación II Inteligencia Artificial
Pag 72
Numero de Atractores = 3 clases esperadas 3
Diferencia 0
Tamaño fractal = 1.30
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 1.40
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 1.50
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 1.60
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 1.70
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 1.80
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 1.90
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Tamaño fractal = 2.00
Valor ruleta 75% entrenamiento 25% conjunto de prueba
Numero de Atractores = 1 clases esperadas 3
Diferencia 2
Proyecto de Investigación II Inteligencia Artificial
Pag 73
4.4 Conclusiones de la heurística
Pasado el umbral de la mejor aproximación se sobreentrena el algoritmo y este
tiende a caer en un valor con una única clase. Las diferencias que existen
entre diferentes conjuntos de entrenamiento son mínimas lo cual es
extremadamente útil cuando queremos mejorar el desempeño a grandes rasgos del
sistema. En el rango de valores entre 1.00 y 1.30 se encuentran los
atractores más importantes del sistema que hacen que el sistema se clasifique
de manera cercana a la correcta. El orden del algoritmo es de cuadrático ya
que los ciclos no son completos y en el peor de los casos se vuelve lineal.
Con esta información se puede mejorar el algoritmo y es candidato para
incluirlo en un algoritmo de ensamble como ADABOOST y de esta manera
simplificar la clasificación y posterior predicción de un fenómeno. Debido a
las complicaciones que se encontraron para generalizar el comportamiento
caótico de los datos, se hizo que la misma estructura del algoritmo fuera
dinámica con lo cual se busca empatar la naturaleza de los datos. Con la
información conseguida sabemos que el sistema cuenta con una relación fractal
de aproximadamente 1.30 y contemplando un mínimo del 25% del total de datos
disponibles para realizar el entrenamiento
el sistema no se comporta como
caja oscura ya que los atractores siempre están disponibles y los atractores
no son estáticos puesto que cuando encuentra algún dato que no esté en los
atractores el sistema lo incluye.
Proyecto de Investigación II Inteligencia Artificial
Pag 74
5. Conclusiones
Los sistemas de clasificación tienen algunos puntos débiles que con el tiempo se han
reconocido y se han corregido, cada nueva técnica presenta ventajas respecto a sus
antecesores, pero al mismo tiempo trae consigo posibilidades de mejora, en este trabajo
se propone una forma de ver el mismo problema de clasificación como un problema de
predicción. Los avances que se han logrado en este trabajo requieren de un
conocimiento mayor de topologías y sistemas dinámicos mismos que no son tratados en
la licenciatura sin embargo usando los principios algorítmicos de los aprendices se ha
logrado subsanar esa deficiencia. En todo caso con la construcción de la primera
versión del modelo de flor se puede pensar en una nueva versión que resuelva a la par el
problema de los atractores y el problema del modelaje usando la función inversa a la
construcción de un fractal.
Proyecto de Investigación II Inteligencia Artificial
Pag 75
6. Bibliografía
[1] ESPEJO y. Reflejo del Caos al ORDEN. Guía ilustrada de la teoría
del caos y la ciencia de la totalidad. JOHN BRIGGS y F. DAVID PEAT.
[2] LA DOMESTICACION DEL AZAR: LA EROSION DEL DETERMINISMO Y EL NACIM
IENTO DE LAS CIENCIAS DEL CAOS - IAN HACKING.
[3]
Curso
de
aprendizaje
maquinal
http://see.stanford.edu/see/courseinfo.aspx?coll=348ca38a-3a6d-4052937d-cb017338d7b1
[4] Software para Data Minning
http://www.cs.waikato.ac.nz/ml/weka/
[5]Instalación y uso de Weka
http://users.dsic.upv.es/~jorallo/docent/doctorat/weka.pdf
[6]Instalación
de
Oracle
SQl
developer
en
Ubuntu
http://meandmyubuntulinux.blogspot.mx/2012/05/installing-oracle-11gr2-express.html
[7] Guía para realizar minería de datos
http://guidetodatamining.com/
[8]
Como
construir
un
clasificador
Bayes
ingenuo
https://www.bionicspirit.com/blog/2012/02/09/howto-build-naive-bayesclassifier.html
[9] Como construir un clasificador k-means en python
https://datasciencelab.wordpress.com/2013/12/12/clustering-with-kmeans-in-python/
[10]
Como
construir
un
perceptrón
multicapa
https://blog.dbrgn.ch/2013/3/26/perceptrons-in-python/
en
[11]
Redes
neuronales
usando
teoría
de
resonancia
http://mnemstudio.org/neural-networks-art1-example-1.htm
python
adaptiva
[12]
Redes
bayesianas
con
Python
http://derandomized.com/post/20009997725/bayes-net-example-withpython-and-khanacademy
Proyecto de Investigación II Inteligencia Artificial
Pag 76
[13] Generar Cadenas de Markov
http://agiliq.com/blog/2009/06/generating-pseudo-random-text-withmarkov-chains-u/
[14] Algoritmo de ensamble
http://scikit-learn.org/stable/modules/ensemble.html
[15] Teoría de fractales
http://classes.yale.edu/fractals/
Proyecto de Investigación II Inteligencia Artificial
Pag 77
Descargar