• No se han encontrado resultados

4.2.2 Codificación Implementación Pruebas Cambio del tamaño fractal Cambio de conjunto de

N/A
N/A
Protected

Academic year: 2021

Share "4.2.2 Codificación Implementación Pruebas Cambio del tamaño fractal Cambio de conjunto de"

Copied!
83
0
0

Texto completo

(1)
(2)

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

(3)

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

(4)
(5)
(6)
(7)

Proyecto de Investigación II Inteligencia Artificial

Pag 1

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

(8)

Proyecto de Investigación II Inteligencia Artificial

Pag 2

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

(9)

Proyecto de Investigación II Inteligencia Artificial

Pag 3

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.

(10)

Proyecto de Investigación II Inteligencia Artificial

Pag 4

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.

(11)

Proyecto de Investigación II Inteligencia Artificial

Pag 5

*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

(12)

Proyecto de Investigación II Inteligencia Artificial

Pag 6

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.

(13)

Proyecto de Investigación II Inteligencia Artificial

Pag 7

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.

(14)

Proyecto de Investigación II Inteligencia Artificial

Pag 8

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 idcta valor

x 1 23 x 2 45 x 3 2 x 4 -54 y 1 68 y 2 84 y 3 98 y 4 -97 z 1 92 z 2 44 z 3 91 z 4 -37

En este ejemplo se tienen 3 grupos lo cual se puede representar como una matriz: idcta x y z 1 23 68 92 2 45 84 44 3 2 98 91 4 -54 -97 -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

(15)

Proyecto de Investigación II Inteligencia Artificial

Pag 9

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

(16)

Proyecto de Investigación II Inteligencia Artificial

Pag 10

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.

(17)

Proyecto de Investigación II Inteligencia Artificial

Pag 11

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

es

la ocurrencia de otro evento.

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.

(18)
(19)
(20)

Proyecto de Investigación II Inteligencia Artificial

Pag 14

=== 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 3.4015 2.7687 2.9629 std. dev. 0.3925 0.3038 0.3088 weight sum 50 50 50 precision 0.1091 0.1091 0.1091 petallength mean 1.4694 4.2452 5.5516 std. dev. 0.1782 0.4712 0.5529 weight sum 50 50 50 precision 0.1405 0.1405 0.1405 petalwidth mean 0.2743 1.3097 2.0343 std. dev. 0.1096 0.1915 0.2646 weight sum 50 50 50 precision 0.1143 0.1143 0.1143

(21)

Proyecto de Investigación II Inteligencia Artificial

Pag 15

=== 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.0462 Root mean squared error 0.1763 Relative absolute error 10.3886 % Root relative squared error 37.3672 % 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.981 Iris-versicolor 0.846 0 1 0.846 0.917 0.981 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

(22)

Proyecto de Investigación II Inteligencia Artificial

Pag 16

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 elección de pivotes no asegura una distribución adecuada.

-El algoritmo puede presentar problemas con los puntos equidistantes a

dos centros.

(23)
(24)

Proyecto de Investigación II Inteligencia Artificial

Pag 18

#!/usr/bin/python

import os

import cx_Oracle

import csv

import random

import math

import 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

(25)

Proyecto de Investigación II Inteligencia Artificial

Pag 19

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 < dis4:

con1.append(a)

dim1.append(dis1)

distancia1.append(dim1)

elif dis2 < dis1 and dis2 < dis3 and dis2 < dis4:

con2.append(a)

dim1.append(dis1)

distancia2.append(dim1)

elif dis3 < dis1 and dis3 < dis2 and dis3 < dis4:

con3.append(a)

dim1.append(dis1)

distancia3.append(dim1)

elif dis4 < dis1 and dis4 < dis2 and dis4 < dis3:

con4.append(a)

(26)

Proyecto de Investigación II Inteligencia Artificial

Pag 20

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 las listas

distancia1 = sorted(distancia1, key=lambda tup: tup[1])

distancia2 = sorted(distancia2, key=lambda tup: tup[1])

distancia3 = sorted(distancia3, key=lambda tup: tup[1])

distancia4 = sorted(distancia4, key=lambda tup: 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

(27)

Proyecto de Investigación II Inteligencia Artificial

Pag 21

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 )):

(28)

Proyecto de Investigación II Inteligencia Artificial

Pag 22

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]

(29)

Proyecto de Investigación II Inteligencia Artificial

Pag 23

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()

(30)

Proyecto de Investigación II Inteligencia Artificial

Pag 24

2.4.3 Redes neuronales (Perceptrón multicapa)

La estructura del perceptrón está representada por:

Donde 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 algoritmo es el siguiente:

Se introduce un vector de entrada y se calcula su salida Se determina el error asociado

Se determian las direcciones que se deben de cambiar para minimizar el error Se determinan las cantidades en que es preciso cambiar cada peso

Se modifican los pesos

Se 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.

(31)
(32)
(33)

Proyecto de Investigación II Inteligencia Artificial

Pag 27

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]

(34)

Proyecto de Investigación II Inteligencia Artificial

Pag 28

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

(35)

Proyecto de Investigación II Inteligencia Artificial

Pag 29

#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)

(36)

Proyecto de Investigación II Inteligencia Artificial

Pag 30

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.

(37)

Proyecto de Investigación II Inteligencia Artificial

Pag 31

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 establecen las señales de control.

Se inicializan los pesos de la siguiente manera:

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

(38)

Proyecto de Investigación II Inteligencia Artificial

Pag 32

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:

(39)

Proyecto de Investigación II Inteligencia Artificial

Pag 33

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.

(40)

Proyecto de Investigación II Inteligencia Artificial

Pag 34

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.

(41)
(42)

Proyecto de Investigación II Inteligencia Artificial

Pag 36

=== 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 89.1892 %

Incorrectly Classified Instances 4 10.8108 %

Kappa statistic 0.8374

Mean absolute error 0.0654

Root mean squared error 0.2173

Relative absolute error 14.7117 %

(43)

Proyecto de Investigación II Inteligencia Artificial

Pag 37

Root relative squared error 46.0542 %

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

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

(44)

Proyecto de Investigación II Inteligencia Artificial

Pag 38

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

(45)

Proyecto de Investigación II Inteligencia Artificial

Pag 39

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.

(46)

Proyecto de Investigación II Inteligencia Artificial

Pag 40

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

(47)

Proyecto de Investigación II Inteligencia Artificial

Pag 41

|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.

(48)

Proyecto de Investigación II Inteligencia Artificial

Pag 42

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.

(49)
(50)

Proyecto de Investigación II Inteligencia Artificial

Pag 44

=== 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

(51)

Proyecto de Investigación II Inteligencia Artificial

Pag 45

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

Referencias

Documento similar

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

Proporcione esta nota de seguridad y las copias de la versión para pacientes junto con el documento Preguntas frecuentes sobre contraindicaciones y

[r]

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

Ciaurriz quien, durante su primer arlo de estancia en Loyola 40 , catalogó sus fondos siguiendo la división previa a la que nos hemos referido; y si esta labor fue de

Las manifestaciones musicales y su organización institucional a lo largo de los siglos XVI al XVIII son aspectos poco conocidos de la cultura alicantina. Analizar el alcance y