Optimización Continua Basada en
Algoritmos de Estimación de
Regresión
Índice general
1. Introducción 5
1.1. Motivación . . . 5
1.2. Objetivos . . . 6
2. Estado del Arte 7 2.1. Algoritmos Evolutivos . . . 7
2.1.1. Programación evolutiva . . . 7
2.1.2. Estrategias evolutivas . . . 8
2.1.3. Algoritmos genéticos . . . 9
2.1.3.1. Introducción . . . 9
2.1.3.2. Terminología . . . 10
2.1.3.3. Esquema general del algoritmo . . . 11
2.1.3.4. Ventajas e inconvenientes . . . 11
2.1.4. Algoritmos EDA . . . 12
2.1.4.1. Introducción . . . 12
2.1.4.2. Esquema general del algoritmo . . . 13
2.1.4.3. Modelo gráfico probabilístico . . . 13
2.1.4.4. Tipos de modelos probabilísticos . . . 14
2.1.4.5. UMDAc . . . 15
2.1.4.6. MIMICc . . . 16
2.2. Regresión . . . 18
2.2.1. Regresión lineal . . . 18
2.2.1.1. Regresión lineal simple . . . 19
2.2.1.2. Regresión lineal múltiple . . . 22
2.2.1.3. Regresión penalizada L1 y L2 . . . 23
3. Desarrollo 26 3.1. Diseño del algoritmo . . . 26
3.1.1. Descripción general . . . 26
3.1.2. Simulación de nuevas poblaciones . . . 28
3.1.2.1. Método del desplazamiento Gaussiano . . . 28
3.2. Implementación del algoritmo . . . 33
3.2.1. R . . . 33
3.2.1.1. Introducción . . . 33
Índice general Índice general
3.2.2. Paquete penalized . . . 35
3.2.2.1. Introducción . . . 35
3.2.2.2. Elección deλ . . . 36
3.2.2.3. Estandarización . . . 36
3.2.2.4. Genes sin penalizar . . . 37
3.2.3. Detalles de implementación . . . 38
3.2.3.1. cera.R . . . 38
3.2.3.2. gaussian_offset.R . . . 48
3.2.4. Funcionamiento práctico . . . 55
3.2.4.1. Requisitos previos . . . 55
3.2.4.2. Cómo ejecutar el algoritmo en R . . . 55
3.2.4.3. Ejemplos de funcionamiento . . . 57
4. Resultados 65 4.1. Batería de funciones . . . 66
4.1.1. Problema de Ackley . . . 67
4.1.2. Problema de Branin . . . 68
4.1.3. Problema de Griewank . . . 69
4.1.4. Problema Quartic con ruido . . . 70
4.1.5. Problema de Schwefel 1.2 . . . 70
4.1.6. Problema de Schwefel 2.21 . . . 71
4.1.7. Problema de Schwefel 2.22 . . . 71
4.1.8. Problema de Six-Hump Camel-Back . . . 72
4.1.9. Problema de Rastrigin . . . 73
4.1.10. Problema de Rosenbrock . . . 74
4.1.11. Problema Generalizado de Schwefel . . . 75
4.1.12. Problema de la Esfera . . . 76
4.1.13. Problema del Escalón . . . 77
4.2. Resultados experimentales . . . 77
4.2.1. Datos de entrada . . . 78
4.2.2. Resultados . . . 79
4.2.2.1. Tamaño población 300, selección 50 individuos . . . . 80
4.2.2.2. Tamaño población 400, selección 200 individuos . . . 83
4.2.2.3. Tamaño población 1200, selección 300 individuos . . 86
4.2.3. Tests estadísticos para comparar algoritmos . . . 88
4.2.3.1. Test de Mann-Whitney . . . 90
4.2.3.2. Resultado del test de Mann-Whitney . . . 92
5. Conclusiones 94 A. Cómo crear CERAS en R 96 A.1. Herramientas . . . 96
Índice general Índice general
Bibliografía 102
Índice de figuras
2.1. Ejemplo de un modelo gráfico para X = (A, B, C, D) . . . 14
2.2. Diagrama de dispersión generado con R . . . 21
2.3. Recta de regresión generada con R . . . 21
2.4. Interpretación geométrica de la regresión lineal múltiple . . . 23
2.5. Interpretación geométrica de lasso . . . 25
3.1. Diagrama de flujo del algoritmo . . . 29
3.2. Visión esquemática del funcionamiento de R . . . 34
3.3. Visión esquemática de una función en R . . . 35
3.4. Población de 9 individuos con sus respectivos genomas . . . 37
3.5. Diagrama flujo alto nivel del núcleo del algoritmo . . . 38
3.6. Diagrama de flujo detallado de cera.R. . . 47
3.7. Diagrama de flujo de alto nivel del método de simulación . . . 48
3.8. Diagrama de flujo detallado de gaussian_offset.R . . . 54
3.9. Consultar variable entorno R_HOME . . . 56
3.10. Comando source . . . 56
3.11. Instalación de paquetes a partir de archivos locales (versión Windows) 57 3.12. Carga del paquete ceras . . . 57
3.13. Ejecución de Branin sin interacciones . . . 58
3.14. Población obtenida en la generación 17 . . . 59
3.15. Ejecución de grado 2 no convergente . . . 60
3.16. Ejecución de grado 2 convergente . . . 61
3.17. Argumento TRACE: Individuos seleccionados para penalized . . . 62
3.18. Argumento TRACE: Modelo de regresión devuelto por penalized . . . 63
3.19. Argumento TRACE: Población evolucionada . . . 63
3.20. Coeficientes β con interacciones grado 2 . . . 64
4.1. Ejemplo de función “trampa” . . . 66
4.2. Representación gráfica del problema de Ackley . . . 67
4.3. Representación gráfica del problema de Branin . . . 68
4.4. Representación gráfica del problema de Griewank (con d= 4000) . . . 69
4.5. Representación gráfica del problema de Six-Hump . . . 72
4.6. Representación gráfica del problema de Rastrigin . . . 73
4.7. Representación gráfica del problema de Rosenbrock . . . 74
4.8. Representación gráfica del problema generalizado de Schwefel . . . 75
Índice de figuras Índice de figuras
A.1. Variables de entorno . . . 97
A.2. Estructura de directorios tras aplicar package.skeleton . . . 98
A.3. Generación del paquete binario . . . 99
A.4. Estructura de directorios del paquete binario . . . 100
Índice de cuadros
2.2. Datos mensuales de producción y costos de operación . . . 20
3.1. Incremento ∆ para un problema de maximización . . . 31
3.2. Incremento ∆ para un problema de minimización . . . 31
3.3. Interfaz de la función cera . . . 40
3.4. Interfaz de la función powerSet . . . 41
3.5. Interfaz de la función extendGenome . . . 41
3.6. Interfaz de la función hasConstantColumn . . . 42
3.7. Interfaz de la función isConstantMatrix . . . 42
3.8. Interfaz de la función loadProblem . . . 43
3.9. Interfaz de la función getGenomeRange . . . 43
3.10. Interfaz de la función makeInitialIndividual . . . 44
3.11. Interfaz de la función createInitialPopulation . . . 44
3.12. Interfaz de la función selectIndividuals . . . 45
3.13. Interfaz de la función improvePopulation . . . 46
3.14. Interfaz de la función gaussian_offset . . . 49
3.15. Interfaz de la función global_sign . . . 50
3.16. Interfaz de la función getMeansOfColumns . . . 50
3.17. Interfaz de la función calculateDeltas . . . 51
3.18. Interfaz de la función improveGen . . . 51
3.19. Interfaz de la función improveMultipleGenes . . . 52
3.20. Interfaz de la función improveIndividual . . . 52
3.21. Interfaz de la función improveUsingInteractions . . . 53
4.1. Problema de Ackley . . . 67
4.2. Problema de Branin . . . 68
4.3. Problema de Griewank . . . 69
4.4. Problema Quartic con ruido . . . 70
4.5. Problema de Schwefel 1.2 . . . 70
4.6. Problema de Schwefel 2.21 . . . 71
4.7. Problema de Schwefel 2.22 . . . 71
4.8. Problema de Six-Hump Camel-Back . . . 72
4.9. Problema de Rastrigin . . . 73
4.10. Problema de Rosenbrock . . . 74
4.11. Problema Generalizado de Schwefel . . . 75
Índice de cuadros Índice de cuadros
4.13. Problema del Escalón . . . 77
4.14. Resultados para Pob=300, Sel=50, Elitismo=Sí . . . 80
4.15. Error con respecto a f(x∗) (Pop=300,Sel=50,Elitismo=Sí) . . . 80
4.16. Resultados para Pob=300, Sel=50, Elitismo=No . . . 81
4.17. Error con respecto a f(x∗) (Pop=300,Sel=50,Elitismo=No) . . . 81
4.18. Comparación entre algoritmos (Pop=300,Sel=50) . . . 82
4.19.Problemas optimizados por debajo del error especificado (Pop=300, Sel=50) . . . 82
4.20. Resultados para Pob=400, Sel=200, Elitismo=Sí . . . 83
4.21. Error con respecto a f(x∗) (Pop=400,Sel=200,Elitismo=Sí) . . . 83
4.22. Resultados para Pob=400, Sel=200, Elitismo=No . . . 84
4.23. Error con respecto a f(x∗) (Pop=400,Sel=200,Elitismo=No) . . . 84
4.24. Comparación entre algoritmos (Pop=400,Sel=200) . . . 85
4.25.Problemas optimizados por debajo del error especificado (Pop=400, Sel=200) . . 85
4.26. Resultados para Pob=1200, Sel=300, Elitismo=Sí . . . 86
4.27. Error con respecto a f(x∗) (Pop=1200,Sel=300,Elitismo=Sí) . . . 86
4.28. Resultados para Pob=1200, Sel=300, Elitismo=No . . . 87
4.29. Error con respecto a f(x∗) (Pop=1200,Sel=300,Elitismo=No) . . . . 87
4.30. Comparación entre algoritmos (Pop=1200,Sel=300) . . . 88
4.31.Problemas optimizados por debajo del error especificado (Pop=1200, Sel=300) . 88 4.32. Combinación de algoritmos posibles . . . 89
4.33. Puntuación de algoritmos . . . 92
1. Introducción
1.1.
Motivación
La computación evolutiva [4] es, como disciplina reconocida, relativamente reciente. Se adoptó el término en el año 1.991, y representa un esfuerzo por aunar las diferen-tes técnicas desarrolladas por los investigadores para simular ciertos aspectos de la evolución. Así pues, estas técnicas entre las que se hallan las basadas en programa-ción evolutiva, estrategias evolutivas y algoritmos genéticos poseen una característica metafórica común sacada de la propia naturaleza: los individuos que forman una determinada población varían aleatoriamente, compiten entre sí, se seleccionan y se reproducen para dar lugar a nuevas poblaciones.
Esto es, en esencia, en lo que consiste la evolución. Y cada uno de los 4 procesos mencionados anteriormente, tienen lugar como resultado inevitable de la evolución, sea ésta natural o no.
La evolución es un proceso de optimización, no teniendo ésta por qué ser perfecta, pe-ro sí lo suficientemente precisa como para dar respuesta a los ppe-roblemas particulares que se le pueden presentar a un individuo en un determinado entorno. De aquí que sea natural describir la evolución, dentro de la computación evolutiva, en términos de un algoritmo que sea capaz de resolver problemas complejos de optimización. Las téc-nicas clásicas basadas en descenso por el gradiente, proceso de escalada determinista y búsqueda aleatoria (sin herencia) han proporcionado resultados poco satisfacto-rios en su aplicación sobre problemas de optimización no lineales. En cambio, estos problemas son los que aparentemente son capaces de ser resueltos satisfactoriamente mediante técnicas basadas en algoritmos evolutivos, siendo éste el motivo por el que la computación evolutiva ha suscitado un gran interés durante los últimos años.
El motivo de este trabajo de fin de carrera es el de desarrollar una librería que permita la resolución de problemas de optimización no lineales mediante un enfoque basado en algoritmos evolutivos, empleando para ello un método de resolución basado en regresión regularizada. La librería se ha implementado en R, que es un lenguaje y entorno para computación estadística.
1.2. OBJETIVOS CAPÍTULO 1. INTRODUCCIÓN
a los ya implementados y creando una interfaz fácilmente ampliable para permitir la implementación de nuevas funcionalidades de cara a futuras líneas de investigación.
1.2.
Objetivos
Los objetivos del presente proyecto de fin de carrera son los siguientes:
Desarrollar un algoritmo que permita:
• Resolver problemas de optimización no lineales en dominios continuos em-pleando un método de resolución basado en algoritmos de estimación de distribuciones fundamentadas en regresión regularizada con penalización L1 (con interacción entre variables).
• Resolver problemas de optimización no lineales en dominios continuos em-pleando un método de resolución basado en algoritmos de estimación de distribuciones fundamentadas en regresión regularizada con penalización L2 (sin interacción entre variables).
Evaluar el rendimiento del algoritmo implementado sobre una batería de pro-blemas de optimización de funciones no lineales en dominios continuos.
2. Estado del Arte
2.1.
Algoritmos Evolutivos
Los trabajos en computación evolutiva [4] dieron comienzo a finales de los años 50 y fueron llevados a cabo por investigadores como Friedberg [12, 13], Box [5] y Bre-mermann [7] entre otros. El campo permaneció prácticamente en desconocimiento durante tres décadas debido en parte a la “ausencia de una plataforma computacio-nal poderosa y defectos metodológicos de los primeros métodos” (Fogel). Los trabajos de Fogel [10], Schwefel [27] y Holland [15] serían los encargados de cambiar lentamente esta situación.
El término“algoritmos evolutivos” es empleado para describir sistemas de resolución de problemas de optimización o búsqueda mediante computador que emplean modelos computacionales de algún conocido mecanismo de evolución como elemento clave en su diseño e implementación.
Dentro de los algoritmos evolutivos existen tres grandes ramas: la programación evo-lutiva, las estrategias evolutivas y los algoritmos genéticos; destacando dentro de esta última la programación genética propuesta por Koza [18] en 1992 .
2.1.1.
Programación evolutiva
La programación evolutiva fue ideada por Lawrence J. Fogel en 1960 durante su estan-cia en la Fundación Nacional de la Cienestan-cia (NSF). En aquel entonces la inteligenestan-cia artificial se centraba en heurísticas y simulación de redes neuronales primitivas. Fogel tenía claro que esas aproximaciones tenían limitaciones dado que intentaban simular el comportamiento del ser humano en lugar del proceso esencial que produce mejoras en el intelecto de un individuo: la evolución.
procedi-2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE
miento fue aplicado con éxito en problemas de predicción, identificación y control automático.
A mediados de los 80 se extendió el procedimiento para manejar representaciones alternativas, incluyendo listas ordenadas para el problema del viajante, y vectores de números reales para optimización de funciones continuas. Esto sirvió para otras aplicaciones tales como planificación, selección de conjuntos optimales, y entrena-miento de redes neuronales así como para realizar comparaciones con otros métodos de evolución simulada.
El esquema genérico se asimila a una estrategia evolutiva (µ+µ) (ver sección 2.1.2) donde se aplica una mutación de tipo estadístico (“gaussiana”) sobre µ individuos y la selección se realiza mediante torneo. A principios de los 90 se realizaron una serie de esfuerzos para organizar conferencias anuales sobre programación evolutiva, teniendo lugar la primera en el año 1992. Esta conferencia mostró una gran variedad de aplicaciones en campos como la robótica, planificación de rutas, entrenamiento y diseño de redes neuronales y control automático entre otros. Se produjeron una serie de contactos entre las comunidades propulsoras de la programación evolutiva y las de las estrategias evolutivas justo antes de esta primera conferencia, poniendo de relieve las semejanzas entre ambos enfoques.
2.1.2.
Estrategias evolutivas
En 1964, tres estudiantes de la Universidad Técnica de Berlín (Bienert, Rechenberg y Schwefel) se propusieron construir un robot de investigación que pudiera realizar una serie de experimentos manipulando, iterativamente, un cuerpo flexible colocado a la salida de un túnel de viento a fin de minimizar su arrastre. Se llevó a cabo un primer experimento empleando una especie de plato bidimensional. De la estrategia de búsqueda iterativa ideada - aplicada manualmente en primer lugar y posteriormente llevada a cabo mediante un robot construido por Peter Bienert - se esperaba que terminase colocando el plato de forma que sobre éste actuase el mínimo arrastre posible. Pero no llegó a funcionar, puesto que tanto empleando una estrategia basada en una única variable en el tiempo así como por gradiente discreto siempre se quedaba atascado en un mínimo local: un pliego en forma de S del plato.
2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE
1. En el momento t=0 se genera una población con un único individuo.
2. Se genera una población con un único descendiente mediante un operador de mutación.
3. De los dos individuos de la población, el descendiente reemplaza a su progenitor si y sólo si es más apto que éste; en caso contrario, el descendiente es eliminado y la población permanece sin cambios. Si se satisface la condición de parada se termina. En caso contrario se vuelve al paso 2.
Posteriormente, en torno a 1975, Schwefel [28] formula una estrategia evolutiva mejo-rada, denominada (µ+λ)EE, donde λ representa la descendencia generada a partir deµprogenitores. Su funcionamiento es el siguiente:
1. Se parte de una población inicial de µindividuos.
2. Se generan λ individuos a partir de los µ progenitores (generalmente a partir de la recombinación).
3. Se juntan los λ descendientes con losµ progenitores en una única población y de ella se muestrean los µmejores individuos (reemplazo por inclusión).
4. Si se satisface la condición de parada se termina. En caso contrario se vuelve al punto 2.
En la actualidad se están explorando nuevas estrategias evolutivas que combinan las estrategias anteriores. Algunas técnicas bajo estudio son las siguientes:
Combinar las sustituciones de las poblacionesµ y λ. Introducir parámetros de caducidad:
• Cada individuo tiene una cuota de vida (i.e., dos o tres generaciones).
• Cada individuo tiene una cuota de fertilidad.
• Cada individuo tiene un número máximo de antecesores.
2.1.3.
Algoritmos genéticos
2.1.3.1. Introducción
2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE
fundamentales que son las que les diferencia con respecto a otro tipo de algoritmos evolutivos:
1. Se utiliza una representación basada en cadenas de bits.
2. El método de selección de individuos, basado en selección proporcional.
3. El método mediante el que se introducen variaciones en los individuos, denomi-nado operador de cruce.
Los algoritmos genéticos, al igual que el resto de algoritmos evolutivos, basan su funcionamiento en una metáfora biológica. Una serie de individuos que forman una determinada población, compiten entre sí, para transmitir su código genético a la si-guiente población; siendo, por lo general, los más aptos los seleccionados para cruzarse con otros individuos.
2.1.3.2. Terminología
Cada uno de los individuos representa una solución a un determinado problema de optimización, estableciéndose la siguiente terminología:
Población:cada población se compone de cierto número de individuos.
Individuo: cada individuo forma parte de una determinada población. Cada individuo posee su propio genoma.
Genoma:un genoma se compone de una serie de genes siendo, en conjunto, el que determina la solución a un determinado problema. Representa un punto del espacio de búsqueda.
Gen:unidad mínima de información que compone un genoma.
Fitness:métrica que nos indica cómo de ajustado a la solución óptima está un individuo de la población.
Método de selección: establece, en función del fitness de un individuo y de una distribución de probabilidad, el conjunto de individuos seleccionados para generar los individuos de la siguiente población.
Operador de cruce:establece cómo se combinan los genomas de dos individuos para dar lugar a nuevos individuos.
2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE
2.1.3.3. Esquema general del algoritmo
El esquema general [4, 8] del algoritmo sería el siguiente:
1. [Inicio]:Generar una población inicial P0 aleatoria de n individuos.
2. [Evaluar]: Evaluar el fitness para cada uno de los inviduos de la población actualPi.
3. [Condición de parada]: Verificar si se cumplen las condiciones para detener
la ejecución del algoritmo. En caso de cumplirse, parar la ejecución y devolver la mejor solución encontrada. En caso contrario, ir al punto 4.
4. [Generar siguiente población]: Generar una nueva población Pi+1, de la siguiente manera:
a) [Selección]: Seleccionar dos individuos, x e y, de la población actual Pi en función del valor del fitness y de una función de probabilidad.
b) [Cruce]: Aplicar el operador de cruce a x e y, con probabilidad preesta-blecida, para generar los nuevos individuos x0 e y0.
c) [Mutación]: Aplicar el operador de mutación a x0 e y0 con probabilidad preestablecida.
d) [Añadir]: Añadir los nuevos individuos x0 e y0 (representando las muta-ciones x0 e y0 respectivamente) a la población Pi+1.
e) [Iterar]:Volver al paso (a) hasta completar la población Pi+1 con n indi-viduos.
5. [Reemplazar]:Reemplazar la población Pi por Pi+1 y volver al paso 2.
2.1.3.4. Ventajas e inconvenientes
Ventajas de los algoritmos genéticos:
• No se requieren conocimientos específicos sobre el problema que se desea resolver.
2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE
• Facilidad para “paralelizar” la ejecución, permitiendo la ejecución de có-digo en arquitecturas de procesamiento paralelo.
Desventajas de los algoritmos genéticos:
• Pueden tardar mucho en converger hacia una solución e incluso no hacerlo.
• Pueden converger prematuramente y, por tanto, no obtener la solución óptima.
2.1.4.
Algoritmos EDA
2.1.4.1. Introducción
Los algoritmos EDA (Estimation of Distribution Algorithms) [19] constituyen una variante de los algoritmos genéticos, dentro del grupo de algoritmos evolutivos a los que ambos pertenecen.
En lo que respecta a los algoritmos genéticos, algunos de los parámetros a determinar son: el operador de cruce y mutación así como sus probabilidades, tamaño de la población, número de generaciones,. . . La determinación de los valores óptimos de los parámetros anteriores puede verse como un problema de optimización. Una mala elección de los valores de estos parámetros puede llevar a que el algoritmo obtenga soluciones alejadas del óptimo. Otro motivo por el que se han desarrollado variantes a los algoritmos genéticos es por la necesidad de identificar las interrelaciones entre las variables utilizadas para representar a los individuos con la codificación utilizada.
Todo ello ha motivado el desarrollo de nuevos métodos de búsqueda conocidos como algoritmos de estimación de distribuciones, denotados como EDAs.
La principal diferencia de los EDAs con respecto a los algoritmos genéticos es que la evolución de poblaciones no se lleva a cabo por medio de operadores de cruce y mutación. En lugar de ello, se utiliza un modelo probabilístico que “aprende” las características de los individuos seleccionados en la generación anterior.
2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE
2.1.4.2. Esquema general del algoritmo
El esquema general del algoritmo sería el siguiente:
1. [Inicio]:Generar una población inicial P0 aleatoria de M individuos.
2. [Iterar]:Iterar desdei= 0,1,2, ...,hasta que se cumpla la condición de parada.
a) [Selección]: Seleccionar N ≤ M individuos de la población actual Pi según el método de selección.
b) [Estimar]: pi+λ(x) = p
x|PSe i
← Estimar la distribución de
probabili-dad de entre los N individuos seleccionados.
c) [Muestreo]: Muestrear M individuos de pi(x) obteniendo la nueva po-blación Pi+1. Marcar Pi+1 como la nueva población actual.
En el paso 2.b es necesario estimar la distribución de probabilidad pi+1(x), sien-do x un individuo de la población. En general, el genoma de un individuo con-tendrá los valores de un conjunto de variables. Por tanto x = (x1, x2, x3, ..., xn) y pi+1(x) = pi+1(x1, x2, x3, ..., xn). Calcular la distribución de probabilidad conjunta de (x1, x2, x3, ..., xn) tiene una complejidad, en el peor de los casos (dependencia en-tre todas las variables), exponencial respecto al número de variables que forman el genoma de un individuo. Para evitar un paso tan costoso, los algoritmos EDA recurren a un modelo gráfico probabilístico (MGP).
2.1.4.3. Modelo gráfico probabilístico
Los MGPs reducen el tiempo de cálculo de la distribución conjunta a cambio de estimar dicha distribución utilizando un modelo de dependencia condicional entre variables basado en un grafo de dependencias/causalidad. Es decir, simplificando las dependencias entre variables, de forma que el cálculo de la distribución conjunta sea más sencillo.
2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE
Figura 2.1.: Ejemplo de un modelo gráfico para X = (A, B, C, D)
Teóricamente para calcular la probabilidad conjunta habría que calcular:
p(A, B, C, D) =p(A|B, C, D)·p(B|C, D)·P(C|D)·p(D)
Esto implicaría llevar a cabo un cálculo con 15 parámetros. Sin embargo el MGP de la figura indica que podemos considerar independencia condicional entre ciertas variables. De aquí que el cálculo de la probabilidad conjunta se reduzca a:
p(A, B, C, D) =p(A)·p(B)·p(C|A)·p(D|A, B)
Debiéndose calcular en este caso únicamente 8 parámetros.
Los MGPs empleados por los algoritmos EDAs varían en función del dominio de las variables del genoma de los individuos. Si estas variables son discretas se utilizan redes Bayesianas. Si por el contrario se trata de variables continuas se utilizan redes Gaus-sianas. Existe la posibilidad de generar modelos probabilísticas híbridos, adaptados para genomas con variables discretas y continuas.
2.1.4.4. Tipos de modelos probabilísticos
2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE
utilizadas para el aprendizaje de la estructura del MGP. Se ha realizado la clasificación en función del análisis de dependencias:
Análisis univariado: es el modelo más sencillo ya que no considera relaciones
entre variables. Las probabilidades conjuntas se factorizan como producto de distribuciones (marginales) univariadas e independientes.
p(x1, x2, ..., xn) = i=n Y
i=1 p(xi)
Desde el punto de vista gráfico esto significa que el grafo asociado al MGP no contendrá ninguna arista. La principal ventaja de este modelo es su sencillez y bajo coste computacional. Sin embargo, puede no resultar suficiente para resolver algunos problemas.
Análisis bivariado:este modelo permite dependencia entre variables,
restrin-giéndose ésta a dos variables. Esto permite alcanzar un buen equilibrio entre complejidad y eficiencia. En este caso es necesario realizar dos tareas:
1. Hallar el grafo de dependencia.
2. Calcular las probabilidades condicionalesp(xj|xi).
Análisis multivariado: es el enfoque más completo, pero también el más
complejo de implementar. Proporciona mayor flexibilidad a la hora de establecer dependencias entre variables a costa de un mayor coste computacional durante el aprendizaje y simulación del modelo.
A continuación se explican dos de los métodos que utilizan los EDAs sobre dominios continuos para construir el modelo: UMDAcy MIMICc. El primero de ellos pertenece al grupo de análisis univariado y el segundo al grupo de análisis bivariado. El interés de explicar el funcionamiento de ambos se debe a que los métodos desarrollados como trabajo final de carrera serán comparados con los resultados proporcionados tanto por UMDAc como por MIMICc.
2.1.4.5. UMDAc
2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE
variable. En este caso, aunque la función de densidad conjunta es
fl(x;θl) = n Y
i=1
fl(xi, θ)
el UMDAc es en realidad un algoritmo de identificación de estructura (algo que no ocurre para la versión discreta de UMDA) en el sentido de que la densidad de los componentes del modelo son identificados mediante tests de hipótesis. La estimación de los parámetros se lleva a cabo, una vez que se han obtenido las densidades, por medio de sus estimadores de máxima verosimilitud.
Si todas las distribuciones univariadas son normales, los 2 parámetros a ser estimados en cada generación y cada variable son la media, µli, y la desviación típica, σli. Sus respectivos estimadores de máxima verosimilitud tienen las siguientes expresiones:
ˆ
µli = ¯Xil= 1 N
N X
r=1 xli,r
ˆ σli =
v u u t1 N N X r=1 (xl
i,r−X¯il)2
2.1.4.6. MIMICc
El algoritmo MIMICc (Mutual Information Maximization for Input Clustering) fue presentado por Larrañaga y Lozano [19] y constituye una adaptación del método MIMIC desarrollado por De Bonet [9] a dominios continuos donde el modelo de probabilidad subyacente para cada par de variables se asume que es una Gaussiana bivariada.
La idea, al igual que en MIMIC para optimización combinatoria, consiste en describir la función de densidad conjunta mediante un ajuste del modelo tan próximo como sea posible a los datos empíricos empleando una función de densidad marginal univariada y n−1 pares de funciones de densidad condicionales. Para conseguir esto y, dado el
siguiente teorema:
Teorema 1 (Whittaker, 1990): Dada X como una función de densidad normal n-dimensional, X≡N(x;µ,P
), la entropía de X es:
h(X) = 1
2n(1 +log2π) + 1 2log|
X
2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE
Aplicando este resultado a funciones de densidad normales univariadas y bivariadas a fin de definir MIMICc se obtiene:
h(X) = 1
2(1 +log2π) +logσX
h(X|Y) = 1 2
"
(1 +log2π) +log σ 2
Xσ2Y −σ2XY σ2
Y
!#
donde σ2
X(σ2Y) es la varianza de la variable univariada X(Y) y σXY es la covarianza entre las variablesX e Y.
El aprendizaje de la estructura en MIMICc funciona como un algoritmo voraz en 2 fases. En la primera fase, se elige la variable con la menor varianza de la muestra. En la segunda fase, se elige la variable X cuya estimación con respecto a la anterior variable elegida, Y, de:
σ2
Xσ2Y −σ2XY σ2
2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE
2.2.
Regresión
En la práctica son frecuentes aquellas situaciones en las que se cuenta con observacio-nes sobre diversas variables, siendo razonable pensar que pueda existir una relación entre ellas. El poder determinar si existe esta relación es de sumo interés ya que, por una parte, se permitiría, conocidos los valores de algunas variables, efectuar pre-dicciones sobre los valores previsibles de otra. Del mismo modo, podríamos también responder con criterio estadístico a cuestiones acerca de la relación de una variable sobre otra.
El términoregresiónfue introducido por Francis Galton en su libroNatural inheritance (1889), partiendo de los análisis estadísticos de Karl Pearson. Su trabajo se centró en la descripción de los rasgos físicos de los descendientes (variable Y) a partir de los de sus padres (variablesx1 y x2). Estudiando la altura de padres e hijos a partir de más de mil registros de grupos familiares, se llegó a la conclusión de que los padres muy altos tenían una tendencia a tener hijos que heredaban parte de esta altura, pero que revelaban también una tendencia a regresar a la media. Galton generalizó esta tendencia bajo la "ley de la regresión universal": «Cada peculiaridad en un hombre es compartida por sus descendientes, pero en media, en un grado menor.»
Se pretende desarrollar un método basado en estimación de modelos de regresión que tenga en cuenta el valor de la función objetivo (fitness del problema) para un número elevado de variables. La idea consiste en aplicar una función de regresión sobre los genes (variablesx1, ..., xn) que componen el genoma de cada uno de los individuos de la población así como sobre el valor de fitness (función objetivo Y) asociado a cada genoma, obteniendo un modelo de regresión que nos permita determinar qué genes tienen mayor influencia sobre el valor que toma la función objetivo y de este modo tratar de evolucionar dichos genes hacia elfitness óptimo global.
A continuación se van a explicar algunos modelos de regresión lineal.
2.2.1.
Regresión lineal
La regresión lineal [32] es un modelo matemático mediante el cual es posible inferir datos a partir de una población. Es de interés señalar que el ajuste de un modelo de regresión no se limita a analizar la relación entre dos variables; en general, buscaremos relaciones del tipo:
Y =β0+ n X
i=1
βixi+
2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE
Se le denomina lineal debido a que sus variables son lineales (grado 1). Para aplicar un modelo de regresión lineal se deben dar los siguientes requisitos:
1. La relación entre las variables es lineal.
2. Los errores son independientes.
3. Los errores tienen varianza constante.
4. Los errores tienen una esperanza matemática igual a cero.
5. El error total es la suma de todos los errores.
Dependiendo de los parámetros hablaremos de regresión lineal simple o de regresión lineal múltiple.
2.2.1.1. Regresión lineal simple
El objeto de un análisis de regresión es investigar la relación estadística que existe en-tre una variable dependienteY con una o más variables independientes (x1, x2, ..., xn). Cuando existe una única variable independiente y el tipo de dependencia es lineal, hablamos de regresión lineal simple, lo cual se reduce a una línea recta:
Y =β0+β1·x1+
Donde los coeficientesβ0 y β1 son parámetros que definen la posición e inclinación de la recta, siendo el error asociado a la predicción.
2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE
Mes Nº Costos Totales (miles)Y Millas Vehículos (miles) x1
1 213.9 3147
2 212.6 3160
3 215.3 3197
4 215.3 3173
5 215.4 3292
6 228.2 3561
7 245.6 4013
8 259.9 4244
9 250.9 4159
10 234.5 3776
11 205.9 3232
12 202.7 3141
13 198.5 2928
14 195.6 3063
15 200.4 3096
16 200.1 3096
17 201.5 3158
18 213.2 3338
19 219.5 3492
20 243.7 4019
21 262.3 4394
22 252.3 4251
23 224.4 3844
24 215.3 3276
25 202.5 3184
26 200.7 3037
27 201.8 3142
28 202.1 3159
29 200.4 3139
30 209.3 3203
31 213.9 3307
32 227.0 3585
33 246.4 4073
Cuadro 2.2.: Datos mensuales de producción y costos de operación
2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE
Figura 2.2.: Diagrama de dispersión generado con R
Por otro lado, también se aprecia por qué este gráfico se denomina diagrama de dispersión: no existe una relación matemática exacta entre las variables, ya que no toda la variación en el costo de operación puede ser explicada por la variación en las millas-vehículo. En la figura 2.3, se muestra la recta de regresión generada a partir del conjunto de datos anterior.
2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE
Si entre estas variables existiera una relación lineal perfecta, entonces todos los puntos caerían a lo largo de la recta de regresión, que además muestra la relación “promedio” que existe entre las dos variables. En la práctica, se observa que la mayoría de los puntos no caen directamente sobre la recta, sino que están “dispersos” en torno a ella. Esta dispersión representa la variación en Y que no puede atribuirse a la variación enx1.
Una pregunta que cabe hacerse es la de cómo de buena es la explicación que se da de Y en función de la variación de x1. El estadístico que mide esta proporción se denomina coeficiente de determinación y tiene la siguiente expresión:
R2 = 1−
P e2 P(
Y −y¯)
2.2.1.2. Regresión lineal múltiple
En los modelos de regresión lineal múltiple, a diferencia de los modelos de regresión lineal simple, existen dos o más variables independientes. Sea Y la variable de in-terés, variable respuesta o dependiente y sean x1, ..., xn las variables explicativas o regresoras. La formulación matemática de estos modelos es la siguiente:
Y =β0+β1·x1 +β2·x2+...+βn·xn+
La interpretación de los coeficientes es similar al caso de la regresión simple: el coefi-ciente de cada variable independiente mide el efecto separado que esta variable tiene sobre la variable dependiente. El coeficiente de determinación, por otro lado, mide el porcentaje de la variación total en Y que es explicado por la variación conjunta de las variables independientes.
2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE
Figura 2.4.: Interpretación geométrica de la regresión lineal múltiple
2.2.1.3. Regresión penalizada L1 y L2
En los métodos de regresión lineal, tanto simple como múltiple, se suele emplear el método de los mínimos cuadrados para determinar los valores de los coeficientes del modelo de regresión correspondiente. Este método consiste en seleccionar como estimadores los valores de los parámetros que minimizan la suma de los cuadrados de los errores.
Es decir, se trata de seleccionar valores ˆµ1, ...,µˆk que minimicen la siguiente función dek variables:
ψ(µ1, ..., µk) = k X
i=i ni X
t=1
(yit−µi)2 = k X
i=i ni X
t=1 e2it
Existen 2 motivos por los que algunos analistas no se muestran a menudo satisfechos con los resultados obtenidos mediante el método de mínimos cuadrados:
1. La precisión en la predicción: los estimadores de mínimos cuadrados con frecuen-cia reflejan bajas tendenfrecuen-cias pero varianzas grandes; la precisión en la predicción puede, a veces, ser mejorada reduciendo o fijando a 0 algunos coeficientes. Ha-ciendo esto se sacrifica un poco la tendencia para reducir la varianza de los valores predichos y de aquí que se pueda mejorar la precisión global de la pre-dicción.
2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE
Las 2 técnicas estándares, selección de subconjunto y regresión ridge [30], empleadas para mejorar los estimadores de mínimos cuadrados, presentan algunos inconvenien-tes:
La selección de subconjunto proporciona modelos interpretables pero pueden ser extremadamente variables debido a su naturaleza discreta – los regresores o bien son retenidos o bien son sacados fuera del modelo. Cambios ligeros en los datos pueden dar lugar a modelos muy diferentes y esto puede reducir su precisión en la predicción.
La regresión ridge es un proceso continuo que reduce los coeficientes y de aquí que sea más estable. No obstante, no fija ningún coeficiente a 0 y por tanto no proporciona un modelo fácilmente interpretable.
Para superar estas limitaciones,Tibshirani propuso un nuevo método al que denominó lasso [30] (least absolute shrinkage and selection operator). Este método reduce el valor de algunos coeficientes y fija otros a 0. Supongamos que tenemos los datos (xi, yi), i = 1,2, ..., N donde xi = (x
i1, ..., xip)T son los predictores e yi las variables respuesta. Como en la configuración de regresión usual, se realiza la suposición de que o bien las observaciones son independientes o bien las yis son condicionalmente independientes dados losxijs. Asumiendo que los xijs están estandarizados de modo que:
X
i
xij/n = 0, X
i
x2ij = 1
Tomando ˆβ = ( ˆβ1, ...,βˆp)T,el estimador lasso (ˆα,βˆ) se define como:
(ˆα,βˆ) =arg min n X i=1
yi−α− p X j=1 βjxij 2
, sujeto a p X
j=1
|βj| ≤t
El parámetrot ≥0 establece la contracción que se aplica sobre los estimadores.
Frank y Friedman [11] propusieron una generalización de la regresión ridge y de la selección de subconjunto, añadiendo una penalización de la forma λ·P
j|βj|q, a la suma residual de los cuadrados.
Lo cual es equivalente a una restricción de la forma: Pp
j=1|βj|q≤t
De tal modo, los métodos de selección de subconjunto, regresión ridge y mediante lasso pueden ser definidos de la forma generalizada:
(ˆα,βˆ) = arg min
ˆ α,βˆ n X i=1
yi−α− p X j=1 βjxij 2
, sujeto a p X
j=1
2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE
Así pues, si la restricción que impone sobre la expresión anterior tomaq = 2 se trata de unaregresión ridge, conq= 1 de unaregresión lasso, y paraq = 0 de una regresión por mínimos cuadrados ordinaria. De ahí que se denomine regresión penalizada L1 a aquella que emplea el método lasso para determinar los coeficientes de regresión y regresión penalizada L2 a aquella que emplea el método ridge.
La siguiente figura muestra la interpretación geométrica [22] de la regresión en 2 dimensiones:
Figura 2.5.: Interpretación geométrica de lasso
3. Desarrollo
Como parte de los objetivos marcados para este trabajo final de carrera se ha diseñado e implementado un algoritmo capaz de resolver problemas de optimización (funcio-nes no lineales) sobre dominios continuos mediante la interpretación de modelos de regresión lineal. El algoritmo propuesto implementa un método no aplicado hasta el momento dentro del campo de la computación evolutiva para resolver problemas de optimización, basado en regresión regularizada (regresión penalizada indistinta-mente) y al que se le ha denominadoCERA (Continuous Estimation of Regression Algorithm).
La gran diferencia de CERA con respecto a los EDAs o los propios algoritmos gené-ticos, se encuentra en el hecho de que CERA utiliza el valor de la función objetivo, regresionando sobre ella por medio de la regresión regularizada.
3.1.
Diseño del algoritmo
Se ha optado por diseñar un algoritmo que posea un alto grado de flexibilidad, de modo que se puedan añadir nuevos métodos de simulación fácilmente. A tal efecto, se ha desacoplado de la estructura del algoritmo principal la parte de simulación de nuevos individuos. Además, se ha diseñado de forma que sea cómodo y sencillo de usar, de modo que cada vez que se desea resolver un determinado problema de optimización (sea de maximización o minimización), éste se puede introducir como parámetro de entrada, especificando únicamente el nombre del problema que se desea optimizar.
3.1.1.
Descripción general
3.1. DISEÑO DEL ALGORITMO CAPÍTULO 3. DESARROLLO
1. [Inicio]:Generar una población inicial P0 aleatoria de M individuos.
2. [Evaluar]: Evaluar el fitness para cada uno de los inviduos de la población actualPi.
3. [Condición de parada]: Verificar si se cumplen las condiciones para detener
la ejecución del algoritmo. En caso de cumplirse, parar la ejecución y devolver la mejor solución encontrada. En caso contrario, ir al paso 4.
4. [Generar siguiente población]: Generar una nueva población Pi+1, de la siguiente manera:
a) [Selección]: Seleccionar losN mejores individuos de los M individuos de la población en función de su fitness.
b) [Modelo de regresión]: Aplicar regresión regularizada sobre el fitness con penalización L2 en caso de que no se asuma dependencia entre genes o con penalización L1 en caso de que se asuma dependencia entre genes sobre los N individuos seleccionados previamente.
c) [Simular]: Simular los individuos de la población a partir del modelo de
regresión lineal obtenido en el paso 4.b hasta completar la nueva población con M individuos.
5. [Reemplazar]:Reemplazar la población Pi por Pi+1 y volver al paso 2. La idea de utilizar el modelo de regresión proporcionado por la aplicación de la regre-sión regularizada sobre los individuos seleccionados para simular nuevos individuos consiste en utilizar los coeficientes asociados a los genes (variables de la función de fitness asociada a un problema) de un determinado individuo para de éste modo determinar en qué grado están influyendo en el valor defitnessdel individuo. Depen-diendo de si se desea resolver un determinado problema de optimización asumiendo que existan o no dependencias entre variables hay que distinguir entre 2 modos de funcionamiento:
Sin dependencia entre variables: se asume que no existen relaciones entre
las variables o genes de un determinado individuo. Dado que el número de variables será la propia longitud del genoma del individuo, se va a aplicar para este caso una regresión regularizada de penalización L2 (ridge) para obtener los coeficientes del modelo de regresión.
Con dependencia entre variables:se asume que existen relaciones entre las
3.1. DISEÑO DEL ALGORITMO CAPÍTULO 3. DESARROLLO
del número de variables, para este caso se aplica una regresión regularizada de penalización L1 (lasso) para obtener los coeficientes del modelo de regresión. Lo que se pretende con esto, tal como se comentó en la sección 2.2.1.3, es obtener un modelo que lleve a 0 a través de los coeficientes del modelo, aquellas relaciones entre variables que no influyan en el valor de fitness de un individuo.
La diferencia entre la aplicación de regresión regularizada con penalización L2 y L1 se encuentra en que éste último, proporciona un modelo interpretable con mayor faci-lidad dada su tendencia a llevar a 0 los coeficientes de aquellas variables que influyen significativamente sobre el valor defitnessque toma un determinado individuo. Dado que en el caso de que se asuma interacción entre variables y sabiendo que dependien-do del tamaño del genoma de un individuo (número de variables) así como del gradependien-do de interacción entre variables, el número de interacciones puede ser muy elevado de modo que una regresión de tipo L1 permitirá descartar un gran número de éstas.
La figura 3.1 muestra el diagrama de flujo del funcionamiento del algoritmo.
La parte que engloba el rectángulo superior (en línea discontinua) sería la parte principal del algoritmo, es decir, la encargada de todo lo correspondiente a la entrada de parámetros, condición de parada, selección de individuos, obtención de modelo de regresión lineal así como terminación.
La parte que engloba el rectángulo inferior (en línea discontinua), tal y como se ha comentado con anterioridad, ha sido desacoplada del algoritmo principal y se encarga de la parte de simulación de nuevos individuos para generar nuevas poblaciones. De este modo resulta sencillo añadir nuevos métodos de simulación, sin necesidad de modificar la parte correspondiente al algoritmo principal.
3.1.2.
Simulación de nuevas poblaciones
Como ya se ha comentado, la simulación de nuevas poblaciones se ha separado del algoritmo principal para de este modo facilitar el desarrollo de futuros métodos de simulación de poblaciones. De tal modo, cada vez que se quisiese añadir un nuevo método bastaría con que éste le devolviese al algoritmo principal la nueva población evolucionada. A continuación se explica el método de simulación que se ha diseñado e implementado para este trabajo final de carrera y al que se le ha denominadoMétodo del Desplazamiento Gaussiano.
3.1.2.1. Método del desplazamiento Gaussiano
3.1. DISEÑO DEL ALGORITMO CAPÍTULO 3. DESARROLLO
Figura 3.1.: Diagrama de flujo del algoritmo
aplica un desplazamiento ∆ sobre la media µ de una distribución normal (también denominada distribución Gaussiana). Para determinar si el desplazamiento ∆ ha de ser positivo o negativo y, de este modo, saber si hay que desplazar la media hacia uno u otro lado, se emplea el modelo de regresión calculado previamente sobre la población que se desea hacer evolucionar.
Un poco más adelante se van a mostrar una serie de cuadros, tanto para maximi-zación como minimimaximi-zación, indicando cómo determinar el desplazamiento ∆ pero previamente se van a explicar aquellos factores que son tenidos en cuenta de un mo-delo de regresión. Si se trata de un caso donde no se dan interacciones entre variables, la expresión del modelo de regresión sería análogo al de una regresión lineal múltiple:
Y =β0+β1·x1 +β2·x2+...+βn·xn+
3.1. DISEÑO DEL ALGORITMO CAPÍTULO 3. DESARROLLO
expresión del modelo de regresión sería de la forma:
Y =β0+ X
βi·xi+ X
βij ·xi·xj +...+ X
βi·...·z·xi·...·xz+
El grado de interacción entre variables determinará el número de coeficientes que deberán ser calculados mediante la regresión regularizada con penalización L1, la cual se aplica únicamente sobre las interacciones del grado que se haya seleccionado. El algoritmo ha sido diseñado e implementado de modo que sea capaz de procesar interacciones hasta de grado k.
Dicho lo cual, para determinar el desplazamiento ∆ al que se deberá someter la media µde la distribución gaussiana se deben tener en cuenta los siguientes factores:
Tipo de optimización: si se trata de un problema de maximización o
mini-mización.
Signo del coeficiente β: los coeficientes los proporciona el modelo de
regre-sión, pudiendo determinar el signo de éstos.
Signo global de la interacción: dado que las interacciones pueden ser del
tipo xi ·xj ·...·xz y cada una de las variables puede tener signo diferente es necesario determinar el signo global de la interacción entre éstas.
Signo de la variable seleccionada para evolucionar:dado el tipo de
opti-mización, el signo del coeficiente, el signo global de la interacción entre variables y el propio signo de la variable seleccionada para ser evolucionada es posible determinar si sobre la media µ se debe aplicar un desplazamiento positivo o negativo.
3.1. DISEÑO DEL ALGORITMO CAPÍTULO 3. DESARROLLO
Maximización
Signo β Signo Global Requiere Desplazamiento ∆
+ + x¯ci·...·x¯cz lo mayor posible ∆ = (
+ ¯xc≥0
− x¯c<0 + - x¯ci·...·x¯cz lo menor posible ∆ =
(
+ ¯xc≤0
− x¯c>0 - + x¯ci·...·x¯cz lo menor posible ∆ =
(
+ ¯xc≤0
− x¯c>0 - - x¯ci·...·x¯cz lo mayor posible ∆ =
(
+ ¯xc≥0
− x¯c<0 Cuadro 3.1.: Incremento ∆ para un problema de maximización
Y en el caso de que el problema sea de minimización:
Minimización
Signo β Signo Global Requiere Desplazamiento ∆
+ + x¯ci·...·x¯cz lo menor posible ∆ = (
+ ¯xc≤0
− x¯c>0 + - x¯ci·...·x¯cz lo mayor posible ∆ =
(
+ ¯xc≥0
− x¯c<0 - + x¯ci·...·x¯cz lo mayor posible ∆ =
(
+ ¯xc≥0
− x¯c<0 - - xci¯ ·...·xcz¯ lo menor posible ∆ =
(
+ ¯xc≤0 − x¯c>0 Cuadro 3.2.: Incremento ∆ para un problema de minimización
Donde ¯xci es la media de los genes i-ésimo de los N mejores individuos seleccionados. Si se trata de un problema de maximización se debe conseguir que el valor deY sea lo mayor posible. Por el contrario, si se trata de un problema de minimización lo que interesa es que el valor deY sea lo menor posible.
A modo de ejemplo, supongamos individuos cuyos genomas tienen una longitud de 2 genes (2 variables x1, x2) y que las relaciones que pueden darse entre los genes son de grado 2. De tal modo, las interacciones posibles 2 a 2 entre variables serían: x1·x1, x1·x2, x2·x2.
El modelo de regresión obtenido para este caso tendría la siguiente expresión:
3.1. DISEÑO DEL ALGORITMO CAPÍTULO 3. DESARROLLO
Supongamos que tras aplicar la regresión regularizada con penalización L1 sobre el conjunto de los N mejores individuos seleccionados los coeficientes y, por tanto el modelo de regresión resultante, toman los siguientes valores:
Y =−2·x1+ 3·x2 + 2·x1·x2
Se han eliminado términos de la expresión dado que tras aplicar la L1, ésta ha llevado a 0 los coeficientesβ0, β11 y β22, lo cual nos está indicando que dichas relaciones no influyen sobre el valor de fitness que toma la función. Por ello una vez descartados dichos coeficientes nos quedarían aquellos coeficientes de las variables o relaciones entre variables que sí están influyendo en el valor defitness de la función que se desea optimizar.
El siguiente paso sería, a partir del modelo de regresión, determinar el incremento ∆ que se debe aplicar sobre la mediaµ de la distribución normal con la que simular los nuevos valores que van a tomar las variables de cada individuo. Partiendo del modelo de regresión del ejemplo y, suponiendo que vamos a evolucionar los genes de la relaciónx1·x2, que las medias de las variables x1 y x2 de los N mejores individuos seleccionados toman respectivamente los valores ¯X1 = 5 y ¯x2 =−2 y que el problema
que queremos resolver es un problema de minimización habría de aplicarse la siguiente regla extraída de la tabla de minimización para encontrar un ∆ con el que evolucionar los genes x1:
Signoβ12 Signo Globalβ12·x1·x2(+,+,-) Requiere ∆
+ - x¯1·x¯2 lo mayor posible + (¯x1≥0)
Por lo tanto, habría que aplicar un desplazamiento ∆ positivo. El valor de ∆ se obtiene ponderando el valorβ del término actual con la suma de todos losβi, esto es:
∆ = Pnβ i=1|βi| ∆ tomaría para los genes x1 el valor:
∆ = 27 = 0,285
De modo que los genesx1 tomarán valores según N(5 + 0,285,σ).
De la misma manera, para obtener el desplazamiento ∆ para los genesx2 se aplicaría la regla:
Signo β12 Signo Global β12·x1·x2(+,+,-) Requiere ∆
3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO
Por lo tanto, habría que aplicar un desplazamiento ∆ negativo cuyo valor sería:
∆ = 2
7 = 0,285
De modo que los genesx2 tomarán valores según N(5−0,285, σ).
3.2.
Implementación del algoritmo
El algoritmo desarrollado se ha escrito en R, que es un lenguaje y entorno para realizar cálculos y gráficos estadísticos.
3.2.1.
R
3.2.1.1. Introducción
R es un lenguaje y entorno para llevar a cabo análisis estadístico. Es un proyecto GNU (de libre distribución), similar al lenguaje y entorno S, que fue desarrollado en los laboratorios Bell. R puede considerarse como una implementación alternativa de S. Hay algunas diferencias importantes entre ambos, pero mucho del código escrito para S permanece inalterado en R.
R proporciona una amplia variedad de funcionalidades estadísticas: modelos lineales y no lineales, tests estadísticos clásicos, análisis de series temporales, clasificación, clustering,... con una alta capacidad de ampliación.
Uno de los puntos fuertes de R es la facilidad para generar gráficas, incluyendo sím-bolos matemáticos y fórmulas. Además, es al usuario al que se le otorga un gran nivel de flexibilidad a la hora de construir las gráficas que desee, proporcionando un gran número de opciones personalizables para tal fin.
3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO
3.2.1.2. R como entorno
R se compone de un conjunto de funcionalidades software integradas para la mani-pulación, cálculo y visualización gráfica de datos. Incluye:
Estructuras de datos para el manejo, almacenamiento y procesamiento de éstos.
Un conjunto de operadores para cálculos de arrays y matrices.
Una colección amplia e integrada de herramientas para el análisis de datos.
Componentes gráficos para el análisis y visualización de datos en pantalla.
Un lenguaje de programación sencillo y eficaz que incluye expresiones de eva-luación condicional, bucles, recursividad de funciones y operaciones de entra-da/salida.
R ha sido diseñado como un lenguaje de programación, permitiendo además a los usuarios añadir nuevas funcionalidades mediante la definición de nuevas funciones. A diferencia de otros lenguajes de programación clásicos como C, C++, Pascal, For-tran,... R es un lenguaje interpretado de modo que los comandos o fragmentos de código son ejecutados sin necesidad de que haya que compilar el código.
R proporciona además un lenguaje“Orientado a Objetos”: bajo este término se escon-de la simplicidad y flexibilidad escon-de R. Al ser orientado a objetos, las variables, datos, funciones, resultados, etc., se guardan en la memoria principal del computador en forma de objetos con un nombre específico. El usuario puede modificar o manipular estos objetos con operadores (aritméticos, lógicos, y comparativos) y funciones (que a su vez son objetos).
3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO
Una función en R se puede ver (figura 3.3) de la siguiente manera:
Figura 3.3.: Visión esquemática de una función en R
Los valores de los argumentos de las funciones pueden haber sido preestablecidos previamente, lo que se conoce como argumentos por defecto de la función. El usuario también tiene la opción de especificar los valores de los argumentos de la función.
3.2.2.
Paquete penalized
R proporciona una serie de funcionalidades básicas dentro del paquete base, pu-diéndose añadir nuevas funcionalidades específicas mediante la instalación de otros paquetes complementarios. Para llevar a cabo regresiones penalizadas se ha empleado el paquetepenalized [14].
3.2.2.1. Introducción
El paquete penalized ha sido diseñado e implementado para obtener modelos de re-gresión lineal mediante estimación penalizada.
Actualmente los modelos a los que da soporte son aquellos basados en regresión lineal, regresión logística y modelos de Cox. En cuanto a penalizaciones, el paquete permite aplicar penalizaciones de tipo L1 (lasso), L2 (ridge) y la combinación entre ambas, conocido también como “naive elastic net”. El paquete incluye además funciones para llevar a cabo cross-validation y para optimizar el ajuste del parámetro λ de penalización.
Los métodos de penalización L1 y L2, pese a tratarse ambos de métodos de reducción de coeficientes, tienen efectos diferentes en la práctica como se explicó en la sección 2.2.1.3. Al aplicar una penalización L2, ésta tiende a llevar los coeficientes de regre-sión a valores próximos a cero, mientras que la penalización L1 tiende a llevar algunos de ellos exactamente a cero. El nivel de reducción de los coeficientes vendrá determi-nado por los parámetros λ1, para el caso de penalización L1 y λ2, para L2. Si estos parámetros toman valor 0, significa que no hay reducción (estimación de máxima verosimilitud) mientras que si toman valor ∞, significa reducción infinita (llevando
3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO
La función principal recibe el mismo nombre que el paquete: penalized, que calcula la estimación penalizada para los parámetros λ1 y λ2.
3.2.2.2. Elección de λ
En principio, elegir qué valor usar para λ1 y λ2 es difícil. El paquete penalized pro-porciona funciones para determinar cuál es el valor óptimo mediante operaciones de cross-validation. La elección de λ es bastante importante dado que si se utiliza un valor muy pequeño el algoritmo puede ser muy lento, e incluso, puede no converger, especialmente en problemas de alta dimensionalidad.
En lo que respecta a la implementación de CERA, la función principal que contiene el núcleo del algoritmo de optimización se ha denominado cera. Los valores iniciales de los parámetros son λ1 = 100000000 y λ2 = 1, pero pueden ser modificados en la entrada de parámetros de la función. Para el caso de regresión penalizada L1, se ha decidido tomar ese valor λ1 dado que a medida que se van generando nuevas poblaciones y los individuos que forman éstas van tomando configuraciones cada vez más homogéneas, los coeficientes de regresión que devuelve la función penalized son llevados a cero. A medida que esto ocurre, el algoritmo hace decrecer el valor λ1 obteniendo nuevamente coeficientes adecuados para el análisis de optimización.
Como se ha comentado con anterioridad, si los parámetrosλ toman valores próximos a cero, se corre el riesgo de que la función penalized nunca devuelva los coeficientes del modelo de regresión debido a que el algoritmo no converja. Para evitar esto, la función cera tiene un parámetro minL1 que fija cuál es el mínimo valor que puede tomarλ1.
3.2.2.3. Estandarización
Si las variables de los individuos toman valores en dominios de búsqueda diferentes, es necesario que antes de aplicar la regresión éstas hayan sido estandarizadas. La funciónpenalized permite aplicar estandarización sobre el conjunto de datos sobre el que extraer los coeficientes de regresión. El argumento de la función standardize(por defecto con valor FALSE) aplica estandarización sobre las variables que forman el ge-noma de los individuos de la población justo un paso antes de aplicar la penalización. Aplicando estandarización se consigue que la penalización afecte prácticamente por igual a cada una de las variables de los individuos.
3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO
3.2.2.4. Genes sin penalizar
En algunas ocasiones, es deseable que no todos los genes o variables que forman parte de los individuos de la población sean penalizados.
Para el caso en el que se considera que no existen interacciones entre variables, que se corresponde con una regresión penalizada de tipo L2, ésta se aplica sobre losn genes o variables originales que configuran el genoma de un individuo.
En cambio, si se trata de un problema para el que se está considerando que existe dependencia entre variables, se aplicará una penalización L1 sobre aquellos genes que hayan sido extendidos a partir de los genes originales. De tal modo, sobre los n genes originales no aplicará penalización L1 mientras que para los genes formados a partir de las combinaciones de los genes originales y con los que se ha extendido la configuración del genoma del individuo sí.
El motivo de hacer esto de esta forma viene determinado por la propia naturaleza de la penalización L1. Dado que sabemos que todos y cada uno de los genes originales tienen mayor o menor influencia en la obtención del valor defitness de un individuo, si aplicamos penalización L1, dada la naturaleza de ésta, puede llevar los coeficientes correspondientes a los genes originales a 0, lo cual no es deseable por la razón expuesta. Únicamente nos interesa que lleve a 0 los coeficientes de aquellos genes extendidos como combinación de los genes originales ya que un gran número de éstos apenas tendrán influencia sobre el valor defitness que toma el individuo.
Si consideramos el caso de genomas cuyo tamaño esn= 3 y donde se dan interacciones entre variables de grado k = 2 la matriz resultante puede verse en la figura 3.4.
Figura 3.4.: Población de 9 individuos con sus respectivos genomas
3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO
3.2.3.
Detalles de implementación
A continuación se van a explicar las interfaces de las funciones que se han imple-mentado para resolver los problemas de optimización mediante modelos de regresión penalizados.
3.2.3.1. cera.R
En la figura 3.5 se muestra un diagrama de flujo de alto nivel que se corresponde con la implementación del algoritmo principal.
Figura 3.5.: Diagrama flujo alto nivel del núcleo del algoritmo
3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO
de entrada necesarios para la ejecución del algoritmo CERA, donde el rectángulo que engloba Problema - Componentes se correspondería con el argumento de entrada pro-blem_name, que se explica a continuación. Al especificar problem_name, se le está indicando al algoritmo cuál es el problema que se desea optmizar. Cada problema conlleva 2 clases de información asociadas: la configuración del problema (tamaño del genoma y rangos, archivo de configuración) y la función de fitness (archivo .R).
3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO
Función:cera
Argumentos de entrada:
1. pop_size: Tamaño de la población.
2. selpop_size: Número de individuos que serán seleccionados.
3. tournament: Número de candidatos que tomarán parte en el torneo.
4. degree: Indica el grado de interacción entre los genes (variables) de los individuos de la población.
5. elitism: Si toma el valor TRUE, los mejores n individuos serán introducidos en la siguiente población directamente.
6. lambdaL1: Penalización L1 a aplicar sobre los individuos seleccionados de la población. 7. lambdaL2: Penalización L2 a aplicar sobre los individuos seleccionados de la población. 8. minL1: Mínimo valor que puede tomar una penalización L1.
9. problem_name: Nombre del problema que se desea optimizar.
10. maximize: Indica el tipo de optimización que se desea realizar. Si toma el valorTRUE, se tratará de un problema de maximización. En caso contrario de minimización.
11. improving_mth: Especifica el método de simulación que se desea utilizar para generar una nueva población.
12. iterations: Máximo número de iteraciones que pueda dar el algoritmo. 13. trace: Si está activado (valor TRUE) muestra la evolución de la población.
Descripción: Esta función es el núcleo del algoritmo. Dados una serie de argumentos de entrada, crea una población inicial a partir de la cual genera nuevas poblaciones a fin de optimizar el problema deseado, para lo cual calcula modelos de regresión con penalización tipo L1 ó L2.
Resultado:Devuelve la lista de poblaciones que se han generado, desde la población inicial P0 hasta la última población calculada. Además muestra por pantalla el genoma del mejor individuo encontrado así como su valor de fitness, junto a la iteración en la que se ha alcanzado.
Cuadro 3.3.: Interfaz de la función cera