Trabajo IRC
Transcription
Trabajo IRC
Evaluación de clasificadores basados en redes de Función de Base Radial Carlos Muñoz Gahete Jaime Martín Jiménez Ingeniería de Telecomunicación Ingeniería de Telecomunicación Universidad Carlos III de Madrid Universidad Carlos III de Madrid [email protected] [email protected] RESUMEN En este documento se describe el análisis de un clasificador basado en redes de Función de Base Radial (RBF) implementado en el software Weka. Palabras clave Clasificación, redes neuronales, RBF, Weka. 1. INTRODUCCIÓN Las redes RBF se utilizan en la actualidad como máquinas capaces de resolver problemas de clasificación. Este tipo de redes presentan una característica muy útil para resolver problemas de clasificación debido a su carácter de actuación local, lo que las capacita para formar regiones de decisión complicadas. En este trabajo se va a simular un clasificador para tratar dos problemas diferentes: diagnóstico del síndrome eutiroideo y detector de spam (“correo basura”). 2. REDES NEURONALES Las redes neuronales artificiales, o simplemente redes neuronales, fueron descritas por primera vez a mediados del siglo XX, aunque hasta los años ochenta no se empezó a trabajar activamente en ellas. Representan una primera y muy simplificada aproximación al modelado de los sistemas neuronales biológicos. Suponen, por tanto, un paradigma alternativo de procesamiento de la información con respecto al funcionamiento de la computación actual. Las redes neuronales se basan en el aprendizaje de las características a través de muestras del problema, extraen las características del mismo y las almacenan en su estructura. El procedimiento por el cual la red es capaz de aprender se llama algoritmo de aprendizaje o entrenamiento. 2.1 Aplicaciones Las redes neuronales, y en concreto, las redes RBF se han aplicado a una amplia variedad de problemas. Aportan una serie de ventajas con respecto a otras aproximaciones. En muchos problemas no existe un procedimiento definido para conseguir la solución deseada. Las redes neuronales, debido a su Se permite la distribución, copia y modificación digital o en papel de este trabajo para uso docente siempre y cuando se cite expresamente a sus autores. Inteligencia en Redes de Comunicaciones, UC3M 2007 Copyright 2007 Muñoz Gahete, C., Martín Jiménez, J. capacidad para establecer cualquier relación entre la entrada y la salida a través de muestras de entrenamiento, son capaces de resolver problemas que, de otra manera, serían muy complicados de atacar. Además, se pueden adaptar automáticamente al problema cuando el entorno de operación cambia significativamente y resultan bastante rápidas en su funcionamiento, no así en su entrenamiento previo. Ejemplos prácticos de aplicación de redes neuronales de tipo RBF pueden encontrarse en campos como el tratamiento de imágenes, el reconocimiento de voz, la igualación adaptativa, la localización mediante radar, procesos industriales y diagnóstico médico. Las redes neuronales ofrecen una serie de ventajas y capacidades muy útiles, de las que destacan: No linealidad: una neurona tiene, en general, una respuesta no lineal, y por tanto, una interconexión de neuronas tiene a su vez una respuesta no lineal. Además, la arquitectura de la red se puede seleccionar en función de la aplicación, lo que les dota de gran versatilidad. Relación entrada-salida: las redes neuronales aprenden de ejemplos, planteados como un conjunto de muestras etiquetadas donde a cada entrada le corresponde una única salida, que termina por construir una relación entre la entrada y la salida del problema que esta tratando. El proceso por el cual se presenta una muestra escogida al azar y se modifican los pesos de la red para minimizar la diferencia entre la respuesta obtenida y la respuesta deseada, se denomina aprendizaje. Adaptabilidad: gracias a su capacidad para el continuo aprendizaje, son capaces de adaptarse a problemas no estacionarios en el tiempo, adaptando sus pesos al entorno que le rodea. Tolerancia a fallos: el alto grado de paralelismo les confiere, además de un gran rapidez de funcionamiento (que no de entrenamiento), una gran tolerancia a fallos y robustez ya que son sistemas distribuidos, y en caso de fallo de alguna neurona o pesos sinápticos, el daño se ve amortiguado por la presencia de neuronas y pesos vecinos. 2.2 Sobreentrenamiento Después de entrenar una red neuronal con un conjunto de muestras de entrenamiento, podemos conseguir que la red se ajuste muy bien a las muestras de entrenamiento pero debemos tener en cuenta que ese no es el objetivo. Lo aprendido en el entrenamiento debe tener aplicación fuera de éste, es decir, debe ser capaz de generalizar. Se dice que una red generaliza bien cuando calcula correctamente las relaciones entrada-salida para muestras no presentadas durante el entrenamiento. Este nuevo conjunto de muestras se denomina conjunto de test y debe estar formado por muestras representativas del problema que queremos resolver, al igual que el conjunto de entrenamiento. Si la red no generaliza correctamente, entonces la red se ha sobreajustado al conjunto de entrenamiento y está captado demasiado ruido de los datos. Normalmente, cuanto mayor número de muestras de entrenamiento, mejor representado estará el problema, aunque la capacidad de generalización se degrada cuando se produce un sobre-entrenamiento. En la figura 1 se muestra gráficamente el problema. 3. REDES DE FUNCIÓN DE BASE RADIAL Existe hoy en día una gran variedad de tipos de redes neuronales, cada una de ellas con una topología y unos métodos de aprendizaje diferentes. Entre las principales arquitecturas empleadas destacan el Perceptrón Multicapa (“Multi-Layer Perceptron” o MLP) y las redes de Función de Base Radial. Una de las características más importantes de ambas, es su capacidad de aproximación universal, ya que son capaces de establecer cualquier relación no lineal entre la salida y la entrada con el grado de precisión deseado. Nos vamos a limitar a revisar las redes de Función de Base Radial y sus algoritmos de entrenamiento. Estas redes cuentan con ciertas ventajas, en particular por su carácter de actuación local, que resulta muy eficaz para problemas de clasificación, ya que tienen facilidad para formar regiones de decisión complicadas. Las redes híbridas están formadas por una combinación de dos o más redes neuronales básicas. Una de las propuestas típicas es combinar una red autoorganizada con una red de aprendizaje supervisado. En el caso de una red neuronal RBF, tenemos 2 capas más la entrada. Figura 1: A la izquierda, un clasificador sobreentrenado, a la derecha, uno que generaliza mejor Para saber cuando detener el entrenamiento se utiliza otro conjunto de datos: el conjunto de validación. Está formado por muestras representativas del problema que son evaluadas por la red en cada paso del entrenamiento. Cuando el error de la red con el conjunto de validación repunta, entonces debemos detener el entrenamiento. La primera es una capa autoorganizada similar a un SOFM (“SelfOrganising Feature Map” o Mapa Autoorganizativo de Características). Su función es calcular la similitud entre la entrada y el peso representativo de cada neurona. Esta medida de la similitud se pasa a la segunda capa, que contiene unos pesos al estilo de un perceptrón, que sumados producen la/s salida/s de la red. En general, las RBF pueden entrenarse con procedimientos más rápidos que las redes de perceptrón multicapa. En una primera etapa del entrenamiento se determinan los parámetros que gobiernan las funciones de base que corresponden a cada neurona, usando métodos relativamente rápidos como los algoritmos de aprendizaje no supervisado. La segunda etapa implica determinar los pesos de la capa final, que requiere la solución de un problema lineal, y por tanto, también es rápida. Figura 2: Evolución del error durante el entrenamiento de una red neuronal Figura 3: Estructura de una red RBF En el caso de utilizar una RBF como clasificador, partimos de un conjunto de datos {xi} y sus correspondientes etiquetas {di} y nuestro objetivo es determinar la función de F que cumpla la condición: F(xi)= di Si consideramos un conjunto M de funciones base φ no lineales que toman la forma φ(||x-ci||) para tomar una medida de la similitud de los datos con los pesos de la manera que hemos descrito antes, podemos expresar la función F(xi) como una combinación ponderada de las funciones base φ(), siendo la gaussiana la más común: 3.2.1 Algoritmo K-medias El algoritmo k-medias se engloba en los métodos de cuantificación vectorial (VQ). Estos métodos consiguen una clasificación de los datos de entrada en clases, realizando un agrupamiento o clustering de los datos. Cada clase se representa por un centro y las muestras asignadas a ese centro. Un manera de conseguir una selección autoorganizada de centros de manera sencilla, sin recurrir a algoritmos de tipo neuronal como SOFM, se puede lograr con el popular algoritmo de kmedias. El procedimiento que sigue este algoritmo es el siguiente: Inicialización: se obtiene una primera librería o conjunto de centros iniciales ci0 Clasificación: se asigna cada muestra al centro más cercano. donde || || es la norma, que suele ser euclídea, y ci son los centros de la RBF. Se necesitan tres parámetros principales para construir una RBF: - Los centros o centroides ci. - La dispersión σ. - Los pesos de la salida ω. Los parámetros de una red RBF puede obtenerse mediante diferentes métodos; vamos a resumir algunos de ellos. 3.1 Determinación de los centros 3.1.1 Selección aleatoria El método más sencillo para determinar los centros de la RBF consiste en seleccionarlos aleatoriamente entre las muestras de entrenamiento. Este método sólo es eficaz si el número de centros es suficientemente grande, ya que sólo en ese caso podrá cubrirse el espacio generado por todos los datos. Actualización: se recalcula una nueva librería cik usando la media de las muestras identificadas con cada centro ci para que minimice la distorsión de clasificación. Terminación: si el error relativo de la librería cik con respecto al de la anterior cik-1 es menor que determinada cota se detiene el entrenamiento; de lo contrario se vuelve al segundo paso. Una limitación del algoritmo de agrupamiento k-medias es que sólo puede conseguir una solución óptima local que depende de la colocación inicial de los centros. De esta manera, parte de los centros iniciales pueden malgastarse en zonas del espacio donde halla pocos datos, sin posibilidad de moverse a nuevos lugares donde sean más necesarios. El resultado es que posiblemente se construya una red de tamaño más grande, es decir, con más centros (y en consecuencia más pesos) a los necesarios. 3.2.2 Cuantificación Vectorial con Aprendizaje Un método muy común es el algoritmo de k-medias, por su sencillez y robustez. Para ello, se dividen los datos de entrenamiento según su clase y se aplica el algoritmo de k-medias a cada clase por separado. Hemos analizado el algoritmo k-medias que realiza un aprendizaje no supervisado. Si queremos utilizar una red SOFM como clasificador, se puede añadir un entrenamiento supervisado tras la autoorganización, que realice una cuantificación vectorial con las etiquetas de las muestras. Para definir la frontera de decisión entre clases se usan los métodos de Cuantificación Vectorial por Aprendizaje o “Learning Vector Quantization. Estas estrategias asignan cada centro de la librería a una clase por medio de una etiqueta. Las regiones de las clases en el espacio se definen mediante una comparación simple de cada muestra con los centros; la etiqueta del centro más cercano permite clasificar a la muestra. Existen 3 variantes: LVQ1, LVQ2 y LVQ3. Partiendo de unos centros obtenidos, por ejemplo, con k-medias se actualizan los pesos siguiendo unas reglas que acercan el centro a la muestra si pertenece a la misma clase y lo aleja en caso contrario. La idea es poner la librería de centros lejos de la superficie de decisión para marcar la frontera entre clases más fielmente. Los algoritmos LVQ2 y LVQ3 añaden además una venta para intentar mejorar la definición de la frontera. El algoritmo LVQ1 suele dar unos resultados aceptables y supone una buena aproximación al clasificador de Bayes. Otros algoritmos de cuantificación vectorial, como los Mapas de Kohonen, el algoritmo FSCL (“Frecuency Sensitive Competitive Learning”) o algoritmo del Gas Neural Creciente son de tipo neuronal y requieren mayor complejidad de implementación. 3.3 Determinación de los parámetros de dispersión σi De manera similar podemos seleccionar los centros aleatoriamente, según una distribución uniforme, en la hiperesfera más pequeña que contenga todos los datos del conjunto de entrenamiento. 3.2 Selección autoorganizada Por supuesto, hay maneras más refinadas de seleccionar centros que las anteriores, como los métodos de cuantificación vectorial (VQ). Gracias a ellos, se consigue una autoorganización de los centros en torno a aquellas zonas del espacio de los datos de entrada donde las muestras de entrenamiento presentan mayor densidad. El parámetro de dispersión σ, que corresponde a la desviación estándar de las gaussianas de las RBF, define la zona de influencia de los centros de las mismas, en función de una medida de la distancia los datos a los centros: ||x-ci|| Este parámetro, que puede ser o no igual para cada centro de la RBF, influye en la calidad de la aproximación: una σ muy pequeña puede conseguir que la función de aproximación F() se ecuentre demasiado dispersa, mientras que una σ demasiado grande podría diluir el rango de acción de los centros, que daría lugar a la pérdida de la aproximación de carácter local que caracteriza a las redes RBF. Un método comúnmente utilizado es el de estimar σ como la distancia máxima entre los N centros: σ = max{ ||xi-cj}, 4. PRUEBAS EXPERIMENTALES A continuación vamos a utilizar el algoritmo RBF para realizar una clasificación de dos conjuntos de datos distintos, y poder comprobar experimentalmente algunas de las características de este algoritmo. Las simulaciones se han realizado con el programa Weka, una colección de algoritmos de aprendizaje máquina para minería de datos escrito en Java y desarrollado por la Universidad de Waikato en Nueva Zelanda. El programa es software libre y puede descargarse de la pagina: http://www.cs.waikato.ac.nz/ml/weka/ 1≤ i,j≤ N Con este método todas las gaussianas de la RBF tienen el mismo valor de σ. La anterior forma no tiene en cuenta la diferente dispersión que pueden tomar las funciones base de la RBF. Un método sencillo de obtener una estimación razonable y que funciona razonablemente bien, es el que considera el número de datos asignados a cada centro: donde x(n) son las muestras asociadas al centro ci y Ni es la cantidad de ellas. 3.3.1 Determinación de los pesos de la capa de salida Una vez determinados los parámetros anteriores, el siguiente paso es calcular los pesos de la capa de salida, cuya principal característica es su linealidad, al contrario que la capa anterior. Se utiliza un entrenamiento supervisado. Un procedimiento muy común para hallar los pesos es utilizar algún procedimiento de búsqueda como el popular algoritmo de gradiente, que representa una generalización del algoritmo LMS (“Least-Mean-Square”). Una descripción del algoritmo se puede encontrar en [2]. En un primer paso, definimos una función de coste instantáneo, es decir, para cada iteración del algoritmo: Figura 4: Weka con los datos cargados para el conjunto de datos de síndrome eurotiroideo Del total de los datos, el conjunto de entrenamiento es el 33 %. El resto se utiliza como conjunto de test. Se normalizan todos los datos numéricos a media cero y varianza unidad para mejorar el entrenamiento. Los centroides de las gaussianas de la RBF se obtiene mediante el algoritmo k-medias. Se ajustan gaussianas simétricas a los datos en cada cluster. Para los pesos de la capa de salida se usa regresión lineal. Hemos evaluado la red neuronal como clasificador con diferente número de centroides para ver como evoluciona la probabilidad de acierto conforme aumenta el número de centroides, y escoger el mejor resultado. También se ha probado a cambiar el parámetro de la desviación típica mínima de las gaussianas. donde N es el tamaño del conjunto de muestras de entrenamiento, y ej es el error como la diferencia entre la salida deseada y el resultado obtenido con los pesos actuales. La salida de la red se pasa una función del tipo tangente hiperbólica para obtener un rango de valores de salida entre {-1,1} Hemos simulado con dos conjuntos de datos diferentes: una base de datos con personas afectadas o no por el síndrome eutiroideo y una base de datos con correo basura (spam). Los datos se han obtenido de: http://www.hakank.org/weka/ 4.1 y se calcula el gradiente de ζ con respecto a los parámetros de la red RBF para minimizar el coste ζ. Síndrome eutiroideo El síndrome eutiroideo es un trastorno no tiroideo caracterizado por anomalías en los niveles hormonales y en los hallazgos de las pruebas funcionales relacionadas con la glándula tiroidea. El trastorno se presenta en pacientes con enfermedad sistémica grave. La base de datos que vamos a analizar contiene 3163 instancias, de las cuales vamos a utilizar 1043 como conjunto de entrenamiento, y 2120 como conjunto de test. Cada instancia está caracterizada por 26 atributos. Después de entrenar con Weka distintas redes RBF aumentando el número de centroides en cada una de ellas, y verificando la tasa de acierto con el conjunto de test, los resultados que obtenemos son los siguientes, donde el mejor resultado ha sido marcado en negrita. También hemos anotado el tiempo que empleaba Weka en entrenar la red. 94 Probabilidad de acierto (%) Los atributos que contiene este conjunto de datos de cada paciente están relacionados con el sexo, la edad, y resultados de diversos análisis médicos que se piensa que pueden ser significativos para el diagnóstico del síndrome eutiroideo. 95 93 92 91 90 89 0 20 40 60 Tabla 1. Resultados para el conjunto de datos de síndrome Número de Centroides Probabilidad de Acierto (%) Tiempo de entrenamiento (seg) 2 94.71 2.22 5 94.62 8.16 10 94.52 11.36 15 94.29 15.06 20 94.292 24.63 25 93.67 31.72 30 94.43 35.41 35 93.77 41.89 40 94.15 45.48 45 92.50 48.13 50 92.97 51.39 60 92.26 72.55 70 92.45 87.02 80 90.23 108.92 90 91.08 120.67 100 91.69 142.1 125 92.16 175.26 150 91.32 281.47 175 91.50 326.54 200 89.71 376.03 La representación gráfica de estos resultados se muestra en la figura 5. 140 160 180 200 Figura 5: Probabilidad de acierto para el conjunto de datos síndrome eurotiroideo con σmin=0.1 Como podemos observar, el mejor resultado se obtiene para una red RBF con 2 centroides, para el que obtenemos una probabilidad de acierto del 94.71%. A partir de los 40 centroides los efectos del sobreentrenamiento son muy evidentes, bajando incluso la tasa de acierto del 90% para el caso de 200 centroides. Vamos a representar ahora el tiempo de entrenamiento de la red RBF respecto al número de centroides utilizados (figura 6). 400 350 Tiempo empleado para entrenar (seg) eutiroideo con σmin=0.1 80 100 120 Número de centroides 300 250 200 150 100 50 0 0 20 40 60 80 100 120 Número de centroides 140 160 180 200 Figura 6: Tiempo empleado para el entrenamiento de la red para el caso de síndrome eutiroideo Como vemos el tiempo de cómputo va creciendo según vamos añadiendo más centroides, y en general es bastante elevado. Repetimos el entrenamiento para una desviación típica mínima de 0.2. Tabla 2. Resultados para el conjunto de datos de síndrome eurotiroideo con σmin=0.2 Probabilidad de Acierto (%) Tiempo de entrenam. (seg) 2 94.5755 1.88 5 94.6698 6.77 10 94.9528 10.33 15 93.7264 12.28 20 93.3019 18.51 25 93.3962 28.87 30 94.2453 35.2 35 93.7736 48.47 40 93.1132 45.8 45 94.0566 60.98 50 93.4906 56.53 60 93.1604 84.5 70 92.4057 135.13 80 91.7453 122.11 90 92.1226 121.59 100 91.4623 140.85 125 92.0283 139.52 150 92.6415 209.29 175 90.7075 179.1 200 91.3679 210.81 200 150 100 50 0 0 20 40 60 80 100 120 Número de centroides 140 160 180 200 Figura 8: Tiempo empleado para el entrenamiento de la red para el caso de síndrome eurotiroideo 4.2 Correo basura (Spam) El correo basura o Spam son mensajes no solicitados, habitualmente de tipo publicitario, enviados en cantidades masivas. Nuestro objetivo es detectar este tipo de correo a través de ciertos indicadores del contenido del mensaje para filtrarlo y eliminarlo. La base de datos que vamos a analizar contiene 4601 instancias, de las cuales vamos a utilizar 1518 como conjunto de entrenamiento, y 3083 como conjunto de test. Cada instancia esta caracterizada por 58 atributos. Para poder distinguir los mensajes de correo electrónico que nos interesan del correo basura se han tomado como atributos ciertas características del mensaje que a priori nos pueden ayudar a distinguir uno de otro. La mayor parte de estos atributos contiene la frecuencia de aparición de ciertas palabras dentro del correo. Por ejemplo si aparece nuestro nombre o alguno de nuestros datos personales es probable que el correo sí que vaya dirigido realmente a nosotros. 95 94.5 94 Probabilidad de acierto (%) 250 Tiempo empleado para entrenar (seg) Número de Centroides En este caso vemos como cambiando la desviación típica mínima a 0.2 la probabilidad de acierto aumenta ligeramente. El mejor resultado se produce ahora para 10 centroides. 93.5 Después de entrenar con Weka distintas redes RBF aumentando el número de centroides en cada una de ellas, y verificando la tasa de acierto con el conjunto de test, los resultados que obtenemos son los siguientes, donde el mejor resultado ha sido marcado en negrita. 93 92.5 92 91.5 91 90.5 Tabla 3. Resultados para el conjunto de datos de spam con σmin=0.1 0 20 40 60 80 100 120 Número de centroides 140 160 180 200 Figura 7: Probabilidad de acierto para el conjunto de datos síndrome eurotiroideo con σmin=0.2 Núm. Centroides Prob. Acierto (%) 2 80.57 5 79.24 10 78.85 15 81.96 20 84.04 25 Tabla 4. Resultados para el conjunto de datos de spam con σmin=0.2 Núm. Centroides Prob Acierto (%) Tiempo de entrenam. (seg) 84.91 2 78.9491 10.72 30 85.92 5 78.3652 23.09 35 86.47 10 80.9925 64.67 40 86.50 15 80.5384 92.9 50 86.53 20 83.036 66.36 60 84.82 25 85.2741 100.57 70 84.10 30 84.4307 203.2 80 85.37 35 86.0201 169.06 100 84.69 40 86.604 285.2 50 85.3714 376.02 60 83.3928 354.79 70 83.4577 337.6 80 83.4577 526.95 100 85.6958 445.36 La representación gráfica de estos resultados se muestra en la figura 9. 87 86 84 87 83 86 82 85 81 80 79 78 0 10 20 30 40 50 60 Número de centroides 70 80 90 100 Probabilidad de acierto (%) Probabilidad de acierto (%) 85 84 83 82 81 80 Figura 9: Probabilidad de acierto para el conjunto de datos spam con σmin=0.1 En esta ocasión la mejor probabilidad de acierto no se consigue para 2 centroides, sino que va aumentando a medida que ponemos más centroides en el clasificador hasta alcanzar el máximo para 50 centroides. En torno a este número de centroides estará el clasificador RBF óptimo ya que a partir de esta cifra la probabilidad de acierto comienza a disminuir debido al sobreentrenamiento de la red. 79 78 0 10 20 30 40 50 60 Número de centroides 70 80 90 100 Figura 10: Probabilidad de acierto para el conjunto de datos spam con σmin=0.2 En este caso al cambiar la desviación típica a 0.2 también obtenemos un pequeño aumento de la probabilidad de acierto, obteniéndose el mejor resultado para 40 centroides. 600 • Las redes RBF consiguen un resultado óptimo para cierto número de centroides a partir del cual la red comienza a estar sobreentrenada con lo que no generaliza bien sobre el conjunto de datos de test. • Se pueden conseguir mejores resultados ajustando otros parámetros de la red RBF como la desviación típica mínima de los centroides. • La clasificación de los datos se realiza de forma muy eficiente, sin embargo el entrenamiento de la red lleva un tiempo considerable, que va creciendo conforme aumentamos el número de centroides de la red. • Weka utiliza el algoritmo k-medias para seleccionar los centroides. La elección de centroides es muy importante para que la red RBF pueda clasificar correctamente. Una mala elección de centroides podría llevarnos a una probabilidad de error demasiado alta. • La aleatorización de centroides se realiza a partir de una semilla que le pasamos como parámetro. Podríamos mejorar el resultado repitiendo el entrenamiento con varias semillas y obteniendo la media de todos los resultados. Tiempo empleado para entrenar (seg) 500 400 300 200 100 0 0 10 20 30 40 50 60 Número de centroides 70 80 90 100 Figura 11: Tiempo empleado para el entrenamiento de la red para el caso de spam 5. • • CONCLUSIONES Las redes RBF son una herramienta muy útil a la hora de resolver problemas de clasificación como el diagnóstico de ciertas enfermedades, o la detección de correo no deseado. Es necesario un conjunto de datos de entrenamiento para entrenar la red y generar los pesos; y un conjunto de datos de test para comprobar las prestaciones de la red entrenada. 6. BIBLIOGRAFÍA [1] Apuntes de Inteligencia en Redes de Comunicaciones, Universidad Carlos III de Madrid. [2] Apuntes de Tratamiento Digital de la Señal, Universidad Carlos III de Madrid. [3] Martín, J. Crecimiento y poda de RBFs mediante selección de muestras y centros, Proyecto Fin de Carrera, Universidad Carlos III de Madrid, 2005.