martes, 17 de diciembre de 2013

Algoritmo evolutivo multiobjetivo


Segun Miettinen, en el libro escrito el año 1998 mencionado anteriormente, a finales del siglo veinte, existían más de treinta técnicas de programación matemática para resolver problemas de optimización multiobjetivo. Con todo, la complejidad de muchos problemas de optimización multiobjetivo del mundo real vuelve a estas técnicas inadecuadas o incluso inaplicables para resolverlos. La complejidad de estos problemas se debe, entre otras cosas: A la multimodalidad, a la alta dimensionalidad del espacio de búsqueda, a la discontinuidad de sus funciones objetivo, a desconexiones tanto en el espacio de las variables de decisión como en el de las funciones objetivo, o a que son NP-completos. Algunos investigadores, entre los que destacan Fogel, con el libro escrito el año 1999 titulado “Inteligencia artificial a través de la evolución simulada: Cuarenta años de programación evolutiva”, además de Michalewicz y Fogel, con el libro escrito el año 2000 titulado “Como resolverlo: Heurísticas modernas”, han identificado algunas dificultades que tienen las técnicas clásicas para resolver problemas de optimización multiobjetivo. A continuación se listan algunas de ellas: (1) Los algoritmos necesitan ejecutar varias veces para encontrar varias soluciones del conjunto de óptimos de Pareto. (2) La mayoría de los algoritmos requieren información sobre el dominio del problema que se trata. (3) Algunos algoritmos son sensibles a la forma o continuidad del frente de Pareto. (4) En los problemas que involucran incertidumbre o eventos estocásticos, los métodos clásicos son inadecuados. (5) La dispersión de las soluciones del frente de Pareto depende de la eficiencia del optimizador monoobjetivo.

La complejidad de los problemas de optimización multiobjetivo del mundo real ha conducido a la búsqueda de enfoques alternativos para resolver este tipo de problemas. Uno de esos enfoques lo encabezan los algoritmos evolutivos. A finales de los años 1960, Rosenberg, en la tesis doctoral escrita el año 1967 titulada “Simulación de poblaciones genéticas con propiedades bioquímicas”, plantea utilizar un método genético de búsqueda para resolver problemas de optimización multiobjetivo. No obstante, no fue hasta el año 1984 cuando David Schaffer, en la tesis doctoral titulada “Optimización de objetivos múltiples con algoritmos genéticos de vectores evaluados”, propone la primera implementación de lo que actualmente se conoce como algoritmo evolutivo multiobjetivo. A partir de ese momento, varios investigadores, entre los que destacan Coello y Toscano, con el artículo escrito el año 2001 titulado “Optimización multiobjetivo utilizando un algoritmo micro genético”, además de Zitzler y Thiele, con el artículo escrito el año 1999 titulado “Algoritmos evolucionarios multiobjetivo: Un caso de estudio comparativo y el enfoque del frente de Pareto”, han desarrollado su propio algoritmo evolutivo multiobjetivo. La publicación de los resultados de estos algoritmos mostró la superioridad de los algoritmos evolutivos multiobjetivo sobre las técnicas clásicas de programación matemática. Los algoritmos evolutivos son naturalmente adecuados para resolver problemas de optimización multiobjetivo gracias a que trabajan de manera simultánea con un conjunto de soluciones potenciales, es decir, la población. Esta característica permite encontrar varias soluciones del conjunto óptimo de Pareto en una sola ejecución. Asimismo, son menos sensibles a la forma o continuidad del frente de Pareto. Zitzler y Thiele mencionan que las características fundamentales, de un algoritmo evolutivo multiobjetivo, son las siguientes: Mantener un conjunto de soluciones potenciales, el cual es sometido a un proceso de selección y es manejado por operadores genéticos, generalmente la recombinación y la mutación. Los algoritmos evolutivos y los algoritmos evolutivos multiobjetivo son estructuralmente similares. La diferencia fundamental es que un algoritmo evolutivo multiobjetivo calcula muchas funciones de aptitud.

lunes, 2 de diciembre de 2013

Aprendizaje supervisado

Según Basogain, en el libro digital escrito el año 2006 titulado “Redes neuronales artificiales y sus aplicaciones”, las redes neuronales artificiales están inspiradas en las redes neuronales biológicas del cerebro humano. Están constituidas por elementos que se comportan de forma similar a la neurona biológica en sus funciones más comunes. Estos elementos están organizados de una forma parecida a la que presenta el cerebro humano. Las redes neuronales artificiales al margen de “parecerse” al cerebro presentan una serie de características propias del cerebro. Por ejemplo las redes neuronales artificiales aprenden de la experiencia, generalizan de ejemplos previos a ejemplos nuevos y abstraen las características principales de una serie de datos. (1) Aprender. Adquirir el conocimiento de una cosa por medio del estudio, ejercicio o experiencia. Las redes neuronales artificiales pueden cambiar su comportamiento en función del entorno. Se les muestra un conjunto de entradas y ellas mismas se ajustan para producir unas salidas consistentes. (2) Generalizar. Extender o ampliar una cosa. Las redes neuronales artificiales generalizan automáticamente debido a su propia estructura y naturaleza. Estas redes pueden ofrecer, dentro de un margen, respuestas correctas a entradas que presentan pequeñas variaciones debido a los efectos de ruido o distorsión. (3) Abstraer. Aislar mentalmente o considerar por separado las cualidades de un objeto. Algunas redes neuronales artificiales son capaces de abstraer la esencia de un conjunto de entradas que aparentemente no presentan aspectos comunes o relativos.

En palabras de Chauvin y Rumelhart, en el libro escrito el año 1995 titulado “Backpropagation: Teoria, arquitectura y aplicaciones”, una vez diseñada la arquitectura de la red neuronal, compuesta por capas y número de neuronas por capa, además de las funciones que la regirán, se tiene que proceder a entrenar a la red para que “aprenda” el comportamiento que debe tener; es decir, para que aprenda a dar la respuesta adecuada a la configuración de estímulos o patrones de entrada que se le presenten. Una excepción a esta regla general la constituyen las redes de Hopfield, que no son entrenadas sino construidas, de modo que tengan ya inicialmente el comportamiento deseado. Por este motivo, se ha dicho que las redes de Hopfield simulan el comportamiento “instintivo” mientras que las demás redes simulan el comportamiento “aprendido”.

Según Gestal, en la tesis de doctorado escrita el año 2009 titulada “Computación evolutiva para el proceso de selección de variables en espacios de búsqueda multimodales”, con la técnica de aprendizaje supervisado el entrenamiento consiste en presentarle a la red repetitivamente patrones de estímulos de entrada pertenecientes a un juego de ensayo. El juego de ensayo está formado por parejas “patrón de estímulos - respuesta correcta” y debe de ser elegido cuidadosamente. Cada pareja se denomina hecho. En el juego de ensayo debe estar representada equilibradamente toda la información que la red necesite aprender. Al realizar el entrenamiento la respuesta que da la red a cada patrón se compara con la respuesta correcta ante dicho patrón y, en virtud de esa comparación, se reajustan los pesos sinápticos. El reajuste de los pesos sinápticos está orientado a que, ante el patrón de entrada, la red se acerque cada vez más a la respuesta correcta. Cuando ante un patrón de entrada la red de neuronas ya responde correctamente, se pasa al siguiente patrón del juego de ensayo y se procede de la misma manera. Cuando se termina con el último patrón del juego de ensayo, se tiene que volver a empezar con el primero, ya que los pesos se han seguido modificando. En casos sencillos, al cabo de unos pocos pasos de entrenamiento completos, con todos los elementos del juego de ensayo, los pesos sinápticos de todas las neuronas se estabilizan en torno a unos valores óptimos. Se dice entonces que el algoritmo de aprendizaje converge. Es decir, después de sucesivas presentaciones de todos los patrones estimulares del juego de ensayo, la red, responderá correctamente a todos ellos y se puede considerar entrenada y dar por terminada la fase de aprendizaje. El aprendizaje puede realizarse con tres técnicas diferentes: aprendizaje supervisado, aprendizaje no supervisado y aprendizaje parcialmente supervisado. Al interior de estas técnicas, el aprendizaje supervisado es la técnica de aprendizaje más sencilla, consiste en la presentación de los patrones de entrada y de las etiquetas de clase deseadas para cada patrón de entrada.

lunes, 11 de noviembre de 2013

Control difuso

El concepto de lógica difusa es muy común, el mismo fue introducido por el gran investigador Lotfi Zadeh, en el artículo escrito el año 1965 titulado “Conjuntos difusos”. Este concepto está asociado con la manera en que las personas perciben el medio, por ejemplo ideas relacionadas con la altura de una persona, velocidad con la que se mueve un objeto, la temperatura dominante en una habitación, cotidianamente se formulan de manera ambigua y depende de quién percibe el efecto físico o químico. Una persona puede ser alta o baja, algo puede moverse rápido o lento, una temperatura puede ser baja o moderada o alta, se dice que estas afirmaciones acerca de una variable son ambiguas porque rápido, bajo, alto son afirmaciones del observador, y estas pueden variar de un observador a otro. Uno se puede preguntar cuándo algo es frío o caliente, que tan baja es la temperatura cuando se dice frío, o que tan alta es cuando se dice caliente. Los conjuntos difusos definen justamente estas ambigüedades, y son una extensión de la teoría clásica de conjuntos, donde un elemento pertenece o no a un conjunto, tal elemento tiene solo dos posibilidades, pertenecer o no, un elemento es bi-valuado y no se definen ambigüedades. Con conjuntos difusos se intenta modelar la ambigüedad con la que se percibe una variable. Los conjuntos difusos son la base para la lógica difusa. Con los conjuntos difusos se realizan afirmaciones lógicas del tipo si-entonces, definiéndose estas con lógica difusa. Este tema es propio de la inteligencia artificial, donde se intenta emular en pensamiento humano. Desde que Zadeh desarrolló el concepto de lógica difusa, en el artículo citado anteriormente, se ha trabajando en este tema, el principal centro de desarrollo es Japón, donde sus investigadores la han aplicado a muy diversos sistemas, principalmente electrodomésticos, sistemas más recientes están vinculados con la industria, la medicina y la actividad espacial.

Según Martínez y Sanz, en el libro publicado el año 2002 con el título “Redes neuronales y sistemas difusos”, la incorporación de la lógica difusa a los sistemas de control da lugar a lo que se denomina sistemas de control difuso. Al interior de los sistemas de control se encuentran dos grandes áreas, el modelado o identificación y el control propiamente dicho o control directo. Se realizara un enfoque inicial en el control de procesos suponiendo conocido el modelo de este. La idea es muy simple, se trata de determinar de manera lógica que se debe hacer para lograr los objetivos de control de mejor manera posible a partir de una base de conocimiento proporcionada por un operador humano, sin esta base no es posible desarrollar una aplicación y que esta funcione de manera correcta. Se utiliza el conocimiento y experiencia de un operador humano para construir un controlador que emule el comportamiento de tal persona. Comparado con el control tradicional, el control difuso tiene dos ventajas practicas, una es que no se requiere el modelo matemático del proceso a controlar y otra es que se obtiene un controlador no lineal desarrollado empíricamente sin complicaciones matemáticas, en realidad los desarrollos matemáticos de este tema todavía están en su infancia. En palabras de Cristian De Los Ríos, descritas en la tesis de grado publicada el año 2004 con el título “Evaluación de estructuras y métodos de ajuste de reguladores PID-Difusos”, la teoría de conjuntos difusos es utilizada en muchos campos técnicos como control, modelado, procesamiento de imágenes y señales, sistemas expertos, etc., pero es quizás en el campo del control su más frecuente y exitosa aplicación. Se debe tener en cuenta que los sistemas con controladores difusos son naturalmente no lineales, se los puede configurar para ajustarse a cualquier función, es decir que pueden emular funciones lineales pero en general se trabaja con configuraciones no lineales. En general, pues, se trabaja con configuraciones no lineales, por lo que las herramientas de diseño y análisis de control lineal no serán útiles en estos sistemas borrosos, de todos modos se hacen aproximaciones lineales para utilizar en alguna medida las herramientas bien conocidas del control lineal, se puede recurrir a esto ya que aún están en desarrollo las herramientas de diseño y análisis de sistemas borrosos.

lunes, 28 de octubre de 2013

Protección de Agentes

Desde el punto de vista del usuario final, según Lange y Oshima, en el libro escrito el año 1998 titulado “Programación e implementación de agentes móviles Java con aglets”, se menciona que los agentes pueden ser: “Programas que asisten y actúan a favor del usuario final”, en este caso se refuerza la idea de la delegación en los agentes de las tareas de usuario. Sobre el concepto de agente, se puede hablar de sus características, diciendo que un agente autónomo, para empezar, no es un programa, o al menos es algo más que un programa, al fin y al cabo, todo lo que se ejecuta en una computadora es un programa; es decir, no se suele llamar programa por el mismo motivo que un sistema operativo no se suele llamar un programa a pesar de que no pueda ser otra cosa. Una de las características que distingue los agentes de los programas sencillos es la autonomía de acción. Los agentes son más que activos, es decir, que no sólo actúan en respuesta a una acción directa del usuario, sino que también actúan siguiendo los objetivos que tienen marcados, bien por el usuario bien por su propia construcción. Además, son persistentes, aún cuando el usuario no interactúa con ellos siguen funcionando, recolectando información, aprendiendo y comunicándose con otros agentes.

Cuando se transfiere código ejecutable a través de la red, existe la posibilidad de un ataque. En palabras de los investigadores Jansen y Karygiannis, en el artículo escrito el año 2000 titulado “Seguridad en agentes móviles”, los agentes al igual que ocurre con los programas usados en redes, pueden ser susceptibles a alteraciones, ataques, espionaje, y clonaciones. Es importante ser conscientes de que siempre existe la posibilidad de que un intruso intente afectar la integridad de un sistema y por tanto llevar a cabo las medidas de prevención adecuadas ayuda a minimizar los riesgos. Algunos de los ataques que son ejecutados en contra de agentes son: Espionaje de código, espionaje de información, manipulación de código y de información, ejecución incorrecta del código, identidad falsa de un host y negación de ejecución. Un agente puede llevar consigo información confidencial, por lo que se debe prevenir en todo momento la modificación del código ejecutable. Es posible asegurar la integridad de un agente que proviene de otro host utilizando la firma digital o el cifrado. Sin embargo, es difícil detectar o prevenir los ataques que pueda realizar un host mientras se ejecuta un agente. Los hosts pueden intentar sacar provecho del agente modificando el código, los datos, las comunicaciones o incluso los resultados, ya que, como se mencionaba, tienen control total sobre la ejecución del agente. A este problema se le conoce como el de los “Hosts maliciosos”, este es considerado por muchos autores el más difícil de resolver en lo relacionado con la seguridad en sistemas de agentes móviles.

Para prevenir una alteración en el código y en la información, los agentes se pueden proteger, al igual que muchos programas informáticos, utilizando métodos criptográficos. De forma similar los agentes pueden ser autenticados con un host o incluso con otros agentes, mediante métodos de clave pública como es la firma digital. Según Chess, en el artículo escrito el año 1996 titulado “Consideraciones de seguridad en sistemas basados en agentes”, tomando en cuenta que los agentes se pueden ejecutar en hosts con diversos grados de confianza, sería ingenuo no esperar un comportamiento malicioso por su parte. Los hosts pueden sacar provecho del agente modificando el código, los datos, el modo de ejecución, el estado, las comunicaciones, el itinerario o incluso los resultados, ya que tienen control total sobre la ejecución. Precisamente esta es la razón por la cual no se pueden evitar ataques de denegación de servicio, puesto que el host tiene en sus manos el código del agente para ejecutarlo a placer, forzándolo a terminar antes de tiempo o incluso a migrar a otro destino. Para un agente móvil es imposible almacenar en claro una clave secreta, puesto que el host tiene acceso de lectura y modificación a la misma, para esto es imprescindible disponer de un entorno confiable para realizar las operaciones criptográficas.

lunes, 21 de octubre de 2013

Segunda parte Búsqueda heurística


En palabras de Fuentetaja, en la tesis doctoral escrita el año 2010 titulada “Búsqueda heurística en planificación basada en costes”, en planificación mediante búsqueda heurística se han aplicado heurísticas de muy diversos tipos y naturaleza. A grandes rasgos las heurísticas se pueden dividir en dos categorías: Heurísticas dependientes del dominio y heurísticas independientes del dominio. Con heurísticas independientes del dominio se hace referencia a aquellas cuyo proceso de cálculo es el mismo para todos los dominios. Las heurísticas dependientes del dominio, pueden ser muy útiles para guiar la búsqueda, sin embargo, no se pueden aplicar a problemas con estructura distinta a aquellos para los que se generaron. Estas heurísticas requieren de un trabajo adicional en cada dominio para generar la información, o la función, que permite calcular la heurística. Cuando este trabajo se puede realizar de forma automática, se acercan más a las heurísticas independientes del dominio, que son aquellas que no requieren de ninguna información adicional al propio dominio o problema. Estas últimas están acordes con la idea de la planificación como un proceso general de resolución de problemas y han tenido un gran auge en los últimos años. Las heurísticas independientes del dominio más comunes en planificación mediante búsqueda heurística se pueden clasificar en función de su objetivo como: (1) Heurísticas numéricas. Aquellas que estiman numéricamente la distancia entre dos estados, un estado fuente y un estado destino. (2) Heurísticas de poda u ordenación. Aquellas que sirven para podar el espacio de estados, o para ordenar ciertos nodos. (3) Heurísticas con vistas futuras. Aquellas que permiten generar rápidamente estados profundos mediante la aplicación, total o parcial, de una política.

Fuentetaja, en la tesis doctoral citada anteriormente, continúa mencionando que los algoritmos de búsqueda progresiva que se han venido utilizando en planificación clásica se pueden dividir en dos grupos: (1) Aquellos que aplican algoritmos de búsqueda local, y (2) Aquellos que aplican algoritmos de tipo mejor primero. La búsqueda local funciona de la siguiente forma: de entre la vecindad de un único nodo actual, elige un nodo que pasa a ser el nuevo nodo actual y el proceso se repite de forma iterativa hasta que se cumpla un criterio de terminación. La búsqueda local se caracteriza porque no tiene memoria y no revisa las decisiones una vez que estas se han tomado, es decir, es un procedimiento irrevocable. El criterio de terminación normalmente se cumple cuando se ha encontrado una solución, cuando se ha realizado un determinado número de iteraciones y aparentemente el proceso de búsqueda está estancado o cuando no se puede continuar a partir el nodo actual. A continuación se mencionan algunos tipos de búsqueda local que se han aplicado en planificación, como la búsqueda de ascenso de colinas y la búsqueda forzada de ascenso de colinas, complementándose esta descripción con el algoritmo de búsqueda mejor primero.

La búsqueda de ascenso de colinas o búsqueda en escalada, es uno de los procedimientos más conocidos de búsqueda local. En este caso, el siguiente nodo de cada iteración se elige de entre los que tienen una mejor evaluación heurística de entre todos los sucesores. En caso de que el nodo elegido tenga una evaluación heurística peor que el padre, la búsqueda termina. El funcionamiento de la búsqueda en escalada depende de la topología del espacio de búsqueda. Cuando se encuentra un óptimo local, es decir, un estado para el que todos los sucesores tienen peor evaluación, la búsqueda termina sin encontrar solución alguna. La búsqueda de ascenso de colinas forzada es una variante del ascenso de colinas en la que se generan sucesores utilizando búsqueda en amplitud, hasta encontrar un sucesor, que puede ser indirecto, con una evaluación heurística mejor que el nodo actual. En este caso el nuevo nodo actual es este sucesor. La búsqueda mejor primero constituye un esquema de búsqueda global, que se caracteriza por elegir el siguiente nodo a expandir basándose en una función de evaluación. Normalmente se consideran mejores los nodos con un menor valor para la función de evaluación. La búsqueda mejor primero se suele implementar utilizando una lista ordenada en orden creciente respecto a la función de evaluación, la lista abierta, de manera que el siguiente nodo a expandir es siempre el primer elemento de la lista. Cuando un nodo se expande, se generan todos sus sucesores, y éstos se introducen en la lista abierta. El nodo expandido se introduce en una lista cerrada. El algoritmo analiza cuando el nodo que se extrae de la lista abierta es un nodo solución.

lunes, 14 de octubre de 2013

Búsqueda heurística

Al interior de las nuevas teorías sobre el juicio humano y gracias, fundamentalmente, al trabajo realizado por Kahneman, Slovic y Twersky desde principios de la década de los setenta, reportados en el libro publicado el año 1982 titulado “Juicio bajo incertidumbre: Heurística y prejuicios”, se han reconocido una serie de reglas de decisión denominadas “heurísticas”. Una heurística puede definirse como la estrategia utilizada por las personas para emitir un juicio, realizar una estimación, tomar una decisión, etc., basándose en componentes limitados de la información disponible. De esta manera, estas reglas han recibido la denominación de “atajos mentales” o “reglas de sentido común”, dando origen a gran cantidad de investigaciones y experimentación. Realizar un juicio heurístico puede considerarse como una manera bastante eficiente de llegar a una solución a un problema debido fundamentalmente a su rapidez y consistencia con las propias creencias. Sin embargo, las soluciones ofrecidas pueden ser inexactas, pudiendo conducir a errores. A modo de ejemplo, un juicio consistente con una heurística de representatividad, sería “Juzgar un libro por su portada”. Las heurísticas han sido frecuentemente descritas como estrategias que la gente utiliza de manera deliberada en orden de simplificar los problemas, que de otra manera serían difíciles de solucionar por la mente humana. La discusión corriente en ámbito académicos argumenta que una descripción de ese tipo, conlleva a que los errores producidos por su uso tienen su origen en una mente no suficientemente atenta, lo cual es inconsistente con el planteamiento propuesto por Kahneman, Slovic y Twersky, que establecen que las heurísticas se acercan a la denominación de “juicios naturales”, pudiendo influir en la tarea de decisión o estimación sin ser usadas de manera estratégica o deliberada.

Por otra parte, en palabras de Ramos, en los apuntes escritos el año 2007 con el título “Heurísticas y problemas combinatorios”, con el fin de resolver problemas complicados con eficiencia, en ocasiones es necesario comprometer algunos requisitos de optimalidad y construir una estructura de control que no garantice encontrar la mejor respuesta pero que casi siempre encuentre una buena solución. De esta forma, surge la idea de heurística. La palabra heurística viene de la palabra griega heuriken que significa “descubrir”, que es también origen de eureka, derivado de la famosa exclamación de Arquímedes, heurika “lo encontré”. Los investigadores Bartholdi y Platzman, en el artículo escrito el año 1988 titulado “Heurística basada en curvas espaciales y compactas para problemas combinatorios en el espacio euclidiano”, definieron heurística de la siguiente manera: “Una heurística puede verse como un procesador de información que, deliberadamente, peor juiciosamente, ignora cierta información. Ignorando información, una heurística se libra de gran parte del esfuerzo que debió haberse requerido para leer los datos y hacer cálculos con ellos. Por otra parte, la solución producida por tal heurística, es independiente de la información ignorada, y de este modo no se ve afectada por cambios en tal información. Idealmente, se busca ignorar información que resulta muy caro colectar y mantener, esto es, computacionalmente caro de explotar y mantener, y que contribuye en poco a la precisión de la solución.” Se puede definir una heurística como una técnica que aumenta la eficiencia de un proceso de búsqueda, posiblemente sacrificando demandas de completitud. Las heurísticas son como los guías de turismo: Resultan adecuadas en el sentido de que generalmente suelen indicar las rutas interesantes; son malas en el sentido de que pueden olvidar puntos de interés para ciertas personas. Al usar buenas heurísticas se pueden expresar buenas, aunque posiblemente no óptimas, soluciones a problemas difíciles, como el problema del viajante de comercio. Una función heurística es una correspondencia entre las descripciones de estados del problema hacia alguna medida de deseabilidad, normalmente representada por números. Quiere decir que mensura cada estado del problema y dice qué tan cerca de la solución óptima está. El propósito de una función heurística es el de guiar el proceso de búsqueda en la dirección más provechosa sugiriendo qué camino tomar cuando hay más de uno disponible. Cuanto más exactamente estime la función heurística los méritos de cada nodo del grafo que representa al problema, más directo será el proceso de solución. En general, hay que hacer una ponderación entre el costo de evaluación de una función heurística y el ahorro de tiempo de búsqueda que proporciona la función.

jueves, 15 de agosto de 2013

Software para mineria de datos

Interesante trabajo que se realizo en la Universidad Nacional del Nordeste, se los dejo aca para que lo revisen




lunes, 12 de agosto de 2013

Minería de secuencias contínuas de datos

La mayoría de las secuencias continuas liberan datos en orden arbitrario, los cuales están intrínsecamente relacionados con un aspecto temporal, esto quiere decir que los patrones que son descubiertos en ellos siguen una tendencia dinámica, y por lo tanto son diferentes a los conjuntos de datos estáticos tradicionales que son muy grandes. Tales secuencias de datos se refieren a secuencias continuas de datos de desarrollo y por esta razón, las técnicas que son dimensionables para conjuntos de datos enormes no pueden ser la respuesta para minar las secuencias de datos o secuencias continuas de desarrollo, ya que estas técnicas siempre se esfuerzan en el trabajo de conjuntos de datos sin hacer distinción entre datos nuevos y datos viejos, y así esperar manipular la noción de patrones emergentes y obsoletos. La investigación de minería de secuencias continuas de datos ha sido activada en los primeros años del siglo veintiuno. Dentro de los estudios realizados en esta área se pueden mencionar los trabajos realizados desde un punto de vista general, los cuales pueden ser observados en el artículo escrito el año 2001 por los investigadores Babu y Widom titulado “Consultas continuas sobre secuencias continuas de datos”, además del artículo escrito por Babcock y sus colegas el año 2002 titulado “Modelos y ejemplos en sistemas de secuencias continuas de datos”. Otros estudios relacionados con la administración de las secuencias continuas de datos y el procesamiento de búsqueda continua de dichas secuencias es posible encontrar en el artículo escrito por Gibbons y Matias el año 1998 titulado “Nuevo resumen estadístico basado en muestreo para la mejora de respuestas a consultas aproximadas”. En palabras de Golab y Ozsu, en el artículo escrito el año 2003 titulado “Resultados en la gestión de secuencias continuas de datos”, dos cambios producidos a principios del presente siglo motivan la necesidad de los sistemas de procesamiento de secuencias continuas de datos: (1) La generación automática de altas tasas de secuencias de datos en diferentes aplicaciones científicas y comerciales. Por ejemplo: El satélite, el radar, y aplicaciones científicas de las corrientes de datos astronómicas, la bolsa de valores y las transacciones Web de secuencias continuas de datos en las aplicaciones comerciales. (2) La necesidad para el análisis de estos datos de alta velocidad de las secuencias continúas como el agrupamiento y la detección de valores atípicos, la clasificación y el cálculo de conjuntos de ítems frecuentes. Algunos algoritmos que se utilizan en el área de la minería de secuencias continuas están relacionados con proyectos de negocios y también en aplicaciones científicas. Estos algoritmos han sido desarrollados y debatidos por los investigadores Babu y Widom, en el artículo mencionado anteriormente, además del artículo escrito el año 2002 por Garofalakis y sus colegas titulado “Consultas y minado de secuencias continuas de datos”. Existen diferentes y recientes proyectos que estimulan la necesidad para las técnicas en vías de desarrollo que analizan datos de secuencias continuas en tiempo real, entre los cuales se puede mencionar a: (1) Burt y sus colegas, en el artículo escrito el año 1999 titulado “Ojo de diamante: Una arquitectura distribuida para la minería de datos de imágenes”, se encuentran desarrollando un proyecto que apunta a permitir que sistemas alejados puedan analizar objetos espaciales de imágenes de secuencias continuas en tiempo real. El proyecto enfoca la atención en facultar una nueva era de exploración espacial usando naves espaciales, exploradores y sensores altamente autónomos. (2) Kargupta, en el artículo escrito el año 2003 titulado “Vehículo para el minado de secuencias continuas de datos”, ha desarrollado un sistema de minería de datos ubicua que permite un monitoreo continuo y la extracción de patrones de datos de secuencias continuas generados por un vehículo de traslado. (3) Los investigadores Srivastava y Stroeve desarrollan un proyecto en la Agencia Espacial de los Estados Unidos, reportado en el artículo escrito el año 2003 titulado “Detección de nieve, hielo, nubes y otros procesos geofísicos utilizando métodos de núcleo”. El proyecto consiste en la detección de procesos geofísicos como nieve, hielo y nubes usando métodos de agrupamiento para la compresión de datos, conservando el ancho de banda limitado necesario, para enviar imágenes de secuencias continuas de datos a los centros terrestres. Estos proyectos y otros demuestran la necesidad de contar con las técnicas de análisis de secuencias continuas de datos y las estrategias que pueden hacer frente a la alta tasa de datos, y así proporcionar los resultados de análisis en tiempo real.

lunes, 5 de agosto de 2013

Minería de secuencias contínuas de datos

La minería de datos, según Frawley y sus colegas, en el artículo escrito el año 1992 titulado “Descubrimiento de conocimiento en bases de datos”, se define formalmente como “un conjunto de técnicas y herramientas aplicadas al proceso no trivial de extraer y presentar conocimiento implícito, previamente desconocido, potencialmente útil y humanamente comprensible, a partir de grandes conjuntos de datos, con objeto de predecir, de forma automatizada, tendencias o comportamientos y descubrir modelos previamente desconocidos”. Desde el punto de vista empresarial, en palabras de Molina, reportadas en el artículo escrito el año 2001 titulado “Torturando a los datos hasta que confiesen”, los términos minería de datos y extracción del conocimiento son tratados como sinónimos, y se lo define como: “La integración de un conjunto de áreas que tienen como propósito la identificación de conocimiento obtenido a partir de las bases de datos que aporten un sesgo hacia la toma de decisiones”. Según Pautsch, en la tesis de grado escrita el año 2009 titulada “Minería de datos aplicada al análisis de la deserción en la carrera de analista en sistemas de computación”, no se debe confundir a la minería de datos con un gran software ya que durante el desarrollo de un proyecto de este tipo, deben utilizarse diferentes aplicaciones para cada etapa. Las mismas pueden ser aplicaciones estadísticas, de visualización de datos o de inteligencia artificial. Actualmente existen aplicaciones comerciales muy poderosas que facilitan el desarrollo de un proyecto, pero es muy probable que deban complementarse con otras herramientas. El objetivo de la minería de datos es extraer la información oculta en las profundidades de las base de datos para luego intentar predecir futuras tendencias y comportamientos. De esta forma permiten a las organizaciones tomar decisiones proactivas y así adaptarse a un entorno permanentemente cambiante y sumamente competitivo. Las técnicas utilizadas en la minería de datos son el resultado de un largo proceso de investigación y desarrollo de productos que comenzó cuando los datos de negocio fueron almacenados por primera vez en computadoras y luego, con varias tecnologías, permitieron que los usuarios naveguen entre los datos en tiempo real. La minería de datos engloba todas estas técnicas para brindar información prospectiva y proactiva. Según Fayyad y sus colegas, en el artículo escrito el año 1996 titulado “De la minería de datos al descubrimiento del conocimiento en bases de datos”, la minería de datos está lista para su aplicación ya que está sostenida por cuatro tecnologías que ya se encuentran suficientemente maduras: (1) Recolección masiva de datos. (2) Potentes computadoras con multiprocesadores. (3) Almacenes de datos. (4) Algoritmos de minería de datos. En términos estrictamente académicos, las palabras minería de datos y descubrimiento de conocimiento en bases de datos no deben utilizarse de manera indistinta. La minería de datos es un paso esencial en el descubrimiento de conocimiento en bases de datos que utiliza algoritmos para generar patrones a partir de los datos procesados de manera antelada. El investigador Daniel Barbara, en el artículo escrito el año 2002 titulado “Requisitos para la agrupación de datos de secuencias”, menciona que en los primeros años del siglo veintiuno, los investigadores en bases de datos y las comunidades que se preocupan en minar datos, enfocaron su atención en un modelo nuevo de procesamiento de datos, donde los datos llegan en forma de streams o una secuencia continúa de datos. Estos datos que llegan de forma continua y rápida presentan un gran desafío para la minería de datos tradicional, ya que es realmente desafiante realizar las operaciones que habitualmente se usan en el análisis de enormes cantidades de datos. Chen y sus colegas, en el artículo escrito en año 2002 titulado “Análisis de regresión multidimensional de secuencias continuas de datos en series de tiempo” complementan mencionando que este nuevo modelo de análisis es denominado “minería de secuencias continuas” y se puede definir como un proceso de extracción del conocimiento de estructuras de registros rápidos y continuos de datos. Los ejemplos de secuencias continuas de datos incluyen tráfico de la red de computadoras, conversaciones telefónicas, transacciones de cajeros automáticos, búsquedas Web y datos de sensores.

lunes, 15 de julio de 2013

Captación táctil de datos con el propio cuerpo como interfaz digital

Lynette Jones es una científica visionaria impulsora de esta nueva tecnología. Propone una línea de investigación tan fascinante como osada: Utilizar la piel del cuerpo humano como dispositivo de percepción sensorial de datos en una interfaz digital capaz de revolucionar diversos capítulos de la relación entre el “Ser Humano” y las máquinas. En un futuro quizás no muy distante, una vibración característica ejercida cerca del ombligo por un cinturón, u otra de tipo distinto ejercida en el hombro izquierdo por una camiseta, podrían darnos instrucciones para, por ejemplo guiarnos a través de una zona desconocida para nosotros, sin que tuviéramos que depender de la información visual en una pantallita o de las instrucciones habladas de altavoces o auriculares. Podemos pensar en ello como si fuese una especie de código Morse táctil: Vibraciones de un dispositivo que forma parte de nuestra ropa, con un GPS incorporado, que nos dice si debemos doblar a la derecha o a la izquierda, o detenernos, dependiendo del patrón de pulsos que percibamos. Tal dispositivo podría liberar a los conductores de la tarea a veces peligrosa de mirar mapas mientras conducen, y podría también servir como una guía táctil para las personas con problemas graves de visión y/o de audición. Jones, del Instituto Tecnológico de Massachusetts (MIT) en Cambridge, Estados Unidos, está muy segura de las posibilidades de la piel humana para percibir información compleja, codificada en forma de sensaciones táctiles. “Si comparamos la piel con la retina, encontramos casi la misma cantidad de receptores sensoriales. La diferencia es que en la piel están esparcidos por unos dos metros cuadrados de espacio, mientras que en el ojo están todos concentrados en un área extremadamente pequeña”, argumenta Jones. Ella considera que la piel es un medio lo bastante sofisticado para la comunicación, si bien aún no se ha explotado como tal. Basta con distribuir las señales por ese amplio espacio epidérmico para obtener un sistema sofisticado de interpretación de vibraciones. Sin embargo, saber cómo dispersar información táctil a través de la piel es una tarea complicada. Las personas solemos ser mucho más sensibles a los estímulos en áreas como la mano en comparación con el antebrazo, y en tales zonas podemos captar con más nitidez ciertos patrones de vibraciones. Tal información sobre la percepción detallada de estímulos en la piel podría ayudar a los ingenieros a determinar la mejor configuración de los motores en un sistema de transmisión cutánea de datos, dependiendo de en qué punto del cuerpo debiera llevarse puesto la interfaz o interfaces de datos táctiles. Ahora, el equipo de Jones, en el que también ha trabajado Katherine Sofia del MIT, ha construido un dispositivo que monitoriza con precisión las vibraciones de un motor a través de la piel, en tres dimensiones. El dispositivo consiste en ocho acelerómetros miniaturizados y un único motor vibratorio, comparable a los usados en los teléfonos móviles. Jones utilizó el dispositivo para medir las vibraciones del motor en tres sitios: la palma de la mano, el antebrazo y el muslo. En los experimentos que ella ha realizado con ocho participantes en buen estado de salud, Jones midió la percepción de vibraciones en cada una de las personas, incluyendo por ejemplo hasta qué extensión de la piel tales vibraciones se propagan de manera fácilmente localizable por el portador del dispositivo, y examinó otras cuestiones vitales para dar con el mejor enfoque de diseño de estas singulares interfaces. Jones vislumbra aplicaciones prometedoras para dispositivos táctiles incorporados a prendas de vestir. Ella considera que los estímulos táctiles podrían dirigir a los bomberos a través de edificios en llamas, o a otros trabajadores de servicios de emergencias a través de sitios donde ha ocurrido un desastre. En escenarios más mundanos, ella sostiene que los dispositivos táctiles podrían ayudar a las personas al volante de un automóvil a orientarse en zonas que no conocen, sin tener que apartar la vista de la carretera para mirar una pantalla, ni tener que escuchar instrucciones habladas, algo, esto último, que no es fácil en entornos ruidosos.

Adaptación del tamaño de la población

Con lo mencionado se espera destacar la importancia de realizar una correcta asignación del tamaño de la población, muchos trabajos de investigación han tratado de manejarlo de diversas maneras. Lobo, en su tesis de doctorado escrita el año 2000 con el título de “Algoritmo genético sin parámetros: Selección de parámetros racionales y automatizados para un funcionamiento simplificado”, considera la asignación como un problema de toma de decisión estadística en el cual se buscan ecuaciones que determinen el tamaño de la población de acuerdo a la dimensión y al número de bloques útiles inherentes al problema. Se han diseñado estrategias de incremento de tamaño de la población basados en criterios de tiempo de vida, especialmente en el artículo escrito el año 1994 por los investigadores Arabas, Michalewicz y Mulawka titulado “GAVAPS: Algoritmo genético con tamaño de población variable”. Se han diseñado también mecanismos que permiten al algoritmo la reproducción o competencia entre individuos de acuerdo al nivel de recursos de los que dispone, esto se puede observar en el artículo escrito por Schlierkamp-Voosen y Mühlenbein el año 1994 titulado “Estrategia adaptativa mediante competencia de sub-poblaciones”. Las técnicas que han presentado un mejor desempeño son las llamadas de “adaptación de parámetros”, en las cuales se ha tratado de eliminar el proceso de selección, mediante la adaptación del parámetro al mismo tiempo que el algoritmo genético está siendo ejecutado. Los conceptos “edad y tiempo de vida” y “competencia entre poblaciones” han sido los más utilizados para este proceso. Fernando Lobo y Claudio Lima, en el artículo escrito el año 2005 titulado “Una revisión de los esquemas adaptativos del tamaño de la población en algoritmos genéticos”, presentan un resumen de los principales esquemas de adaptación del tamaño de la población: (1) Algoritmo genético con tamaño de población variable. Fue propuesto por Arabas, Michalewicz, y Mulawka, en el artículo citado anteriormente, utilizando el concepto de edad y tiempo de vida. Cuando se crea la primera generación de individuos, para cada uno de ellos es asignada una edad cero, haciendo referencia al nacimiento del individuo. Cada vez que se llega a una nueva generación la edad aumenta. Al mismo tiempo que se crea un individuo se le asigna un tiempo de vida, que representa cuánto tiempo vivirá el individuo dentro de la población, cuando su edad llegue a un tiempo de vida límite, morirá. En cada generación se escoge a los individuos que se utilizarán para generar nuevos individuos, a los cuales también se les asigna un tiempo de vida. El tiempo de vida depende de la comparación entre la adaptabilidad del individuo y el promedio de adaptabilidad de la población, así, si un individuo tiene mejor valor en su función de adaptabilidad tendrá mayor tiempo de vida, dándole mayor posibilidad de generar nuevos individuos. (2) Estrategia de adaptación por competencia de sub-poblaciones. Schlierkamp-Voosen y Mühlenbein el año 1994, en el artículo mencionado anteriormente, propusieron un esquema en el cual la población se divide en varias sub-poblaciones, las cuales compiten entre sí por un recurso, como lo hacen las especies reales por recursos como alimento. La competición se simula evolucionando por separado cada una de las poblaciones, esta evolución se realiza con un algoritmo de búsqueda diferente para cada población. Cada cierto tiempo las poblaciones compiten entre sí, la población con el mejor valor de adaptación aumenta su población, mientras las otras lo disminuyen. Durante todo el proceso de evolución, la suma de los tamaños de población de todas las sub–poblaciones es constante. En 1996, los autores extendieron este esquema agregándole un factor de consumo a cada población, esto con la idea que cada algoritmo trabaja mejor con diferentes tamaños de población. Hinterding, Michalewicz, y Peachey, proponen el Algoritmo Genético Auto Adaptativo, donde se describe un esquema de adaptación del tamaño de la población, en el cual existen tres poblaciones diferentes, las cuales son inicializadas con tamaño de población diferente y además utilizan un algoritmo genético diferente para cada una de estas poblaciones. El mejor valor de adaptación de cada población es utilizado como criterio de ajuste del tamaño de la población utilizando unas reglas globales, las cuales analizan las tres poblaciones y dependiendo del mejor valor de adaptación de cada población se realiza el crecimiento o reducción del tamaño de cada una de las poblaciones. (3) Algoritmo genético sin parámetros. Harik y Lobo, el año 1999 en el artículo titulado “Un algoritmo genético sin parámetros” proponen un nuevo algoritmo en el cual los parámetros de razón de selección y probabilidad de apareamiento son afinados con valores numéricos adecuados a dichos parametros, el operador genético de mutación no es utilizado por los autores, ellos dedican su mayor esfuerzo en encontrar una estrategia para asignar el tamaño de la población, esta estrategia consiste en simular un continuo crecimiento del tamaño de población en busca del tamaño adecuado, estableciendo múltiples poblaciones de varios tamaños, las poblaciones están en diferentes estados de evolución en un momento dado, así cada una estas poblaciones estaría en un número de generación diferente. La creación y eliminación de poblaciones está controlada por un supervisor de promedios de función de adaptabilidad, el cual utiliza esta información para seleccionar el tamaño de población adecuado para el algoritmo.

lunes, 8 de julio de 2013

Adapatación del tamaño de la población

Cuando se habla de algoritmos genéticos, se debe hacer una referencia obligada a la obra de John Holland quien en el año 1975, en el libro titulado “Adaptación en sistemas naturales y artificiales”, asienta las bases para un acelerado desarrollo ulterior hasta llegar a lo que se conoce como algoritmos genéticos. Un algoritmo genético es un método de búsqueda que imita la teoría de la evolución biológica de Darwin para la resolución de problemas. Para ello, se parte de una población inicial de la cual se seleccionan los individuos más capacitados para luego reproducirlos y mutarlos para finalmente obtener la siguiente generación de individuos que estarán más adaptados que la anterior generación. En palabras de los investigadores Arranz de la Peña y Parra Truyol, en el artículo escrito el año 2007 titulado “Algoritmos genéticos”, para el estudio de este tipo de algoritmos se debe tener en cuenta una serie de parámetros: (1) Tamaño de la población. Este parámetro indica el número de cromosomas que se tiene en una población para una generación determinada. En caso de que esta medida sea insuficiente, el algoritmo genético tiene pocas posibilidades de realizar reproducciones con lo que se realizaría una búsqueda de soluciones escasa y poco óptima. Por otro lado si la población es excesiva, el algoritmo genético será excesivamente lento. De hecho estudios revelan que hay un límite a partir del cual es ineficiente elevar el tamaño de la población puesto que no se consigue una mayor velocidad en la resolución del problema. (2) Probabilidad de apareamiento. Indica la frecuencia con la que se producen apareamientos entre los cromosomas padre es decir, que haya probabilidad de reproducción entre ellos. En caso de que no exista probabilidad de reproducción, los hijos serán copias exactas se los padres. En caso de haberla, los hijos tendrán partes de los cromosomas de los padres. Si la probabilidad de cruce es del cien por ciento, el hijo se crea totalmente por apareamiento, no por partes. (3) Probabilidad de mutación. Indica la frecuencia con la que los genes de un cromosoma son mutados. Si no hay mutación, los descendientes son los mismos que había tras la reproducción. En caso de que haya mutaciones, parte del cromosoma descendiente es modificado y si la probabilidad de mutación es del cien por ciento, la totalidad del cromosoma se cambia. En este caso, no se cambian simplemente unos bits del cromosoma sino que se cambian todos, lo que significa que se produce una inversión en el cromosoma y no una mutación por lo que la población degenera muy rápidamente. Como se muestra en el párrafo precedente, el parámetro tamaño de la población es uno de los parámetros necesarios para la ejecución de un algoritmo genético, este parámetro determina el tamaño de la población que el algoritmo utilizará para cada una de sus iteraciones, algunos estudios han demostrado que el utilizar un rango de cincuenta a cien individuos para problemas de baja complejidad es adecuado, pero el tamaño de la población depende de la complejidad del problema, si la población es demasiado pequeña el algoritmo converge hacia pobres soluciones, en caso contrario el algoritmo consume recursos de procesamiento muy altos. Según Cantor, en la tesis de magister escrita el año 2009 titulada “Adaptación del tamaño de la población en los algoritmos genéticos”, el costo computacional de evaluar la función de aptitud de una población es uno de los principales factores a tener en cuenta, cuando se requiere configurar el tamaño de la población. Algunos usuarios de algoritmos genéticos desconocen este factor y configuran tamaños de la población extremadamente elevados sin prestar mayor importancia a este proceso, pero cuando se vean enfrentados a problemas donde la evaluación de la función de aptitud de un individuo es moderadamente alta, se percatan que evaluar en cada iteración la aptitud de una población de gran tamaño, se puede convertir en una tarea de nunca acabar. Por esta razón algunos investigadores evalúan técnicas donde se puedan obtener los beneficios de grandes poblaciones en poblaciones reducidas, uno de los principales beneficios a rescatar es la diversidad de la población.

lunes, 1 de julio de 2013

Red neuronal Hopfield

En palabras de Alejandro Cruz, en la tesis escrita el año 2003 con el título “Estabilidad de entrada-estado para identificación con redes neuronales dinámicas”, sin duda, uno de los principales responsables del desarrollo que ha experimentado el campo de la computación neuronal ha sido J.J. Hopfield físico norteamericano, quién en el año 1982 construyó un modelo de red, descrito en el artículo titulado “Redes neuronales y sistemas físicos con habilidades computacionales colectivas emergentes”, con el número suficiente de simplificaciones como para extraer analíticamente información sobre las características relevantes del sistema, conservando las ideas fundamentales de las redes construidas en el pasado y presentando una serie de funciones básicas de los sistemas neuronales reales. Además, Hopfield supo establecer un paralelismo lo cual ha permitido aplicar todo un conjunto de técnicas bien conocidas en este campo y, con ello, producir un avance en la comprensión del funcionamiento de las redes neuronales. Con su aporte, Hopfield redescubrió el mundo casi olvidado de las redes autoasociativas, caracterizadas por una nueva arquitectura y un nuevo funcionamiento, a las que se tuvo que añadir otro tipo de reglas de aprendizaje. Las consecuencias fueron redes con un comportamiento diferente a las diseñadas con estructura progresiva hacia adelante. El modelo de Hopfield consiste en una red monocapa con varias neuronas cuyos valores de salida son binarios: cero y uno o menos uno y más uno. En la versión original del modelo, conocida como Hopfield discreto, las funciones de activación de las neuronas eran del tipo escalón. Se trataba, por tanto, de una red discreta, con entradas y salidas binarias; sin embargo, posteriormente Hopfield hacia el año 1984 desarrolló una versión continua con entradas y salidas analógicas, descritas en el artículo titulado “Las neuronas con grados de respuesta colectiva tienen propiedades computacionales como las de las neuronas de dos estados”, utilizando neuronas con funciones de activación tipo sigmoidal, conocida como Hopfield continuo. Una de las características del modelo de Hopfield, es que se trata de una red autoasociativa. Así, varios patrones diferentes pueden ser almacenados en la red, como si de una memoria se tratase, durante la etapa de aprendizaje. Posteriormente, si se presenta a la entrada alguna información almacenada, la red evoluciona hasta estabilizarse, ofreciendo entonces en la salida la información almacenada, que coincide con la presentada en la entrada. Si, por el contrario, la información de entrada no coincide con ninguna de las almacenadas, por estar distorsionada o incompleta, la red evoluciona generando como salida la más parecida. Cruz continúa mencionando que la red Hopfield tiene un mecanismo de aprendizaje off-line. Por tanto, existe una etapa de aprendizaje y otra de funcionamiento de la red. En la etapa de aprendizaje se fijan los valores de los pesos en función del conjunto de información que se pretende que memorice o almacene la red. Una vez establecido, la red entra en funcionamiento. Esta red utiliza un aprendizaje no supervisado de tipo hebbiano, de tal forma que el peso de una conexión entre una neurona y otra se obtiene mediante el producto de los componentes asociados a las neuronas del vector que representa la información o patrón que debe almacenar. La elección de esta regla de aprendizaje por Hopfield fue, entre otras razones, debido a que asegura la estabilidad de la red, es decir, la convergencia hacia una respuesta estable cuando se presenta una determinada información de entrada. Muchas de las investigaciones acerca de la estabilidad de las redes se basan en el establecimiento de una función, denominada función de energía de la red, para representar los posibles estados y puntos de equilibrio de la red. De hecho, una de las causas por la que se considera a Hopfield responsable de impulsar el desarrollo en el campo de las redes neuronales, es precisamente el haber aplicado modelos matemáticos como éste, lo cual constituyó la base de posteriores trabajos sobre redes neuronales.

martes, 25 de junio de 2013

“Diseño de políticas de identificación y control de robots basadas en redes neuronales y sistemas neuro-fuzzy”

En palabras de Marichal Plasencia, descritas en la tesis escrita el año 1999 titulada “Diseño de políticas de identificación y control de robots basadas en redes neuronales y sistemas neuro-fuzzy”, las redes neuronales generalmente han sido implementadas mediante la programación sobre computadoras digitales, sin embargo ya en estos días empiezan a proliferar implementaciones en hardware, ya sea mediante montajes electrónicos o incorporando dispositivos ópticos. Tales ingenios, presentan un paso importante hacia la consecución de mayores velocidades de procesamiento, así como un camino hacia la popularización de las mismas, siendo ésta un área de investigación muy activa. En relación con la clasificación de las redes neuronales podría establecerse una división de las mismas en función de su arquitectura y forma de procesar las señales en tres clases. (1) La primera clase de redes se conoce con el nombre de redes neuronales estáticas. En esta clase se puede encontrar la red Multicapa de Perceptrones, la red de Funciones de Base Radial, Red Neuronal Probabilística. Todas ellas tienen como característica común el no poseer memoria, es decir, sólo son capaces de transformar un conjunto de entradas en un conjunto de salidas, de tal manera que una vez establecidos todos los parámetros de la red las salidas únicamente dependen de las entradas. Este tipo de redes se ha empleado con éxito en muchos problemas de clasificación, como funciones lógicas, así como en el campo de la aproximación funcional. (2) Como segunda clase de redes neuronales figuran las redes neuronales dinámicas. Estas a diferencia de las anteriores permiten establecer una relación entre salidas y entradas o salidas y entradas previas. Esto añade cierta memoria a estas redes. Como ejemplos de este tipo de redes se encuentran la red de Hopfield, la red de retardos en el tiempo, la red de tiempo discreto, etc. Las redes neuronales dinámicas se han revelado útiles en problemas de modelización de la dinámica directa e inversa de sistemas complejos, tales como robots, cohetes, naves espaciales, etc., así como en el modelado de circuitos secuenciales y en la conversión de texto a voz. (3) En este punto se destacan las denominadas redes auto-organizativas, en las cuales los nodos vecinos dentro de la red neuronal compiten en actividad por medio de las interacciones mutuas laterales, y evolucionan adaptativamente hacia detectores específicos de las diferentes señales de entrada. El aprendizaje en este caso se denomina aprendizaje competitivo, no supervisado o autoorganizativo. Estas se han aplicado con éxito en problemas de reconocimiento de patrones, control de procesos e incluso en el procesamiento de información semántica. Para la comprensión de la red de Hopfield es necesario realizar un breve recorrido acerca de los conceptos que rodean al término “memoria asociativa.” Según Sossa y Barrón, en el artículo escrito el año 2003 titulado “Reconocimiento de objetos por su recuerdo”, una memoria asociativa es un dispositivo electrónico, programa computacional o modelo matemático, que permite recuperar patrones a través de su recuerdo por medio de otros patrones llamados llaves; a los patrones que se recuperan se les llama patrones de información. En una primera etapa, la memoria es construida a través de un conjunto de patrones de información junto con sus llaves respectivas. Al conjunto de asociaciones (llave, patrón) se le llama conjunto de entrenamiento de la memoria asociativa. En una segunda etapa, a la memoria se le presenta una llave. Según Hassoun, en el libro escrito el año 1993 titulado “Memorias neuronales asociativas: Teoria e implementación”, si la memoria asociativa es capaz de recordar todos los patrones del conjunto de entrenamiento, se dice que dicha memoria tiene la capacidad básica de recuerdo o recuperación. A la cantidad de patrones que se pueden almacenar en la memoria sin alterar su capacidad básica de recuerdo se le llama capacidad de la memoria asociativa. En general, las memorias asociativas más eficientes desarrolladas hasta el momento, son capaces de reconocer patrones del conjunto de entrenamiento a través de versiones alteradas de los mismos, pero en presencia de ruido ya sea aditivo o substractivo. El ruido aditivo se caracteriza por alterar un patrón de manera que sus componentes se ven sesgadas hacia valores mayores. El ruido substractivo, por otro lado, altera un patrón de manera que sus componentes se ven sesgadas hacia valores menores. El ruido combinado o mezclado, que es el que se presenta en la realidad, altera un patrón de manera que sus valores se ven cargados en forma aleatoria hacia valores mayores o menores. En resumen, según Ricardo Barrón, en la tesis escrita el año 2006 titulada “Memorias asociativas y redes neuronales morfológicas para la recuperación de patrones”, una memoria asociativa ideal debe tener las siguientes características: (1) Capacidad de almacenamiento ilimitada. (2) Recuperación básica. (3) Recuperación robusta. (4) Soportes de tamaño máximo para cada patrón llave del conjunto de entrenamiento. (5) Una forma de representación sencilla que implique un costo computacional pequeño. Las aplicaciones de las memorias asociativas con características ideales son numerosas. Una de ellas es el reconocimiento de personas a partir de las fotografías. En este caso sería muy interesante recuperar la fotografía de una persona dada, a partir de otra fotografía con o sin lentes, con o sin bigote, por ejemplo.

jueves, 13 de junio de 2013

The top 20 data visualisation tools

The top 20 data visualisation tools

 

From simple charts to complex maps and infographics, Brian Suda's round-up of the best – and mostly free – tools has everything you need to bring your data to life


One of the most common questions I get asked is how to get started with data visualisations. Beyond following blogs, you need to practise – and to practise, you need to understand the tools available. In this article, I want to introduce you to 20 different tools for creating visualisations: from simple charts to complex graphs, maps and infographics. Almost everything here is available for free, and some you have probably installed already.

Entry-level tools


At the entry level, we'll be looking at unexpected uses for familiar tools. You might not think of Excel as a visualisation package, for example – but it's capable of surprisingly complex results. If you are just getting started, these tools are musts to understand. If you deal with visualisations every day, you'll quickly find yourself advancing beyond them, but not everyone will, so you'll always be dealing with data coming in from sources you'd rather not deal with.

1. Excel


 for example, by creating 'heat maps' like this one
It isn't graphically flexible, but Excel is a good way to explore data: for example, by creating 'heat maps' like this one

You can actually do some pretty complex things with Excel, from 'heat maps' of cells to scatter plots. As an entry-level tool, it can be a good way of quickly exploring data, or creating visualisations for internal use, but the limited default set of colours, lines and styles make it difficult to create graphics that would be usable in a professional publication or website. Nevertheless, as a means of rapidly communicating ideas, Excel should be part of your toolbox.

Excel comes as part of the commercial Microsoft Office suite, so if you don't have access to it, Google's spreadsheets – part of Google Docs and Google Drive – can do many of the same things. Google 'eats its own dog food', so the spreadsheet can generate the same charts as the Google Chart API. This will get your familiar with what is possible before stepping off and using the API directly for your own projects.

2. CSV/JSON


CSV (Comma-Separated Values) and JSON (JavaScript Object Notation) aren't actual visualisation tools, but they are common formats for data. You'll need to understand their structures and how to get data in or out of them. All of the following toolkits accept at least one of the two formats as input.

Online visualisations


3. Google Chart API


The portion of the toolset for static images has been deprecated, so the Google Chart Tools site now only offers tools for dynamic charts. They are robust and work on all browsers supporting SVG, canvas and VML, but one big problem is that they are generated on the client side, which creates problems for devices without JavaScript, offline use – or just when saving in different formats. Static images didn't have the same issues, so I'm sorry to see them go.

However, the API has just about everything but the kitchen sink, from bar charts and line graphs to maps and even QR codes. You will probably find the right visualisation for your needs as long as you are comfortable with the Google look and not in need of extreme customisation. As a jumping-off point, it is a great tool to know how to use.

The portion for static images has been deprecated, but the Google Chart API is a good way to create dynamic visualisations
The portion for static images has been deprecated, but the Google Chart API is a good way to create dynamic visualisations

4. Flot


Flot is a great library for line graphs and bar charts. It works in all browsers that support canvas – which means most of the popular ones, with some extra libraries to get canvas to work as VML in older browsers. It's a jQuery library, so if you're already familiar with jQuery, it's easy to manipulate the calls back, styling and behaviour of the graphics.

The nice thing about Flot is that you have access to plenty of callback functions so you can run your own code and style the results when readers hover, click, mouseout, and other common events. This gives you much more flexibility than other charting packages, but there is a steeper learning curve. Flot is also limited to line and bar charts. It doesn't have as many options as other libraries, but it performs common tasks really well.

It's specialised on line and bar charts, but if you know jQuery, Flot is a powerful option
It's specialised on line and bar charts, but if you know jQuery, Flot is a powerful option

5. Raphaël


Raphaël is another great JavaScript library for creating charts and graphs. The biggest difference to other libraries is that it focuses on SVG and VML as output. This has pros and cons. Since SVG is a vector format, the results look great at any resolution; but since it creates a DOM node for each element, it can be slower than creating rasterised images via canvas. However, the upside is that you can interact with each DOM element and attach events, just like HTML.

The website includes plenty of demos to show how easily Raphaël can create common charts and graphs but, because it can also render arbitrary SVG, it has the ability to create some very complex visualisations for which you might otherwise have to resort to other vector tools such as Illustrator or Inkscape.

 slower than raster-based tools, but it's capable of complex results
Raphaël is a great way to create vector-based charts: slower than raster-based tools, but it's capable of complex results

6. D3


D3 (Data-Driven Documents) is another JavaScript library that supports SVG rendering. The examples go beyond the simple bar charts and line graphs to much more complicated Voronoi diagrams, tree maps, circular clusters and word clouds. It's another great tool to have in your toolbox, but I wouldn't always recommend D3 as the go-to library. It's great for creating very complicated interactions – but just because you can, it doesn't mean you should. Knowing when to stay simple is a big part of choosing the right visualisation tool.

D3 is capable of creating very complex output – but it's best saved for special cases, not everyday use
D3 is capable of creating very complex output – but it's best saved for special cases, not everyday use

7. Visual.ly


If you are in need of an infographic rather than a data visualisation, there is a new crop of tools out there to help. Visual.ly is probably the most popular of these. Although primarily an online marketplace for infographic designers, its Create option lets you pick a template, connect it to your Facebook or Twitter account and get some nice cartoon graphics back. While the results are currently limited, it's a useful source of inspiration – both good and bad – and a site I expect to see grow in future, accepting more formats and creating more interesting graphics.

Visual.ly acts both as an online marketplace and simple creation tool for infographics
Visual.ly acts both as an online marketplace and simple creation tool for infographics

Interactive GUI controls


What happens when data visualisations become so interactive they themselves become GUI controls? As online visualisations evolve, buttons, drop-downs and sliders are morphing into more complex interface elements, such as little handles that let you manipulate ranges, changing the input parameters and the data at the same time. Controls and content are becoming one. The following tools will help you explore the possibilities this offers.

8. Crossfilter


As we build more complex tools to enable clients to wade through their data, we are starting to create graphs and charts that double as interactive GUI widgets. JavaScript library Crossfilter can be both of these. It displays data, but at the same time, you can restrict the range of that data and see other linked charts react.

 by restricting the input range on any one chart, data is affected everywhere. This is a great tool for dashboards or other interactive tools with large volumes of data behind them
Crossfilter in action: by restricting the input range on any one chart, data is affected everywhere. This is a great tool for dashboards or other interactive tools with large volumes of data behind them

9. Tangle


The line between content and control blurs even further with Tangle. When you are trying to describe a complex interaction or equation, letting the reader tweak the input values and see the outcome for themselves provides both a sense of control and a powerful way to explore data. JavaScript library Tangle is a set of tools to do just this. Dragging on variables enables you to increase or decrease their values and see an accompanying chart update automatically. The results are only just short of magical.

Tangle creates complex interactive graphics. Pulling on any one of the knobs affects data throughout all of the linked charts. This creates a real-time feedback loop, enabling you to understand complex equations in a more intuitive way
Tangle creates complex interactive graphics. Pulling on any one of the knobs affects data throughout all of the linked charts. This creates a real-time feedback loop, enabling you to understand complex equations in a more intuitive way

Mapping


Mapping used to be a really hard task on the web. Then Google Maps came along and blew away every preconceived notion of how an online map should work. Soon after, Google released its Maps API, which allowed any developer to embed maps in their own sites.

Since then, the market has matured a great deal. There are now several options out there if you are looking to embed custom mapping solutions in your own data visualisation project, and knowing when to choose one over the others is a key business decision. Sure, you can probably shoehorn everything you need into any of these maps, but it's best not to have a hammer and view every problem as a nail.

10. Modest Maps


Modest Maps is a tiny mapping library. Weighing in at only 10kB, it is the smallest of options discussed here. This makes it very limited in its basic form – but don't let that fool you: with a few extensions, such as Wax, you can really make this library sing. This is a product of Stamen, Bloom and MapBox, so you know it has an interesting track record.

Teamed with additional libraries, such as MapBox's Wax (pictured), the tiny Modest Maps becomes a powerful tool
Teamed with additional libraries, such as MapBox's Wax (pictured), the tiny Modest Maps becomes a powerful tool

11. Leaflet


Brought to you by the CloudMade team, Leaflet is another tiny mapping framework, designed to be small and lightweight enough to create mobile-friendly pages. Both Leaflet and Modest Maps are open source projects, which makes them ideal for using in your own sites: with a strong community backing them, you know they won't disappear any time soon.

Leaflet is a small, lightweight JavaScript library ideal for mobile-friendly projects
Leaflet is a small, lightweight JavaScript library ideal for mobile-friendly projects

12. Polymaps


Polymaps is another mapping library, but it is aimed more squarely at a data visualisation audience. Offering a unique approach to styling the the maps it creates, analagous to CSS selectors, it's a great resource to know about.

Aimed more at specialist data visualisers, the Polymaps library creates image and vector-tiled maps using SVG
Aimed more at specialist data visualisers, the Polymaps library creates image and vector-tiled maps using SVG

13. OpenLayers


OpenLayers is probably the most robust of these mapping libraries. The documentation isn't great and the learning curve is steep, but for certain tasks nothing else can compete. When you need a very specific tool no other library provides, OpenLayers is always there.

It isn't easy to master, but OpenLayers is arguably the most complete, robust mapping solution discussed here
It isn't easy to master, but OpenLayers is arguably the most complete, robust mapping solution discussed here

14. Kartograph


Kartograph's tag line is 'rethink mapping' and that is exactly what its developers are doing. We're all used to the Mercator projection, but Kartograph brings far more choices to the table. If you aren't working with worldwide data, and can place your map in a defined box, Kartograph has the options you need to stand out from the crowd.

Kartograph's projections breathe new life into our standard slippy maps
Kartograph's projections breathe new life into our standard slippy maps

15. CartoDB


Finally, CartoDB is a must-know site. The ease with which you can combine tabular data with maps is second to none. For example, you can feed in a CSV file of address strings and it will convert them to latitudes and longitudes and plot them on a map, but there are many other users. It's free for up to five tables; after that, there are monthly pricing plans.

CartoDB provides an unparalleled way to combine maps and tabular data to create visualisations
CartoDB provides an unparalleled way to combine maps and tabular data to create visualisations

Charting fonts


One recent trend in web development is to merge symbol fonts with font embedding to create beautifully vectorised icons. They scale and print perfectly, and look great on newer Retina devices too. A few of these fonts, such as FF Chartwell and Chartjunk, have been specially crafted for the purpose of displaying charts and graphs. They have the usual problem of OpenType not being fully supported in all browsers, but they're something to consider in the near future.

Getting serious


If you're getting serious about data visualisations, you need to move beyond simple web-based widgets onto something more powerful. This could mean desktop applications and programming environments.

16. Processing


Processing has become the poster child for interactive visualisations. It enables you to write much simpler code which is in turn compiled into Java. There is also a Processing.js project to make it easier for websites to use Processing without Java applets, plus a port to Objective-C so you can use it on iOS. It is a desktop application, but can be run on all platforms, and given that it is now several years old, there are plenty of examples and code from the community.

Processing provides a cross-platform environment for creating images, animations, and interactions
Processing provides a cross-platform environment for creating images, animations, and interactions

17. NodeBox


NodeBox is an OS X application for creating 2D graphics and visualisations. You need to know and understand Python code, but beyond that it's a quick and easy way to tweak variables and see results instantly. It's similar to Processing, but without all the interactivity.

NodeBox is a quick, easy way for Python-savvy developers to create 2D visualisations
NodeBox is a quick, easy way for Python-savvy developers to create 2D visualisations

Pro tools


At the opposite end of the spectrum from Excel are professional data-analysis tools. If you are serious about data visualisation, you need to be at least aware of, if not proficient in, some of these. Industry-standard tools such as SPSS and SAS require expensive subscriptions, so only large institutions and academia have access to them, but there are several free alternatives with strong communities. The open-source software is just as good, and the plug-ins and support are better.

18. R


How many other pieces of software have an entire search engine dedicated to them? A statistical package used to parse large data sets, R is a very complex tool, and one that takes a while to understand, but has a strong community and package library, with more and more being produced. The learning curve is one of the steepest of any of these tools listed here, but you must be comfortable using it if you want to get to this level.

A powerful free software environment for statistical computing and graphics, R is the most complex of the tools listed here
A powerful free software environment for statistical computing and graphics, R is the most complex of the tools listed here

19. Weka


When you get deeper into being a data scientist, you will need to expand your capabilities from just creating visualisations to data mining. Weka is a good tool for classifying and clustering data based on various attributes – both powerful ways to explore data – but it also has the ability to generate simple plots.

A collection of machine-learning algorithms for data-mining tasks, Weka is a powerful way to explore data
A collection of machine-learning algorithms for data-mining tasks, Weka is a powerful way to explore data

20. Gephi


When people talk about relatedness, social graphs and co-relations, they are really talking about how two nodes are related to one another relative to the other nodes in a network. The nodes in question could be people in a company, words in a document or passes in a football game, but the maths is the same. Gephi, a graph-based visualiser and data explorer, can not only crunch large data sets and produce beautiful visualisations, but also allows you to clean and sort the data. It's a very niche use case and a complex piece of software, but it puts you ahead of anyone else in the field who doesn't know about this gem.

Gephi in action. Coloured regions represent clusters of data that the system is guessing are similar
Gephi in action. Coloured regions represent clusters of data that the system is guessing are similar

Further reading


  • A great Tumblr blog for visualisation examples and inspiration: vizualize.tumblr.com
  • Nicholas Felton's annual reports are now infamous, but he also has a Tumblr blog of great things he finds.
  • From the guy who helped bring Processing into the world: benfry.com/writing
  • Stamen Design is always creating interesting projects: stamen.com
  • Eyeo Festival brings some of the greatest minds in data visualisation together in one place, and you can watch the videos online.

20 Proyectos del Banco Mundial Georeferenciados en Bolivia


World Bank's Mapping for Results Tambien Consulta: http://maps.worldbank.org/lac/bolivia#&location=-16.530904,-62.336424,6§ors=agriculture,communications,education,energy,finance,health,industry,public,water,transportation,&indicator=Poverty

Open Aid Partnership

martes, 12 de marzo de 2013

Mineria de datos en Bioinformática (II)

Otra aplicación interesante de los métodos computacionales en biología es el manejo de datos experimentales complejos. Según Bower y Bolouri, en el libro publicado el año 2004 titulado “Modelado computacional de redes bioquímicas y genéticas”, los microarrays son los dominios más conocidos donde este tipo de información es almacenada. Estos datos experimentales provocan dos problemas diferentes. Primero, los datos necesitan ser preprocesados, es decir, modificados para ser usados adecuadamente por algoritmos de aprendizaje automático. Segundo, al análisis de los datos, que a su vez, depende de lo que se esté buscando. En el caso de los microarrays, la aplicación más típica es la identificación de patrones, clasificación e inducción de redes reguladoras genéticas. La biología de sistemas es otro dominio donde la biología y la minería de datos trabajan en conjunto. Es muy complejo modelar los procesos de la vida que tienen lugar dentro de la célula. Por ello, las técnicas computacionales son extremadamente prácticas cuando se desea modelar redes biológicas, especialmente redes genéticas o rutas metabólicas. La evolución, y especialmente la reconstrucción de árboles filogenéticos, también aprovechan las técnicas de minería de datos. En palabras de Baldi y Brunak, en el libro publicado el año 2001 titulado “Bioinformática: Enfoque de aprendizaje automático”, los árboles filogenéticos son representaciones esquemáticas de la evolución de los organismos. Tradicionalmente, éstos eran construidos de acuerdo con diferentes características morfológicas, metabólicas, etc., pero, actualmente, con el gran crecimiento de secuencias de genomas disponibles, los algoritmos de construcción de árboles filogenéticos están basados en la comparación entre diferentes genomas. Esta comparación es realizada mediante el alineamiento de secuencias múltiples, donde las técnicas de optimización son muy útiles. Según Krallinger y sus colegas, en el artículo escrito el año 2005 titulado “Enfoques de minería de texto en biología molecular y biomedicina”, el efecto de la aplicación de técnicas computacionales al incremento de datos se ve reflejado en el aumento de publicaciones disponibles. Esto provee una nueva fuente de información valiosa, donde las técnicas de minería de textos son requeridas para la extracción de conocimiento. De este modo, la minería de textos se está haciendo más y más interesante en la biología computacional, y está siendo aplicada en anotaciones funcionales, predicción de localización celular y el análisis de interacción entre proteínas. Además de estas aplicaciones, las técnicas computacionales son usadas para resolver otros problemas, tales como el análisis de imágenes biológicas o el preprocesado de datos provenientes de la espectrometría. Según Norberto Díaz, en la tesis doctoral publicada el año 2012 titulada “Similitud funcional de genes basada en conocimiento biológico”, la minería de datos es la fase crucial del proceso de descubrimiento del conocimiento y consiste en el desarrollo de algoritmos computacionales que optimicen un cierto criterio usando ejemplos o experiencias pasadas. El criterio de optimización puede ser la precisión de un determinado modelo para un problema de modelado, o el valor de la función de evaluación para uno de optimización. En un problema de modelado, el término “aprendizaje” se refiere a la ejecución de un programa computacional que induzca un modelo basándose en datos de entrenamiento y experiencias pasadas. La minería de datos, a veces, usa teoría estocástica para construir modelos computacionales, ya que el objetivo es realizar inferencias a partir de ejemplos. Las dos principales etapas en este proceso son, inducir el modelo procesando la gran cantidad de datos, y representar el modelo y realizar eficientes inferencias. Nótese que la eficiencia del algoritmo de aprendizaje, al igual que sus espacios, complejidad y su transparencia e interpretabilidad, puede ser tan importante como su precisión predictiva. El proceso de transformación de datos a conocimiento es iterativo e interactivo. La fase iterativa se divide en varias subfases. La primera de ellas tiene el objetivo de integrar y combinar fuentes de información diferente en un único formato. El uso de técnicas de “almacenes de datos” soluciona la detección y resolución de outliers e inconsistencia.

lunes, 4 de marzo de 2013

Mineria de datos en Bioinformática

La tecnología moderna permite la creación de grandes almacenes de datos que requieren ser explorados en búsqueda de información refinada o conocimiento. Según los estudios de Norton, en el artículo escrito el año 1999 titulado “Descubrimiento del conocimiento en bases de datos”, y apoyado en el libro de Berthold, publicado el año 2000 titulado “Análisis de datos inteligentes”, desarrollar agentes que permitan procesar estos grandes volúmenes de datos y convertirlos en conocimiento útil para la toma de decisiones, constituye un reto colosal. Nuevas disciplinas han emergido para abordar este problema: Descubrimiento de Conocimiento, Minería de Datos, Análisis Inteligente de Datos, Análisis Exploratorio de Datos. Estas disciplinas se basan en métodos de la matemática y de la inteligencia artificial para acometer esta nueva problemática. Las tecnologías desarrolladas para el procesamiento de la información han tenido un impacto revolucionario en la industria y en el mundo de los negocios. Hoy en día existe una gran variedad de sistemas de software comerciales que se basan en las técnicas del análisis inteligente de datos para llevar a cabo tareas como: planeación económica, vigilancia e inteligencia empresarial, análisis financiero, análisis de mercados y análisis de perfiles de clientes. En palabras de Bhaskar y sus colegas, en el artículo escrito el año 2006 titulado “Aprendizaje automático en bioinformática: Un breve recorrido y recomendaciones para los practicantes”, el crecimiento ingente de datos biológicos disponibles en la actualidad ha provocado dos problemas: por un lado, el almacenamiento y manejo eficiente de información y, por otro, la extracción de información útil a partir de dichos datos. El segundo de ellos es uno de los principales desafíos en la biología computacional, el cual requiere el desarrollo de herramientas y métodos capaces de transformar todos esos datos heterogéneos en conocimiento biológico sobre los mecanismos subyacentes. Según Larrañaga y sus colegas, en el artículo escrito el año 2006 titulado “Aprendizaje automático en bioinformática”, estas herramientas y métodos deben proporcionar una descripción más allá de los datos y el conocimiento suministrado en forma de modelo demostrable. A partir de esta abstracción simplificada que constituye un modelo, es posible obtener predicciones de sistemas. Existen distintos dominios biológicos donde las técnicas de minería de datos son aplicadas a la extracción de conocimiento. Estos problemas han sido clasificados por Larrañaga y sus colegas, en seis dominios diferentes: genómicos, proteómicos, microarrays, biología de sistemas, evolución y minería de textos. La categoría denominada “otras aplicaciones” agrupa al resto de problemas. Estas categorías deberían ser entendidas de una forma general, especialmente la genómica y la proteómica, las cuales podrían ser consideradas como el estudio de cadenas de nucleótidos y proteínas, respectivamente. La genómica es uno de los dominios más importantes en la bioinformática. Según Mathé y sus colegas, en el artículo escrito el año 2002 titulado “Métodos actuales para predicción de genes sus fortalezas y debilidades”, el número de secuencias disponibles se incrementa exponencialmente haciendo que estos datos necesiten ser procesados para obtener información útil. A partir de la secuencias del genoma, se pueden extraer la localización y estructuras de genes. Recientemente, la identificación de elementos reguladores, en el artículo de Won y sus colegas escrito el año 2004 titulada “Entrenando estructuras hmm con algoritmos genéticos para el análisis de secuencias biológicas”, y genes no codificadores de acido ribonucleico, identificada en el artículo de Careter y sus colegas del año 2001 titulado “Enfoque computacional para identificar genes para acido ribonucleico funcional en secuencias genómicas”, son también abordados desde un punto de vista computacional. La información secuencial es también usada para la predicción de funciones genéticas y de la estructura secundaria del acido ribonucleico. Si los genes contienen la información, las proteínas son los trabajadores que transforman esta información en vida. Las proteínas juegan un papel muy importante en los procesos de la vida, y su estructura tridimensional es una característica fundamental en su funcionalidad. En el dominio de la proteómica, la principal aplicación de los métodos computacionales es la predicción de la estructura de proteínas. Las proteínas son macromoléculas muy complejas con miles de átomos y ligaduras. Por ello, el número de posibles estructuras es inmenso. Esto hace que la predicción de estructura de proteínas sea un problema computacional muy complicado donde las técnicas de optimización son requeridas. En la proteómica, como en el caso de la genómica, las técnicas de minería de datos son aplicadas a la predicción de la función proteínica.