Universidad de Costa Rica Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Universidad de Costa Rica Facultad de Ingeniería Escuela de Ingeniería Eléctrica"

Transcripción

1 Universidad de Costa Rica Facultad de Ingeniería Escuela de Ingeniería Eléctrica IE 0502 Proyecto Eléctrico Descripción del funcionamiento de un módulo clasificador de ondas electroencefalográficas utilizando la plataforma OpenVibe Por: Jesús Leonel Sánchez Vargas Ciudad Universitaria Rodrigo Facio Diciembre del 2011

2 Descripción del funcionamiento de un módulo clasificador de ondas electroencefalográficas utilizando la plataforma OpenVibe Por: Jesús Leonel Sánchez Vargas Sometido a la Escuela de Ingeniería Eléctrica de la Facultad de Ingeniería de la Universidad de Costa Rica como requisito parcial para optar por el grado de: BACHILLER EN INGENIERÍA ELÉCTRICA Aprobado por el Tribunal: Ing. Lochi Yu Lo, Ph.D Profesor Guía Dr. Edison De Faria Campos Profesor lector Ing. Diego Sayed Dumani Jarquín Profesor lector ii

3 DEDICATORIA A mis padres y mi familia. iii

4 RECONOCIMIENTOS Primeramente a los desarrolladores INRIA Rennes de la plataforma de código libre OpenVibe, que conforma una interface cerebro computador muy completa, con suficiente documentación y abierta a cambios. A mis profesores guía y lectores, Lochi Yu, Edison De Faria y Diego Dumani, por permitirme realizar este proyecto y por el apoyo brindado. Al estudiante Esteban Garita quien realizó un proyecto paralelo a éste, por medio del cual fue posible utilizar el dispositivo EEG y realizar las pruebas. Al estudiante Francisco Rivera Valverde por su ayuda con la conexión física de los seis canales en el dispositivo EEG. iv

5 ÍNDICE GENERAL 1. CAPÍTULO 1: INTRODUCCIÓN Objetivos Objetivo general Objetivos específicos Metodología Interface cerebro computador El concepto de programación en OpenVibe Pre-procesamiento Filtros espaciales y temporales Análisis de componentes independientes ICA Patrones espaciales comunes PSC Extracción de datos El vector de datos Clasificación Máquinas de aprendizaje v

6 2.4.1 Modelo General de una máquina de aprendizaje: Máquinas de soporte de vectores El sistema nervioso humano CAPÍTULO 3: DESCRIPCIÓN DE LA IMPLEMENTACIÓN DE LOS ALGORITMOS DE CLASIFICACIÓN Y EL ESCENARIO DE IMAGINACIÓN MOTORA Escenario de Imaginación motora Módulos del clasificador en OpenVibe Módulo Procesador Módulo entrenador Algoritmos Disponibles para las versiones 10 y 11 de OpenVibe CAPÍTULO 4: IMPLEMENTACIÓN DEL ALGORITMO DE PUNTOS VECINOS MÁS CERCANOS Algoritmo de puntos vecinos más cercanos Implementación del algoritmo en la plataforma OpenVibe Generación de nuevas cajas y algoritmos usando Skeleton vi

7 4.2.2 Comunicación entre cajas, codificación y decodificación Interpretación de las señales de entrada Implementación de los módulos entrenador (trainer) y procesador (processor) CAPÍTULO 5: RESULTADOS CAPÍTULO 6: CONCLUSIONES Y RECOMENDACIONES Conclusiones Recomendaciones BIBLIOGRAFÍA APÉNDICES Apéndice 1: Estructuras de flujo Apéndice 2: Dispositivo EEG Apéndice 3: Código del clasificador de vectores más próximos ANEXOS Anexo1: Tutorial para agregar nuevos módulos en la plataforma OpenVibe vii

8 Anexo2: Diagramas de programación de las etapas en la plataforma OpenVibe viii

9 ÍNDICE DE FIGURAS Figura 1: Etapas de una interfaz cerebro computador... 6 Figura 2: Esquema del funcionamiento de la interfaz cerebro computador de OpenVibe... 8 Figura 3: Partes de una Máquina de Aprendizaje, frente a un estímulo x, y una salida y Figura 4: Distribución de puntos en dos dimensiones, pertenecientes a dos clases, y varias de sus posibles líneas de división Figura 5: Hiperplano óptimo para la separación de clases en un SVM Figura 6: Localización de regiones para la colocación de electrodos del sistema internacional Figura 7: Esquema de la etapa de obtención de datos para el escenario de imaginación motora Figura 8: Esquema general, de las etapas de entrenamiento y etapa de funcionamiento "online" del escenario de imaginación motora Figura 9: Ejemplo del visualizador de flechas disponible para la etapa de entrenamiento del escenario de imaginación motora de OV Figura 10: Distribución de la línea divisoria, para un algoritmo de vecino más próximo, tomando en cuenta el punto más cercano solamente

10 Figura 11: Ejemplo de un caso de clasificación por vecinos más próximos tomando en cuenta un grupo de vectores de cada clase Figura 12: Gráfica de los vectores característicos para una prueba de dos canales C3 y C4, de la clase izquierda, donde el azul son los vectores predominantemente izquierdos y el rojo los derechos Figura 13: Gráfica de los vectores característicos para una prueba de dos canales C3 y C4, de la clase derecha, donde el azul son los vectores predominantemente izquierdos y el rojo los derechos Figura 14: Gráfica de los vectores característicos para una prueba de diez canales (ejemplo OV), de la clase izquierda, donde el azul son los vectores predominantemente izquierdos y el rojo los derechos Figura 15: Gráfica de los vectores característicos para una prueba de diez canales (ejemplo OV), de la clase derecha, donde el azul son los vectores predominantemente izquierdos y el rojo los derechos Figura 16: Gráfica de los vectores característicos para una prueba de 6 canales, de la clase derecha, donde el verde son los vectores predominantemente izquierdos y el café los derechos x

11 Figura 17: Gráfica de los vectores característicos para una prueba de 6 canales, de la clase izquierda, donde el azul son los vectores predominantemente izquierdos y el rojo los derechos Figura 18: Árbol de jerarquías de tipos de paquetes EBML en OpenVibe Figura 19: Esquema general de una estructura de flujo EBML en OpenVibe Figura 20: Dispositivo OpenEEG de seis canales utilizado Figura 21: Primera ventana emergente de la herramienta Skeleton Figura 22: Ventana de configuraciones generales de Skeleton Figura 23: Ventana de configuración de entradas y salidas del módulo en Skeleton Figura 24: Ventana de configuración de parámetros modificables por el usuario de Skeleton Figura 25: Ventana de configuración de algoritmos de codificación de Skeleton Figura 26: Esquema modular de la etapa de adquisición de datos para el escenario de imaginación motora de la plataforma OV Figura 27: Esquema modular de la etapa de entrenamiento para el escenario de imaginación motora de la plataforma OV, usando 6 canales Figura 28: Esquema modular de la etapa "online" para el escenario de imaginación motora de la plataforma OV xi

12 ÍNDICE DE TABLAS Tabla 1: Principales métodos del módulo procesador del módulo clasificador de OpenVibe Tabla 2: Principales métodos del módulo entrenador del módulo clasificador de OpenVibe Tabla 3: Principales métodos del algoritmo LDA del módulo clasificador de OpenVibe Tabla 4: Principales métodos del algoritmo SVM del módulo clasificador de OpenVibe Tabla 5: Descripción del archivo de configuración creado en la etapa de entrenamiento Tabla 6: porcentajes de autoevaluación, para 10 canales, 2 canales y 6 canales respectivamente, para diferente cantidad de vectores más próximos a tomar en cuenta, eliminando diferente cantidad de los más próximos Tabla 7: Prueba de comportamiento, cuenta de estados erróneos antes de llegar al correcto, para 6 canales xii

13 NOMENCLATURA BCI: Interfaz cerebro computador VR: Realidad Virtual EEG: Electroencefalógrafo MEG: Muscular electroencefalógrafo OV: OpenVibe LDA: Análisis discriminante lineal SVM: Máquina de soporte de vectores MA: Máquina de aprendizaje xiii

14 RESUMEN Este proyecto surge como parte del proyecto de laboratorio de Investigación en Ingeniería Biomédica de la Universidad de Costa Rica, que pretende desarrollar una interface cerebro computador de bajo costo, el proyecto describe el funcionamiento de los clasificadores de ondas electroencefalográficas, utilizados en este caso en la plataforma de software libre OpenVibe, esta plataforma implementa los algoritmos de Análisis lineal discriminante y máquinas de soporte de vectores, ambos son explicados y en su caso particular el LDA fue probado utilizando un dispositivo EEG de dos canales. Debido a los malos resultados obtenidos con el dispositivo de dos canales, se desarrolló la implementación de otro algoritmo más sencillo sin dependencia de la linealidad, este fue el algoritmo de vecinos más próximos por medio del cual la clasificación es dependiente únicamente de los puntos que se encuentren más cercanos. Aún con el nuevo algoritmo se presentaron grandes errores que demostraron que el dispositivo de dos canales no es suficiente para realizar una diferenciación en un escenario de imaginación motora de izquierda a derecha. Por último se logró adaptar el dispositivo de seis, canales, en el cual se evaluó solamente con una prueba el nuevo algoritmo, dando una mejora sustancial con lo que se había probado ya. xiv

15 1. CAPÍTULO 1: Introducción El presente proyecto forma parte del proyecto del laboratorio de ingeniería biomédica de desarrollar una interfaz cerebro computador de bajo costo, utilizando un dispositivo EEG y la plataforma de código libre OpenVibe. En específico este proyecto trata de describir el funcionamiento de los módulos encargados de la clasificación de señales EEG, y entender los algoritmos utilizados para tal fin, para lograr adaptarlos de la mejor manera a las necesidades del proyecto y si es posible crear una mejora. El proyecto se aborda con una investigación bibliográfica acerca de los métodos de clasificación ya implementados en la plataforma OpenVibe, luego se identifica como han sido implementados en la plataforma, seguido de pequeñas pruebas usando el dispositivo EEG para determinar cómo se comportan estos métodos ante el escenario de imaginación motora, también perteneciente a la plataforma de OpenVibe. Posteriormente se determina si es posible agregar mejoras a la forma de clasificación ya implementadas. 1

16 1.1 Objetivos Objetivo general Describir el funcionamiento de un módulo clasificador de ondas electroencefalográficas funcional desde la plataforma OpenVibe Objetivos específicos Determinar las diferentes etapas del procesamiento de las señales, dentro del módulo clasificador. Entender el funcionamiento de cada una de las etapas del procesamiento de las señales y los recursos que utiliza. Comprobar el funcionamiento y el nivel de certeza del módulo clasificador de señales electroencefalográficas. 2

17 1.2 Metodología Para la realización del proyecto primeramente se realizó una revisión de la plataforma OpenVibe para determinar los alcances de la misma; así como los métodos de clasificación ya implementados. Ya con los métodos identificados se procedió con una investigación bibliográfica sobre la base de los métodos LDA y SVM y cómo funcionan. Además se realizó una investigación de los componentes utilizados para el escenario de imaginación motora, para entender su funcionamiento independiente y como parte de los escenarios de la plataforma, luego se procedió a analizar el funcionamiento de esta misma con el dispositivo EEG disponible, basado en dos canales. Por otra parte se realizó una investigación del código libre de la plataforma para crear un nuevo módulo clasificador basado en el algoritmo de vecinos más próximos. Por último se ejecutan pruebas de funcionamiento del nuevo módulo. 3

18 2 CAPÍTULO 2: Desarrollo teórico 2.1 Interface cerebro computador Las interfaces cerebro computador son sistemas de comunicación que habilitan al usuario a enviar comandos a la computadora como respuesta al significado de una específica actividad cerebral. Este tipo de plataformas se caracterizan por tener alta modularidad, herramientas para visualización y retroalimentación basados en realidad virtual VR y 3D displays. Están diseñados para utilizase en ambientes de programación visual y así facilitar su uso a personas que no sean estrictamente programadores. Además de ofrecer herramientas para varios tipos de usuarios. 9 El diseño de BCI requiere conocimiento experto en diferentes áreas como neurofisiología, procesamiento de señales, procesamiento de gráficos, programación, entre otras, lo cual lo convierte en un campo multidisciplinario. 9 OpenVibe es una plataforma de código abierto para el diseño, prueba y uso de BCI, consiste en una serie de módulos que pueden ser fácil y eficientemente integrados para aplicaciones en tiempo real y aplicaciones de VR. Algunas de sus características son: 4

19 o Modularidad y reusabilidad: la plataforma se compone de un conjunto de módulos dedicados a tareas de adquisición, pre-procesamiento, procesamiento y visualización de datos provenientes del EEG, como aplicaciones VR. Lo cual facilita la integración de nuevos módulos, y su reutilización a través del pipeline. o Puede ser usado por diferentes tipos de usuarios, dado que pueden adaptarse diferentes herramientas dependiendo del manejo de los datos que se requiera. o Portabilidad: La plataforma funciona de manera independiente al tipo de software final o a los dispositivos de hardware para la adquisición de datos EEG o MEG, además puede correr en Windows o Linux. o Puede conectarse a aplicaciones de VR. 9 Para la creación de un BCI en OpenVibe son necesarios varias etapas y entre cada una deben tomarse en cuentas algunos pasos. Es decir un BCI en OpenVibe se compone de las siguientes tres etapas como se aprecia en la figura 1. 5

20 Figura 1: Etapas de una interfaz cerebro computador Se tiene una etapa de adquisición de datos para el entrenador, por medio de la recolección de señales en un escenario, para el entrenamiento del algoritmo, donde se realiza la calibración de una serie de parámetros necesarios para establecer las condiciones de las clases entre las cuales se va a decidir; y uso del BCI, el cual es un lazo de operación que se puede dividir en seis partes a saber. o Captura de actividad cerebral: se realiza la toma de medidas comúnmente de ondas electroencefalográficas como método no invasivo y de alta resolución. 6

21 o Preprocesamiento: La idea básica de este paso es quitar el ruido de las señales recibidas, además de amplificarlas, filtrarlas o realizar combinaciones de ellas. o Extracción de vectores: Los cuales consisten en valores que describen características e información importante de las señales, como la potencia de estas. o Clasificación: esta etapa utiliza un algoritmo encargado de asignar la clase al vector característico, dependiendo de los parámetros de calibración obtenidos en la fase de entrenamiento. o Interpretación en comandos: Asocia la clase designada por el clasificador a un comando para ejecutar. o Retroalimentación: usado como base para determinar si el desempeño de la actividad cerebral es correcto. Aunque en muchas aplicaciones el uso de retroalimentación luego de la clasificación, no se utiliza El concepto de programación en OpenVibe 7

22 Se utiliza una arquitectura basada en un núcleo que garantiza servicios globales a las aplicaciones y los plug-in o dispositivos, para que sea extensible, en el caso de un nuevo plug-in este puede ser agregado dinámicamente y usado por el núcleo en aplicaciones, sin necesidad de recompilar la aplicación o el núcleo. Además la separación en componentes elementales le agrega flexibilidad. 9 Para cada aplicación, se basa en un núcleo común, el cual delega tareas a los plugin, por medio del concepto de caja. Figura 2: Esquema del funcionamiento de la interfaz cerebro computador de OpenVibe 8

23 Este concepto es de vital importancia en la plataforma, maneja la comunicación de las entradas y salidas con otras cajas, sirve como interfaz en el pipeline, además su comportamiento puede ser adaptado a las necesidades de la aplicación. Los plug-in se encuentran divididos en tres familias: o Los manejadores plug-in: usados para agregar nuevos dispositivos de adquisición, Básicamente se encarga de obtener las señales del dispositivo y darlas a la plataforma en una forma general. o Los plug-in de algoritmos: son módulos que contienen la implementación de algoritmos que pueden resolver tareas más complejas, estos pueden ser agregados y extraídos fácilmente de las cajas que los utilizan, así como puede haber gran número de ellos para cada caja. o Los plug-in de cajas: son módulos que sirven como interfaz entre otras cajas y el pipeline o tubería general y el algoritmo escogido para realizar la tarea específica, re-direccionan y codifican las entradas y salidas hacia los algoritmos. 9 9

24 2.3 Pre-procesamiento Esta etapa es necesaria antes de la clasificación para limpiar de ruido las señales con información relevante. Es conocido que las señales obtenidas desde un EEG, contienen mucho ruido, proveniente de la actividad eléctrica de los ojos EOG, y de los músculos EMG (de la cara y la mandíbula). El objetivo del preprocesamiento es incrementar el valor de la señal a ruido. Algunos de los métodos de preprocesamiento usados en BCI son los siguientes Filtros espaciales y temporales Filtros temporales: Se utilizan filtros pasa bajos y pasa bandas para restringir las bandas de frecuencia en las cuales conocemos que hay actividad neurofisiológica, por ejemplo es usada la banda de 8-30 Hz que contiene ritmos sesorimotor (µ & β). Para implementar este tipo de filtros usualmente se utiliza la transformada discreta de Fourier (transformada rápida de Fourier), o la respuesta al impulso finito o infinito. 8 10

25 Filtros espaciales Son utilizados para escoger la información relevante que se encuentra en las señales. Lo cual en este caso se realiza seleccionando o asignando un peso a la contribución de los diferentes canales los cuales provienen de cada electrodo. Por ejemplo en el caso de un filtro conocido como Surface Laplacian, este se puede ver como un módulo que realiza una combinación lineal de las entradas, para obtener las salidas que se requieran donde la designación de los coeficientes de la combinación es tarea del usuario. Es útil para dar más importancia a algunos canales que a otros, e incluso ignorar canales si es necesario Análisis de componentes independientes ICA Este análisis asume que las señales medidas por los electrodos son una mezcla de las señales requeridas y otras señales, el algoritmo define una matriz de medidas, en tiempo y canales y otra de filtración, sin embargo la matriz de filtrado se desconoce, pero se trata de averiguar la matriz inversa. 11

26 2.3.3 Patrones espaciales comunes PSC Se basa en la descomposición de las señales EEG en patrones espaciales, los cuales se seleccionan para maximizar las diferencias entre clases. Para determinar estos patrones se usa la diagonalización de la matriz de covarianzas de señales de cada clase. Otras formas menos usadas de preprocesamiento son la solución inversa (véase 8 ) entre otros Extracción de datos Consiste en la extracción de la menor cantidad de datos que tengan la mayor cantidad de información relevante para la clasificación. Estos datos llamados features en inglés pueden ser por ejemplo la potencia de las señales en diferentes frecuencias, estos datos son agrupados en vectores. Esto quiere decir que la extracción de datos consiste en la transformación de señales en un rango de frecuencias a vectores con valores de potencia de la señal muestreada. El objetivo de la extracción de señales, es obtener buenos datos, con los cuales se pueda hacer de manera más fácil la clasificación, y así maximizar el proceso. Hay tres tipos principales de proceso para extraer las principales características de la señal. Existen los 12

27 métodos que explotan la información temporal, información en términos de frecuencia, y los híbridos que combinan ambas tendencias Métodos temporales Dentro de las técnicas temporales está el de amplitud de la señal, la cual llena los vectores de características con amplitudes de señales tomadas en tiempos especificados, estos se pasan como entradas al clasificador. Es el método más simple. Luego se tiene el método con parámetros de autoregresión, el cual asume que la señal medida en el tiempo, puede ser modelada por una suma de pesos de valores de la señal tomada previamente. El método utilizando los parámetros de Hjorth, describe la dinámica temporal de la señal basado en tres medidas: la actividad, movilidad y complejidad Métodos de frecuencia Este método se basa en la obtención de la amplitud de señales en diferentes rangos de frecuencia para formar el vector de características, asumiendo que señales a diferentes frecuencias pueden ser obtenidas como producto de un evento. 13

28 Existen dos métodos principales, uno de ellos es a través de bandas de potencia para esto se toma la señal en una banda de frecuencia, luego se eleva al cuadrado la señal filtrada y se toma un promedio de la señal en la ventana de tiempo tomada. También es posible hacer una transformación logarítmica de este valor para tener datos con una distribución que se aproxime a la distribución normal. El otro método power spectral density (PSD) o densidad del espectro de potencia, por este método se obtiene la distribución de potencia de una señal a diferentes frecuencias; puede ser implementado elevando al cuadrado la transformada de Fourier a través de la señal Métodos de que consideran tiempo y frecuencia Estos métodos son los más usados; la principal ventaja de estos métodos es que pueden captar relativamente rápido variaciones en la señal mientras todavía están extrayendo información de frecuencia, de forma contraria a los métodos que solo consideran frecuencia, los cuales asumen que la señal está siempre en un estado estacionario. Algunos ejemplos son: Short time Fourier transform, Wave lets. 8 14

29 2.3.5 El vector de datos El vector de datos consiste en una colección de valores que se obtienen usando alguno de los métodos anteriores y que caracterizan las señales que se obtienen del EEG, el tamaño de estos vectores debe estar asociado a la cantidad de tiempo que se muestrea la señal como también a las ventanas de tiempo que definen para el preprocesamiento de cada dato del vector, en general se recomienda que la cantidad de muestras de entrenamiento sea mayor que el tamaño de vector Clasificación Este es el tercer paso en una plataforma BCI y trata de convertir vectores de datos o vectores de características en comandos. Usualmente para esto se utilizan algoritmos de regresión o algoritmos de clasificación. Los algoritmos de clasificación pueden ser divididos en 5 categorías principales: clasificadores lineales, redes neuronales, clasificadores bayesianos no lineales, clasificadores del vecino más próximo y combinaciones de los anteriores Clasificadores lineales 15

30 Son clasificadores de algoritmos discriminantes que usan funciones lineales para encontrar las diferencias entre clases, estos son los algoritmos más usados para aplicaciones BCI y se pueden subdividir en dos clases principales, la primera en análisis lineal discriminante LDA y las máquinas de vectores de soporte SVM Análisis lineal discriminante También conocido como análisis discriminante de Fisher, usa hiperplanos para separar los datos que representan cada clase, por ejemplo para un problema de dos clases, la clase de un vector de datos depende del lado del hiperplano en que esté el vector. Este análisis asume una distribución normal de datos Máquinas de vectores de soporte SVM Este método también usa hiperplanos para identificar las clases, la diferencia con el método LDA radica en que los hiperplanos seleccionados son aquellos que maximizan la distancia entre los puntos de entrenamiento más cercanos entre clases, los cuales son llamados vectores de soporte, además existen diferentes formas para transformar los puntos usando una función kernel para lograr que en la nueva transformación la separación entre las clases sea más lineal. 8 16

31 Redes neuronales Son junto con los clasificadores lineales los más usados en investigación de BCI. Las redes neuronales son un ensamblaje de gran cantidad de neuronas artificiales las cuales producen fronteras de decisión no lineales, una de las redes neuronales más usadas para BCI es el MultiLayer Perceptron; este se compone de varias capas de neuronas, una de entrada, otra de salida y las demás están ocultas, todas las entradas de una neurona se conectan a la salida de neuronas de la capa anterior. Las ventajas de las redes neuronales son que con la cantidad suficiente pueden aproximar a cualquier función continua además pueden clasificas cualquier cantidad de clases, la cual las hace muy flexibles como clasificadores y muy adaptables a gran variedad de problemas Clasificadores no lineales Clasificadores Bayesianos no lineales Este tipo de clasificador produce fronteras de decisión no lineales, además son generativos lo cual quiere decir que pueden discriminar vectores de datos con alta 17

32 probabilidad de ser vectores erróneos; existen dos tipos principales de estos clasificadores: el clasificador cuadrático de Bayes y el Hidden Markov model Clasificador de puntos más cercanos o vecinos más próximos Estos son los clasificadores más simples, consisten en asignar un vector de datos a una clase de acuerdo a cuales puntos vecinos estén más cerca del vector de datos; el punto vecino puede ser un vector de datos proveniente de la etapa de entrenamiento, en caso de un k Nearest neighbors, o una clase prototipo en caso del algoritmos Majalanobis distance Combinación de clasificadores Otra forma de clasificar un vector de datos es usando diferentes clasificadores al mismo tiempo, una de las estrategias para el uso de clasificadores simultáneos es la votación, en el cual varios clasificadores son usados al mismo tiempo y la decisión final depende de la clase que se ajusto mejor de las clases resultantes en cada clasificador; otras estrategias son utilizar clasificadores en cascada, entre otros. 18

33 2.4 Máquinas de aprendizaje Aprendizaje e inferencia, estos conceptos estudian el proceso de la inferencia inductiva que se puede resumir en los siguientes pasos: observación del fenómeno construcción del modelo realizar predicciones utilizando el modelo El objetivo de una máquina de aprendizaje es de hecho automatizar el proceso ya mencionado y el objetivo de la teoría de aprendizaje es formalizarlo. Al hablar de teoría de aprendizaje estadística se debe principalmente asumir que las observaciones futuras están relacionadas con las pasadas. 1 Existen tres posibles clases de algoritmos para minimizar el riesgo: Minimización empírica del riesgo Minimización estructural del riesgo Regularización El problema de la inferencia estadística consiste en que dada una colección de datos empíricos dependientes de alguna función, inferir esa dependencia. Se determinan dos diferentes enfoques para la estadística inferencial. 19

34 La inferencia particular, cuyo objetivo es crear un método estadístico simple de inferencia, que pueda ser usado para resolver problemas de la vida real. La inferencia general, cuyo objetivo es encontrar un método para cualquier problema de inferencia estadística. 1 La filosofía de la inferencia estadística descansa en la falta de confianza en que la información a priori sobre la ley estadística se ajuste al problema o a la función a la cual nos gustaría se aproximase. Es necesario inferir un método que se aproxime a dicha función desde un dado número de ejemplos de la situación. 10 En 1958, F. Rosenblatt, un fisiólogo, propuso una máquina de aprendizaje como programa computacional llamada el Perceptron, para resolver un simple problema de aprendizaje, la clasificación que puede verse como reconocimiento de patrones. Para el cual se utilizó el principio general de inducción conocido como minimización del riesgo empírico. Para eliminar el riesgo empírico a la hora de escoger un modelo para la clasificación se tienen varias estrategias como las siguientes: Minimización del riesgo empírico (ERM: Empirical risk minimization): la idea consiste en tomar un modelo de posibles funciones y minimizar el riesgo empírico en ese modelo. 20

35 Minimización del riesgo estructural (SRM: Structural risk minimization): consiste en escoger una secuencia infinita de modelos, que van incrementando su tamaño, agregando una penalización por el tamaño del modelo, la penalización hace que el modelo de menor tamaño tenga más preferencia. Es importante tomar en cuenta el siguiente principio: si se posee un cantidad restringida de información para resolver un problema, se debe tratar de resolver el problema de forma directa y no resolver un problema más general como paso intermedio. Es posible que la información disponible sea suficiente para una solución directa, pero insuficiente para una solución general intermedia. 4 El problema de aprendizaje, se puede ver desde dos enfoques: el primero se basa en la idea de que la calidad de la función escogida puede ser evaluada por un riesgo funcional. En cuyo caso la escogencia de esta función es un problema de minimización del riesgo funcional dependiendo de los datos empíricos. El segundo enfoque está basado en estimar las dependencias estocásticas deseadas (densidades, densidades condicionales, probabilidades, probabilidades condicionales). Lo cual requiere soluciones que implican integrar ecuaciones que en algunos casos sus elementos se conocen solo aproximadamente

36 2.4.1 Modelo General de una máquina de aprendizaje: La figurafigura 3: Partes de una Máquina de Aprendizaje, frente a un estímulo x, y una salida y 3 muestra un esquema de los componentes de una máquina de aprendizaje, donde G es la fuente o generador de entradas para el supervisor S y la máquina de aprendizaje MA, donde la fuente genera vectores de acuerdo a una distribución de probabilidad desconocida. Figura 3: Partes de una Máquina de Aprendizaje, frente a un estímulo x, y una salida y. 22

37 El supervisor convierte las entradas x en valores y de la forma en la que se requiere que la MA copie. Esto es a través de los vectores de entrenamiento, con los cuales la MA creara un modelo para escoger la salida y dependiendo de la entrada x. La máquina de aprendizaje debe seguir uno de dos objetivos a la hora de construir el modelo, los cuales son: Imitación: trata de obtener la mejor predicción para la salida del supervisor ante una entrada del generador. Identificación: trata de construir un modelo que esté lo más cerca posible al modelo del supervisor en alguna métrica, no es suficiente con tener buenas predicciones. 10 Para el caso de este trabajo la fuente corresponde al individuo, más específicamente a las señales provenientes de los electrodos en su cabeza. El supervisor es la secuencia aleatoria en la cual se obliga al individuo a pensar de cierta forma, en la fase de entrenamiento. Por último la máquina de aprendizaje es el algoritmo basado en los vectores de entrenamiento que desarrolla una métrica para predecir la clasificación vectores de entrada en la fase online Máquinas de soporte de vectores 23

38 Las máquinas de soporte de vectores, corresponden a un conjunto de algoritmos, diseñados como algoritmos de aprendizaje. Los cuales a pesar de tener un fundamento teórico desde con las publicaciones de Vapnik y Chervonenkis y sus colaboradores, no fueron valoradas en ese entonces. No fue hasta 1992 en adelante cuando el trabajo sobre SVM fue redescubierto, al aplicarlo en la práctica y obtener grandes resultados como algoritmo de aprendizaje. En áreas como reconocimiento de dígitos, visión por computadora y categorización de texto. Las máquinas de soporte de vectores están en gran medida relacionadas con redes neuronales, sin embargo su diferencia recae en la forma de minimizar el posible error a cometer. Esto es, para las redes neuronales el objetivo es escoger la estructura adecuada para el modelo lo cual puede entenderse como el número de neuronas o el número de reglas; esta estructura es por medio de la cual se puede regular y minimizar la estimación del error, minimizando el error empírico. 11 Para las máquinas de soporte de vectores, es necesario mantener el error debido al entrenamiento, su aproximación o error empírico; igual a cero o a un valor aceptable y minimizar el intervalo de confianza. Las máquinas de soporte de vectores tratan de construir un modelo basado en un hiperplano para la clasificación de vectores, este hiperplano es único y trata de maximizar 24

39 el margen entre los vectores de ambas clases, el hiperplano se escoge tomando en cuenta solo los vectores frontera entre las clases, suponiendo que el problema es separable linealmente por el hiperplano, en caso de no ser linealmente separable es posible transformar los vectores de entrenamiento por medio de funciones aplicadas sobre los vectores, obteniendo una dimensión mayor de análisis donde se pueda asegurar la linealidad requerida para formar el hiperplano de decisión, otra solución a este inconveniente es crear márgenes que no se consideren dentro de ninguna clase con lo cual se define una franja del espacio donde ambas clases convergen sin poder distinguir linealmente una separación Algoritmo de las máquinas de vectores de soporte Se basan en el fundamento de que los vectores de las clases pueden ser separadas linealmente, y que solamente se deben tomar en cuenta los vectores de las fronteras de las clases para establecer el hiperplano que separe ambas clases. Es decir el cambio en un vector que no sea de soporte no alterara la toma de decisión en la clasificación. Para explicar el algoritmo se puede tomar como objeto de explicación el caso binario, es decir donde los vectores son de dos dimensiones y la decisión recae sobre dos posibles clases. 25

40 Así de la etapa de entrenamiento tenemos los datos dados como: n ( x1, y1),( x2, y2),...,( xz, yz ), x, y {1, 1} ( ) En este caso n es 2, y y representa la clase como 1 ó -1, teniendo esto la frontera de decisión forma un plano de la forma: w x w x b 0 ( ) A este punto se tiene el caso de la siguiente figura 4, donde dos clases de vectores en el espacio bidimensional que son linealmente separables, poseen gran cantidad de planos de separación posibles. Figura 4: Distribución de puntos en dos dimensiones, pertenecientes a dos clases, y varias de sus posibles líneas de división. 26

41 El problema, se convierte ahora en cómo encontrar el mejor plano de separación, según Vapnik & Chervonenkis para el caso lineal el mejor plano de separación es aquel que posea el mayor margen, para minimizar el error. El margen se refiere a la distancia entre el plano de separación y los planos frontera de las clases formados por los vectores de soporte. Para esto se puede definir la función de decisión siguiente, donde w=[w 1,w 2..w n ] y b son parámetros obtenidos de la etapa de entrenamiento. d( x, w, b) T n w x b w i i xi b x, 1 w n ( ) El vector w es comúnmente llamado el vector de pesos, además con esta función en el punto donde es cero se obtiene el plano de separación, por lo que el indicador de clase se puede denotar como: i F sign( d( x p, w, b)) ( ) Donde: Si d( x p, w, b) 0 Xp pertenece a la clase 1 Si d( x p, w, b) 0 Xp pertenece a la clase 2 Para el hiperplano de separación, se puede limitar a planos canónicos donde el módulo debe ser igual a uno, esto es: 27

42 w T x b 1 ( ) Ahora se debe maximizar la distancia entre los planos frontera y de separación, para lo cual es necesario calcular la distancia M entre ellos como lo sugiere la figura 5. Figura 5: Hiperplano óptimo para la separación de clases en un SVM Donde dado que los planos son canónicos la distancia M termina siendo: M T w x b 1 ( ) w w 28

43 Así el problema de maximizar la distancia 2M recae en minimizar la norma de w, es decir minimizar 1 w T w 2 lo cual es un problema de minimización cuadrática con limitante de inecuación, donde el ½ es un factor numérico de conveniencia únicamente. El hiperplano canónico óptimo para los vectores de soporte debe estar entre los planos generados por los vectores de soporte, los cuales forman la frontera para maximizar la distancia M, donde se cumple: T yi [ w x b] 1 ( ) Por tanto la curva limitante está dada para ambos casos por: T yi [ w x b] 1 ( ) Este problema de minimización se resuelve utilizando multiplicadores de Lagrange como sigue: Con: 29 1 T l T L( w, b, ) w w [ ] i yi w x b ( ) i Donde el resultado obtenido son los parámetros del hiperplano de separación, donde el caso general, con alfa los multiplicadores, y Nsv el número de vectores de soporte. l T D( x) i yi xi x b i ( ) 1

44 Nsv l 1 T b ( ys xs i yi xi ) ( ) Nsv s 1 i 1 Para: l i 1 0 ( ) i y i Dando solución al problema de maximización para obtener el hiperplano de separación optima sobre el cual se evalúan los vectores para decidir su clasificación El sistema nervioso humano. El sistema nervioso es el centro de comandos del cuerpo humano, es uno de los sistemas de comunicación más intrincados del universo físico. La unidad básica del sistema nervioso es la neurona, billones de células neuronales forman una red de conexiones a través del cuerpo. Como unidad de comunicación tenemos la neurona, cuyo medio de comunicación con otras neuronas es a través de una transmisión neuronal el cual es un proceso que se puede denotar como un evento electroquímico. Estos eventos pueden ser detectados y medidos desde el cerebro y desde varios músculos del cuerpo. Las medidas que se pueden obtener contemplan los rangos de microvolts para mediciones de voltaje, además de las mediciones de frecuencia. 30

45 La electroencefalografía es una representación gráfica de actividad neuronal en el cerebelo (EEG), mientras que la electromiografía (EMG) es una representación gráfica de actividad neuronal en músculos. Un impulso nervioso, también llamado potencial de acción, es una carga eléctrica que viaja desde una célula del cuerpo hacia los botones terminales del final del axón. El impulso viaja simulando una ola, donde cada membrana tiene la función de estimular la membrana siguiente. El proceso completo es una reacción en cadena llamada despolarización, ya en este punto se da la liberación de neurotransmisores en la sinapsis. Donde las dendritas de la neurona adyacente recogen el mensaje y tratan de mantener la reacción de neurona a neurona hasta que la razón del impulso inicial se cumpla. Una vez que una célula completa la acción de potencial, comienza a re-polarizarse para rejuvenecerse a sí misma, este tiempo se llama el periodo refractario, en el cual no puede haber comunicación. El tálamo y otras localidades corticales crean actividad EEG, señales moviéndose desde y hacia la corteza cerebral y luego de vuelta al tálamo una y otra vez. Es así que un sensor puesto en el cráneo puede recolectar una porción de esta actividad a nivel cortical 2. Esta información es la enviada a través de un EEG. Sin embargo se debe tomar en cuenta que estas mediciones no son mediciones directas de acciones de potencia, si no un conjunto 31

46 de actividad generada por millones de neuronas a la vez. Los sensores son puestos por lo general en regiones nombradas mediante el sistema internacional que se muestra en la figura 6. Figura 6: Localización de regiones para la colocación de electrodos del sistema internacional

47 3. CAPÍTULO 3: Descripción de la implementación de los algoritmos de clasificación y el escenario de imaginación motora. La descripción del algoritmo de clasificación de análisis lineal discriminatorio, se basa en el algoritmo implementado en la plataforma de BCI OpenVibe, y para el caso particular del escenario construido de imaginación motora o motor imagery, el cual se encuentra disponible en la 11 versión estable de esta plataforma. Antes de la explicación de la implementación del algoritmo es necesario, resumir el funcionamiento tanto de la plataforma como del escenario en específico. 3.1 Escenario de Imaginación motora. Un escenario dentro de esta plataforma se puede ver como un conjunto de etapas las cuales se programan para la obtención de señales provenientes del EEG, tal que sea capaz de entender estas señales y producir comandos para una aplicación de realidad virtual, un juego o algo tan simple como el manejo de flechas que representen direcciones ya sea izquierda o derecha. Este es el caso del escenario de Imaginación motora. 33

48 Dentro de la plataforma OpenVibe, y debido a su modularidad es necesario dividir las tareas de este en al menos tres etapas indispensables: La etapa de adquisición de datos, la etapa de entrenamiento y la etapa de funcionamiento en ingles llamada online. La etapa de adquisición de datos comprende un esquema donde se tienen el módulo encargado de obtener los datos del dispositivo EEG conectado a la computadora el cual censa las señales desde un par de electrodos diferenciales, los cuales los conoceremos de ahora en adelante como canales, estos canales se ubican en regiones de la cabeza que ubicaremos según el mapa mostrado en la figura 6. Cabe destacar que la plataforma OpenVibe posee un ambiente de programación gráfico basado en módulos que se interconectan por medio de sus salidas y entradas definidas, así la programación de estos escenarios consiste en la ubicación de módulos disponibles los cuales se pueden interconectar a través de líneas dependiendo del tipo de entrada o salida. Los tipos de paquetes que pueden intercambiarse entre módulos, se describirán más adelante. Retomando la etapa de clasificación, es necesario un módulo que se encargue de la visualización de aquello sobre lo cual se está entrenando, para el caso de Imaginación motora se tiene un visualizador de flechas que se muestran aleatoriamente hacia la izquierda y derecha, este módulo se basa en el lenguaje de programación LUA, la idea es 34

49 definir un número igual de cantidad de apariciones de la flecha izquierda y derecha, en rangos de tiempo programables, en los cuales se tomaran las señales sin ningún procesamiento para guardarse de forma binaria en un archivo.ov, la cual es una labor independiente de otro módulo. Figura 7: Esquema de la etapa de obtención de datos para el escenario de imaginación motora. Es importante que en el momento de guardar las señales se guarde con ellas el tipo o clase que representan, esto es la dirección de la flecha, la cual se define como una clase. Esta etapa de adquisición comprende la etapa de toma de datos para la fase de entrenamiento, y su duración depende de la cantidad de repeticiones que se hagan. Un esquema de esta etapa se presenta en la figura 7. 35

50 La etapa siguiente corresponde a la fase de entrenamiento, en la cual se toma el archivo previamente creado en la etapa anterior, del cual se extraen las señales puras, aquí deben realizarse dos pasos importantes, el primero es el preprocesamiento de las señales, para producir los vectores de datos o de características, con los cuales pueda darse el entrenamiento del clasificador, y la segunda parte es realizar este entrenamiento a través de los módulos llamados Classifier Trainer, los cuales funcionan como cajas o interfaces generales de entrenamiento para todos los algoritmos de clasificación implementados en la plataforma. Un esquema de la configuración de módulos para escenario se muestra en la figura 8. 36

51 Figura 8: Esquema general, de las etapas de entrenamiento y etapa de funcionamiento "online" del escenario de imaginación motora 37

52 Para el pre-procesamiento, el escenario utiliza una combinación de procesamiento temporal y en frecuencia, pero antes de eso se realiza una selección de los canales a usar por medio del módulo Channel Selector, este etiqueta con el nombre de un canal las señales provenientes de ese. Por ejemplo para el caso abordado en el laboratorio, al momento se dispuso de dos canales para la extracción de señales, por lo cual estos canales se escogieron como C3 y C4 debido a que se ubican en la región motriz del cerebro, y presentan un incremento en la amplitud de las señales cuando se trata de pensar en el lado respectivo. Como se puede apreciar en el gráfico siguiente figura 9. Figura 9: Ejemplo del visualizador de flechas disponible para la etapa de entrenamiento del escenario de imaginación motora de OV. 38

53 Para el caso del escenario disponible en la plataforma, se utiliza diez canales para Imaginación motora, usando un canal Nz ubicado en la parte central de la cabeza como referencia de los demás canales, para el caso en el laboratorio no se utilizó canal de referencia pues este funciona como uno de los electrodos del par que conforman el canal. Luego de la selección de canales las señales se filtran en frecuencia en un rango entre 8 y 24 Hz. Para luego pasar por el filtro espacial llamado Surface Laplacian, el cual funciona como una combinación lineal de los canales de entrada para producir nuevos canales de salida, los cuales deben ser dos para este caso, debido a que solamente es necesario procesar las señales en un canal para la clase izquierda y otro para la clase derecha. Tomando en cuenta el hecho de la dirección que tomaran estos canales es que se asignan los coeficientes para la combinación lineal. Por ejemplo para el caso del canal para el análisis izquierdo no se toma en cuenta el canal C4 perteneciente primordialmente al canal derecho, lo mismo aplica para C3 en caso contrario. Luego de esto es necesario replicar los canales de salida para realizar un procesamiento por separado para cada clase. Aunque de forma simultánea se realiza el muestreo de la señal en ventanas de tiempo. Para esto se usan dos módulos en conjunto donde para señales que pertenecen a una clase específica toma la cantidad de muestras necesarias en una ventana de tiempo definida y con una frecuencia dada. Para este 39

54 escenario se usa la definida ya en el escenario, que es tomar datos en una ventana de un segundo cada dieciseisavo de segundo, y con el segundo módulo se limita el tiempo de muestreo de datos a cuatro segundos en este caso. Es decir si tomamos que cada segundo se comienzan 16 tomas de datos tenemos 48 tomas de datos en tres segundos más 1 toma permitida en el cuarto segundo dado que solamente esta podría terminar en el tiempo límite. Así tenemos un total de 49 tomas de datos, lo cual define el tamaño del vector de datos o características. Luego de esto se utilizan módulos que funcionan como ejecutores de funciones los cuales se llaman en OpenVibe como Simple DSP, con este tipo de módulo se logra tomar cada una de las tomas de datos que se almacenan en buffers, y elevarlas al cuadrado con el fin de eliminar señales negativas, luego se obtiene el promedio de cada toma de datos, con lo cual se transforma una toma de datos en una ventana de tiempo en un solo valor numérico. Estos 49 valores que representan un vector, son luego transformados en logaritmos en base diez del valor más uno, con el fin de tratar de aproximar mas el vector a una distribución normal, ahora bien llega el punto donde el módulo de extracción toma los 49 valores para formar un vector, ha este paso del proceso este módulo se encarga de transformar el tipo de salida del vector. 40

55 Por último en esta etapa de entrenamiento, el módulo clasificador, utiliza los vectores de prueba para entrenar el algoritmo que se haya escogido, y producir un archivo de configuración, que contenga la forma de interpretar las fronteras de decisión del algoritmo utilizado. Al final el entrenador manda una señal de terminación cuando el proceso culmina, la cual otro módulo la interpreta y detiene la simulación. Un detalle importante de recalcar es el hecho de que esta etapa puede llevarse a cabo sin el uso del dispositivo EEG, debido a que la etapa de adquisición habilita los datos previamente tomados. La última etapa es la llamada online cuyo diagrama se muestra en la figura 7, ésta etapa utiliza el módulo adquiridor de señales, las cuales se envían a un preprocesamiento idéntico al de la etapa de entrenamiento. Teniendo los vectores de datos, estos se envían al clasificador, el cual devuelve una señal indicando la clase que mejor se ajusta, la cual se convierte en un comando que el visualizador de Graz entiende como una flecha a mostrar en una dirección especifica a la clase. 3.2 Módulos del clasificador en OpenVibe 41

56 Como se mencionó anteriormente OpenVibe utiliza un esquema de programación basado en lo que llaman en ingles box-algortihms, las cuales funcionan como interfaces generales que le dan servicio a todos los algoritmos definidos para un mismo módulo. Es importante rescatar que para cada caja se definen dos clases una que funciona como descriptor de la otra, esta contiene información general como versión autor, fecha entre otros. La otra contiene el código de la interfaz, siguiendo los principios de OpenVibe siempre con un método de inicialización y otro de des-inicialización. De estas cajas las más importantes corresponden al procesador y al entrenador los cuales se desglosan a continuación Módulo Procesador Este módulo se usa en conjunto con el entrenador para, para que funcione como una interfaz entre este y el resto de los módulos del pipeline, la clase que se crea CboxAlgorithmClassifierProcessor, se hereda a partir de OpenViBEToolkit::TBoxAlgorithm, la cual declara gran cantidad de métodos virtuales, aprovechando el polimorfismo para definir en cada clase de cada caja solo los métodos que ese módulo necesita. 42

57 Tabla 1: Principales métodos del módulo procesador del módulo clasificador de OpenVibe. Método Descripción Initialize Inicializa variables generales Obtiene el Identificador del algoritmo que se escogió como un parámetro del módulo gráfico Crea los objetos (algoritmos) para decodificar y codificar la información de entrada salida los manda al algoritmo dado y los inicializa. Toma los parámetros de configuración, incluyendo si es el caso de que se tenga acceso al archivo de configuración (online) se lee y los datos se habilitan al algoritmo escogido, Uninitialize Des-inicializa los objetos creados en el anterior, y los libera del algoritmo, a través del algorithm manager. processinput Se usa como señal que para saber cuando el objeto algoritmo del tipo escogido está listo. 43

58 Process Establece los manejadores de parámetros, los cuales, se utilizan como buffers de memoria para establecer la comunicación de datos entre la caja y el algoritmo, como el estado de clasificación, los vectores de características e información de la muestra. Se realiza el proceso de decodificación de las entradas del pipepline, donde se pasa por tres etapas en las cuales se monitorea (triggers) si se recibe un encabezado, buffer o una finalización del mensaje. De estas etapas se extrae la información y se manda al algoritmo, además se produce el proceso contrario, que es la codificación de los mensajes de salida, los cuales también requieren las tres etapas y una señal de listo para enviar. 44

59 3.2.2 Módulo entrenador Este módulo en conjunto con el procesador funciona como una interfaz de comunicación entre el algoritmo y el resto del pipeline, toma los vectores del estímulo de entrada los cuales traen la etiqueta de la clase, los cuales envía al algoritmo para formar un archivo de configuraciones para la etapa online. Tabla 2: Principales métodos del módulo entrenador del módulo clasificador de OpenVibe. Método Descripción Initialize Inicializa variables generales Obtiene de los objetos creados por el processor, información acerca del algoritmo, como el Id y parámetros de configuración, como el número de particiones si se quiere realizar el entrenamiento por partes de datos. Se crean los objetos FeatureVector para manejar los vectores de características. 45

60 Uninitialize Des-inicializa los objetos creados en el anterior, y los libera del algoritmo. processinput Se usa como señal que para saber cuando el objeto algoritmo del tipo escogido está listo. Process Analiza los datos de entrada, toma los decodificadores y extrae información a partir del encabezado de los tipo stimulations, además analiza los vectores de características, los agrupa según clase, acomoda aleatoriamente el orden de los vectores de entrenamiento y los envía en grupos de datos dependiendo de la partición, hacia el método train. train (protected) Toma los vectores de características y realiza una copia a un espacio de memoria para llamar al proceso del algoritmo que se escogió, luego inicia el proceso de guardar el archivo de configuraciones. 46

61 getaccuracy (protected) Se utiliza para contar cuantos vectores de los vectores de entrenamiento quedan en la misma clase de la que provienen a la que se asigna con el algoritmo de separación, se da como un porcentaje y puede ser por partición Algoritmos Disponibles para las versiones 10 y 11 de OpenVibe Para esta plataforma se dispone de dos tipos diferentes de algoritmos para realizar el proceso de clasificación, uno basado en el análisis discriminante lineal de Fisher y el otro basado en las máquinas de vectores de soporte de Vapnik Análisis Lineal Discriminante principales. Nombrado como CalgorithmClassifierLDA posee los siguientes módulos 47

62 Tabla 3: Principales métodos del algoritmo LDA del módulo clasificador de OpenVibe Métodos Descripción Train Revisa el número de clases, y la cantidad de vectores así como el tamaño de los mismos. Utiliza la librería de C++ itpp para el manejo de vectores, los cuales divide por clase, y los suma para obtener un vector promedio de cada clase, luego para cada vector de entrenamiento obtiene la diferencia de este con el promedio, se eleva al cuadrado esta diferencia dividiéndola entre el número de vectores -2. Luego a este nuevo vector al cual podemos ver como una matriz se le saca la inversa y se multiplica por la resta de los vectores promedios de ambas clases Classify Revisa si los coeficientes del hiper-plano son del mismo tamaño que el vector de entrada, luego obtiene el vector de entrada y realiza la combinación lineal 48

63 con el hiper-plano, si resulta un número mayor a cero es de la clase uno y de lo contrario de la clase dos. safeconfiguration Guarda la información que va al archivo de configuración en un buffer de memoria. loadconfiguration Se utiliza para leer el archivo de configuración y colocar la información requerida en posiciones de memoria accesibles para los demás metidos. En este caso el clasificador Máquinas de vectores de soporte Para el algoritmo de máquinas de vectores de soporte, se tienen los siguientes principales módulos: Tabla 4: Principales métodos del algoritmo SVM del módulo clasificador de OpenVibe. Initialize Se inicializan variables generales, al igual que los manejadores de parámetros para obtener los parámetros que fueron escogidos 49

64 desde el módulo gráfico. Train Específico para cada función kernel de transformación. Lleva a cabo los cálculos para conseguir los parámetros del hiperplano de separación. Classify Revisa si el modelo que se carga del archivo de configuración de la parte de entrenamiento existe y es válido. Se crea un nodo SVM el cual es un arreglo de índice y valor del vector de características entrante. Se crea un arreglo de probabilidades estimadas para cada clase, objetos que se utilizan como parámetros de entrada para el método de la librería de SVM svm_predict_probability. Este método devuelve la clase predicha, y las probabilidades de acierto en el arreglo de probabilidades que se envía. Con base en esto clasifica el vector de entrada. saveconfiguration Luego del entrenamiento guarda los parámetros del hiperplano de separación como un archivo binario de configuración. 50

65 loadconfiguration En la etapa online, utiliza en archivo creado en la etapa de entrenamiento para cargar los parámetros del hiperplano de separación. paramtostring Usado para convertir parámetros en tipo string, los parámetros pueden ser más que un simple número. modeltostring problemtostring Convierte un modelo, o conjunto de parámetros en un string Convierte un problema, es decir un conjunto de parámetros por obtener en un string. 51

66 4. Capítulo 4: Implementación del algoritmo de puntos vecinos más cercanos. 4.1 Algoritmo de puntos vecinos más cercanos Como se mencionó en el marco teórico, este es uno de los algoritmos más sencillos de clasificación, que consiste únicamente en clasificar el punto entrante según sean los puntos de la clase a los cuales se encuentre más cerca. Tomando en cuenta este principio se pueden alterar dos factores en la clasificación, estos son el número de vectores vecinos a tomar en cuenta y como tomarlos en cuenta en el algoritmo. 52

67 Figura 10: Distribución de la línea divisoria, para un algoritmo de vecino más próximo, tomando en cuenta el punto más cercano solamente. Por ejemplo en la figura 10Figura 10 se muestra una distribución de os clases de vectores, que son la muestra para realizar una clasificación donde si se toma en cuenta solamente el vector más próximo, la línea divisoria iría como la línea verde. Nótese la gran ventaja de eliminar que el plano divisorio ya no debe ser lineal, puede tomar la forma que sea según la distribución que tengan las clases, y no se debe preocupar por la escogencia de función de transformación para llevar a cabo la clasificación, sin embargo presenta dos grandes deficiencias. La primera es que, debe asumir que todos los puntos fueron correctamente clasificados en la muestra, es decir la etapa de entrenamiento debe tener un 100% de acierto, lo cual no se consiguió. Esta dependencia se deriva del hecho que toma en cuenta el 53

68 punto más cercano y como el vector entrante es impredecible, puede estar cerca de cualquiera de los puntos de entrenamiento. En caso que este sea erróneo causara una clasificación errónea también. La segunda gran deficiencia se deriva del hecho de no ser lineal, puesto que al presentar esta característica, el plano de división puede darse como una trayectoria o superficie cerrada, por lo que la muestra debe ser absolutamente representativa de la distribución de la clase que de hecho se desconoce. Es aquí donde entran en juego los dos factores antes mencionados, el primero cuantos vectores tomar en cuenta para la clasificación. Tómese ahora el ejemplo de la figura 11. Figura 11: Ejemplo de un caso de clasificación por vecinos más próximos tomando en cuenta un grupo de vectores de cada clase. 54

69 En este caso no se toma en cuenta solamente uno de los vectores más próximos, sino un grupo de vectores los cuales son los más próximos de cada clase al nuevo vector a clasificar, la figura muestra como tomar en cuenta mas vectores podría amortiguar la cantidad de clasificaciones incorrectas. Por ejemplo en ese caso el vector representado por la bola verde se encuentra muy cerca del vector rojo, el cual fue un error producido en el entrenamiento, si se tomara en cuenta solo el vector más próximo este sería un caso de clasificación errónea, pero si se toma el conjunto más próximo se incluiría el hecho de que el conjunto azul está más cercano que el rojo, logrando una clasificación correcta. El otro factor es si se le da un peso especifico a cada vector del conjunto, con lo cual es posible dar mas influencia en la decisión a aquellos vectores que no son el más próximo si no los que siguen, los cuales por ser más de uno tendrían una probabilidad mayor de no ser los vectores erróneos del entrenamiento. 4.2 Implementación del algoritmo en la plataforma OpenVibe Generación de nuevas cajas y algoritmos usando Skeleton La plataforma OpenVibe, al ser de código abierto, permite la fácil y rápida adaptación del código de los módulos que se usan o incluso la creación de nuevos módulos. 55

70 Dado que la plataforma posee una estructura definida, es necesario que cada nuevo módulo cumpla con todos los estándares ya preexistentes, para facilitar esta labor al programador existe un script llamado skeleton-generator, el cual es utilizado para crear cajas y drivers para diferentes adquiridores de datos, sin embargo esta herramienta no es para crear los algoritmos de las cajas, aunque por supuesto el algoritmo puede ser creado como parte de la misma caja. (INRIA, 2010) Para la creación del algoritmo se intento crear como parte de la misma caja de entrenador y procesador, sin embargo se opto primero por hacerlo como una nueva caja debido a que este algoritmo no utiliza gran cantidad de características y existentes en estas cajas. Se realizó el módulo pero no sirvió satisfactoriamente debido a la falta de información de cuales señales y comunicación era necesaria aparte del mismo algoritmo y del manejo de las salidas y las entradas Comunicación entre cajas, codificación y decodificación. Cada caja representa un módulo disponible en la interfaz de programación modular, y cada algoritmo una forma diferente de realizar la función para la cual esta creada. Cada 56

71 caja funciona como una interfaz para pasar los datos de otra caja vecina hacia uno de los algoritmos escogidos. Los datos se pasan a través de estructuras de flujo, las cuales se definen en EBML (extensive binary meta languaje), estas estructuras contienen un encabezado, un buffer, y una terminación, los cuales son claves para comunicarse entre módulos y mandarse datos entre sí mismos. Es claro entonces que tanto el procesador como el entrenador necesitan realizar una codificación y una decodificación de de las datos recibidos de esta forma en datos que el lenguaje de C++ pueda interpretar. La parte donde se diversifica es debido a que estos paquetes pueden diferir, es decir se definieron en OV tres tipos principales de estructuras de flujo: de información experimental, de estimuladores y de matrices de flujo. (Véase Apéndice 1) (INRIA Rennes, 2011) Interpretación de las señales de entrada Para lograr un entendimiento de las señales que se manejan dentro de las cajas del entrenador y el procesador, se creó dentro del mismo módulo (caja) el algoritmo de vecinos más próximos de tal forma que corre en paralelo con el LDA pero quitando su funcionalidad parcialmente pues al obtener los datos del mismo punto, no se puede permitir 57

72 que el algoritmo del LDA modifique los buffers de datos en forma de matrices, o de vectores de vectores de datos, por lo cual se elimino la aleatorización de los vectores de entrada. La siguiente parte fue encontrar como acensar a los datos de cada miembro del vector sabiendo de cual clase procede. Si se retrocede a la figura 8, de la salida del filtro espacial se obtienen dos canales de salida como resultado de las combinaciones lineales creadas, estos dos canales tienen el propósito de separar las clases, es decir un canal le da predominancia a las señales que provienen de canales derechos y el otro a los que provienen de canales derechos, por lo que se pueden nombrar como el canal predominantemente derecho y el izquierdo. Es claro que el análisis para vectores a los cuales se les conoce la clase se hace con base en el canal predominante a la clase. En caso de los vectores que se deben clasificar se utilizan ambas predominancias para determinar a cual pertenece. Dentro de la caja los datos de los vectores se transportan como un vector de punteros llamado FeatureVector. Donde el puntero [i] pertenece a la clase izquierda y el puntero [i]+1 a la clase derecha. Otra aclaración importante es el hecho de que los vectores vienen en cadena uno tras otro sin delimitación alguna entre uno y otro; todos en el mismo arreglo, se dividen por la predeterminación del tamaño del vector de características. 58

73 4.2.4 Implementación de los módulos entrenador (trainer) y procesador (processor) Para la implementación del nuevo algoritmo, fue necesario la modificación de tanto el módulo entrenador del clasificador como del módulo procesador del clasificador donde la decisión es tomada. Para la etapa de entrenamiento, verdaderamente no es particularmente necesaria, pues este algoritmo no define una regla de división previa, sino mas bien la regla se dicta de acuerdo al vector entrante. Por lo tanto la etapa de entrenamiento se utilizó únicamente para crear un archivo que fuera con la información de los vectores de entrenamiento que fuera más sencillo de interpretar para el módulo procesador que lo usara luego. Así se crea un archivo con las características de la tabla Tabla 5. Tabla 5: Descripción del archivo de configuración creado en la etapa de entrenamiento #vectores Número de vectores de entrenamiento ambas clases 1 2 Clase 1: izquierda, 2: derecha Dato <L> Dato <D> Dato predominantemente izquierdo Dato predominantemente derecho 1 2 Clase 1: izquierda, 2: derecha 59

74 Dato <L> Dato <D> Dato predominantemente izquierdo Dato predominantemente derecho Para la etapa de funcionamiento online donde se da la clasificación, primero se toma este archivo y se interpreta como un vector de vectores de características para cada clase, para luego utilizar con estos vectores y el vector de entrada la función getdistance. Ésta función se encarga de obtener la distancia a la que se encuentra el vector de entrada con cada uno de los vectores de entrenamiento de una clase a la vez, retornando un vector de distancias, el cual posteriormente se ordena. Ya con las distancias obtenidas y ordenadas para cada clase es posible realizar la clasificación la cual se realiza sumando ciertas distancias de cada clase y obteniendo la menor, lo cual indica que el vector debería ser predominantemente de una clase específica. Para determinar cuáles distancias sumar se deben tener en cuenta dos variables. La primera es de cuantos vectores es el conjunto que se evaluara como vectores más próximos, es decir puedo realizar la comparación solo con el más próximo (la menor distancia), o con tres de los más próximos. Además es posible dejar por fuera el más 60

75 próximo asumiendo su alta probabilidad de ser un error de entrenamiento. Y es esta la otra variable, cuantos vectores más próximos dejar por fuera de la decisión, una analogía puede darse como cuando a un estudiante se le quitan los quices mas altos y más bajos, para que la nota sea mas promediada. Un tercer factor se puede ver si se le asignan pesos a las distancias basado en su orden de cercanía. 61

76 5. Capítulo 5: Resultados Como se denotó en el capitulo anterior, se creó un nuevo algoritmo de clasificación para la plataforma OV, el cual funciona en la misma caja del LDA, para este algoritmo se realizaron pruebas utilizando el dispositivo EEG con 2 y 6 canales. Las pruebas también se hicieron para los algoritmos de LDA ya disponibles y el de SVM, sin embargo para SVM, no se consiguió lograr su funcionamiento en el escenario de imaginación motora, por otra parte para el LDA, no se logro concretar un entrenamiento con un índice de aceptación mayor al 61% de acierto para 2 y 6 canales, el cual con los archivos de demostración de 10 canales mas el de referencia donde se debería obtener un 80%. Ahora bien este índice no es tan decisivo, esto porque lo que evalúa, es la cantidad de vectores de entrenamiento que usando la regla de clasificación generada a partir de ellos, se clasifican correctamente. Por otra parte sin importar el algoritmo de clasificación, los vectores de entrenamiento pueden ser obtenidos para analizar su comportamiento, esto es obtener los valores de los vectores predominantemente izquierdo y derecho para ambas clases de vectores. 62

77 Así por ejemplo en las figuras 12 y 13, se denota la gráfica de los dos canales para cada una de las clases, donde lo ideal sería notar una separación entre los canales donde las amplitudes del canal perteneciente a la clase sean mayores a las del canal que no se utiliza. Figura 12: Gráfica de los vectores característicos para una prueba de dos canales C3 y C4, de la clase izquierda, donde el azul son los vectores predominantemente izquierdos y el rojo los derechos. 63

78 Figura 13: Gráfica de los vectores característicos para una prueba de dos canales C3 y C4, de la clase derecha, donde el azul son los vectores predominantemente izquierdos y el rojo los derechos. Sin embargo de estas gráficas se deja ver que para dos canales la diferencia entre ambos canales es muy poca, lo cual responde a las condiciones del EEG así como también a las condiciones de la prueba sobre el sujeto de pruebas. Con base en estas observaciones y los bajos niveles de acierto para el entrenamiento por debajo de 60% a pesar de comprobar varias veces el buen funcionamiento de los canales utilizados con los electrodos, y de la comparación con las gráficas 14 y 15, las cuales representan la misma idea pero para los vectores de entrenamiento que brinda la plataforma como ejemplo para el escenario de imaginación motora en donde fueron utilizados 10 canales. 64

79 Figura 14: Gráfica de los vectores característicos para una prueba de diez canales (ejemplo OV), de la clase izquierda, donde el azul son los vectores predominantemente izquierdos y el rojo los derechos. Figura 15: Gráfica de los vectores característicos para una prueba de diez canales (ejemplo OV), de la clase derecha, donde el azul son los vectores predominantemente izquierdos y el rojo los derechos. 65

80 En estas gráficas de 10 canales se puede observar una separación entre canales, la cual no es muy grande, lo cual se deduce del hecho que la clasificación de estas señales no es sencilla. No obstante es la prueba de la falta de información en los canales generados a partir de los únicos dos canales de entrada para las pruebas de 2 canales. Debido a esto se realizó un gran esfuerzo para lograr agregar al dispositivo OpenEEG 4 canales más y obtener 6 canales con electrodos para el análisis, lo cual se logró faltando poco tiempo por lo cual no se pudo probar sobre el nuevo algoritmo con la debida rigurosidad del caso. Las gráficas 16 y 17 muestran el desempeño de la fase de entrenamiento para 6 canales, donde en esta única prueba se comprueba un aumento en la franja de separación de ambos canales en sendas clases. 66

81 Figura 16: Gráfica de los vectores característicos para una prueba de 6 canales, de la clase derecha, donde el verde son los vectores predominantemente izquierdos y el café los derechos. Figura 17: Gráfica de los vectores característicos para una prueba de 6 canales, de la clase izquierda, donde el azul son los vectores predominantemente izquierdos y el rojo los derechos. Como ya se mencionó anteriormente se implementaron los porcentajes de autoevaluación en los cuales se evalúa el desempeño de la regla establecida en el 67

82 entrenamiento para conocer cuántos vectores de entrenamiento se clasifican correctamente con esta regla, para el caso del algoritmo de vectores más próximos no se toma en cuenta como vector de entrenamiento cuando este mismo está siendo evaluado. Los porcentajes de autoevaluación variaron conforme la cantidad de vectores vecinos más próximos a considerar y a la cantidad que no se toma en cuenta de ellos. Tabla 6: Porcentajes de autoevaluación, para 10 canales, 2 canales y 6 canales respectivamente, para diferente cantidad de vectores más próximos a tomar en cuenta, eliminando diferente cantidad de los más próximos. Cantidad de vectores por fuera Cantidad de vectores a considerar IZQ DER IZQ DER IZQ DER IZQ DER IZQ DER

83 Canales

84 Canales

85 De los resultados de la tablatabla 6, se denota una tendencia a tener los mayores porcentajes de autoevaluación para los casos donde se evalúa la menor cantidad de vectores próximos y se elimina también la menor cantidad, además del hecho que los porcentajes alcanzan valores arriba del 80% en comparación con el LDA que para 10 canales da 80% y 71

86 para 2 menor a 60%. La discusión de cual, combinación debe ser la mejor queda aún por responder. Para la habilitación de 6 canales (C3, C4, O3, O4, F3, F4) en el dispositivo EEG, dado el tiempo solo fue posible realizar una prueba de comportamiento, la cual se llevo a cabo contando la cantidad de errores que comete el usuario antes de dar con estado al que se quería forzar la clasificación. Tabla 7: Prueba de comportamiento, cuenta de estados erróneos antes de llegar al correcto, para 6 canales Dirección predefinida de la flecha Fallos hasta obtener el acierto

87 Nótese, que aunque es solo una prueba en un usuario determinado y por ende no es concluyente, muestra una pincelada del funcionamiento del nuevo algoritmo, donde los fallos corresponden a momentos de desconcentración que continúan por un tiempo donde continúan fallando, ahora si se toma en cuenta la cantidad de estados logrados a la primera, se tendría un porcentaje del 75% de estados logrados al primer intento. 73

88 6. Capítulo 6: Conclusiones y Recomendaciones 6.1 Conclusiones Se determinó que los algoritmos implementados por la plataforma OpenVibe, los cuales son LDA y el SVM presenta una gran dependencia de la linealidad que pueda presentar la separación entre las clases de vectores. En el caso del SVM puede presentar mejoras para reducir el coste de esta dependencia pero agrega dificultad para determinar una función de transformación que mejore la linealidad de la separación. Bajo una serie de pruebas se comprobó la funcionalidad de del algoritmo LDA, aunque el dispositivo de 2 canales no permitió la realización de pruebas con mas allá del 60% de acierto. Se determinó que para el dispositivo EEG dos canales no recolectan la información suficiente sobre C3 y C4 para realizar clasificaciones exitosas. Se encontró una mejoría en el comportamiento de la clasificación para la implementación del EEG para 6 canales, sin embargo no se realizaron pruebas concluyentes por falta de tiempo. Se encontró que la integración y creación de nuevos módulos, en la plataforma OpenVibe es viable y fácil de realizar nuevas implementaciones, siempre y cuando se respeten los niveles de abstracción y el orden que impone la plataforma.

89 Se creó un nuevo algoritmo de clasificación basado en los puntos más cercanos, como una solución para eliminar la dependencia de la frontera lineal, aunque las pruebas realizadas son alentadoras y el algoritmo probo ser funcional, no se establecieron pruebas ni criterios de comparación con los demás algoritmos.

90 6.2 Recomendaciones Se debe crear una métrica, para comprobar el rendimiento de tanto el nuevo algoritmo como los algoritmos ya existentes, entendiendo rendimiento como porcentaje de acierto en la clasificación. Ya con esta métrica, se debe realizar un ensayo con varias personas, para comprobar el verdadero desempeño de tanto los algoritmos como del dispositivo EEG disponible, para tener pruebas reales del funcionamiento. Se debe mejorar la conexión cable-electrodo, la cual no está implementada del todo bien, dado que se presentaron casos donde esta conexión quedaba un poco floja causando ausencia de la señal. Se debe crear un dispositivo que facilite la colocación de los electrodos en los puntos correctos en la cabeza, dado que no es útil estar midiendo los puntos exactos donde los electrodos van. Además del hecho de que los movimientos bruscos pueden afectar la conexión electrodo cabeza. Se debe comprobar que la escogencia de los canales que se ha dado es la correcta y la que mejor se adecua a las necesidades del escenario. Explorar escenarios que utilicen SVM correctamente, además de realizar pruebas donde se pueda manipular la función kernel para conseguir separaciones más lineales.

91 Es necesario encapsular el dispositivo para facilitar su traslado y blindaje. Para facilitar la colocación de los electrodos, se puede habilitar que los canales de referencia sean los mismos para todos los canales, debido a que así se utilizan. Eso disminuiría el número de electrodos de 13 a 7 en una configuración de 6 canales activos. Eliminar la batería y colocar una fuente de alimentación a las tarjetas.

92 BIBLIOGRAFÍA 1. Bousquet, Olivier, Stéphane Boucheron, y Gábor Lugosi. Introduction to Statistical Learning Theory. Tubingen: Max-Planck Institute for Biological Cybernetics, Demos, John N. Getting started with neurofeedback. 1. New York: Norton&Company, Esquivel, Jeffrey S. Desarrollo de plataforma basada en Software Libre para adquisición y procesamiento de senales bioeléctricas como componente para una interfaz Cerebro-Computador. San José: Proyecto eléctrico para optar por el grado de bachiller en Ingeniería Eléctrica, Evgeniou, Theodoros, Massimiliano Pontil, y Tomaso Poggio. Regularization Networks and Support Vector Machines. Cambridge: Artificial Intelligence Laboratory, Massachusetts Institute of Technology, INRIA Rennes. «Implementing a signal processing box.» openvibe. 18 de octubre de (último acceso: octubre-noviembre de 2011). 6.. skeleton-generator-beta. agosto de (último acceso: noviembre de 2011). 7.. stream-structures. setiembre de (último acceso: octubre-noviembre de 2011).

93 8. Lotte, Fabien. Study of Electroencefalographic Signal Processing and Classification Tecniques for P300-Based Brain Computer Interfaces. Rennes, Francia: PhD Tesis del National Institute of Applied Sciences (INSA), Rennard, Y, y otros. "OpenVibe: An Open-Source Software Platform to Design, Test and Use Brain-Computer Interfaces in Real and Virtual Environments", Presence: teleoperators and virtual environments. Vol. 19. Rennes, Francia: INRIA, Vapnik, Vladimir N. Statistical Learning Theory. New York: Wiley-Interscience, Wang, Lipo. Support Vector Machines: Theory and Applications. Berlín-Singapore: Springer, 2005.

94 APÉNDICES Apéndice 1: Estructuras de flujo Tipos de mensajes presentes en la plataforma OpenVibe, como paquetes para comunicarse entre las cajas. El árbol de jerarquías de paquetes se presenta como en la figura 18 Figura 18: Árbol de jerarquías de tipos de paquetes EBML en OpenVibe Además se muestra un esquema de la estructura general de estas estructuras de flujo en la figura 19.

95 Figura 19: Esquema general de una estructura de flujo EBML en OpenVibe Apéndice 2: Dispositivo EEG Dispositivo EEG utilizado, foto descriptiva de los módulos digital y los tres analógicos para lograr los seis canales.

96 Figura 20: Dispositivo OpenEEG de seis canales utilizado. Apéndice 3: Código del clasificador de vectores más próximos Para el clasificador el principal código agregado en el entrenador es el constructor del archivo de configuración. // std::ofstream l_ofile;

97 l_ofile.open("/home/leonel/escritorio/prueba_archivos.txt"); l_ofile<<m_vfeaturevector.size()<<endl; for(size_t j=0; j<m_vfeaturevector.size()-(uistopindex-uistartindex); j++) { size_t k=m_vfeaturevectorindex[(j<uistartindex?j:j+(uistopindex-uistartindex))]; float64 l_f64class=(float64)m_vfeaturevector[k].m_ui32inputindex; System::Memory::copy( l_pfeaturevectorsetbuffer, m_vfeaturevector[k].m_pfeaturevectormatrix->getbuffer(), l_ui32featurevectorsize*sizeof(float64)); // l_pfeaturevectorsetbuffer[l_ui32featurevectorsize]=l_f64class; l_pfeaturevectorsetbuffer+=(l_ui32featurevectorsize+1); l_ofile<<m_vfeaturevector[k].m_ui32inputindex<<endl; l_ofile<<*(m_vfeaturevector[k].m_pfeaturevectormatrix->getbuffer())<<endl; l_ofile<<*(m_vfeaturevector[k].m_pfeaturevectormatrix->getbuffer()+1)<<endl; } l_ofile.close(); // Para el procesador la parte de inicialización del archivo de configuración corresponde a lo siguiente. l_ofile.open("/home/leonel/escritorio/prueba_archivos.txt");

98 int num_coef; l_ofile >> num_coef; //We going to asume the number of training vectors are the same per each class, //and the size of vector is 49, in according with the epoching of the scenario. int vectors_per_class = num_coef/(98); float coef; int index; //Indicate the class 2-Right 1-Left bool flag=true; int i=0,l=0,r=0; VectorofVectors_class2.push_back(new vector<float>); while (l_ofile >> index){//cout<<index<<endl; if (index==1){ if (i==0){vectorofvectors_class1.push_back(new vector<float>);} if (i<49){ l_ofile >> coef; //left info VectorofVectors_class1[L]->push_back(coef); l_ofile >> coef; //right info i++; } if(i==49){ } L++;i=0; }if (index==2){

99 if (i==0){vectorofvectors_class2.push_back(new vector<float>);} if (i<49){ l_ofile >> coef; //left info l_ofile >> coef; //right info VectorofVectors_class2[R]->push_back(coef); } i++; } } if(i==49){ } R++;i=0; l_ofile.close(); cont=0; Para la función getdistance: double GetDistance(vector<float>* VectorFeaturesTrained,vector<float>* VectorFeaturesIn){ double distance=0.0; double temp=0; for (int i=0;i<vectorfeaturesin->size();i++){ temp=((*vectorfeaturesin)[i]-(*vectorfeaturestrained)[i]); temp*=temp; } distance += temp; } return sqrt(distance);

100 ANEXOS Anexo1: Tutorial para agregar nuevos módulos en la plataforma OpenVibe. Este tutorial pretende explicar la forma adecuada en que debe ser agregado un Nuevo módulo a la plataforma, debido a que se deben cumplir reglas y protocolos de comunicación para la creación de la misma. Como primera aclaración es importante recalcar que todas las clases en esta plataforma se les asigna un identificador único el cual utilizando las herramientas como Skeleton este mismo se encarga de obtenerlos, de lo contrario es necesario utilizar el script Id-generator para obtener identificadores únicos que no han sido utilizados aún. Para la generación de un módulo se debe crear sobre una caja (box), la cual debe crearse si no existiese, y la cual puede ser suficiente para la definición de un módulo sencillo. El siguiente paso sería la creación del algoritmo(s) si fuese un módulo multialgorítmico. Como último paso luego de realizar la validación del bloque, se debe realizar la documentación, la cual puede ser generada en parte automáticamente. Creando una nueva caja.

101 Se puede crear desde cero, lo cual es bastante complejo, sin embargo la herramienta Skeleton, crea el esqueleto base de programación, necesario para establecer los vínculos con la plataforma. Antes de utilizar se debe tener en claro los tipos y cantidades de entradas y salidas, opciones de configuración (settings) entre otras características. El script se encuentra en el directorio de scripts de los archivos del código, como se muestra en la figura 21, puede utilizarse para crear cajas y manejadores (drivers). Figura 21: Primera ventana emergente de la herramienta Skeleton. Luego de colocar los datos y seleccionar BOX, aparece un menú bastante amplio de opciones, para rellenar, en la primera pestaña de generalidades como se muestra en la figura 21, es información de descripción de la caja.

102 clasificador. El ejemplo que se muestra en la figura 22 sigue lo realizado para crear el nuevo Figura 22: Ventana de configuraciones generales de Skeleton Las siguientes pestañas de entradas y salidas, se utilizan para establecer los tipos de las mismas, como se trató en el apéndice 1, existen tipos definidos de paquetes para la comunicación, para el ejemplo se requieren una entrada de estímulos, por medio de la cual

103 se dé el trafico de información descriptiva de los datos, mas dos entradas tipo FeatureVector para los dos canales obtenidos del pre-procesamiento donde obtiene los vectores de entrenamiento. Como salida se utiliza un estímulo, que funcione como bandera de fin. La figura 23 muestra la configuración. Figura 23: Ventana de configuración de entradas y salidas del módulo en Skeleton

104 En la pestaña de settings, se pueden establecer aquellos parámetros que pueden ser modificados en el bloque por el usuario, por ejemplo en este caso la dirección del archivo de configuración de salida. Figura 24: Ventana de configuración de parámetros modificables por el usuario de Skeleton En la pestaña Codec Algorithms, se declaran los codificadores y decodificadores que son necesarios definir, estos corresponden a un decodificador por cada tipo de entrada diferente y a un codificador por cada tipo diferente de salida, nótese que no es por cada salida o entrada sino por el tipo.

105 Figura 25: Ventana de configuración de algoritmos de codificación de Skeleton En la pestaña processing method escoge la frecuencia para revisar si hay nuevas entradas, esto es para el ejemplo marcar cada vez que haya una entrada disponible. La opción de Box Listener puede usarse para darle seguimiento a los eventos por los que se pasa cuando el código se corre. Se puede ver como una opción para despulgar. Luego de la realización de las configuraciones, se oprime Check, y se revisa que la revisión haya sido exitosa, si es el caso se oprime Generate, el cual crea los archivos.h y.cpp y un Readme.txt de la caja en la dirección que se le indique. Ya con esto se tiene lo necesario para abrir los archivos e implementar la funcionalidad requerida, donde se debe tener presente que debido al gran nivel de abstracción, todas las instancias deben poder ser inicializadas y desinicializadas, además recordar usar los codificadores ya definidos. Además por lo general se encierra el código en

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos 2.1. Principios básicos del Modelado de Objetos UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos Hoy en día muchos de los procesos que intervienen en un negocio o empresa y que resuelven

Más detalles

MÁQUINA DE VECTORES DE SOPORTE

MÁQUINA DE VECTORES DE SOPORTE MÁQUINA DE VECTORES DE SOPORTE La teoría de las (SVM por su nombre en inglés Support Vector Machine) fue desarrollada por Vapnik basado en la idea de minimización del riesgo estructural (SRM). Algunas

Más detalles

(PHP y APACHE), y el programa de comunicación Skype, para controlar de manera

(PHP y APACHE), y el programa de comunicación Skype, para controlar de manera Capítulo 4. Llamada Telefónica En este capítulo se explicará la manera en que se configuraron las herramientas web (PHP y APACHE), y el programa de comunicación Skype, para controlar de manera dinámica

Más detalles

CAPITULO 6 SISTEMA DE DETECCION DE INTRUSOS

CAPITULO 6 SISTEMA DE DETECCION DE INTRUSOS Capitulo 6. Sistema de Detección de Intrusos con Redes Neuronales. 69 CAPITULO 6 SISTEMA DE DETECCION DE INTRUSOS USANDO REDES NEURONALES. En este capítulo se realiza la preparación adecuada de toda la

Más detalles

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Documento de trabajo elaborado para la Red Temática DocenWeb: Red Temática de Docencia en Control mediante Web (DPI2002-11505-E)

Más detalles

Elementos requeridos para crearlos (ejemplo: el compilador)

Elementos requeridos para crearlos (ejemplo: el compilador) Generalidades A lo largo del ciclo de vida del proceso de software, los productos de software evolucionan. Desde la concepción del producto y la captura de requisitos inicial hasta la puesta en producción

Más detalles

Decisión: Indican puntos en que se toman decisiones: sí o no, o se verifica una actividad del flujo grama.

Decisión: Indican puntos en que se toman decisiones: sí o no, o se verifica una actividad del flujo grama. Diagrama de Flujo La presentación gráfica de un sistema es una forma ampliamente utilizada como herramienta de análisis, ya que permite identificar aspectos relevantes de una manera rápida y simple. El

Más detalles

UNIVERSIDAD DE SALAMANCA

UNIVERSIDAD DE SALAMANCA UNIVERSIDAD DE SALAMANCA FACULTAD DE CIENCIAS INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS Resumen del trabajo práctico realizado para la superación de la asignatura Proyecto Fin de Carrera. TÍTULO SISTEMA

Más detalles

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON) 3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON) 3.1.1 Introducción Este método proporciona un soporte para el diseño creativo de productos de software, inclusive a escala industrial.

Más detalles

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual Introducción Algunas de las personas que trabajan con SGBD relacionales parecen preguntarse porqué deberían preocuparse del diseño de las bases de datos que utilizan. Después de todo, la mayoría de los

Más detalles

App para realizar consultas al Sistema de Información Estadística de Castilla y León

App para realizar consultas al Sistema de Información Estadística de Castilla y León App para realizar consultas al Sistema de Información Estadística de Castilla y León Jesús M. Rodríguez Rodríguez rodrodje@jcyl.es Dirección General de Presupuestos y Estadística Consejería de Hacienda

Más detalles

Capitulo 3. Desarrollo del Software

Capitulo 3. Desarrollo del Software Capitulo 3 Desarrollo del Software 3.1 Análisis del sistema 3.1.1 Organización de la autopista virtual Para el presente proyecto se requiere de simular una autopista para que sirva de prueba. Dicha autopista

Más detalles

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología La metodología para el desarrollo de software es un modo sistemático de realizar, gestionar y administrar un proyecto

Más detalles

Base de datos en Excel

Base de datos en Excel Base de datos en Excel Una base datos es un conjunto de información que ha sido organizado bajo un mismo contexto y se encuentra almacenada y lista para ser utilizada en cualquier momento. Las bases de

Más detalles

REGISTRO DE PEDIDOS DE CLIENTES MÓDULO DE TOMA DE PEDIDOS E INTEGRACIÓN CON ERP

REGISTRO DE PEDIDOS DE CLIENTES MÓDULO DE TOMA DE PEDIDOS E INTEGRACIÓN CON ERP REGISTRO DE PEDIDOS DE CLIENTES MÓDULO DE TOMA DE PEDIDOS E INTEGRACIÓN CON ERP Visual Sale posee módulos especializados para el método de ventas transaccional, donde el pedido de parte de un nuevo cliente

Más detalles

"Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios

Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios "Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios Miguel Alfonso Flores Sánchez 1, Fernando Sandoya Sanchez 2 Resumen En el presente artículo se

Más detalles

2 EL DOCUMENTO DE ESPECIFICACIONES

2 EL DOCUMENTO DE ESPECIFICACIONES Ingeniería Informática Tecnología de la Programación TEMA 1 Documentación de programas. 1 LA DOCUMENTACIÓN DE PROGRAMAS En la ejecución de un proyecto informático o un programa software se deben de seguir

Más detalles

4. Programación Paralela

4. Programación Paralela 4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios

Más detalles

Mineria de datos y su aplicación en web mining data Redes de computadores I ELO 322

Mineria de datos y su aplicación en web mining data Redes de computadores I ELO 322 Mineria de datos y su aplicación en web mining data Redes de computadores I ELO 322 Nicole García Gómez 2830047-6 Diego Riquelme Adriasola 2621044-5 RESUMEN.- La minería de datos corresponde a la extracción

Más detalles

http://www.informatizate.net

http://www.informatizate.net http://www.informatizate.net Metodologías De Desarrollo De Software María A. Mendoza Sanchez Ing. Informático - UNT Microsoft Certified Professional - MCP Analísta y Desarrolladora - TeamSoft Perú S.A.C.

Más detalles

DISEÑO DE FUNCIONES (TRATAMIENTOS)

DISEÑO DE FUNCIONES (TRATAMIENTOS) DISEÑO DE FUNCIONES (TRATAMIENTOS) Diseño Estructurado. Estrategias para Derivar el Diagrama de Estructura. Diseño de Módulos Programables. 1. DISEÑO ESTRUCTURADO El Diseño es el proceso por el cual se

Más detalles

UNIDADES DE ALMACENAMIENTO DE DATOS

UNIDADES DE ALMACENAMIENTO DE DATOS 1.2 MATÉMATICAS DE REDES 1.2.1 REPRESENTACIÓN BINARIA DE DATOS Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS. Los computadores sólo

Más detalles

Estructura de Computadores I Arquitectura de los MMOFPS

Estructura de Computadores I Arquitectura de los MMOFPS UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA Estructura de Computadores I Arquitectura de los MMOFPS Integrantes: Luis Castro Valentina Yévenes RESUMEN Los MMOG (Massively Multiplayer Online Game), son juegos

Más detalles

Modelo para el Aseguramiento de Calidad en el Desarrollo de Software Libre

Modelo para el Aseguramiento de Calidad en el Desarrollo de Software Libre Modelo para el Aseguramiento de Calidad en el Desarrollo de Software Libre Cenditel, Mayo 2011 Licencia de Uso Copyright (c) 2010, Alvarez J., Solé S., Briceño R., Fundación CENDITEL. La Fundación CENDITEL

Más detalles

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere.

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere. UNIVERSIDAD DE CARABOBO FACULTAD DE CIENCIA Y TECNOLOGÍA DIRECCION DE EXTENSION COORDINACION DE PASANTIAS Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere. Pasante:

Más detalles

Modelos de Ciclo de Vida de Desarrollo de Software en el Contexto de la Industria Colombiana de Software

Modelos de Ciclo de Vida de Desarrollo de Software en el Contexto de la Industria Colombiana de Software Modelos de Ciclo de Vida de Desarrollo de Software en el Contexto de la Industria Colombiana de Software Hugo F. Arboleda Jiménez. MSc. Docente-Investigador, Facultad de Ingenierías, Universidad de San

Más detalles

Portafolio de Servicios y Productos

Portafolio de Servicios y Productos Portafolio de Servicios y Productos Introducción Somos una empresa que se dedica a generar ventajas competitivas para nuestros clientes a través de desarrollos y consultoría en inteligencia de negocios

Más detalles

CAPÍTUL07 SISTEMAS DE FILOSOFÍA HÍBRIDA EN BIOMEDICINA. Alejandro Pazos, Nieves Pedreira, Ana B. Porto, María D. López-Seijo

CAPÍTUL07 SISTEMAS DE FILOSOFÍA HÍBRIDA EN BIOMEDICINA. Alejandro Pazos, Nieves Pedreira, Ana B. Porto, María D. López-Seijo CAPÍTUL07 SISTEMAS DE FILOSOFÍA HÍBRIDA EN BIOMEDICINA Alejandro Pazos, Nieves Pedreira, Ana B. Porto, María D. López-Seijo Laboratorio de Redes de Neuronas Artificiales y Sistemas Adaptativos Universidade

Más detalles

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Unidad I Sistemas numéricos 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS.

Más detalles

CAPITULO 4. Requerimientos, Análisis y Diseño. El presente capítulo explica los pasos que se realizaron antes de implementar

CAPITULO 4. Requerimientos, Análisis y Diseño. El presente capítulo explica los pasos que se realizaron antes de implementar CAPITULO 4 Requerimientos, Análisis y Diseño El presente capítulo explica los pasos que se realizaron antes de implementar el sistema. Para esto, primero se explicarán los requerimientos que fueron solicitados

Más detalles

1.4.1.2. Resumen... 1.4.2. ÁREA DE FACTURACIÓN::INFORMES::Pedidos...27 1.4.2.1. Detalle... 1.4.2.2. Resumen... 1.4.3. ÁREA DE

1.4.1.2. Resumen... 1.4.2. ÁREA DE FACTURACIÓN::INFORMES::Pedidos...27 1.4.2.1. Detalle... 1.4.2.2. Resumen... 1.4.3. ÁREA DE MANUAL DE USUARIO DE ABANQ 1 Índice de contenido 1 ÁREA DE FACTURACIÓN......4 1.1 ÁREA DE FACTURACIÓN::PRINCIPAL...4 1.1.1. ÁREA DE FACTURACIÓN::PRINCIPAL::EMPRESA...4 1.1.1.1. ÁREA DE FACTURACIÓN::PRINCIPAL::EMPRESA::General...4

Más detalles

Capitulo I. Introducción

Capitulo I. Introducción Capitulo I. Introducción 1.1 Descripción del trabajo El ser humano, como todos sabemos tiene la necesidad de comunicarse, de ser escuchado y sobretodo interactuar con los demás seres vivos que lo rodean.

Más detalles

Estándares para planes de calidad de software. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto Diciembre 2008

Estándares para planes de calidad de software. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto Diciembre 2008 Estándares para planes de calidad de software Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto Diciembre 2008 DIFERENCIA ENTRE PRODUCIR UNA FUNCION Y PRODUCIR UNA FUNCION

Más detalles

Curso Excel Básico - Intermedio

Curso Excel Básico - Intermedio Curso Excel Básico - Intermedio Clase 4 Relator: Miguel Rivera Adonis Introducción Base de Datos: Definición de Base de Datos Ordenar datos Formulario Filtros Trabajar con Sub-Totales Validación de Datos

Más detalles

SISTEMAS INTELIGENTES

SISTEMAS INTELIGENTES SISTEMAS INTELIGENTES T11: Métodos Kernel: Máquinas de vectores soporte {jdiez, juanjo} @ aic.uniovi.es Índice Funciones y métodos kernel Concepto: representación de datos Características y ventajas Funciones

Más detalles

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE PRUEBAS DE SOFTWARE La prueba del software es un elemento crítico para la garantía de la calidad del software. El objetivo de la etapa de pruebas es garantizar la calidad del producto desarrollado. Además,

Más detalles

MANUAL DE USUARIOS DEL SISTEMA MESA DE SOPORTE PARA SOLICITAR SERVICIOS A GERENCIA DE INFORMATICA

MANUAL DE USUARIOS DEL SISTEMA MESA DE SOPORTE PARA SOLICITAR SERVICIOS A GERENCIA DE INFORMATICA MANUAL DE USUARIOS DEL SISTEMA MESA DE SOPORTE PARA SOLICITAR SERVICIOS A Usuario Propietario: Gerencia de Informática Usuario Cliente: Todos los usuarios de ANDA Elaborada por: Gerencia de Informática,

Más detalles

Código del programa: PEMDE. Programa Experto en MANEJO DE DATOS CON EXCEL. Modalidad: Virtual. Descripción del programa

Código del programa: PEMDE. Programa Experto en MANEJO DE DATOS CON EXCEL. Modalidad: Virtual. Descripción del programa Código del programa: PEMDE Programa Experto en MANEJO DE DATOS CON EXCEL Modalidad: Virtual Descripción del programa 1 Presentación del programa Justificación Microsoft Excel es la herramienta de manejo

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación II MODELOS y HERRAMIENTAS UML 1 1 Modelado de casos de uso (I) Un caso de uso es una técnica de modelado usada para describir lo que debería hacer

Más detalles

TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA

TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA Programa: Algoritmo (secuencia no ambigua, finita y ordenada de instrucciones para la resolución de un determinado problema) traducido

Más detalles

forma de entrenar a la nuerona en su aprendizaje.

forma de entrenar a la nuerona en su aprendizaje. Sistemas expertos e Inteligencia Artificial,Guía5 1 Facultad : Ingeniería Escuela : Computación Asignatura: Sistemas expertos e Inteligencia Artificial Tema: SISTEMAS BASADOS EN CONOCIMIENTO. Objetivo

Más detalles

Capítulo 4 Análisis y diseño del software de los Robots

Capítulo 4 Análisis y diseño del software de los Robots Capítulo 4 Análisis y diseño del software de los Robots En el capítulo del diseño mecánico de los robots se muestran los distintos sensores que se utilizarán como entradas, así como los motores que deberán

Más detalles

Guía Metodológica para el diseño de procesos de negocio

Guía Metodológica para el diseño de procesos de negocio Guía Metodológica para el diseño de procesos de negocio La guía desarrollada para apoyar TBA, se diseñó con base en las metodologías existentes para el desarrollo BPM, principalmente en aquellas que soportan

Más detalles

GUIA SOBRE LOS REQUISITOS DE LA DOCUMENTACION DE ISO 9000:2000

GUIA SOBRE LOS REQUISITOS DE LA DOCUMENTACION DE ISO 9000:2000 1 INTRODUCCIÓN Dos de los objetivos más importantes en la revisión de la serie de normas ISO 9000 han sido: desarrollar un grupo simple de normas que sean igualmente aplicables a las pequeñas, a las medianas

Más detalles

CAPITULO I EL PROBLEMA. En los procesos industriales exigen el control de la fabricación de los

CAPITULO I EL PROBLEMA. En los procesos industriales exigen el control de la fabricación de los CAPITULO I EL PROBLEMA 1.- PLANTEAMIENTO DEL PROBLEMA En los procesos industriales exigen el control de la fabricación de los diversos productos obtenidos. Estos procesos son muy variados y abarcan diferentes

Más detalles

Entidad Formadora: Plan Local De Formación Convocatoria 2010

Entidad Formadora: Plan Local De Formación Convocatoria 2010 Entidad Formadora: Enterprise Architect Comenzando Puede iniciar Enterprise Architect desde el ícono que se creó en su escritorio de Windows durante la instalación, o alternativamente: 1. Abrir el menú

Más detalles

Estructuras de Sistemas Operativos

Estructuras de Sistemas Operativos Estructuras de Sistemas Operativos Definicion de Sistema Operativos Un sistema operativo es un programa que actua como inter entre el usuario y el hardware de un computador y su proposito es proporcionar

Más detalles

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN Tabla de Contenidos LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN... 1 Tabla de Contenidos... 1 General... 2 Uso de los Lineamientos Estándares...

Más detalles

Guías _SGO. Gestione administradores, usuarios y grupos de su empresa. Sistema de Gestión Online

Guías _SGO. Gestione administradores, usuarios y grupos de su empresa. Sistema de Gestión Online Guías _SGO Gestione administradores, usuarios y grupos de su empresa Sistema de Gestión Online Índice General 1. Parámetros Generales... 4 1.1 Qué es?... 4 1.2 Consumo por Cuentas... 6 1.3 Días Feriados...

Más detalles

Diseño orientado al flujo de datos

Diseño orientado al flujo de datos Diseño orientado al flujo de datos Recordemos que el diseño es una actividad que consta de una serie de pasos, en los que partiendo de la especificación del sistema (de los propios requerimientos), obtenemos

Más detalles

CAPÍTULO I. Sistemas de Control Distribuido (SCD).

CAPÍTULO I. Sistemas de Control Distribuido (SCD). 1.1 Sistemas de Control. Un sistema es un ente cuya función es la de recibir acciones externas llamadas variables de entrada que a su vez provocan una o varias reacciones como respuesta llamadas variables

Más detalles

GedicoPDA: software de preventa

GedicoPDA: software de preventa GedicoPDA: software de preventa GedicoPDA es un sistema integrado para la toma de pedidos de preventa y gestión de cobros diseñado para trabajar con ruteros de clientes. La aplicación PDA está perfectamente

Más detalles

Metodología Orientada a Objetos Clave 43100007 Maestría en Sistemas Computacionales

Metodología Orientada a Objetos Clave 43100007 Maestría en Sistemas Computacionales Metodología Orientada a Objetos Clave 43100007 Maestría en Sistemas Computacionales Modulo 03 UML: Vista de Casos de Uso Artefacto: Actores Catedrático MSC. Jose Juan Aviña Grimaldo e-mail josejuan_avina@gmail.com

Más detalles

La nueva criba de Eratóstenes Efraín Soto Apolinar 1 F.I.M.E. U.A.N.L. San Nicolás, N.L. México. efrain@yalma.fime.uanl.mx

La nueva criba de Eratóstenes Efraín Soto Apolinar 1 F.I.M.E. U.A.N.L. San Nicolás, N.L. México. efrain@yalma.fime.uanl.mx La nueva criba de Eratóstenes Efraín Soto Apolinar 1 F.I.M.E. U.A.N.L. San Nicolás, N.L. México. efrain@yalma.fime.uanl.mx Resumen Se dan algunas definiciones básicas relacionadas con la divisibilidad

Más detalles

Comunicaciones Digitales - Ejercicios Tema 3

Comunicaciones Digitales - Ejercicios Tema 3 Comunicaciones Digitales - Ejercicios Tema 3 007. 1. Considere el diagrama de rejilla para un canal discreto equivalente genérico con 4 coeficientes no nulos (memoria K p = 3) y una constelación -PAM.

Más detalles

Metodología básica de gestión de proyectos. Octubre de 2003

Metodología básica de gestión de proyectos. Octubre de 2003 Metodología básica de gestión de proyectos Octubre de 2003 Dentro de la metodología utilizada en la gestión de proyectos el desarrollo de éstos se estructura en tres fases diferenciadas: Fase de Éjecución

Más detalles

8.1. Introducción... 1. 8.2. Dependencia/independencia estadística... 2. 8.3. Representación gráfica: diagrama de dispersión... 3. 8.4. Regresión...

8.1. Introducción... 1. 8.2. Dependencia/independencia estadística... 2. 8.3. Representación gráfica: diagrama de dispersión... 3. 8.4. Regresión... Tema 8 Análisis de dos variables: dependencia estadística y regresión Contenido 8.1. Introducción............................. 1 8.2. Dependencia/independencia estadística.............. 2 8.3. Representación

Más detalles

Empresa Financiera Herramientas de SW Servicios

Empresa Financiera Herramientas de SW Servicios Empresa Financiera Herramientas de SW Servicios Resulta importante mencionar que ésta es una empresa cuya actividad principal está enfocada a satisfacer las necesidades financieras de los clientes, a través

Más detalles

CAPITULO 4 JUSTIFICACION DEL ESTUDIO. En este capítulo se presenta la justificación del estudio, supuestos y limitaciones de

CAPITULO 4 JUSTIFICACION DEL ESTUDIO. En este capítulo se presenta la justificación del estudio, supuestos y limitaciones de CAPITULO 4 JUSTIFICACION DEL ESTUDIO En este capítulo se presenta la justificación del estudio, supuestos y limitaciones de estudios previos y los alcances que justifican el presente estudio. 4.1. Justificación.

Más detalles

ESTADÍSTICA APLICADA A LA INVESTIGACIÓN EN SALUD Construcción de una Base de Datos

ESTADÍSTICA APLICADA A LA INVESTIGACIÓN EN SALUD Construcción de una Base de Datos Descargado desde www.medwave.cl el 13 Junio 2011 por iriabeth villanueva Medwave. Año XI, No. 2, Febrero 2011. ESTADÍSTICA APLICADA A LA INVESTIGACIÓN EN SALUD Construcción de una Base de Datos Autor:

Más detalles

Versión final 8 de junio de 2009

Versión final 8 de junio de 2009 GRUPO DE EXPERTOS «PLATAFORMA PARA LA CONSERVACIÓN DE DATOS ELECTRÓNICOS PARA CON FINES DE INVESTIGACIÓN, DETECCIÓN Y ENJUICIAMIENTO DE DELITOS GRAVES» ESTABLECIDO POR LA DECISIÓN 2008/324/CE DE LA COMISIÓN

Más detalles

PRC-DTI-006 Administración de Roles de los Sistemas de Información de la DTI Procedimiento Dirección de TI - COSEVI

PRC-DTI-006 Administración de Roles de los Sistemas de Información de la DTI Procedimiento Dirección de TI - COSEVI PRC-DTI-006 Administración de Roles de los Sistemas de Información de la DTI Procedimiento Dirección de TI - COSEVI Versión: 1.0 Fecha de la versión: Febrero del 2012 Creado por: PwC Costa Rica Aprobado

Más detalles

MÁQUINAS DE VECTORES DE SOPORTE

MÁQUINAS DE VECTORES DE SOPORTE MÁQUINAS DE VECTORES DE SOPORTE Introducción Se tiene información de N individuos codificada de la forma Las variables X son vectores que reúnen información numérica del individuo, las variables Y indican

Más detalles

Procesos Críticos en el Desarrollo de Software

Procesos Críticos en el Desarrollo de Software Metodología Procesos Críticos en el Desarrollo de Software Pablo Straub AgileShift Imagine una organización de desarrollo de software que consistentemente cumple los compromisos con sus clientes. Imagine

Más detalles

capitulo3 MARCO TEÓRICO Para el diseño de la reubicación de los procesos se hará uso de la Planeación

capitulo3 MARCO TEÓRICO Para el diseño de la reubicación de los procesos se hará uso de la Planeación capitulo3 MARCO TEÓRICO Para el diseño de la reubicación de los procesos se hará uso de la Planeación Sistemática de Layout, SLP por sus siglas en inglés. Se hará uso de la simulación para comparar el

Más detalles

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos.

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos. Apéndice C. Glosario A Actividades de coordinación entre grupos. Son dinámicas y canales de comunicación cuyo objetivo es facilitar el trabajo entre los distintos equipos del proyecto. Actividades integradas

Más detalles

Gestión de Oportunidades

Gestión de Oportunidades Gestión de Oportunidades Bizagi Suite Gestión de Oportunidades 1 Tabla de Contenido CRM Gestión de Oportunidades de Negocio... 4 Elementos del Proceso... 5 Registrar Oportunidad... 5 Habilitar Alarma y

Más detalles

Interoperabilidad de Fieldbus

Interoperabilidad de Fieldbus 2002 Emerson Process Management. Todos los derechos reservados. Vea este y otros cursos en línea en www.plantwebuniversity.com. Fieldbus 201 Interoperabilidad de Fieldbus Generalidades Qué es interoperabilidad?

Más detalles

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto INFORMÁTICA INFORMÁTICA 1 Sesión No. 4 Nombre: Procesador de Texto Contextualización La semana anterior revisamos los comandos que ofrece Word para el formato del texto, la configuración de la página,

Más detalles

Capítulo 5. Análisis del software del simulador del sistema de seguridad

Capítulo 5. Análisis del software del simulador del sistema de seguridad 1 Capítulo 5. Análisis del software del simulador del sistema de seguridad Para realizar análisis del simulador de sistema de seguridad se recurrió a diagramas de flujo de datos (DFD s), ya que se consideró

Más detalles

Capítulo 2. Las Redes Neuronales Artificiales

Capítulo 2. Las Redes Neuronales Artificiales Capítulo 2. Las Redes Neuronales Artificiales 13 Capitulo 2. Las Redes Neuronales Artificiales 2.1 Definición Redes Neuronales Artificiales El construir una computadora que sea capaz de aprender, y de

Más detalles

TRANSMISION DIGITAL. PCM, Modulación por Codificación de Pulsos

TRANSMISION DIGITAL. PCM, Modulación por Codificación de Pulsos MODULACIÓN TRANSMISION DIGITAL La amplia naturaleza de las señales analógicas es evidente, cualquier forma de onda está disponible con toda seguridad en el ámbito analógico, nos encontramos con una onda

Más detalles

5. Gestión de la Configuración del Software (GCS)

5. Gestión de la Configuración del Software (GCS) 5. Gestión de la Configuración del Software (GCS) 5.1. La Configuración del Software El resultado del proceso de ingeniería del software es una información que se puede dividir en tres amplias categorías:

Más detalles

Fundamentos y Aplicaciones Prácticas del Descubrimiento de Conocimiento en Bases de Datos. - Sesión 9 -

Fundamentos y Aplicaciones Prácticas del Descubrimiento de Conocimiento en Bases de Datos. - Sesión 9 - Fundamentos y Aplicaciones Prácticas del Descubrimiento de Conocimiento en Bases de Datos - Sesión 9 - Juan Alfonso Lara Torralbo 1 Índice de contenidos Actividad. Qué es un modelo de Data Mining Qué es

Más detalles

Manual del Usuario. Sistema de Help Desk

Manual del Usuario. Sistema de Help Desk Manual del Usuario Sistema de Help Desk Objetivo del Manual El siguiente manual tiene como objetivo proveer la información necesaria para la correcta utilización del sistema Help Desk. Describe los procedimientos

Más detalles

Introducción a la Firma Electrónica en MIDAS

Introducción a la Firma Electrónica en MIDAS Introducción a la Firma Electrónica en MIDAS Firma Digital Introducción. El Módulo para la Integración de Documentos y Acceso a los Sistemas(MIDAS) emplea la firma digital como método de aseguramiento

Más detalles

CRM Gestión de Oportunidades Documento de Construcción Bizagi Process Modeler

CRM Gestión de Oportunidades Documento de Construcción Bizagi Process Modeler Bizagi Process Modeler Copyright 2011 - Bizagi Tabla de Contenido CRM- Gestión de Oportunidades de Venta... 4 Descripción... 4 Principales Factores en la Construcción del Proceso... 5 Modelo de Datos...

Más detalles

Gestión de la Configuración

Gestión de la Configuración Gestión de la ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 1 ESTUDIO DE VIABILIDAD DEL SISTEMA... 2 ACTIVIDAD EVS-GC 1: DEFINICIÓN DE LOS REQUISITOS DE GESTIÓN DE CONFIGURACIÓN... 2 Tarea EVS-GC 1.1: Definición de

Más detalles

Capítulo 2. Técnicas de procesamiento digital de imágenes y reconocimiento de patrones.

Capítulo 2. Técnicas de procesamiento digital de imágenes y reconocimiento de patrones. Capítulo 2. Técnicas de procesamiento digital de imágenes y reconocimiento de patrones. 2.1 Revisión sistema reconocimiento caracteres [9]: Un sistema de reconocimiento típicamente esta conformado por

Más detalles

COPPEL MANUAL TÉCNICO MCC DE SISTEMAS PROGRAMACIÓN DESCRIPCIÓN DEL PROCESO DE ARQUITECTURA DE SOFTWARE

COPPEL MANUAL TÉCNICO MCC DE SISTEMAS PROGRAMACIÓN DESCRIPCIÓN DEL PROCESO DE ARQUITECTURA DE SOFTWARE COPPEL MANUAL TÉCNICO MCC DE SISTEMAS PROGRAMACIÓN DESCRIPCIÓN DEL PROCESO DE ARQUITECTURA DE SOFTWARE Creado en May/14 Objetivo: Contar con una guía de las actividades que se deben realizar en esta fase,

Más detalles

1.4.- D E S I G U A L D A D E S

1.4.- D E S I G U A L D A D E S 1.4.- D E S I G U A L D A D E S OBJETIVO: Que el alumno conozca y maneje las reglas empleadas en la resolución de desigualdades y las use para determinar el conjunto solución de una desigualdad dada y

Más detalles

PROCESO DE VENTA CONSULTIVA MÓDULO DE GESTIÓN DE OPORTUNIDADES DE NEGOCIO

PROCESO DE VENTA CONSULTIVA MÓDULO DE GESTIÓN DE OPORTUNIDADES DE NEGOCIO PROCESO DE VENTA CONSULTIVA MÓDULO DE GESTIÓN DE OPORTUNIDADES DE NEGOCIO Este módulo permite al ejecutivo comercial definir, calificar y documentar cada una de las oportunidades de negocio en las cuales

Más detalles

Utilización del sistema operativo GNU/ Linux en las netbooks

Utilización del sistema operativo GNU/ Linux en las netbooks Utilización del sistema operativo GNU/ Linux en las netbooks El sistema operativo es la pieza de software básica de un sistema, que permite manejar los recursos de la computadora, abrir programas, manejar

Más detalles

V i s i t a V i r t u a l e n e l H o s p i t a l

V i s i t a V i r t u a l e n e l H o s p i t a l V i s i t a V i r t u a l e n e l H o s p i t a l Manual de Restauración del PC Septiembre 2011 TABLA DE CONTENIDOS SOBRE EL SOFTWARE... 3 CONSIDERACIONES ANTES DE RESTAURAR... 4 PROCEDIMIENTO DE RECUPERACION...

Más detalles

Mejores prácticas para el éxito de un sistema de información. Uno de los problemas de información dentro de las empresas es contar con datos

Mejores prácticas para el éxito de un sistema de información. Uno de los problemas de información dentro de las empresas es contar con datos ANEXO VI. Mejores prácticas para el éxito de un sistema de información Uno de los problemas de información dentro de las empresas es contar con datos importantes del negocio y que éstos estén aislados

Más detalles

CAPÍTULO IV METODOLOGÍA PARA EL CONTROL DE INVENTARIOS. En este capítulo se presenta los pasos que se siguieron para la elaboración de un sistema de

CAPÍTULO IV METODOLOGÍA PARA EL CONTROL DE INVENTARIOS. En este capítulo se presenta los pasos que se siguieron para la elaboración de un sistema de CAPÍTULO IV METODOLOGÍA PARA EL CONTROL DE INVENTARIOS En este capítulo se presenta los pasos que se siguieron para la elaboración de un sistema de inventarios para lograr un control de los productos.

Más detalles

Workflows? Sí, cuántos quiere?

Workflows? Sí, cuántos quiere? Workflows? Sí, cuántos quiere? 12.11.2006 Servicios Profesionales Danysoft Son notables los beneficios que una organización puede obtener gracias al soporte de procesos de negocios que requieran la intervención

Más detalles

Base de datos II Facultad de Ingeniería. Escuela de computación.

Base de datos II Facultad de Ingeniería. Escuela de computación. Base de datos II Facultad de Ingeniería. Escuela de computación. Introducción Este manual ha sido elaborado para orientar al estudiante de Bases de datos II en el desarrollo de sus prácticas de laboratorios,

Más detalles

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y Capítulo VI Conclusiones En este capítulo abordaremos la comparación de las características principales y de las ventajas cada tecnología Web nos ofrece para el desarrollo de ciertas aplicaciones. También

Más detalles

Capítulo 5. Cliente-Servidor.

Capítulo 5. Cliente-Servidor. Capítulo 5. Cliente-Servidor. 5.1 Introducción En este capítulo hablaremos acerca de la arquitectura Cliente-Servidor, ya que para nuestra aplicación utilizamos ésta arquitectura al convertir en un servidor

Más detalles

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET 1 EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET La familia de protocolos TCP/IP fue diseñada para permitir la interconexión entre distintas redes. El mejor ejemplo es Internet: se trata

Más detalles

La explicación la haré con un ejemplo de cobro por $100.00 más el I.V.A. $16.00

La explicación la haré con un ejemplo de cobro por $100.00 más el I.V.A. $16.00 La mayor parte de las dependencias no habían manejado el IVA en los recibos oficiales, que era el documento de facturación de nuestra Universidad, actualmente ya es formalmente un CFD pero para el fin

Más detalles

QUERCUS PRESUPUESTOS MANUAL DEL USO

QUERCUS PRESUPUESTOS MANUAL DEL USO QUERCUS PRESUPUESTOS MANUAL DEL USO 2 Tabla de Contenido 1 Introducción 1 1.1 General 1 1.1.1 Que es Quercus Presupuestos? 1 1.1.2 Interfaz 1 1.1.3 Árbol de Navegación 2 1.1.4 Estructura de Datos de un

Más detalles

Sistemas de Sensación Segmentación, Reconocimiento y Clasificación de Objetos. CI-2657 Robótica M.Sc. Kryscia Ramírez Benavides

Sistemas de Sensación Segmentación, Reconocimiento y Clasificación de Objetos. CI-2657 Robótica M.Sc. Kryscia Ramírez Benavides Sistemas de Sensación Segmentación, Reconocimiento y Clasificación de Objetos CI-2657 Robótica M.Sc. Kryscia Ramírez Benavides Introducción La visión artificial, también conocida como visión por computador

Más detalles

EL MODELO DE DATOS RASTER

EL MODELO DE DATOS RASTER EL MODELO DE DATOS RASTER El modelo de datos raster, como señala Bosque (1992), es el modelo de datos complementario al modelo vectorial presentado anteriormente. Tiene como principal característica el

Más detalles

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS MANUAL DE USUARIO APLICACIÓN SYSACTIVOS Autor Edwar Orlando Amaya Diaz Analista de Desarrollo y Soporte Produce Sistemas y Soluciones Integradas S.A.S Versión 1.0 Fecha de Publicación 19 Diciembre 2014

Más detalles

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true I. FUNDAMENTOS 3. Representación de la información Introducción a la Informática Curso de Acceso a la Universidad

Más detalles

Hi-Spins. Hi-Spins - Novedades v.10.2.0 10.2.2

Hi-Spins. Hi-Spins - Novedades v.10.2.0 10.2.2 Hi-Spins Hi-Spins - Novedades 10.2.2 Tabla de contenido Hi-Spins Consulta Renovación de la presentación gráfica................................... 3 Visualización compacta de dimensiones en ventana de

Más detalles

Conciliación bancaria en CheqPAQ Cargado de estado de cuenta

Conciliación bancaria en CheqPAQ Cargado de estado de cuenta Conciliación bancaria en CheqPAQ Cargado de estado de cuenta Introducción Con la finalidad de mantenerte informado respecto a todos los cambios y mejoras de los productos de CONTPAQ i, ponemos a tu disposición

Más detalles

GeneXus BPM Suite X. Última actualización: 01 de Setiembre de 2008

GeneXus BPM Suite X. Última actualización: 01 de Setiembre de 2008 Última actualización: 01 de Setiembre de 2008 Copyright Artech Consultores S. R. L. 1988-2008. Todos los derechos reservados. Este documento no puede ser reproducido en cualquier medio sin el consentimiento

Más detalles