scieee AI-readable full text Open interactive document viewer

Técnicas de ajuste de los métodos Kernel para la regresión

Amor Perea, Jorge

Abstract

Este trabajo constituye un acercamiento a los métodos kernel para el aprendizaje automático en problemas de regresión. Se ha realizado un estudio sobre el ajuste de dichos métodos para minimizar los errores cometidos en la predicción de secuencias temporales. Para la realización del estudio, se ha trabajado con tres problemas diferentes; predicción de una señal modulada en amplitud con ruido aleatorio, predicción de la media mensual del número de manchas solares de Wolf y predicción de la demanda de energía eléctrica. Se encuentran en este documento todos los algoritmos y programas necesarios para la realización del estudio, aplicando técnicas de validación cruzada para la elección de la mejor solución propuesta posible. El objetivo de este estudio es determinar unas pautas para la elección de los parámetros variables en los métodos kernel y comprobar la mejoría en los resultados al aplicar técnicas de validación cruzada en el área del aprendizaje automático.

Full text

i Equation Chapter 1 Section 1 Trabajo Fin de Grado Grado en Ingeniería de las Tecnologías Industriales Técnicas de ajuste de los métodos Kernel para la regresión. Autor: Jorge Amor Perea Tutor: Teodoro Álamo Cantarero Dpto. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2018 ii iii Trabajo Fin de Grado Grado en Ingeniería de las Tecnologías Industriales Técnicas de ajuste de los métodos Kernel para la regresión. Autor: Jorge Amor Perea Tutor: Teodoro Álamo Cantarero Catedrático de Universidad Dpto. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2018 iv Trabajo Fin de Grado: Técnicas de ajuste de los métodos Kernel para la regresión. Autor: Jorge Amor Perea Tutor: Teodoro Álamo Cantarero El tribunal nombrado para juzgar el Trabajo arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: Sevilla, 2018 El Secretario del Tribunal v vi A mi madre ¿A quién si no? vii Agradecimientos A toda la buena gente que me ha acompañado en estos años, por tanto y tantos cafés. A Teo, que me descubrió que la estadística era un mundo interesante y que no podemos dejar de aprender. A todos los que cuando fallé, me levantaron. A todos ellos, mil millones de gracias, pero a mi madre… A mi madre; que todas estas páginas no sirvan de perdón ni orgullo, que sirvan de agradecimiento a quién me lo ha dado todo sin recibir nada. viii Resumen Este trabajo constituye un acercamiento a los métodos kernel para el aprendizaje automático en problemas de regresión. Se ha realizado un estudio sobre el ajuste de dichos métodos para minimizar los errores cometidos en la predicción de secuencias temporales. Para la realización del estudio, se ha trabajado con tres problemas diferentes; predicción de una señal modulada en amplitud con ruido aleatorio, predicción de la media mensual del número de manchas solares de Wolf y predicción de la demanda de energía eléctrica. Se encuentran en este documento todos los algoritmos y programas necesarios para la realización del estudio, aplicando técnicas de validación cruzada para la elección de la mejor solución propuesta posible. El objetivo de este estudio es determinar unas pautas para la elección de los parámetros variables en los métodos kernel y comprobar la mejoría en los resultados al aplicar técnicas de validación cruzada en el área del aprendizaje automático. ix Abstract This paper constitutes an approach to kernel methods for machine learning in regression problems. The document includes a study on the tuning of these methods to minimize errors made in the prediction of temporal sequences. To carry out the study, we have worked with three different problems; prediction of an amplitudemodulated signal with random noise, prediction of Wolf's monthly average sunspot number and prediction of electrical energy demand. All the algorithms and programs necessary to carry out the study are found in this document, applying cross-validation techniques for the selection of the best purposed solution possible. The objective of this study is to determine some guidelines for the election of the variable parameters in the kernel methods and to verify the improvement in the results when applying cross validation techniques in machine learning area. xvi Tabla 6-29. Parámetros del caso 5 en SSN. 58! Tabla 6-30. Errores cometidos en el caso 5 de SSN. 59! Tabla 6-31. Parámetros del caso 6 en SSN. 60! Tabla 6-32. Errores cometidos en el caso 6 de SSN. 60! Tabla 6-33. Parámetros del caso 7 en SSN. 61! Tabla 6-34. Errores cometidos en el caso 7 de SSN. 62! Tabla 6-35. Parámetros del caso 8 en SSN. 63! Tabla 6-36. Errores cometidos en el caso 8 de SSN. 64! Tabla 6-37. Parámetros del caso 9 en SSN. 64! Tabla 6-38. Errores cometidos en el caso 9 de SSN. 65! Tabla 6-39. Resumen de errores por caso en SSN. 66! Tabla 6-40. Parámetros del regresor elegido en SSN. 66! Tabla 6-41. Parámetros del caso 1 en DEL. 69! Tabla 6-42. Errores cometidos en el caso 1 de DEL. 70! Tabla 6-43. Parámetros del caso 2 en DEL. 71! Tabla 6-44. Errores cometidos en el caso 2 de DEL. 72! Tabla 6-45. Parámetros del caso 3 en DEL. 72! Tabla 6-46. Errores cometidos en el caso 3 de DEL. 73! Tabla 6-47. Parámetros del caso 4 en DEL. 74! Tabla 6-48. Errores cometidos en el caso 4 de DEL. 75! Tabla 6-49. Parámetros del caso 5 en SSN. 75! Tabla 6-50. Errores cometidos en el caso 5 de DEL. 76! Tabla 6-51. Parámetros del caso 6 en SSN. 77! Tabla 6-52. Errores cometidos en el caso 6 de DEL. 77! Tabla 6-53. Parámetros del caso 7 en DEL. 78! Tabla 6-54. Errores cometidos en el caso 7 de DEL. 79! Tabla 6-55. Parámetros del caso 8 en DEL. 80! Tabla 6-56. Errores cometidos en el caso 8 de DEL. 81! Tabla 6-57. Parámetros del caso 9 en DEL. 81! Tabla 6-58. Errores cometidos en el caso 9 de DEL. 82! Tabla 6-59. Resumen errores por caso en DEL 83! Tabla 6-60. Parámetros del regresor elegido en DEL. 83! Tabla 7-1. Comparativa LS vs SVR SMA. 88! Tabla 7-2. Comparativa LS vs SVR SSN. 89! Tabla 7-3. Comparativa LS vs SVR SSN. 90! xvii Índice de Figuras Figura 2-1. Fases generales del aprendizaje automático. 3! Figura 2-2. Técnicas de aprendizaje automático. 4! Figura 2-3. Fases aprendizaje supervisado. 4! Figura 2-4. Fases aprendizaje no supervisado. 5! Figura 2-5. Ejemplo de correlación espurea. 5! Figura 2-6. Retrato de Johan Carl Friedrich Gauss. 6! Figura 2-7. Ejemplo de SVM para clasificación. 8! Figura 2-8. Ejemplo de resultados de SVR. 9! Figura 2-9. Esquema validación cruzada de k-iteraciones con k = 4. 12! Figura 3-1. Señales del problema sintético. 14! Figura 3-2. Detalle de señal modulada. 15! Figura 3-3. Detalles de señales portadora y moduladora. 15! Figura 3-4. Manchas solares vistas desde el centro de vuelo espacial de la NASA Goddard. 16! Figura 3-5. Serie histórica de medias anuales del SSN. 17! Figura 3-6. Recorte de la DEL de esios.ree.es. 18! Figura 3-7. Subestación eléctrica de la compañía Krostec, México. 19! Figura 4-1. Algoritmo script principal. 23! Figura 4-2. Algoritmo «preparadatos.m». 24! Figura 4-3. Recorte de la web www.sidc.be con SSN. 26! Figura 4-4. Recorte de un indicador en la web esios.ree.es. 28! Figura 5-1. Estrategia de ajuste genérica. 30! Figura 6-1. Histogramas de error para el caso 1 en SMA. 36! Figura 6-2. Histogramas de error para el caso 2 en SMA. 37! Figura 6-3. Histogramas de error para el caso 3 en SMA. 39! Figura 6-4. Histogramas de error para el caso 4 en SMA. 40! Figura 6-5. Histogramas de error para el caso 5 en SMA. 42! Figura 6-6. Histogramas de error para el caso 6 en SMA. 43! Figura 6-7. Histogramas de error para el caso 7 en SMA. 45! Figura 6-8. Histogramas de error para el caso 8 en SMA. 46! Figura 6-9. Histogramas de error para el caso 9 en SMA. 48! Figura 6-10. Predicción en SMA. 50! xviii Figura 6-11. Detalle de predicción en SMA. 51! Figura 6-12. Histograma del error en SMA. 52! Figura 6-13. Histogramas de error para el caso 1 en SNN. 53! Figura 6-14. Histogramas de error para el caso 2 en SSN. 54! Figura 6-15. Histogramas de error para el caso 3 en SSN. 56! Figura 6-16. Histogramas de error para el caso 4 en SSN. 57! Figura 6-17. Histogramas de error para el caso 5 en SSN. 59! Figura 6-18. Histogramas de error para el caso 6 en SSN. 60! Figura 6-19. Histogramas de error para el caso 7 en SSN. 62! Figura 6-20. Histogramas de error para el caso 8 en SSN. 63! Figura 6-21. Histogramas de error para el caso 9 en SSN. 65! Figura 6-22. Predicción en SSN. 67! Figura 6-23. Detalle de predicción en SSN. 68! Figura 6-24. Histograma y distribución normal del error en SSN. 69! Figura 6-25. Histogramas de error para el caso 1 en DEL 70! Figura 6-26. Histogramas de error para el caso 2 en DEL. 71! Figura 6-27. Histogramas de error para el caso 3 en DEL. 73! Figura 6-28. Histogramas de error para el caso 4 en DEL. 74! Figura 6-29. Histogramas de error para el caso 5 en DEL 76! Figura 6-30. Histogramas de error para el caso 6 en DEL. 77! Figura 6-31. Histogramas de error para el caso 7 en DEL. 79! Figura 6-32. Histogramas de error para el caso 8 en DEL. 80! Figura 6-33. Histogramas de error para el caso 9 en DEL. 82! Figura 6-34. Predicción en DEL. 84! Figura 6-35. Detalle de la predicción en DEL. 85! Figura 6-36. Histograma del error en DEL 86! Figura 7-1. Histograma error mínimos cuadrados. 87! Figura 7-2. Histograma error métodos kernel. 88! Figura 7-3. Histograma de error LS en SSN. 88! Figura 7-4. Histograma de error SVR en SSN. 89! Figura 7-5. Histograma de error LS DEL. 89! Figura 7-6. Histograma de error SVR DEL. 90! Figura 7-7. Influencia validación cruzada. 90! xix Notación SSN Número de manchas solares. f.a.c. Fracción del año en curso. std Desviación estándar DEL Demanda de energía eléctrica SMA Señal modulada en amplitud MSE Mean square error SME Standard mean error ECM Error cuadrático medio EEM sios min max s.a. CV LS-SVM LS-SVR Error estándar de la media Sistema de información del operador del sistema Mínimo Máximo Sujeto a Cross validation Least square support vector machines Least square support vector machines for regresión. 21 1 1 INTRODUCCIÓN os grandes y rápidos progresos de la sociedad hacen posible hoy día logros que eran impensables hace un siglo. Esto es así en prácticamente en todos los ámbitos de conocimiento que existen, pero especialmente en lo referente a tecnología, que está experimentando un crecimiento exponencial en las últimas décadas que puede llegar a ser abrumador. Gran parte de responsabilidad en los avances que se están produciendo en los últimos años, es de la inteligencia artificial y el aprendizaje automático de las computadoras en general, que son capaces de procesar una cantidad ingente de información y mejorar en su procesamiento a medida que se va añadiendo ésta. Es por eso que he elegido realizar este trabajo sobre técnicas de aprendizaje automático, ya que me parecen tan útiles como interesantes además de ofrecer una cantidad de posibilidades casi ilimitadas en cuanto a su aplicación. Aunque de facto este campo no ha formado parte del plan de estudios del Grado en si mismo, sí ha habido contenidos a lo largo del Grado que han hecho despertar mi curiosidad al respecto del mismo, siendo entonces la posibilidad de aprender cosas nuevas y diferentes, otra de las razones que me ha llevado a elegir una ínfima parte de todo lo relacionado con el mundo del aprendizaje automático como tema de mi Trabajo de Fin de Grado. En concreto, este trabajo se centra en los métodos kernel empleados en problemas de regresión y predicción de secuencias temporales y en el estudio de estrategias de ajuste de todos aquellos aspectos variables de éstos que influyen en el buen rendimiento de los mismos. 1.1 Objetivos En cuanto a los objetivos que se pretenden alcanzar en el desarrollo de esta trabajo son, a grandes rasgos, los que se enumeran a continuación: • Obtención de los conocimientos teóricos necesarios en el ámbito de aprendizaje automático y en concreto de métodos kernel para la clasificación y, más importante, para la regresión. • Desarrollo de los algoritmos oportunos en MatLab de forma que se puedan realizar ensayos y simulaciones que permitan la obtención de resultados para su posterior análisis y valoración. • Obtención y preparación de los datos necesarios para la realización de los ensayos. • Diseño de estrategias para el correcto ajuste de todos aquellos aspectos de los métodos kernel que sean variables y que, en gran parte, hacen que los resultados dependan de las bondades del programador. L El sistema «se ha ido a Brenes». - Teodoro Álamo Cantarero - Introducción 2 • Investigación de la influencia de las estrategias mencionadas en los métodos kernel y validación de las técnicas previamente propuestas. • Presentación de resultados consecuencia de los ensayos y el trabajo realizado, de forma objetiva. • Valoración de la influencia de las técnicas probadas en los resultados obtenidos y posibles mejoras así como establecer futuras líneas de trabajo. 1.2 Organización de la memoria La organización de este documento pretende ser un viaje desde las bases teóricas de los temas estudiados hasta ejemplos y aplicaciones prácticas que se resuelven en el mundo real de forma que se puedan obtener unas conclusiones aceptables sobre el resultado del trabajo realizado. En el segundo capítulo podremos encontrar los conceptos y desarrollos teóricos necesarios para la comprensión del trabajo realizado, así como pequeños ejemplos que los ilustren. Cuando llegamos al tercer capítulo de este documento, se presentarán los problemas sobre los que vamos a centrarnos y los objetivos que nos proponemos sobre ellos de forma general para, en el cuarto capítulo, presentar las herramientas que posibilitaran la consecución de las soluciones que se proponen; además, podremos encontrar una descripción detallada del procedimiento realizado para la obtención y tratamiento de los datos necesarios para el desarrollo de esta memoria de forma detallada. En el quinto capítulo, encontraremos de forma agrupada y resumida los resultados del trabajo realizado de forma objetiva, sin entrar en valoraciones de ninguna índole. Se establecerán distintos indicadores y marcadores que permitirán más adelante hacer las valoraciones oportunas. Para las conclusiones arrojadas por los ensayos realizados, tendremos que esperar hasta el sexto y último capítulo, en el que se enfrentarán de forma justa los ensayos realizados , no sólo de los resultados sino de todo el proceso de realización de este trabajo. Para ello contaremos con los resultados e indicadores obtenidos en el capítulo cinco. Una vez descrito el núcleo del trabajo en los capítulos mencionados en párrafos anteriores, en el anexo «A» se podrá encontrar el código desarrollado para poder concluir este trabajo. 3 2 CONCEPTOS. DESARROLLO TEÓRICO e puede entender este capítulo como una introducción teórica a las bases sobre las que se sustenta el trabajo realizado. Antes de definir concretamente los conceptos propios de los métodos kernel, es necesario introducir ciertas ideas y definiciones del ámbito del aprendizaje automático en general –tanto en problemas de clasificación como en problemas de regresión–, así como una pequeña pincelada al contexto histórico del área de conocimiento que nos ocupa. 2.1. Aprendizaje Automático El aprendizaje automático es una rama de las ciencias de la computación y de la inteligencia artificial en general. Nace con la intención de otorgar a máquinas la capacidad de tomar decisiones y obtener resultados basados en la experiencia; es por ello que se basa en el análisis de datos obtenidos previamente a la ejecución de los métodos de cálculo oportunos y, en un principio, a medida que aumenta el número de muestras, mejoran los resultados obtenidos con dichos métodos de cálculo. Sus aplicaciones son prácticamente ilimitadas, ya que en la mayoría de cosas que nos rodean, se producen patrones que estos algoritmos y métodos de cálculo son capaces de encontrar para «aprender» y así tomar mejores decisiones y/o generar mejores resultados. Aún así, el aprendizaje automático –a día de hoy– no está al nivel de superar la intuición de los seres humanos para tomar decisiones. Algunos de los campos que aplican técnicas de aprendizaje automático, entre muchos otros, son: • Economía • Medicina • Ingeniería • Automoción • Marketing En general, el aprendizaje automático, consta de tres fases. Es necesario entrenar los algoritmos y validar la calidad de los resultados antes de entrar estos en producción, es decir, que se apliquen de forma real y se tengan en cuenta los resultados obtenidos. Figura 2-1. Fases generales del aprendizaje automático. Existen muchas técnicas de aprendizaje automático para cada uno de los dos tipos de aprendizaje que existen (aprendizaje automático supervisado y no supervisado). A lo largo de este capítulo se desarrollan algunas de ellas. S Conceptos. Desarrollo Teórico 10 min d,L,ef,eT,eg,...,ei 444441 2_8_ + l mW· 9W , ? WE* 4444444n. $.4444444'W− _8Z JW+ 4^ − 9W= 0 Con: l – Parámetro que permite balancear el error cometido con el ajuste necesario. mW – Ponderación del error cometido en cada muestra. Se aprecia en el problema de regresión que se pretende minimizar dos términos: • _8_ – minimizar este término permite maximizar el margen de clasificación [6]. • mW· 9W ,? WE* – este término penaliza el error cometido de forma ponderada. Si planteamos el problema de optimización dual [8], nos queda que: max qf,qT,qg,…,qi 44444 min d,L,ef,eT,eg,...,ei 444441 2_8_ + l mW· 9W , ? WE* + rWmW· ('W− _8Z JW+ 4^ − 9W) ? WE* Dados los valores de r*, r,, rs, … , r?óptimos para ω y todos los ei , forzando que la derivada con respecto a éstos sea cero, tenemos; _ = rWmW· Z(JW) ? WE* (1) 9W=4rW l mW Sustituyendo esos valores en la función a optimizar y reordenando: Γ = 4 − 1 2rWmW· Z JW ? WE* , , +1 2l rWmW('W− ^) ? WE* Introducimos las variables n = m. ⋮ m? ; D = diag(s); 44@ = Z8(J*) ⋮ Z8(J?) ; r = r* ⋮ r? ; 44444> = '* ⋮ '? ; Sustituyendo estas variables en Γ tenemos que Γ = −1 2r8w@@8w + 1 lx r + r(w> −^n) Igualando a cero la anterior ecuación y reescribieno de forma matricial 0 n8 nw@@8w + 1 lx ^ r=0 w> y de la ecuación (1) _ = @8wr Podemos ver que 11 Técnicas de ajuste de los métodos Kernel para la regresión. @@8= 4 Z8(J*)Z(J*) Z8(J*)Z(J,) Z8(J,)Z(J*) Z8(J*)Z(J,) ⋮ 444444444444444444444444⋮ Z8(J?)Z(J*) Z8(J?)Z(J,) 4444 … Z8(J*)Z(J?) … Z8(J,)Z(J?) 444 ⋮ … Z8(J?)Z(J?) Definiendo la función kernel K(·,·) : ℝ,.P→ ℝ como I JK, JL= Z8(JK)Z(JL) por lo que [@8@]W,y = I JW, Jy y tenemos la solución óptima como: 0 n8 nwIw +1 lx ^ r=0 w> Para el cómputo de la salida, tenemos que: ' = ^ + (wr)8· I J*, J ⋮ I J?, J En problemas de clasificación binaria, el signo del valor de ' determinará la pertenencia a una u otra clase. En problemas de regresión, ' proporciona el valor estimado de la muestra a predecir. 2.4 Técnicas para la elección y ajuste de regresores e hiperparámetros Como se ha visto, tanto en las funciones kernel cómo en la formulación matemática del problema, existen parámetros que es necesario sintonizar y de los que depende el resultado del problema. Para evitar escoger de forma arbitraria dichos parámetros y aumentar la eficiencia de la predicción, existen diversas técnicas que ofrecen métodos de ajuste, entre ellas, la más sencilla, probablemente sea seleccionar un conjunto de parámetros y comparar estos resultados entre sí. Para ello es necesario un procedimiento fiable, objetivo y estándar de obtener el error de predicción. 2.4.1 Validación cruzada Probablemente, una de las técnicas más extendidas en su empleo y a la vez más sencilla para la elección y ajuste de regresores mediante la comparación del error cometido en la predicción con distintos parámetros sea la validación cruzada. Se emplea principalmente para estimar errores y variables estadísticas de la forma menos sesgada posible. La idea es obtener una generalización del error a partir de un número de muestras finitas. Existen varios tipos de validación cruzada distintos. En este trabajo se emplea el método de validación cruzada de kiteraciones. Conceptos. Desarrollo Teórico 12 Figura 2-9. Esquema validación cruzada de k-iteraciones con k = 4. El método consiste en dividir el conjunto de datos disponible en k «pliegues» o conjuntos (del nombre del método en inglés, «k-fold cross validation») y emplear en cada una de las k iteraciones un set de validación distinto. El resto de datos que no van a ser empleados en la validación, son utilizados para el entrenamiento del algoritmo. Por cada una de las iteraciones (k), obtenemos un error (ei). El error generalizado (EG) del regresor y parámetros empleados será la media del error de cada iteración. Esto es: <z= 4 1 :9W ( WE* Debido al gran gasto computacional que puede llegar a suponer este tipo de validación cruzada, se suelen emplear valores de k entre 5 y 10 [9]. En el caso que nos ocupa, en el proceso de validación cruzada vamos a determinar tanto el error cuadrático medio (ECM o MSE, siglas en inglés) como el error estándar de la media (EEM o SEM, siglas en inglés). El MSE nos proporciona información sobre el error que podemos esperar del algoritmo en futuras predicciones [10] y se calcula como la media del cuadrado de los errores de cada predicción en el número de muestras N: @{< = 4 1 =9W , ? WE* =1 =('W− 'W), ? WE* El SEM nos da una idea de cuál va a ser la desviación típica del MSE en futuras predicciones [10]. Para un conjunto de validación de N muestras y desviación estándar del error cuadrático σ, tenemos que: {<@ = 4 | = 13 3 PRESENTACIÓN DE LOS PROBLEMAS n este capítulo, se presentan los diversos problemas de regresión que se han resuelto. Se han elegido estos y no otros debido a la cantidad de datos disponibles principalmente. Además, uno de los tres problemas propuestos es un ejercicio sintético, de escasa utilidad práctica más allá de comprobar el buen funcionamiento de los algoritmos desarrollados además de poder emplearse como ejemplo en los conceptos teóricos que aparecen en los capítulos previos. Por el contrario, los otros dos problemas que se resuelven en el capítulo cinco, sí constituyen ejemplos reales, con abundantes datos obtenidos de páginas web y fuentes confiables en ambos casos. El objetivo del trabajo para todos los problemas que se proponen a continuación, no es otro que predecir la evolución futura de cada una de las secuencias temporales propuestas en cada caso además de, puntualmente para el ejercicio sintético, comprobar el buen funcionamiento y robustez de los algoritmos desarrollados. 3.1 Predicción de una señal modulada en amplitud. Problema sintético La modulación de señales es una técnica que se emplea en telecomunicaciones para transmitir información a través de una onda portadora. Consiste en la superposición de señales que contienen dicha información sobre una señal portadora con una longitud de onda mucho menor que la que presenta la que deseamos transmitir. Estas técnicas son interesantes debido a las ventajas que ofrece su empleo en temas relacionados con la inmunidad frente al ruido e interferencias, tamaño de los equipos emisores y receptores y otros tantos, frente a la transmisión únicamente de la señal que contiene la información. De las muchas técnicas que existen para la modulación de señales, se ha elegido la modulación en amplitud, aunque hubiera sido igualmente válida cualquier otro tipo. Como se ha dicho en la introducción del capítulo, este no pretende ser un estudio de aplicación real sino, más bien, un ejercicio teórico del que conocemos todos los parámetros para así poder comprobar el buen funcionamiento de los algoritmos desarrollados además de servir como ejemplo ilustrador de los conceptos teóricos desarrollados a lo largo de todo el trabajo. Se ha elegido este problema y no otro por no ser demasiado simple en aspectos como por ejemplo, presentar cambios medianamente abruptos que permitan comprobar la robustez y bondad del regresor además de los parámetros de diseño. Se le ha añadido también ruido aleatorio para complicar un poco la predicción, ya que al ser puramente periódica, una vez ensayado un ciclo, tan solo con el punto del periodo en el que nos encontremos es posible predecir con exactitud, eligiendo un buen regresor, el valor que la señal tomará a lo largo del set de validación. Con todo esto, la señal modulada en amplitud objeto de estudio de este trabajo viene descrita por la función: ' U = 1 + }~ }• '~U · }•· 'ÄU + Å(U) dónde: E Presentación De Los Problemas 14 Am – Amplitud de la onda moduladora. Ap – Amplitud de la onda portadora. r(t) – Ruido aleatorio introducido en la señal a predecir. ym(t) – Señal moduladora. yc(t) – Señal portadora. Las señales moduladora y portadora, son las siguientes: '~U = sin 2ÉÑ~U 'ÄU = sin 2ÉÑÄU Con φm y φc las frecuencias de las ondas de modulación y portadora respectivamente siempre sujeto a la condición φm < φc . Gráficamente, la señal a predecir, así como la portadora y la señal moduladora, presentan la siguiente forma: Figura 3-1. Señales del problema sintético. De forma desglosada y en detalle: 15 Técnicas de ajuste de los métodos Kernel para la regresión. Figura 3-2. Detalle de señal modulada. Figura 3-3. Detalles de señales portadora y moduladora. Presentación De Los Problemas 16 3.2 Predicción del número de manchas solares Las manchas solares son producidas por perturbaciones en el campo magnético de la estrella que emana a la fotosfera. Este suceso se puede observar como regiones oscuras en la superficie solar de un tamaño que podría ser equivalente al de un planeta. El hecho de que se vean más oscuras que el resto de la superficie es debido al contraste que se genera entre la temperatura de la mancha y la superficie. La aparición de estos fuertes campos magnéticos entorno a las manchas solares producen regiones activas en la estrella que pueden provocar el fenómeno conocido como «tormentas solares». Este incremento en la actividad solar está relacionado con la actividad geomagnética en La Tierra, que presenta un ciclo idéntico al solar. Figura 3-4. Manchas solares vistas desde el centro de vuelo espacial de la NASA Goddard. Desde alrededor del año 800 a.C., existen casos documentados de manchas solares por astrónomos chinos de forma ocasional ya que las creían augurios de eventos importantes. Con la aparición del telescopio entorno al 1600, en occidente, se empezó a estudiar este fenómeno aunque existían algunas discrepancias entre los astrónomos de la época entorno a qué era este suceso. No obstante, permitió realizar las primeras estimaciones del periodo rotacional del sol debido al movimiento de las manchas solares observadas. En 1843, el astrónomo aficionado alemán Samuel Heinrich, descubrió que éste fenómeno presentaba un cierto carácter cíclico que estimó en unos diez años (en la actualidad se sabe que son 11 años de media lo que dura un ciclo solar) en el que el número de manchas solares presentaba un máximo y un mínimo bien diferenciado. No fue hasta 1948 cuando el astrónomo y matemático suizo Johan Rudolf Wolf, propuso la mejor forma de contar el número de manchas, problema que es complejo debido a la variabilidad en el tamaño, agrupación y posición de éstas. Su idea para computar el número de manchas solares diarias consiste en sumar el número observado ese día más diez veces la cantidad de agrupaciones de éstas que existan. Se define entonces el número de manchas solares –SSN, por sus siglas en inglés–, también llamado número de Wolf, fórmula de Wolf o número de manchas solares de Wolf– como: {{= = :(10$ + Ö) dónde: k – Factor que varía en función de aspectos como el instrumental empleado en la medida. a – Número de agrupaciones de manchas solares. i – Número de manchas solares independientes observadas. 17 Técnicas de ajuste de los métodos Kernel para la regresión. En la actualidad, el Observatorio Real de Bélgica se encarga de mantener una base de datos actualizada de forma diaria y ha revisado las series históricas añadiendo información necesaria para el correcto procesamiento de los datos. Figura 3-5. Serie histórica de medias anuales del SSN. Pese a la sencillez de este número, se sigue empleando hoy en día aunque haya otras formas de medir la cantidad de manchas solares más sofisticadas debido a la gran cantidad de datos que existen (unos 400 años) y que permiten resolver problemas como el que se plantea en este documento, consistente en predecir las secuencias del SSN futuras debido al impacto que tiene éste tanto en el clima terrestre como en telecomunicaciones espaciales. 3.3 Predicción de la demanda de energía eléctrica La predicción de la demanda de energía eléctrica, puesto que ésta no se puede almacenar de forma eficiente, es un problema realmente importante para programar la producción eficazmente. Además, el precio de compra del KW/h fijado por subasta pública también guarda una estrecha relación con la demanda por lo que la predicción de energía es un asunto que involucra a diversos agentes y una buena solución, puede proporcionar grandes beneficios económicos. Presentación De Los Problemas 18 Figura 3-6. Recorte de la DEL de esios.ree.es. Solucionar este problema no es trivial. Existen muchos factores que influyen en el consumo de energía, algunos de ellos, se listan a continuación: • Factores ambientales. Por ejemplo, pueden influir en la demanda de energía eléctrica temperatura, humedad o altitud respecto al nivel del mar. • Estacionalidad. No se consume la misma cantidad de energía en marzo que en enero. • Bonanza económica. La demanda y producción de energía eléctrica guarda una importante relación con la economía del país. Una economía más «fuerte» implica una mayor producción y adquisición de bienes de consumo que provocan un aumento en las necesidades energéticas de la nación. Por el contrario, cuando un país se encuentra en periodos de crisis económica, las necesidades energéticas se disminuyen debido a la caída de la producción, el consumo y la dificultad de algunos agentes sociales para hacer frente a esos gastos. • Desarrollo de la región. No se consume, y por tanto no se demanda, tanta energía eléctrica en una región industrializada como en una agrícola, por ejemplo. En resumen, podríamos concluir que existen tres grupos, que guardan correlación entre sí, de factores que afectan a la demanda energética; factores climáticos, factores geográficos y factores demográficos. 19 Técnicas de ajuste de los métodos Kernel para la regresión. Figura 3-7. Subestación eléctrica de la compañía Krostec, México. Los resultados arrojados por el estudio, serán únicamente consecuencia de la secuencia histórica de consumo de energía eléctrica. No se incluirán, por tanto, factores ambientales, demográficos o geográficos para las predicciones de la serie. Esto es debido al tiempo en el que se hace la predicción. Es decir, como el estudio se va a realizar haciendo predicciones a una hora vista, estos factores no son excesivamente determinantes ya que las variaciones entre una hora y otra, por ejemplo en cuanto a la temperatura y humedad, no son demasiado relevantes para el estudio. El escenario en el que se va a desarrollar este estudio no es otro que el territorio nacional Español, excluyendo Islas Canarias, Islas Baleares, Ceuta y Melilla. Se van a analizar series históricas de demanda de energía eléctrica global, es decir, sin diferenciar entre las fuentes que producen esta energía ni el tipo de consumo (industrial, residencial y servicios son las distinciones más habituales que se suelen emplear). Descripción del Trabajo Desarrollado 26 26 4.4 Obtención de datos y tratamiento En esta sección se detallará para cada problema de dónde y cómo se han obtenido los datos y el tratamiento que han recibido para poder procesarse adecuadamente. 4.4.1 Señal modulada en amplitud Los datos necesarios para generar esta secuencia temporal no se han obtenido de de forma externa. Al tratarse de un problema sintético, se han generado con el script genera_onda_modulada.m El archivo que contiene esta secuencia no es más que un vector correspondiente al valor de la amplitud de la señal en cada una de las cinco mil muestras que se generan. 4.4.2 Número de manchas solares Las series históricas del número de manchas solares están disponibles en la web www.sidc.be y son públicas. Únicamente se exige por parte del que las use, citar la fuente de las mismas. Esta página web, pertenece al Centro de Análisis de Datos de la Influencia Solar, que es un centro de investigación del observatorio Real de Bélgica. Figura 4-3. Recorte de la web www.sidc.be con SSN. El formato en el que nos encontramos el fichero al descargarlo es un «.csv» que podemos abrir con LibreOffice o Excel, por lo que será necesario cambiar el separador decimal (Tanto Excel como LibreOffice, configurados en español, entienden el separador decimal como una coma) para que MatLab lo reconozca adecuadamente. Se cambia el nombre y la extensión al archivo para poder trabajar cómodamente con él y ya tenemos listas las muestras teniendo en cuenta, que al ejecutar la función xlsread(), nos devolverá una matriz con las muestras por filas y en las columnas: • Columna 1: año de la muestra. • Columna 2: mes de la muestra. 27 Técnicas de ajuste de los métodos Kernel para la regresión. • Columna 3: Fracción del año en curso. • Columna 4: Media mensual del índice SSN. • Columna 5: Desviación típica del valor del índice SSN. La matriz contiene dos columnas más pero no nos van a ser de utilidad. 4.4.3 Demanda de energía eléctrica Para este problema, se puede encontrar toda la información empleada en el portal de transparencia de red eléctrica de España https://esios.ree.es. En este portal, se puede encontrar toda la información relativa a la red eléctrica como por ejemplo, demanda agregada, consumo, precios del kWh, PVPC, consumo o demanda programada. También se puede encontrar información relativa a la generación de energías renovables y mucho más. Para descargar la información, debemos entrar en el indicador que nos interese y «pinchar» en «analizar indicador». Una vez hemos hecho esto, se nos abre una página en la que se muestra información acerca del indicador seleccionado. En nuestro caso, el indicador es la energía demandada por lo que realizamos este proceso para este indicador y en la página de análisis, vemos los gráficos correspondientes. Se nos permite descargar la información agrupada por horas, cada minutos, días o meses. Se ha optado por descargarla agurpada por horas para tener una buena cantidad de datos disponibles. Una vez descargamos el archivo en formato «.csv» nos encontramos las siguientes columnas: • Columna 1: identificador del marcador al que pertenece la fila • Columna 2: nombre del marcador al que pertenece la fila. • Columna 3: vacío para el caso que nos ocupa. • Columna 4: vacío para el caso que nos ocupa. • Columna 5: valor del marcador (en MW en nuestro caso). • Columna 6: fecha en formato «AAAA-MM-DDTHH:MM:SS+GMT». Descripción del Trabajo Desarrollado 28 28 Figura 4-4. Recorte de un indicador en la web esios.ree.es. Esa información, la procesamos para obtener otro archivo «.csv» con la siguiente distribución: • Columna 1: año de la muestra. • Columna 2: día de la muestra. • Columna 3: mes de la muestra. • Columna 4: hora de la muestra. • Columna 5: valor de la muestra (en MW). Guardamos el archivo en formato «.xlsx» para poder abrirlo con xlsread() de MatLab y ya se dispone de la información necesaria para resolver el problema. 29 5 ALGORITMOS PARA LA SELECCIÓN DE HIPERPARÁMETROS lo largo de este capítulo, encontraremos los resultados que son consecuencia de la aplicación de todo el trabajo descrito en el apartado anterior. Para garantizar toda la objetividad que sea posible en dichos resultados, en cada problema se aplicarán de forma sistemática los algoritmos desarrollados, manteniendo orden y forma. El proceso que se va a seguir en los ensayos, constituye la técnica desarrollada para el ajuste de los métodos kernel al que hace referencia el título de este trabajo. El objetivo principal es comprobar el aumento de la eficiencia en la predicción de secuencias futuras (esto es, disminución del error cometido) al aplicar dichas técnicas. Por ello, los resultados presentados en este capítulo serán los indicadores de bondad necesarios para tal fin además de la predicción de las secuencias temporales de los set de validación con los regresores que se han seleccionado, en última instancia, consecuencia de aplicar estas técnicas. En forma todos los problemas se resuelven de la misma manera, no así en fondo; es decir, aunque el procedimiento sistemático mencionado anteriormente sea el mismo para todos ellos, existen diferencias entre problemas debidos a la idiosincrasia de cada uno, como por ejemplo, el valor de los hiperparámetros o la dimensión y forma de los regresores. Con todo lo mencionado anteriormente, antes de entrar en ningún problema concreto, se presenta la técnica desarrollada para la consecución de los resultados que se mostrarán a lo largo de este capítulo. El proceso de ajuste de los parámetros y regresores necesarios es un procedimiento iterativo en el que se comparan los resultados obtenidos entre unas y otras de las soluciones propuestas. Para el fin que nos ocupa, vamos a partir de tres propuestas de regresores y otras tres para los conjuntos de hiperparámetros. Esto hace un total de nueve regresores distintos candidatos a resolver el problema de regresión. Evidentemente, cuantas más posibles regresores y conjuntos de parámetros enfrentemos entre sí, más nos acercaremos a la solución más eficiente posible para el método empleado en la regresión. De forma esquemática, el algoritmo para cada problema es: A Algoritmos para la selección de hiperparámetros 30 30 Figura 5-1. Estrategia de ajuste genérica. Los indicadores de bondad que vamos a obtener mediante validación cruzada para elegir los mejores regresores serán: • Error cuadrático medio (ECM o MSE): @{< =1 => `− > W , ? WE* • Error estándar de la media (EEM o SEM) 31 Técnicas de ajuste de los métodos Kernel para la regresión. {<@ =nUF(n9) = dónde, § std(se) – desviación estándar los errores cuadráticos en la predicción § N – Número de muestras del set de validación § Yi – Valor real de la muestra «i» de la secuencia temporal § > `4– Valor predicho de la muestra «i» de la secuencia temporal Es necesario aclarar en el caso de los indicadores de bondad, que se excluirán del cómputo los valores no finitos de los sets de datos existentes, es decir, tanto de entrenamiento como de validación. Además, como se ha dicho anteriormente, estos indicadores se calcularán con técnicas de validación cruzada detalladas en el segundo capítulo de este documento. En regresión, hay que tener cuidado con las desviaciones estándar y las medias ya se pueden encontrar varias con distintos significados de éstas en función de cómo se calculen. A continuación se explican las diferencias entre ellas. Tabla 5-1. Distintas medias y desviaciones estándar en regresión. Forma de cálculo Significado Media del MSE de cada iteraciones Error medio esperado en futuras predicciones Media de los SEM de cada iteración Error estándar esperado en futuras predicciones Desviación típica de los MSE de cada iteración Varianza de la estimación de los futuros MSE con respecto a los predichos Desviación típica de los SEM de cada iteración Varianza de la estimación de los futuros SE con respecto a los predichos Como se pretende determinar cuál es el regresor que mejor predicción de muestras futuras va a realizar y el objetivo principal de la validación cruzada es determinar cómo de bien se va a comportar dicho regresor, vamos a emplear las dos primeras entradas de la Tabla 5-1. Además, en todos los problemas, el primer conjunto regresor-parámetros que se va a emplear consistirá en un regresor formado por los últimos cuatro valores disponibles de la salida, con γ y τ iguales a uno, ya que con esta configuración sumado a una función kernel tipo lineal, el resultado obtenido es equivalente al obtenido con un regresor de dimensión cuatro por mínimos cuadrados y podemos comprobar cómo los métodos kernel mejoran el resultado de los métodos históricos si es que lo hacen. 5.1 Señal modulada en amplitud Se muestran en esta sección los resultados obtenidos en este problema. El resultado final será la elección justificada de un conjunto de regresor y parámetros. Para ello se proponen los siguientes: • Regresores: o Primer regresor: JW= 'W+*, 'W+,, 'W+s, 'W+Ü o Segundo regresor: JW= 'W+*, 44'W+, ,444áàOgâáàOäâáàOã s o Tercer regresor: JW= 'W+*, 'W+,, 0.4 · 'W+s,4440.6 · áàOäâáàOgâáàOT s Algoritmos para la selección de hiperparámetros 32 32 • Parámetros: Tabla 5-2. Conjuntos de parámetros a ensayar en el problema SMA. Parámetro Primer conjunto Segundo conjunto Tercer conjunto Función kernel Linear Radial Basis Sigmoidal Tau (τ) 1 0.95 0.9 Gamma (γ) 1 550 70 Param. 1 de la f. kernel 34 300 3 Param. 2 de la f. kernel 0.5 50 15 5.2 Número de manchas solares Se muestran en esta sección los resultados obtenidos en este problema. El resultado final será la elección justificada de un conjunto de regresor y parámetros. Para ello se proponen los siguientes: • Regresores: o Primer regresor: JW= 'W+*, 'W+,, 'W+s, 'W+Ü o Segundo regresor: JW= 'W+*, 44'W+,,444é. $. M.W+* o Tercer regresor: JW= 'W+*, 'W+,, $ñêW,4440.6 · ëíNàOfâëíNàOTâëíNàOg s4 • Parámetros: Tabla 5-3. Conjuntos de parámetros a ensayar en el problema SSN. Parámetro Primer conjunto Segundo conjunto Tercer conjunto Función kernel Linear Radial Basis Sigmoidal Tau (τ) 1 0.99 0.92 Gamma (γ) 1 470 265 Param. 1 de la f. kernel 0.5 360 78 Param. 2 de la f. kernel 164 54 15 5.3 Demanda de energía eléctrica Se muestran en esta sección los resultados obtenidos en este problema. El resultado final será la elección justificada de un conjunto de regresor y parámetros. Para ello se proponen los siguientes: • Regresores: o Primer regresor: JW= 'W+*, 'W+,, 'W+s, 'W+Ü o Segundo regresor: JW= 'W+*, 44'W+,,44419nW+*, 44Fí$W+*, 44ℎêÅ$W+* o Tercer regresor: JW= 'W+*,4440.4 · 'W+, + 0.6 · áàOäâáàOgâáàOT s,44419nW+*, 44Fí$W+*, 44ℎêÅ$W+* • Parámetros: 33 Técnicas de ajuste de los métodos Kernel para la regresión. Tabla 5-4. Conjuntos de parámetros a ensayar en el problema DEL. Parámetro Primer conjunto Segundo conjunto Tercer conjunto Función kernel Linear Radial Basis Sigmoidal Tau (τ) 1 0.97 0.995 Gamma (γ) 1 175 38 Param. 1 de la f. kernel 3 615 34 Param. 2 de la f. kernel 28 167 615 35 6 PRESENTACIÓN DE RESULTADOS 6.1 Resultados SMA 6.1.1 Caso 1. Primer regresor y primer conjunto de parámetros Para este caso, se elige el primer regresor y el primer conjunto de parámetros por lo que tenemos que: • Regresor: JW= 'W+*, 'W+,, 'W+s, 'W+Ü • Parámetros: Tabla 6-1. Parámetros del caso 1 en SMA. Parámetro Valor Función kernel Linear Tau (τ) 1 Gamma (γ) 1 Param. 1 de la f. kernel 34 Param. 2 de la f. kernel 0.5 En este caso, al ser la función kernel lineal, los parámetros «Param. 1» y «Param. 2» no tendrán efecto alguno en el resultado. Este caso es idéntico a emplear mínimos cuadrados en la predicción de la secuencia temporal. Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. Presentación de resultados 42 42 Figura 6-5. Histogramas de error para el caso 5 en SMA. Los errores que se cometen en este caso, son: Tabla 6-10. Errores cometidos en el caso 5 de SMA. Tipo Error k1 k2 k3 k4 k5 Media MSE 0.009926 0.007671 0.004982 0.010092 0.007549 0.008044 SEM 0.000363 0.000336 0.000220 0.000372 0.000326 0.000324 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.1.6 Caso 6. Segundo regresor y tercer conjunto de parámetros Para este caso, se elige el segundo regresor y el tercer conjunto de parámetros por lo que tenemos que: • Regresor: JW= 'W+*, 44'W+, ,444áàOgâáàOäâáàOã s • Parámetros: 43 Técnicas de ajuste de los métodos Kernel para la regresión. Tabla 6-11. Parámetros del caso 6 en SMA. Parámetro Valor Función kernel Sigmoidal Tau (τ) 0.9 Gamma (γ) 70 Param. 1 de la f. kernel 3 Param. 2 de la f. kernel 15 Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. Figura 6-6. Histogramas de error para el caso 6 en SMA. Los errores que se cometen en este caso, son: Tabla 6-12. Errores cometidos en el caso 6 de SMA. Tipo Error k1 k2 k3 k4 k5 Media MSE 0.256314 0.190522 0.098324 0.259142 0.190352 0.198914 SEM 0.008086 0.007966 0.004916 0.008134 0.008038 0.007428 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Presentación de resultados 44 44 Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.1.7 Caso 7. Tercer regresor y primer conjunto de parámetros Para este caso, se elige el tercer regresor y el primer conjunto de parámetros por lo que tenemos que: • Regresor: JW= 'W+*, 'W+,, 0.4 · 'W+s,4440.6 · áàOäâáàOgâáàOT s • Parámetros: Tabla 6-13. Parámetros del caso 7 en SMA. Parámetro Valor Función kernel Linear Tau (τ) 1 Gamma (γ) 1 Param. 1 de la f. kernel 34 Param. 2 de la f. kernel 0.5 En este caso, al ser la función kernel lineal, los parámetros «Param. 1» y «Param. 2» no tendrán efecto alguno en el resultado. Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. 45 Técnicas de ajuste de los métodos Kernel para la regresión. Figura 6-7. Histogramas de error para el caso 7 en SMA. Los errores que se cometen en este caso, son: Tabla 6-14. Errores cometidos en el caso 7 de SMA. Tipo Error k1 k2 k3 k4 k5 Media MSE 0.006878 0.005787 0.004315 0.006956 0.005651 0.005917 SEM 0.000268 0.000266 0.000182 0.000273 0.000228 0.000243 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.1.8 Caso 8. Tercer regresor y segundo conjunto de parámetros Para este caso, se elige el tercer regresor y el segundo conjunto de parámetros por lo que tenemos que: • Regresor: JW= 'W+*, 'W+,, 0.4 · 'W+s,4440.6 · áàOäâáàOgâáàOT s • Parámetros: Presentación de resultados 46 46 Tabla 6-15. Parámetros del caso 8 en SMA. Parámetro Valor Función kernel Radial Basis Tau (τ) 0.95 Gamma (γ) 550 Param. 1 de la f. kernel 300 Param. 2 de la f. kernel 50 En este caso, al ser la función kernel «Radial Basis», el parámetros «Param. 2» no tendrá efecto alguno en el resultado. Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. Figura 6-8. Histogramas de error para el caso 8 en SMA. Los errores que se cometen en este caso, son: 47 Técnicas de ajuste de los métodos Kernel para la regresión. Tabla 6-16. Errores cometidos en el caso 8 de SMA. Tipo Error k1 k2 k3 k4 k5 Media MSE 0.009926 0.007671 0.004982 0.010092 0.007549 0.008049 SEM 0.000363 0.000336 0.000220 0.000372 0.000326 0.000324 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.1.9 Caso 9. Tercer regresor y tercer conjunto de parámetros Para este caso, se elige el tercer regresor y el tercer conjunto de parámetros por lo que tenemos que: • Regresor: JW= 'W+*, 'W+,, 0.4 · 'W+s,4440.6 · áàOäâáàOgâáàOT s • Parámetros: Tabla 6-17. Parámetros del caso 9 en SMA. Parámetro Valor Función kernel Sigmoidal Tau (τ) 0.9 Gamma (γ) 70 Param. 1 de la f. kernel 3 Param. 2 de la f. kernel 15 Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. Presentación de resultados 48 48 Figura 6-9. Histogramas de error para el caso 9 en SMA. Los errores que se cometen en este caso, son: Tabla 6-18. Errores cometidos en el caso 9 de SMA. Tipo Error k1 k2 k3 k4 k5 Media MSE 0.256314 0.190522 0.098324 0.259142 0.190352 0.198931 SEM 0.008086 0.007966 0.004916 0.008134 0.008038 0.007428 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.1.10 Elección del regresor Una vez se han ensayado y validado todos los casos, se dispone de la información necesaria para hacer la elección final, de forma resumida, en la siguiente tabla se pueden comparar los errores medios cometidos en cada caso . Éstos se han calculado como la media de los errores existentes en cada iteración del proceso de validación cruzada. 49 Técnicas de ajuste de los métodos Kernel para la regresión. Tabla 6-19. Resumen de errores por caso en SMA. CASO MSE SEM Caso 1 0.005917971384299 0.000243998976084 Caso 2 0.008049804893941 0.000324154397818 Caso 3 0.198931243489346 0.007428415690445 Caso 4 0.005912966322028 0.000243890126305 Caso 5 0.008044616243683 0.000324102907981 Caso 6 0.198914195555970 0.007428863015880 Caso 7 0.005917971384299 0.000243998976084 Caso 8 0.008049804893941 0.000324154397818 Caso 9 0.198931243489346 0.007428415690445 De esta forma, el regresor elegido para la regresión, por tener los mejores indicadores de bondad, es el correspondiente al caso 4, ya que tanto el MSE como el SEM son los menores de todos los ensayados: • Regresor: JW= 'W+*, 44'W+, ,444áàOgâáàOäâáàOã s • Parámetros: Tabla 6-20. Parámetros del regresor elegido en SMA. Parámetro Valor Función kernel Linear Tau (τ) 1 Gamma (γ) 1 Param. 1 de la f. kernel 34 Param. 2 de la f. kernel 0.5 6.1.11 Predicción Tras aplicar el conjunto regresor-parámetros al problema, separando los datos entre set de entrenamiento y set de validación destinando un 75% de los disponibles para el primero y el resto para el segundo, obtenemos un error medio en valor absoluto de 0.1420 con una desviación estándar de 0.1751. A continuación se muestra una gráfica con el valor real de las muestras y su predicción. Presentación de resultados 50 50 Figura 6-10. Predicción en SMA. En detalle: 51 Técnicas de ajuste de los métodos Kernel para la regresión. Figura 6-11. Detalle de predicción en SMA. A continuación, se puede observar un histograma de los errores cometidos y dibujada encima, la curva de la distribución normal asociada a dicho histograma. Presentación de resultados 58 58 Tabla 6-28. Errores cometidos en el caso 4 de SSN. Tipo Error k1 k2 k3 k4 k5 Media MSE 54.292448 45.372305 43.667700 47.563140 39.380136 46.063328 SEM 5.393751 4.405221 3.066412 4.094940 3.042716 4.000728 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.2.5 Caso 5. Segundo regresor y segundo conjunto de parámetros Para este caso, se elige el segundo regresor y el segundo conjunto de parámetros por lo que tenemos que: • Regresor: JW= 'W+*, 44'W+,,444é. $. M.W+* • Parámetros: Tabla 6-29. Parámetros del caso 5 en SSN. Parámetro Valor Función kernel Radial Basis Tau (τ) 0.99 Gamma (γ) 470 Param. 1 de la f. kernel 360 Param. 2 de la f. kernel 54 En este caso, al ser la función kernel «Radial Basis», el parámetros «Param. 2» no tendrá efecto alguno en el resultado. Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. 59 Técnicas de ajuste de los métodos Kernel para la regresión. Figura 6-17. Histogramas de error para el caso 5 en SSN. Los errores que se cometen en este caso, son: Tabla 6-30. Errores cometidos en el caso 5 de SSN. Tipo Error k1 k2 k3 k4 k5 Media MSE 53.133801 44.824724 43.793680 47.248870 38.312076 45.462630 SEM 5.311127 4.341405 3.067860 4.103989 2.891650 3.943206 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.2.6 Caso 6. Segundo regresor y tercer conjunto de parámetros Para este caso, se elige el segundo regresor y el tercer conjunto de parámetros por lo que tenemos que: • Regresor: JW= 'W+*, 44'W+,,444é. $. M.W+* • Parámetros: Presentación de resultados 60 60 Tabla 6-31. Parámetros del caso 6 en SSN. Parámetro Valor Función kernel Sigmoidal Tau (τ) 0.92 Gamma (γ) 265 Param. 1 de la f. kernel 78 Param. 2 de la f. kernel 15 Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. Figura 6-18. Histogramas de error para el caso 6 en SSN. Los errores que se cometen en este caso, son: Tabla 6-32. Errores cometidos en el caso 6 de SSN. Tipo Error k1 k2 k3 k4 k5 Media MSE 296.970036 273.507816 221.796179 375.414362 297.336629 292.885794 SEM 19.706176 15.704225 11.538894 23.106226 15.037640 17.014109 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. 61 Técnicas de ajuste de los métodos Kernel para la regresión. Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.2.7 Caso 7. Tercer regresor y primer conjunto de parámetros Para este caso, se elige el tercer regresor y el primer conjunto de parámetros por lo que tenemos que: • Regresor: JW= 'W+*, 'W+,, $ñêW,4440.6 · ëíNàOfâëíNàOTâëíNàOg s • Parámetros: Tabla 6-33. Parámetros del caso 7 en SSN. Parámetro Valor Función kernel Linear Tau (τ) 1 Gamma (γ) 1 Param. 1 de la f. kernel 0.5 Param. 2 de la f. kernel 164 En este caso, al ser la función kernel lineal, los parámetros «Param. 1» y «Param. 2» no tendrán efecto alguno en el resultado. Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. Presentación de resultados 62 62 Figura 6-19. Histogramas de error para el caso 7 en SSN. Los errores que se cometen en este caso, son: Tabla 6-34. Errores cometidos en el caso 7 de SSN. Tipo Error k1 k2 k3 k4 k5 Media MSE 54.292448 45.372305 43.667700 47.563140 39.380136 46.055146 SEM 5.393751 4.405221 3.066412 4.094940 3.042716 4.000608 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.2.8 Caso 8. Tercer regresor y segundo conjunto de parámetros Para este caso, se elige el tercer regresor y el segundo conjunto de parámetros por lo que tenemos que: • Regresor: JW= 'W+*, 'W+,, $ñêW,4440.6 · ëíNàOfâëíNàOTâëíNàOg s • Parámetros: 63 Técnicas de ajuste de los métodos Kernel para la regresión. Tabla 6-35. Parámetros del caso 8 en SSN. Parámetro Valor Función kernel Radial Basis Tau (τ) 0.99 Gamma (γ) 470 Param. 1 de la f. kernel 360 Param. 2 de la f. kernel 54 En este caso, al ser la función kernel «Radial Basis», el parámetros «Param. 2» no tendrá efecto alguno en el resultado. Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. Figura 6-20. Histogramas de error para el caso 8 en SSN. Los errores que se cometen en este caso, son: Presentación de resultados 64 64 Tabla 6-36. Errores cometidos en el caso 8 de SSN. Tipo Error k1 k2 k3 k4 k5 Media MSE 53.133801 44.824724 43.793680 47.248870 38.312076 45.451856 SEM 5.311127 4.341405 3.067860 4.103989 2.891650 3.942963 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.2.9 Caso 9. Tercer regresor y tercer conjunto de parámetros Para este caso, se elige el tercer regresor y el tercer conjunto de parámetros por lo que tenemos que: • Regresor: JW= 'W+*, 'W+,, $ñêW,4440.6 · ëíNàOfâëíNàOTâëíNàOg s • Parámetros: Tabla 6-37. Parámetros del caso 9 en SSN. Parámetro Valor Función kernel Sigmoidal Tau (τ) 0.92 Gamma (γ) 265 Param. 1 de la f. kernel 78 Param. 2 de la f. kernel 15 Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. 65 Técnicas de ajuste de los métodos Kernel para la regresión. Figura 6-21. Histogramas de error para el caso 9 en SSN. Los errores que se cometen en este caso, son: Tabla 6-38. Errores cometidos en el caso 9 de SSN. Tipo Error k1 k2 k3 k4 k5 Media MSE 296.970036 273.507816 221.796179 375.414362 297.336629 293.005004 SEM 19.706176 15.704225 11.538894 23.106226 15.037640 17.018632 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.2.10 Elección del regresor Una vez se han ensayado y validado todos los casos, se dispone de la información necesaria para hacer la elección final, de forma resumida, en la siguiente tabla se pueden comparar los errores medios cometidos en cada caso . Éstos se han calculado como la media de cada iteración del proceso de validación cruzada. Presentación de resultados 66 66 Tabla 6-39. Resumen de errores por caso en SSN. CASO MSE SEM Caso 1 46.055146097663524 4.000608448727943 Caso 2 45.451856807489655 3.942963419438617 Caso 3 293.005004880137903 17.018632652508835 Caso 4 46.063328080804318 4.000728583469870 Caso 5 45.462630801626808 3.943206677417650 Caso 6 292.885794894466812 17.014109643246698 Caso 7 46.055146097663524 4.000608448727943 Caso 8 45.451856807489655 3.942963419438617 Caso 9 293.005004880137903 17.018632652508835 El regresor elegido para la regresión, por tener los mejores indicadores de bondad, es el correspondiente al caso 8. Tenemos entonces que: • Regresor: JW= 'W+*, 'W+,, $ñêW,4440.6 · ëíNàOfâëíNàOTâëíNàOg s • Parámetros: Tabla 6-40. Parámetros del regresor elegido en SSN. Parámetro Valor Función kernel Radial Basis Tau (τ) 0.99 Gamma (γ) 470 Param. 1 de la f. kernel 360 Param. 2 de la f. kernel 54 6.2.11 Predicción Tras aplicar el conjunto regresor-parámetros al problema, separando los datos entre set de entrenamiento y set de validación destinando un 75% de los disponibles para el primero y el resto para el segundo, obtenemos un error medio en valor absoluto de 18.8542 con una desviación estándar de 25.9777 . A continuación se muestra una gráfica con el valor real de las muestras y su predicción. 67 Técnicas de ajuste de los métodos Kernel para la regresión. Figura 6-22. Predicción en SSN. En detalle: Presentación de resultados 74 74 Tabla 6-47. Parámetros del caso 4 en DEL. Parámetro Valor Función kernel Linear Tau (τ) 1 Gamma (γ) 1 Param. 1 de la f. kernel 3 Param. 2 de la f. kernel 28 En este caso, al ser la función kernel lineal, los parámetros «Param. 1» y «Param. 2» no tendrán efecto alguno en el resultado. Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. Figura 6-28. Histogramas de error para el caso 4 en DEL. Los errores que se cometen en este caso, son: 75 Técnicas de ajuste de los métodos Kernel para la regresión. Tabla 6-48. Errores cometidos en el caso 4 de DEL. Tipo Error k1 k2 k3 k4 k5 Media MSE 31.356810 45.827506 57.792855 33.584705 27.265117 39.164996 SEM 1.043963 1.699295 2.084170 1.078677 0.804561 1.342066 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.3.5 Caso 5. Segundo regresor y segundo conjunto de parámetros Para este caso, se elige el segundo regresor y el segundo conjunto de parámetros por lo que tenemos que: • Regresor: JW= 'W+*, 44'W+,,44419nW+*, 44Fí$W+*, 44ℎêÅ$W+* • Parámetros: Tabla 6-49. Parámetros del caso 5 en SSN. Parámetro Valor Función kernel Radial Basis Tau (τ) 0.97 Gamma (γ) 175 Param. 1 de la f. kernel 615 Param. 2 de la f. kernel 167 En este caso, al ser la función kernel «Radial Basis», el parámetros «Param. 2» no tendrá efecto alguno en el resultado. Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. Presentación de resultados 76 76 Figura 6-29. Histogramas de error para el caso 5 en DEL Los errores que se cometen en este caso, son: Tabla 6-50. Errores cometidos en el caso 5 de DEL. Tipo Error k1 k2 k3 k4 k5 Media MSE 31.359716 45.843230 57.823545 33.589266 27.274251 39.178002 SEM 1.044412 1.703398 2.096177 1.078995 0.804997 1.345596 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.3.6 Caso 6. Segundo regresor y tercer conjunto de parámetros Para este caso, se elige el segundo regresor y el tercer conjunto de parámetros por lo que tenemos que: • Regresor: JW= 'W+*, 44'W+,,44419nW+*, 44Fí$W+*, 44ℎêÅ$W+* • Parámetros: 77 Técnicas de ajuste de los métodos Kernel para la regresión. Tabla 6-51. Parámetros del caso 6 en SSN. Parámetro Valor Función kernel Sigmoidal Tau (τ) 0.995 Gamma (γ) 38 Param. 1 de la f. kernel 34 Param. 2 de la f. kernel 615 Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. Figura 6-30. Histogramas de error para el caso 6 en DEL. Los errores que se cometen en este caso, son: Tabla 6-52. Errores cometidos en el caso 6 de DEL. Tipo Error k1 k2 k3 k4 k5 Media MSE 361.649245 492.156574 652.621462 413.071220 409.842113 465.690668 SEM 9.104952 11.301062 14.666535 11.320950 9.839658 11.233264 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Presentación de resultados 78 78 Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.3.7 Caso 7. Tercer regresor y primer conjunto de parámetros Para este caso, se elige el tercer regresor y el primer conjunto de parámetros por lo que tenemos que: • Regresor: JW= 'W+*,4440.4 · 'W+, + 0.6 · áàOäâáàOgâáàOT s,44419nW+*, 44Fí$W+*, 44ℎêÅ$W+* • Parámetros: Tabla 6-53. Parámetros del caso 7 en DEL. Parámetro Valor Función kernel Linear Tau (τ) 1 Gamma (γ) 1 Param. 1 de la f. kernel 3 Param. 2 de la f. kernel 28 En este caso, al ser la función kernel lineal, los parámetros «Param. 1» y «Param. 2» no tendrán efecto alguno en el resultado. Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. 79 Técnicas de ajuste de los métodos Kernel para la regresión. Figura 6-31. Histogramas de error para el caso 7 en DEL. Los errores que se cometen en este caso, son: Tabla 6-54. Errores cometidos en el caso 7 de DEL. Tipo Error k1 k2 k3 k4 k5 Media MSE 31.356810 45.827506 57.792855 33.584705 27.265117 39.165399 SEM 1.043963 1.699295 2.084170 1.078677 0.804561 1.342133 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.3.8 Caso 8. Tercer regresor y segundo conjunto de parámetros Para este caso, se elige el tercer regresor y el segundo conjunto de parámetros por lo que tenemos que: • Regresor: JW= 'W+*,4440.4 · 'W+, + 0.6 · áàOäâáàOgâáàOT s,44419nW+*, 44Fí$W+*, 44ℎêÅ$W+* • Parámetros: Presentación de resultados 80 80 Tabla 6-55. Parámetros del caso 8 en DEL. Parámetro Valor Función kernel Radial Basis Tau (τ) 0.97 Gamma (γ) 175 Param. 1 de la f. kernel 615 Param. 2 de la f. kernel 167 En este caso, al ser la función kernel «Radial Basis», el parámetros «Param. 2» no tendrá efecto alguno en el resultado. Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. Figura 6-32. Histogramas de error para el caso 8 en DEL. Los errores que se cometen en este caso, son: 81 Técnicas de ajuste de los métodos Kernel para la regresión. Tabla 6-56. Errores cometidos en el caso 8 de DEL. Tipo Error k1 k2 k3 k4 k5 Media MSE 31.359716 45.843230 57.823545 33.589266 27.274251 39.178632 SEM 1.044412 1.703398 2.096177 1.078995 0.804997 1.345611 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.3.9 Caso 9. Tercer regresor y tercer conjunto de parámetros Para este caso, se elige el tercer regresor y el tercer conjunto de parámetros por lo que tenemos que: • Regresor: JW= 'W+*,4440.4 · 'W+, + 0.6 · áàOäâáàOgâáàOT s,44419nW+*, 44Fí$W+*, 44ℎêÅ$W+* • Parámetros: Tabla 6-57. Parámetros del caso 9 en DEL. Parámetro Valor Función kernel Sigmoidal Tau (τ) 0.995 Gamma (γ) 38 Param. 1 de la f. kernel 34 Param. 2 de la f. kernel 615 Con estos parámetros y regresor, una vez entrenado y validado el algoritmo, obtenemos los siguientes histogramas de error para cada iteración del proceso de validación cruzada. Se incluye además, el histograma del error medio cometido. El error representado es el error absoluto, no cuadrático. Presentación de resultados 82 82 Figura 6-33. Histogramas de error para el caso 9 en DEL. Los errores que se cometen en este caso, son: Tabla 6-58. Errores cometidos en el caso 9 de DEL. Tipo Error k1 k2 k3 k4 k5 Media MSE 361.649245 492.156574 652.621462 413.071220 409.842113 465.868123 SEM 9.104952 11.301062 14.666535 11.320950 9.839658 11.246631 Con k1, k2, …, k5 cada una de las iteraciones del proceso de validación cruzada. Se ha reducido el número de decimales empleados en el cálculo para su cómoda representación y visualización. En la sub-sección 10 de esta sección, se muestran los resultados de los valores medios (los que vamos a emplear) con todas las cifras significativas. 6.3.10 Elección del regresor Una vez se han ensayado y validado todos los casos, se dispone de la información necesaria para hacer la elección final, de forma resumida, en la siguiente tabla se pueden comparar los errores medios cometidos en cada caso . Éstos se han calculado como la media de cada iteración del proceso de validación cruzada. 83 Técnicas de ajuste de los métodos Kernel para la regresión. Tabla 6-59. Resumen errores por caso en DEL CASO MSE SEM Caso 1 39.165399106892565 1.342133636703042 Caso 2 39.178632642847631 1.345611310870960 Caso 3 465.868123390057576 11.246631845909491 Caso 4 39.164996354491194 1.342066822180289 Caso 5 39.178002134574243 1.345596203263492 Caso 6 465.690668755635670 11.233264304007374 Caso 7 39.165399106892565 1.342133636703042 Caso 8 39.178632642847631 1.345611310870960 Caso 9 465.868123390057576 11.246631845909491 De esta forma, el regresor elegido para la regresión, por tener los mejores indicadores de bondad, es el correspondiente al caso 4 por tener tanto el MSE como el SEM más pequeños: • Regresor: JW= 'W+*, 44'W+,,44419nW+*, 44Fí$W+*, 44ℎêÅ$W+* • Parámetros: Tabla 6-60. Parámetros del regresor elegido en DEL. Parámetro Valor Función kernel Linear Tau (τ) 1 Gamma (γ) 1 Param. 1 de la f. kernel 3 Param. 2 de la f. kernel 28 6.3.11 Predicción Tras aplicar el conjunto regresor-parámetros al problema, separando los datos entre set de entrenamiento y set de validación destinando un 75% de los disponibles para el primero y el resto para el segundo, obtenemos un error medio en valor absoluto de 503.3092 MW con una desviación estándar de 1390.2 MW. A continuación se muestra una gráfica con el valor real de las muestras y su predicción. No se muestran todas las muestras empleadas en el set de validación debido a la gran cantidad de éstas y para su cómoda visualización. Conclusiones 90 90 Figura 7-6. Histograma de error SVR DEL. Los errores cometidos en cada caso son: Tabla 7-3. Comparativa LS vs SVR SSN. Método MSE SEM Mínimos cuadrados 39.165399 1.342133 Métodos kernel 39.164996 1.342066 7.2 Impacto en los resultados al usar validación cruzada Para las conclusiones obtenidas tras haber realizado el proceso de validación cruzada en los ensayos, no se va a individualizar por cada problema, pues el impacto es evidente. Considerando el mejor predictor como aquel que menos error comete en la predicción, es innegable, viendo los resultados del capítulo 5 que es necesario emplear validación cruzada para determinar la generalización del error que nos va a servir como indicador de bondad. Pongamos por ejemplo, los problemas que se pretenden resolver en este trabajo. Tenemos 9 posibles soluciones al problema de regresión. Lo que es inmediato pensar, es dividir el conjunto de datos disponibles en dos; validación y entrenamiento. Por ejemplo, el primer 80% de éstos para entrenamiento, y el 20% restante para validación. Si hubiéramos hecho esto, los resultados no serían los adecuados. Vamos a comparar las soluciones que obtendríamos en ese supuesto y las que han resultado del proceso desarrollado en este trabajo. Solución: SMA SSN DEL Con validación cruzada CASO 4 CASO 8 CASO 4 Sin validación cruzada CASO 1 CASO 2 CASO 7 Figura 7-7. Influencia validación cruzada. Vemos entonces que, aunque entre resultados y casos muy dispares, la validación cruzada puede no ser tan determinante a la hora de elegir el regresor que previsiblemente cometerá menos errores en ensayos futuros, cuando los problemas arrojan resultados muy similares es necesario aplicarla para evitar la parcialidad de los resultados con respecto a los set de entrenamiento y validación. 91 Técnicas de ajuste de los métodos Kernel para la regresión. 7.3 Valoración de los resultados obtenidos A priori, no es posible saber la mejora que obtendremos al aplicar técnicas de aprendizaje automático a un problema con respecto a los resultados obtenidos con regresión por mínimos cuadrados. La mejoría que pueden apotar los métodos kernel es en gran medida debido a la no-linealidad de los problemas. Los resultados arrojados por los experimentos realizados, no parecen mejorar en gran medida los resultados de aplicar un método más simple como puede ser el de los mínimos cuadrados. No obstante, en todos ellos la predicción es más precisa y el error cometido disminuye. Como ya se ha dicho, no es sencillo saber en un principio si la mejoría al aplicar métodos kernel va a ser considerable o no, por lo que, una vez terminados los ensayos, debemos llegar a una solución de consenso entre la sencillez del método de los mínimos cuadrados y el gasto computacional que supone la introducción de los SVR. En cuanto al empleao de las técnicas de validación cruzada para la generalización de los errores que nos permitirán seleccionar el mejor regresor posible, es imprescindible su empleo si queremos reducir lo máximo posible la parcialidad de la solución al conjunto de las muestras ensayadas. 7.4 Líneas de trabajo futuro El gran problema que se ha encontrado en el desarrollo de este trabajo ha sido, sin lugar a dudas, la carga computacional de los experimentos. Para la resolución de los sistemas de ecuaciones necesarios es necesario invertir matrices de gran tamaño además de que, para el cómputo de las matrices kernel, el número de iteraciones necesarias crece con el número de muestras. Es por ello que considero oportuno mejorar el trabajo haciendo más eficientes los algoritmos desarrollados para la resolución de los problemas propuestos. Existen dos focos problemáticos en este sentido, el primero es el empleo de iteraciones implementadas con bucles «for», para el que existe solución empleando cálculo matricial en lugar de las iteraciones empleadas. El segundo pasa por reducir el tamaño de la matriz antes de invertirla; igualmente existen divesas técnicas al respecto que podría ser interesante implementar en un futuro trabajo. En gran medida debido al ya mencionado problema de la carga computacional, los ensayos se han aplicado a un número limitado de posibles casos. Se podría mejorar los resultados obtenidos realizando un barrido de los hiperparámetros que definen la función kernel y de los que son propios de la función objetivo de las LS-SVR. La idea es optimizar los parámetros propuestos en cada caso, en lugar de forma singular, haciendo un recorrido de todos ellos en un rango de valores amplio y así, quedarnos con la mejor solución posible empleando, igualmente, técnicas de validación cruzada para la generalización de los errores cometidos y no incurrir en la dependencia de éstos con los conjuntos de datos empleados en la validación y entrenamiento de los regresores. 93 8 CÓDIGO DESARROLLADO. En este anexo se encuentra el código desarrollado. Está dividido por capítulos en función de qué problema resuelve cada «script». En la última sección, se ubican todas aquellas funciones y algoritmos comunes para la resolución de los problemas. 8.1 Predicción de señal modulada en amplitud 8.1.1 svr_core_SMA.m % Este script es el core ("n˙cleo") para resolver el problema de predicciÛn % de seÒal modulada en amplitud. close all; clearvars; clc; %% Carga de datos [DATA_V, DATA_O] = preparadatos(1); mark = kfoldCV_mark(DATA_V); %% Formamos el set de regresores (3 regresores). n = length(DATA_V); %% %%%____ Regresor 1 -> [DATA_V(i-1) DATA_V(i-2) DATA_V(i-3) DATA_V(i-4)] l = 4; % DimensiÛn del regresor x1 = zeros(n,l); % Entradas para entrenamiento y1 = zeros(n,1); % Entradas para validaciÛn for i = (l+1):n x1(i,:) = [DATA_V(i-1) DATA_V(i-2) DATA_V(i-3) DATA_V(i-4)]; y1(i) = DATA_V(i); end % Diferenciamos entre los distintos set de entrenamiento y validaciÛn (5 de cada). x1t_1 = x1(mark(:,1)); x1t_2 = x1(mark(:,2)); x1t_3 = x1(mark(:,3)); x1t_4 = x1(mark(:,4)); x1t_5 = x1(mark(:,5)); x1v_1 = x1(~mark(:,1)); x1v_2 = x1(~mark(:,2)); x1v_3 = x1(~mark(:,3)); x1v_4 = x1(~mark(:,4)); x1v_5 = x1(~mark(:,5)); y1t_1 = y1(mark(:,1)); y1t_2 = y1(mark(:,2)); y1t_3 = y1(mark(:,3)); y1t_4 = y1(mark(:,4)); y1t_5 = y1(mark(:,5)); y1v_1 = y1(~mark(:,1)); y1v_2 = y1(~mark(:,2)); y1v_3 = y1(~mark(:,3)); y1v_4 = y1(~mark(:,4)); y1v_5 = y1(~mark(:,5)); %% %%%____ Regresor 2 -> [] l = 3; % DimensiÛn del regresor Código desarrollado. 94 94 x2 = zeros(n,l); % Entradas para entrenamiento y2 = zeros(n,1); % Entradas para validaciÛn for i = (l+3):n x2(i,:) = [DATA_V(i-1) DATA_V(i-2) mean([DATA_V(i-3) DATA_V(i-4) DATA_V(i-5)])]; y2(i) = DATA_V(i); end % Diferenciamos entre los distintos set de entrenamiento y validaciÛn (5 de cada). x2t_1 = x2(mark(:,1)); x2t_2 = x2(mark(:,2)); x2t_3 = x2(mark(:,3)); x2t_4 = x2(mark(:,4)); x2t_5 = x2(mark(:,5)); x2v_1 = x2(~mark(:,1)); x2v_2 = x2(~mark(:,2)); x2v_3 = x2(~mark(:,3)); x2v_4 = x2(~mark(:,4)); x2v_5 = x2(~mark(:,5)); y2t_1 = y2(mark(:,1)); y2t_2 = y2(mark(:,2)); y2t_3 = y2(mark(:,3)); y2t_4 = y2(mark(:,4)); y2t_5 = y2(mark(:,5)); y2v_1 = y2(~mark(:,1)); y2v_2 = y2(~mark(:,2)); y2v_3 = y2(~mark(:,3)); y2v_4 = y2(~mark(:,4)); y2v_5 = y2(~mark(:,5)); %% %%%____ Regresor 3 -> [] l = 4; % DimensiÛn del regresor x3 = zeros(n,l); % Entradas para entrenamiento y3 = zeros(n,1); % Entradas para validaciÛn for i = (l+1):n x3(i,:) = [DATA_V(i-1) sqrt(DATA_V(i-2)^2+DATA_V(i-3)^2) 0.4*DATA_V(i-3) 0.6*(DATA_V(i-4)+DATA_V(i-3)+DATA_V(i-2))/3]; y3(i) = DATA_V(i); end % Diferenciamos entre los distintos set de entrenamiento y validaciÛn (5 de cada). x3t_1 = x3(mark(:,1)); x3t_2 = x3(mark(:,2)); x3t_3 = x3(mark(:,3)); x3t_4 = x3(mark(:,4)); x3t_5 = x3(mark(:,5)); x3v_1 = x3(~mark(:,1)); x3v_2 = x3(~mark(:,2)); x3v_3 = x3(~mark(:,3)); x3v_4 = x3(~mark(:,4)); x3v_5 = x3(~mark(:,5)); y3t_1 = y3(mark(:,1)); y3t_2 = y3(mark(:,2)); y3t_3 = y3(mark(:,3)); y3t_4 = y3(mark(:,4)); y3t_5 = y3(mark(:,5)); y3v_1 = y3(~mark(:,1)); y3v_2 = y3(~mark(:,2)); y3v_3 = y3(~mark(:,3)); y3v_4 = y3(~mark(:,4)); y3v_5 = y3(~mark(:,5)); %% Formamos 3 conjuntos de hiperpar·metros. %Se definen t·ntos como el m·ximo necesario en funciÛn del tipo de funciÛn %kernel y luego se emplear·n los necesarios. Adem·s se define el tipo de 95 Técnicas de ajuste de los métodos Kernel para la regresión. %funciÛn kernel que se va a emplear typ = ["linear", "radial_basis", "sigmoidal"]; % Tipo de funciÛn kernel tau = [1 0.95 0.9]; % Independientes de la funciÛn kernel gamma = [1 550 70]; % Independiente de la funciÛn kernel p1 = [34 300 3]; % Propios de la funciÛn kernel p2 = [0.5 50 15]; % Propios de la funciÛn kernel %% SVR. Aprendizaje y precicciÛn de los distintos regresores con los distintos set de entrenamiento/validaciÛn. [ y11_1, y12_1, y13_1, y14_1, y15_1, y11_2, y12_2, y13_2, y14_2, y15_2, y11_3, y12_3, y13_3, y14_3, y15_3, y21_1, y22_1, y23_1, y24_1, y25_1, y21_2, y22_2, y23_2, y24_2, y25_2, y21_3, y22_3, y23_3, y24_3, y25_3, y31_1, y32_1, y33_1, y34_1, y35_1, y31_2, y32_2, y33_2, y34_2, y35_2, y31_3, y32_3, y33_3, y34_3, y35_3] = kernels( tau, gamma, typ, p1, p2, x2t_1, y2t_1, x2t_2, y2t_2, x2t_3, y2t_3, x2t_4, y2t_4, x2t_5, y2t_5, x3t_1, y3t_1, x3t_2, y3t_2, x3t_3, y3t_3, x3t_4, y3t_4, x3t_5, y3t_5, x1t_1, y1t_1, x1t_2, y1t_2, x1t_3, y1t_3, x1t_4, y1t_4, x1t_5, y1t_5, x1v_1, x1v_2, x1v_3, x1v_4, x1v_5, x2v_1, x2v_2, x2v_3, x2v_4, x2v_5, x3v_1, x3v_2, x3v_3, x3v_4, x3v_5); %% C·lculo de errores. % Errores absolutos por cada particiÛn kfoldCV con signo e11_1a = y1v_1-y11_1; e21_1a = y2v_1-y21_1; e31_1a = y3v_1-y31_1; e12_1a = y1v_2-y12_1; e22_1a = y2v_2-y22_1; e32_1a = y3v_2-y32_1; e13_1a = y1v_3-y13_1; e23_1a = y2v_3-y23_1; e33_1a = y3v_3-y33_1; e14_1a = y1v_4-y14_1; e24_1a = y2v_4-y24_1; e34_1a = y3v_4-y34_1; e15_1a = y1v_5-y15_1; e25_1a = y2v_5-y25_1; e35_1a = y3v_5-y35_1; e11_2a = y1v_1-y11_2; e21_2a = y2v_1-y21_2; e31_2a = y3v_1-y31_2; e12_2a = y1v_2-y12_2; e22_2a = y2v_2-y22_2; e32_2a = y3v_2-y32_2; e13_2a = y1v_3-y13_2; e23_2a = y2v_3-y23_2; e33_2a = y3v_3-y33_2; e14_2a = y1v_4-y14_2; e24_2a = y2v_4-y24_2; e34_2a = y3v_4-y34_2; e15_2a = y1v_5-y15_2; e25_2a = y2v_5-y25_2; e35_2a = y3v_5-y35_2; e11_3a = y1v_1-y11_3; e21_3a = y2v_1-y21_3; e31_3a = y3v_1-y31_3; e12_3a = y1v_2-y12_3; e22_3a = y2v_2-y22_3; e32_3a = y3v_2-y32_3; e13_3a = y1v_3-y13_3; e23_3a = y2v_3-y23_3; e33_3a = y3v_3-y33_3; e14_3a = y1v_4-y14_3; e24_3a = y2v_4-y24_3; e34_3a = y3v_4-y34_3; e15_3a = y1v_5-y15_3; e25_3a = y2v_5-y25_3; e35_3a = y3v_5-y35_3; %% Mostramos los errores por pantalla. calcula_errores( e11_1a, e12_1a, e13_1a, e14_1a, e15_1a, e11_2a, e12_2a, e13_2a, e14_2a, e15_2a, e11_3a, e12_3a, e13_3a, e14_3a, e15_3a, e21_1a, e22_1a, e23_1a, e24_1a, e25_1a, e21_2a, e22_2a, e23_2a, e24_2a, e25_2a, e21_3a, e22_3a, e23_3a, e24_3a, e25_3a, e31_1a, e32_1a, e33_1a, e34_1a, e35_1a, e31_2a, e32_2a, e33_2a, e34_2a, e35_2a, e31_3a, e32_3a, e33_3a, e34_3a, e35_3a ); %% Pintamos histogramas de errores. pinta_errores( e11_1a, e12_1a, e13_1a, e14_1a, e15_1a, e11_2a, e12_2a, e13_2a, e14_2a, e15_2a, e11_3a, e12_3a, e13_3a, e14_3a, e15_3a, e21_1a, e22_1a, e23_1a, e24_1a, e25_1a, e21_2a, e22_2a, e23_2a, e24_2a, e25_2a, e21_3a, e22_3a, e23_3a, e24_3a, e25_3a, e31_1a, e32_1a, e33_1a, e34_1a, e35_1a, e31_2a, e32_2a, e33_2a, e34_2a, e35_2a, e31_3a, e32_3a, e33_3a, e34_3a, e35_3a ); Código desarrollado. 96 96 save('SMA_var.mat') 8.1.2 genera_onda_modulada.m %% Generar onda modulada en amplitud. close all; clearvars; %% PAR¡METROS DE LAS SE—ALES Ac= 1.6; % Amplitud de la seÒal portadora Am= 1.3; % Amplitud de la seÒal moduladora fc= 1/0.01; % Frecuencia de la seÒal portacora fm= 1/0.3; % Frecuencia de la seÒal moduladora (fm<fc) m= Am/Ac; % Õndice de modulaciÛn t= 1; % Tiempo en el que queremos obtener datos t1=linspace(0,t,t*10000/2); % Generamos el n˙mero de puntos deseado %% GENERACI”N DE LAS SE—ALES y1=sin(2*pi*fm*t1); % SeÒal moduladora y2=sin(2*pi*fc*t1); % SeÒal portadora eq=(1+m*y1).*(Ac*y2)+0.2*(2.*rand(1,5000)-1); % SeÒal modulada %% REPRESENTACI”N DE LAS SE—ALES figure(); %SeÒal modulada plot(t1,eq,'LineWidth',1); title('Problema sintÈtico. SeÒal modulada'); xlabel('Tiempo');ylabel('Amplitud'); legend('SeÒal modulada'); figure(); %SeÒal moduladora subplot(2,1,1) plot(t1,y1,'LineWidth',1); title('Problema sintÈtico. SeÒal moduladora'); xlabel('Tiempo');ylabel('Amplitud'); legend('SeÒal moduladora'); %SeÒal portadora subplot(2,1,2) plot(t1,y2,'LineWidth',1); title('Problema sintÈtico. SeÒal portadora'); xlabel('Tiempo');ylabel('Amplitud'); legend('SeÒal portadora'); %% REPRESENTACI”N DE TODAS JUNTAS figure(); % SeÒal modulada subplot(3, 1, 1); plot(t1,eq,'LineWidth',1); xlabel('Tiempo');ylabel('Amplitud'); 97 Técnicas de ajuste de los métodos Kernel para la regresión. legend('SeÒal modulada'); title('Problema sintÈtico. SeÒales del problema sintÈtico'); % SeÒal moduladora subplot(3, 1, 2); plot(t1,Am*y1,'LineWidth',1); xlabel('Tiempo');ylabel('Amplitud'); legend('SeÒal moduladora'); % SeÒal portadora subplot(3, 1, 3); plot(t1,Ac*y2,'LineWidth',1); xlabel('Tiempo');ylabel('Amplitud'); legend('SeÒal portadora'); %% GUARDADO DE DATOS %Guardamos la seÒal generada para su posterior trataminento. archivo = 'senal_sintetica.mat'; save(archivo, 'eq'); clearvars; 8.1.3 pred_SMA.m % Este programa, entrena y valida un regresor para el problema SSN. Calcula el % error y pinta las figuras encesarias. clc; clearvars; close all; %% ObtenciÛn de datos. datos = load('senal_sintetica.mat'); datos = datos.eq; sec = datos; %% Definimos set de entrenamiento y validaciÛn. p = 0.75; % Tanto por ciento que queremos que sea el set de entrenamiento. DATA = sec; %Desechamos para quedarnos con m˙ltiplo de cinco. DATA_O = datos; n = length(DATA); DATA_t = sec(1:floor(p*n)); DATA_v = sec(floor(p*n)+1:end); Nt = length(DATA_t); Nv = length(DATA_v); xt = zeros(Nt-5,3); yt = zeros(Nt-5,1); xv = zeros(Nv-5,3); %% Montamos los regresores y definimos los par·metros %Entrenamiento for i = 6:Nt Código desarrollado. 98 98 xt(i,:) = [DATA_t(i-1) DATA_t(i-2) mean([DATA_t(i-3) DATA_t(i-4) DATA_t(i-5)])]; yt(i) = DATA_t(i); end %ValidaciÛn for i = 6:Nv xv(i,:) = [DATA_v(i-1) DATA_v(i-2) mean([DATA_v(i-3) DATA_v(i-4) DATA_v(i-5)])]; end typ = "linear"; % Tipo de funciÛn kernel tau = 1; % Independientes de la funciÛn kernel gamma = 1; % Independiente de la funciÛn kernel p1 = 34; % Propios de la funciÛn kernel p2 = 0.5; %% Calculamos la matriz kernel y dem·s par·metros mediante el set de entrenamiento. [ k, b, alpha ] = c_krnl( xt, yt, tau, gamma, typ, p1, p2); %% Ensayamos para predicciÛn. yp = v_krnl( k, alpha, b, tau, xt, xv); yp = yp(:,1)'; %% Calculamos el error absoluto. I_M=isfinite(DATA_v); I_LS=isfinite(yp); e = (DATA_v(I_M&I_LS)-yp(I_M&I_LS)); e_a = abs(e); disp('Error Medio') e_m = mean(e_a); disp(e_m); %% Representamos figure(); % PredicciÛn vs real plot(DATA_v, 'LineWidth', 1.5); hold on; plot(yp,'LineWidth', 1.5); title('PredicciÛn SSN vs. SSN Real') legend('Real','PredicciÛn'); xlabel('Tiempo');ylabel('SSN') %Histograma del error y distribuciÛn normal mu = mean(e); sd = std(e); ndfcn = @(mu,sd,x) exp(-(x-mu).^2 ./ (2*sd^2)) /(sd*sqrt(2*pi)); % Standard Normal Distribution [hc,edges] = histcounts(e); ctrs = edges(1:length(edges)-1) + mean(diff(edges))/2; % Calculate Centres 99 Técnicas de ajuste de los métodos Kernel para la regresión. ctrsx = linspace(min(ctrs), max(ctrs)); % High-Resolution Vector sdnd = ndfcn(mu,sd,ctrsx); figure(); bar(ctrs, hc) % Plot Histogram hold on plot(ctrsx, sdnd*max(hc)/max(sdnd), '-r', 'LineWidth',2) % Plot Scaled Standard Normal Distribution hold off grid %% Guardamos los valores para posterior tratamiento. save('pred_SMA_no_bagging.mat'); 8.2 Predicción del número de manchas solares 8.2.1 svr_core_SSN.m % Este script es el core ("n˙cleo") para resolver el problema de predicciÛn % de n˙mero de manchas solares. close all; clearvars; clc; %% Carga de datos [DATA_V, DATA_O] = preparadatos(2); mark = kfoldCV_mark(DATA_V); %% Formamos el set de regresores (3 regresores). n = length(DATA_V); %% %%%____ Regresor 1 -> [DATA_V(i-1) DATA_V(i-2) DATA_V(i-3) DATA_V(i-4)] l = 4; % DimensiÛn del regresor x1 = zeros(n,l); % Entradas para entrenamiento y1 = zeros(n,1); % Entradas para validaciÛn for i = (l+1):n x1(i,:) = [DATA_V(i-1) DATA_V(i-2) DATA_V(i-3) DATA_V(i-4)]; y1(i) = DATA_V(i); end % Diferenciamos entre los distintos set de entrenamiento y validaciÛn (5 de cada). x1t_1 = x1(mark(:,1)); x1t_2 = x1(mark(:,2)); x1t_3 = x1(mark(:,3)); x1t_4 = x1(mark(:,4)); x1t_5 = x1(mark(:,5)); x1v_1 = x1(~mark(:,1)); x1v_2 = x1(~mark(:,2)); x1v_3 = x1(~mark(:,3)); x1v_4 = x1(~mark(:,4)); x1v_5 = x1(~mark(:,5)); y1t_1 = y1(mark(:,1)); y1t_2 = y1(mark(:,2)); y1t_3 = y1(mark(:,3)); y1t_4 = y1(mark(:,4)); y1t_5 = y1(mark(:,5)); y1v_1 = y1(~mark(:,1)); y1v_2 = y1(~mark(:,2)); y1v_3 = y1(~mark(:,3)); y1v_4 = y1(~mark(:,4)); y1v_5 = y1(~mark(:,5)); %% %%%____ Regresor 2 -> [] Código desarrollado. 106 106 y11_3, y12_3, y13_3, y14_3, y15_3, y21_1, y22_1, y23_1, y24_1, y25_1, y21_2, y22_2, y23_2, y24_2, y25_2, y21_3, y22_3, y23_3, y24_3, y25_3, y31_1, y32_1, y33_1, y34_1, y35_1, y31_2, y32_2, y33_2, y34_2, y35_2, y31_3, y32_3, y33_3, y34_3, y35_3] = kernels( tau, gamma, typ, p1, p2, x2t_1, y2t_1, x2t_2, y2t_2, x2t_3, y2t_3, x2t_4, y2t_4, x2t_5, y2t_5, x3t_1, y3t_1, x3t_2, y3t_2, x3t_3, y3t_3, x3t_4, y3t_4, x3t_5, y3t_5, x1t_1, y1t_1, x1t_2, y1t_2, x1t_3, y1t_3, x1t_4, y1t_4, x1t_5, y1t_5, x1v_1, x1v_2, x1v_3, x1v_4, x1v_5, x2v_1, x2v_2, x2v_3, x2v_4, x2v_5, x3v_1, x3v_2, x3v_3, x3v_4, x3v_5); %% C·lculo de errores. % Errores absolutos por cada particiÛn kfoldCV con signo e11_1a = y1v_1-y11_1; e21_1a = y2v_1-y21_1; e31_1a = y3v_1-y31_1; e12_1a = y1v_2-y12_1; e22_1a = y2v_2-y22_1; e32_1a = y3v_2-y32_1; e13_1a = y1v_3-y13_1; e23_1a = y2v_3-y23_1; e33_1a = y3v_3-y33_1; e14_1a = y1v_4-y14_1; e24_1a = y2v_4-y24_1; e34_1a = y3v_4-y34_1; e15_1a = y1v_5-y15_1; e25_1a = y2v_5-y25_1; e35_1a = y3v_5-y35_1; e11_2a = y1v_1-y11_2; e21_2a = y2v_1-y21_2; e31_2a = y3v_1-y31_2; e12_2a = y1v_2-y12_2; e22_2a = y2v_2-y22_2; e32_2a = y3v_2-y32_2; e13_2a = y1v_3-y13_2; e23_2a = y2v_3-y23_2; e33_2a = y3v_3-y33_2; e14_2a = y1v_4-y14_2; e24_2a = y2v_4-y24_2; e34_2a = y3v_4-y34_2; e15_2a = y1v_5-y15_2; e25_2a = y2v_5-y25_2; e35_2a = y3v_5-y35_2; e11_3a = y1v_1-y11_3; e21_3a = y2v_1-y21_3; e31_3a = y3v_1-y31_3; e12_3a = y1v_2-y12_3; e22_3a = y2v_2-y22_3; e32_3a = y3v_2-y32_3; e13_3a = y1v_3-y13_3; e23_3a = y2v_3-y23_3; e33_3a = y3v_3-y33_3; e14_3a = y1v_4-y14_3; e24_3a = y2v_4-y24_3; e34_3a = y3v_4-y34_3; e15_3a = y1v_5-y15_3; e25_3a = y2v_5-y25_3; e35_3a = y3v_5-y35_3; %% Mostramos los errores por pantalla. calcula_errores( e11_1a, e12_1a, e13_1a, e14_1a, e15_1a, e11_2a, e12_2a, e13_2a, e14_2a, e15_2a, e11_3a, e12_3a, e13_3a, e14_3a, e15_3a, e21_1a, e22_1a, e23_1a, e24_1a, e25_1a, e21_2a, e22_2a, e23_2a, e24_2a, e25_2a, e21_3a, e22_3a, e23_3a, e24_3a, e25_3a, e31_1a, e32_1a, e33_1a, e34_1a, e35_1a, e31_2a, e32_2a, e33_2a, e34_2a, e35_2a, e31_3a, e32_3a, e33_3a, e34_3a, e35_3a ); %% Pintamos histogramas de errores. pinta_errores( e11_1a, e12_1a, e13_1a, e14_1a, e15_1a, e11_2a, e12_2a, e13_2a, e14_2a, e15_2a, e11_3a, e12_3a, e13_3a, e14_3a, e15_3a, e21_1a, e22_1a, e23_1a, e24_1a, e25_1a, e21_2a, e22_2a, e23_2a, e24_2a, e25_2a, e21_3a, e22_3a, e23_3a, e24_3a, e25_3a, e31_1a, e32_1a, e33_1a, e34_1a, e35_1a, e31_2a, e32_2a, e33_2a, e34_2a, e35_2a, e31_3a, e32_3a, e33_3a, e34_3a, e35_3a ); save('DEL_var.mat') 8.3.2 pred_DEL.m % Este programa, entrena y valida un regresor para el problema DEL. Calcula %el error y pinta las figuras encesarias. clc; clearvars; close all; %% ObtenciÛn de datos. datos = xlsread('esios_31_12_2013_a_15_08_2018_por_horas.xlsx'); sec = datos(:,5); 107 Técnicas de ajuste de los métodos Kernel para la regresión. %% Definimos set de entrenamiento y validaciÛn. p = 0.75; % Tanto por ciento que queremos que sea el set de entrenamiento. DATA = sec; %Desechamos para quedarnos con m˙ltiplo de cinco. DATA_O = datos; n = length(DATA); DATA_t = sec(1:floor(p*n)); DATA_v = sec(floor(p*n)+1:end); Nt = length(DATA_t); Nv = length(DATA_v); xt = zeros(Nt-4,5); yt = zeros(Nt-4,1); xv = zeros(Nv-4,5); %% Montamos los regresores y definimos los par·metros %Entrenamiento for i = 5:Nt xt(i,:) = [DATA_t(i-1) DATA_t(i-2) DATA_O(i-1,2) DATA_O(i-1,3) DATA_O(i- 1,4)]; yt(i) = DATA_t(i); end %ValidaciÛn for i = 5:Nv xv(i,:) = [DATA_v(i-1) DATA_v(i-2) DATA_O(i-1,2) DATA_O(i-1,3) DATA_O(i- 1,4)]; end typ = "linear"; % Tipo de funciÛn kernel tau = 1; % Independientes de la funciÛn kernel gamma = 1; % Independiente de la funciÛn kernel p1 = 3; % Propios de la funciÛn kernel p2 = 28; %% Calculamos la matriz kernel y dem·s par·metros mediante el set de entrenamiento. [ k, b, alpha ] = c_krnl( xt, yt, tau, gamma, typ, p1, p2); %% Ensayamos para predicciÛn. yp = v_krnl( k, alpha, b, tau, xt, xv); yp = yp(:,1); %% Calculamos el error absoluto. I_M=isfinite(DATA_v); I_LS=isfinite(yp); e = (DATA_v(I_M&I_LS)-yp(I_M&I_LS)); e_a = abs(e); Código desarrollado. 108 108 disp('Error Medio') e_m = mean(e_a); disp(e_m); %% Representamos figure(); % PredicciÛn vs real plot(DATA_v, 'LineWidth', 1.5); hold on; plot(yp,'LineWidth', 1.5); title('PredicciÛn SSN vs. SSN Real') legend('Real','PredicciÛn'); xlabel('Tiempo');ylabel('SSN') %Histograma del error y distribuciÛn normal mu = mean(e); sd = std(e); ndfcn = @(mu,sd,x) exp(-(x-mu).^2 ./ (2*sd^2)) /(sd*sqrt(2*pi)); % Standard Normal Distribution [hc,edges] = histcounts(e); ctrs = edges(1:length(edges)-1) + mean(diff(edges))/2; % Calculate Centres ctrsx = linspace(min(ctrs), max(ctrs)); % High-Resolution Vector sdnd = ndfcn(mu,sd,ctrsx); figure(); bar(ctrs, hc) % Plot Histogram hold on plot(ctrsx, sdnd*max(hc)/max(sdnd), '-r', 'LineWidth',2) % Plot Scaled Standard Normal Distribution hold off grid %% Guardamos los valores para posterior tratamiento. save('pred_DEL.mat'); 8.4 Funciones communes 8.4.1 preparadatos.m function [ DATA_V, DATA_O ] = preparadatos( c ) % Esta funciÛn prepara los datos obtenidos de los archivos correspondientes. % El argumento de entrada es un n˙mero del 1 al 3 en el que: % 1 -> Problema seÒal modulada. % 2 -> Problema manchas solares. % 3 -> Problema demanda energÌa elÈctrica. % Devuelve las matrices DATA_V y DATA_O, que son los datos de las secuencias % temporales y las amtrices originales respectivamente. Todos ellos % debidamente tratados en el sentido de normalizaciÛn, etc. switch c case 1 % Problema seÒal modulada 109 Técnicas de ajuste de los métodos Kernel para la regresión. datos = load('senal_sintetica.mat'); datos = datos.eq; sec = datos; % Los datos de la seÒal modulado contienen ˙nicamente la secuencia % temporal. %% Normalizamos los valores. a = -1; b = 1; % Esto nos servir· para escalar los valores entre 0 y 1 x_min = min(sec); % MÌnimo valor de la secuencia temporal x_max = max(sec); % Maximo valor de la secuencia temporal sec = a+(sec-x_min).*(b-a)/(x_max-x_min); %% Definimos los argumentos de salida de la funciÛn. n = floor(length(sec)/5)*5; %Redondeamos a la baja al 5 m·s cercano %para CV m·s tarde. DATA_V = sec(end-n+1:n)'; %Desechamos para quedarnos con m˙ltiplo de %cinco. DATA_O = datos(end-n+1:n)'; case 2 % Problema manchas solares datos = xlsread('Sun_Spot_Monthly.xlsx'); sec = datos(:,4); % El archivo tiene siete columnas distribuidas de la siguiente forma % Columna 1: aÒo % Columna 2: mes % Columna 3: Fecha expresada como fracciÛn del aÒo en curso % Columna 4: Media Mensual Õndice SSN % Columna 5: DesviaciÛn estandard del valor SSN. % Columna 6: Observaciones usadas para obtenciÛn del valor mensual %SSN. % Columna 7: Un '1' indica que el valor es definitivo, un '0' que es %provisional. a = 0; b = 100; % Esto nos servir· para escalar los valores entre 0 y 1 x_min = min(sec); % MÌnimo valor de la secuencia temporal x_max = max(sec); % Maximo valor de la secuencia temporal sec = a+(sec-x_min).*(b-a)/(x_max-x_min); %% Definimos los argumentos de salida de la funciÛn. n = floor(length(sec)/5)*5; %Redondeamos a la baja al 5 m·s cercano para CV m·s tarde. DATA_V = sec(end-n+1:n); %Desechamos para quedarnos con m˙ltiplo de cinco. DATA_O = datos(end-n+1:n,:); case 3 % Problema demanda energÌa elÈctrica datos = xlsread('esios_31_12_2013_a_15_08_2018_por_horas.xlsx'); sec = datos(:,5); % El archivo contiene cinco columnas distribuidas de la siguiente %forma: % Columna 1: aÒo % Columna 2: mes % Columna 3: dÌa % Columna 4: hora % Columna 5: demanda Código desarrollado. 110 110 a = 0; b = 100; % Esto nos servir· para escalar los valores entre 0 y 1 x_min = min(sec); % MÌnimo valor de la secuencia temporal x_max = max(sec); % Maximo valor de la secuencia temporal sec = a+(sec-x_min).*(b-a)/(x_max-x_min); %% Definimos los argumentos de salida de la funciÛn. n = floor(length(sec)/5)*5; %Redondeamos a la baja al 5 m·s cercano para CV m·s tarde. DATA_V = sec(end-n+2:n); %Desechamos para quedarnos con m˙ltiplo de cinco. DATA_O = datos(end-n+2:n,:); end end 8.4.2 kfoldCV_mark.m function [ mark ] = kfoldCV_mark( DATA ) %Esta funciÛn recoge los datos tratados y le aÒade 5 columnas dividiendo %toda la secuencia temporal en cinco sets de aprendizaje y 5 de validaciÛn. %En dichas columnas un 1 representa que esa muestra es para entrenamiento y %un 0 que es para validaciÛn n = length(DATA); m = n/5; mark = ones(n,5); %% Primer ensayo mark(1:m,1) = 0; %% Segundo ensayo mark(m+1:2*m,2) = 0; %% Tercer ensayo mark(2*m+1:3*m,3) = 0; %% Cuarto ensayo mark(3*m+1:4*m,4) = 0; %% Quinto ensayo mark(4*m+1:end,5) = 0; mark = logical(mark); end 8.4.3 kernels.m function [ y11_1, y12_1, y13_1, y14_1, y15_1, y11_2, y12_2, y13_2, y14_2, y15_2, y11_3, y12_3, y13_3, y14_3, y15_3, y21_1, y22_1, y23_1, y24_1, y25_1, y21_2, y22_2, y23_2, y24_2, y25_2, y21_3, y22_3, y23_3, y24_3, y25_3, y31_1, y32_1, y33_1, y34_1, y35_1, y31_2, y32_2, y33_2, y34_2, y35_2, y31_3, y32_3, y33_3, y34_3, y35_3] = kernels( tau, gamma, typ, p1, p2, x2t_1, y2t_1, x2t_2, y2t_2, x2t_3, y2t_3, x2t_4, y2t_4, x2t_5, y2t_5, x3t_1, y3t_1, x3t_2, y3t_2, x3t_3, y3t_3, x3t_4, y3t_4, x3t_5, y3t_5, x1t_1, y1t_1, x1t_2, y1t_2, x1t_3, y1t_3, x1t_4, y1t_4, x1t_5, y1t_5, x1v_1, x1v_2, x1v_3, x1v_4, x1v_5, x2v_1, x2v_2, x2v_3, x2v_4, x2v_5, x3v_1, x3v_2, x3v_3, x3v_4, x3v_5) %Esta funciÛn entrena los regresores los set de entrenamiento para cada %iteraciÛn de la validaciÛn cruzada y obtiene las salidas para validaciÛn %en el correspondiente set. %% SVR. Aprendizaje de los distintos regresores con los distintos set de 111 Técnicas de ajuste de los métodos Kernel para la regresión. entrenamiento/validaciÛn. %_Primer regresor con 5 particiones para kfoldCV para el primer %conjunto de par·metros [ k11_1, b11_1, alpha11_1 ] = c_krnl( x1t_1, y1t_1, tau(1), gamma(1), typ(1), p1(1), p2(1)); [ k12_1, b12_1, alpha12_1 ] = c_krnl( x1t_2, y1t_2, tau(1), gamma(1), typ(1), p1(1), p2(1)); [ k13_1, b13_1, alpha13_1 ] = c_krnl( x1t_3, y1t_3, tau(1), gamma(1), typ(1), p1(1), p2(1)); [ k14_1, b14_1, alpha14_1 ] = c_krnl( x1t_4, y1t_4, tau(1), gamma(1), typ(1), p1(1), p2(1)); [ k15_1, b15_1, alpha15_1 ] = c_krnl( x1t_5, y1t_5, tau(1), gamma(1), typ(1), p1(1), p2(1)); %_Segundo regresor con 5 particiones para kfoldCV para el primer %conjunto de par·metros [ k21_1, b21_1, alpha21_1 ] = c_krnl( x2t_1, y2t_1, tau(1), gamma(1), typ(1), p1(1), p2(1)); [ k22_1, b22_1, alpha22_1 ] = c_krnl( x2t_2, y2t_2, tau(1), gamma(1), typ(1), p1(1), p2(1)); [ k23_1, b23_1, alpha23_1 ] = c_krnl( x2t_3, y2t_3, tau(1), gamma(1), typ(1), p1(1), p2(1)); [ k24_1, b24_1, alpha24_1 ] = c_krnl( x2t_4, y2t_4, tau(1), gamma(1), typ(1), p1(1), p2(1)); [ k25_1, b25_1, alpha25_1 ] = c_krnl( x2t_5, y2t_5, tau(1), gamma(1), typ(1), p1(1), p2(1)); %_Tercer regresor con 5 particiones para kfoldCV para el primer %conjunto de par·metros [ k31_1, b31_1, alpha31_1 ] = c_krnl( x3t_1, y3t_1, tau(1), gamma(1), typ(1), p1(1), p2(1)); [ k32_1, b32_1, alpha32_1 ] = c_krnl( x3t_2, y3t_2, tau(1), gamma(1), typ(1), p1(1), p2(1)); [ k33_1, b33_1, alpha33_1 ] = c_krnl( x3t_3, y3t_3, tau(1), gamma(1), typ(1), p1(1), p2(1)); [ k34_1, b34_1, alpha34_1 ] = c_krnl( x3t_4, y3t_4, tau(1), gamma(1), typ(1), p1(1), p2(1)); [ k35_1, b35_1, alpha35_1 ] = c_krnl( x3t_5, y3t_5, tau(1), gamma(1), typ(1), p1(1), p2(1)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %_Primer regresor con 5 particiones para kfoldCV para el segundo %conjunto de par·metros [ k11_2, b11_2, alpha11_2 ] = c_krnl( x1t_1, y1t_1, tau(2), gamma(2), typ(2), p1(2), p2(2)); [ k12_2, b12_2, alpha12_2 ] = c_krnl( x1t_2, y1t_2, tau(2), gamma(2), typ(2), p1(2), p2(2)); [ k13_2, b13_2, alpha13_2 ] = c_krnl( x1t_3, y1t_3, tau(2), gamma(2), typ(2), p1(2), p2(2)); [ k14_2, b14_2, alpha14_2 ] = c_krnl( x1t_4, y1t_4, tau(2), gamma(2), typ(2), p1(2), p2(2)); [ k15_2, b15_2, alpha15_2 ] = c_krnl( x1t_5, y1t_5, tau(2), gamma(2), typ(2), p1(2), p2(2)); %_Segundo regresor con 5 particiones para kfoldCV para el segundo %conjunto de par·metros [ k21_2, b21_2, alpha21_2 ] = c_krnl( x2t_1, y2t_1, tau(2), gamma(2), typ(2), p1(2), p2(2)); [ k22_2, b22_2, alpha22_2 ] = c_krnl( x2t_2, y2t_2, tau(2), gamma(2), typ(2), p1(2), p2(2)); [ k23_2, b23_2, alpha23_2 ] = c_krnl( x2t_3, y2t_3, tau(2), gamma(2), Código desarrollado. 112 112 typ(2), p1(2), p2(2)); [ k24_2, b24_2, alpha24_2 ] = c_krnl( x2t_4, y2t_4, tau(2), gamma(2), typ(2), p1(2), p2(2)); [ k25_2, b25_2, alpha25_2 ] = c_krnl( x2t_5, y2t_5, tau(2), gamma(2), typ(2), p1(2), p2(2)); %_Tercer regresor con 5 particiones para kfoldCV para el segundo %conjunto de par·metros [ k31_2, b31_2, alpha31_2 ] = c_krnl( x3t_1, y3t_1, tau(2), gamma(2), typ(2), p1(2), p2(2)); [ k32_2, b32_2, alpha32_2 ] = c_krnl( x3t_2, y3t_2, tau(2), gamma(2), typ(2), p1(2), p2(2)); [ k33_2, b33_2, alpha33_2 ] = c_krnl( x3t_3, y3t_3, tau(2), gamma(2), typ(2), p1(2), p2(2)); [ k34_2, b34_2, alpha34_2 ] = c_krnl( x3t_4, y3t_4, tau(2), gamma(2), typ(2), p1(2), p2(2)); [ k35_2, b35_2, alpha35_2 ] = c_krnl( x3t_5, y3t_5, tau(2), gamma(2), typ(2), p1(2), p2(2)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %_Primer regresor con 5 particiones para kfoldCV para el tercer %conjunto de par·metros [ k11_3, b11_3, alpha11_3 ] = c_krnl( x1t_1, y1t_1, tau(3), gamma(3), typ(3), p1(3), p2(3)); [ k12_3, b12_3, alpha12_3 ] = c_krnl( x1t_2, y1t_2, tau(3), gamma(3), typ(3), p1(3), p2(3)); [ k13_3, b13_3, alpha13_3 ] = c_krnl( x1t_3, y1t_3, tau(3), gamma(3), typ(3), p1(3), p2(3)); [ k14_3, b14_3, alpha14_3 ] = c_krnl( x1t_4, y1t_4, tau(3), gamma(3), typ(3), p1(3), p2(3)); [ k15_3, b15_3, alpha15_3 ] = c_krnl( x1t_5, y1t_5, tau(3), gamma(3), typ(3), p1(3), p2(3)); %_Segundo regresor con 5 particiones para kfoldCV para el tercer %conjunto de par·metros [ k21_3, b21_3, alpha21_3 ] = c_krnl( x2t_1, y2t_1, tau(3), gamma(3), typ(3), p1(3), p2(3)); [ k22_3, b22_3, alpha22_3 ] = c_krnl( x2t_2, y2t_2, tau(3), gamma(3), typ(3), p1(3), p2(3)); [ k23_3, b23_3, alpha23_3 ] = c_krnl( x2t_3, y2t_3, tau(3), gamma(3), typ(3), p1(3), p2(3)); [ k24_3, b24_3, alpha24_3 ] = c_krnl( x2t_4, y2t_4, tau(3), gamma(3), typ(3), p1(3), p2(3)); [ k25_3, b25_3, alpha25_3 ] = c_krnl( x2t_5, y2t_5, tau(3), gamma(3), typ(3), p1(3), p2(3)); %_Tercer regresor con 5 particiones para kfoldCV para el tercer %conjunto de par·metros [ k31_3, b31_3, alpha31_3 ] = c_krnl( x3t_1, y3t_1, tau(3), gamma(3), typ(3), p1(3), p2(3)); [ k32_3, b32_3, alpha32_3 ] = c_krnl( x3t_2, y3t_2, tau(3), gamma(3), typ(3), p1(3), p2(3)); [ k33_3, b33_3, alpha33_3 ] = c_krnl( x3t_3, y3t_3, tau(3), gamma(3), typ(3), p1(3), p2(3)); [ k34_3, b34_3, alpha34_3 ] = c_krnl( x3t_4, y3t_4, tau(3), gamma(3), typ(3), p1(3), p2(3)); [ k35_3, b35_3, alpha35_3 ] = c_krnl( x3t_5, y3t_5, tau(3), gamma(3), typ(3), p1(3), p2(3)); %% SVR. ValidaciÛn de los distintos ensayos con distintos sets de entrenamiento y regresores 113 Técnicas de ajuste de los métodos Kernel para la regresión. %_Primer regresor con 5 particiones para kfoldCV para el primer %conjunto de par·metros [ y11_1 ] = v_krnl( k11_1, alpha11_1, b11_1, tau(1), x1t_1, x1v_1); [ y12_1 ] = v_krnl( k12_1, alpha12_1, b12_1, tau(1), x1t_2, x1v_2); [ y13_1 ] = v_krnl( k13_1, alpha13_1, b13_1, tau(1), x1t_3, x1v_3); [ y14_1 ] = v_krnl( k14_1, alpha14_1, b14_1, tau(1), x1t_4, x1v_4); [ y15_1 ] = v_krnl( k15_1, alpha15_1, b15_1, tau(1), x1t_5, x1v_5); %_Primer regresor con 5 particiones para kfoldCV para el segundo %conjunto de par·metros [ y11_2 ] = v_krnl( k11_2, alpha11_2, b11_2, tau(2), x1t_1, x1v_1); [ y12_2 ] = v_krnl( k12_2, alpha12_2, b12_2, tau(2), x1t_2, x1v_2); [ y13_2 ] = v_krnl( k13_2, alpha13_2, b13_2, tau(2), x1t_3, x1v_3); [ y14_2 ] = v_krnl( k14_2, alpha14_2, b14_2, tau(2), x1t_4, x1v_4); [ y15_2 ] = v_krnl( k15_2, alpha15_2, b15_2, tau(2), x1t_5, x1v_5); %_Primer regresor con 5 particiones para kfoldCV para el tercer %conjunto de par·metros [ y11_3 ] = v_krnl( k11_3, alpha11_3, b11_3, tau(3), x1t_1, x1v_1); [ y12_3 ] = v_krnl( k12_3, alpha12_3, b12_3, tau(3), x1t_2, x1v_2); [ y13_3 ] = v_krnl( k13_3, alpha13_3, b13_3, tau(3), x1t_3, x1v_3); [ y14_3 ] = v_krnl( k14_3, alpha14_3, b14_3, tau(3), x1t_4, x1v_4); [ y15_3 ] = v_krnl( k15_3, alpha15_3, b15_3, tau(3), x1t_5, x1v_5); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %_Segundo regresor con 5 particiones para kfoldCV para el primer %conjunto de par·metros [ y21_1 ] = v_krnl( k21_1, alpha21_1, b21_1, tau(1), x2t_1, x2v_1); [ y22_1 ] = v_krnl( k22_1, alpha22_1, b22_1, tau(1), x2t_2, x2v_2); [ y23_1 ] = v_krnl( k23_1, alpha23_1, b23_1, tau(1), x2t_3, x2v_3); [ y24_1 ] = v_krnl( k24_1, alpha24_1, b24_1, tau(1), x2t_4, x2v_4); [ y25_1 ] = v_krnl( k25_1, alpha25_1, b25_1, tau(1), x2t_5, x2v_5); %_Segundo regresor con 5 particiones para kfoldCV para el segundo %conjunto de par·metros [ y21_2 ] = v_krnl( k21_2, alpha21_2, b21_2, tau(2), x2t_1, x2v_1); [ y22_2 ] = v_krnl( k22_2, alpha22_2, b22_2, tau(2), x2t_2, x2v_2); [ y23_2 ] = v_krnl( k23_2, alpha23_2, b23_2, tau(2), x2t_3, x2v_3); [ y24_2 ] = v_krnl( k24_2, alpha24_2, b24_2, tau(2), x2t_4, x2v_4); [ y25_2 ] = v_krnl( k25_2, alpha25_2, b25_2, tau(2), x2t_5, x2v_5); %_Segundo regresor con 5 particiones para kfoldCV para el tercer %conjunto de par·metros [ y21_3 ] = v_krnl( k21_3, alpha21_3, b21_3, tau(3), x2t_1, x2v_1); [ y22_3 ] = v_krnl( k22_3, alpha22_3, b22_3, tau(3), x2t_2, x2v_2); [ y23_3 ] = v_krnl( k23_3, alpha23_3, b23_3, tau(3), x2t_3, x2v_3); [ y24_3 ] = v_krnl( k24_3, alpha24_3, b24_3, tau(3), x2t_4, x2v_4); [ y25_3 ] = v_krnl( k25_3, alpha25_3, b25_3, tau(3), x2t_5, x2v_5); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %_Tercer regresor con 5 particiones para kfoldCV para el primer %conjunto de par·metros [ y31_1 ] = v_krnl( k31_1, alpha31_1, b31_1, tau(1), x3t_1, x3v_1); [ y32_1 ] = v_krnl( k32_1, alpha32_1, b32_1, tau(1), x3t_2, x3v_2); [ y33_1 ] = v_krnl( k33_1, alpha33_1, b33_1, tau(1), x3t_3, x3v_3); [ y34_1 ] = v_krnl( k34_1, alpha34_1, b34_1, tau(1), x3t_4, x3v_4); [ y35_1 ] = v_krnl( k35_1, alpha35_1, b35_1, tau(1), x3t_5, x3v_5); %_Tercer regresor con 5 particiones para kfoldCV para el segundo Código desarrollado. 114 114 %conjunto de par·metros [ y31_2 ] = v_krnl( k31_2, alpha31_2, b31_2, tau(2), x3t_1, x3v_1); [ y32_2 ] = v_krnl( k32_2, alpha32_2, b32_2, tau(2), x3t_2, x3v_2); [ y33_2 ] = v_krnl( k33_2, alpha33_2, b33_2, tau(2), x3t_3, x3v_3); [ y34_2 ] = v_krnl( k34_2, alpha34_2, b34_2, tau(2), x3t_4, x3v_4); [ y35_2 ] = v_krnl( k35_2, alpha35_2, b35_2, tau(2), x3t_5, x3v_5); %_Tercer regresor con 5 particiones para kfoldCV para el tercer %conjunto de par·metros [ y31_3 ] = v_krnl( k31_3, alpha31_3, b31_3, tau(3), x3t_1, x3v_1); [ y32_3 ] = v_krnl( k32_3, alpha32_3, b32_3, tau(3), x3t_2, x3v_2); [ y33_3 ] = v_krnl( k33_3, alpha33_3, b33_3, tau(3), x3t_3, x3v_3); [ y34_3 ] = v_krnl( k34_3, alpha34_3, b34_3, tau(3), x3t_4, x3v_4); [ y35_3 ] = v_krnl( k35_3, alpha35_3, b35_3, tau(3), x3t_5, x3v_5); end 8.4.4 c_krnl.m function [ k, b, alpha ] = c_krnl( x, y, tau, gamma, typ, p1, p2 ) %Kernel matrix calculation %% Defining kernel as a input function. k = struct; k.type = typ; k.param1 = p1; k.param2 = p2; %% Obtaining Kernel Matrix n = length(x); K = zeros(n); switch k.type case "linear" for i = 1:n for j = 1:n K(i,j) = x(i,:)*x(j,:)'; end end case "polinomial" for i = 1:n for j = 1:n K(i,j) = (k.param1 + x(i,:)*x(j,:)')^k.param2; end end case "radial_basis" for i = 1:n for j = 1:n K(i,j) = exp(-norm(x(i,:)-x(j,:))^2/k.param1^2); end end case "sigmoidal" for i = 1:n for j = 1:n K(i,j) = tanh(k.param1*x(i,:)*x(j,:)'+k.param2); end end end k.matrix = K; %% Solving optimitation problem (dual formulation) 115 Técnicas de ajuste de los métodos Kernel para la regresión. s = tau*ones(n,1); D = diag(s); X = [0 s'; s D*K*D+eye(size(D))*1/gamma]\[0; D*y]; alpha = X(2:end); b = X(1); end 8.4.5 v_krnl.m function [ y ] = v_krnl( k, alpha, b, tau, x, xv) n = length(alpha); y = zeros(size(xv)); v = zeros(n,1); p = diag(tau*ones(n,1))*alpha; for l = 1:length(xv(:,1)) for i = 1 : length(x(:,1)) switch k.type case "linear" v(i,1) = x(i,:)*xv(l,:)'; case "polinomial" v(i,1) = (k.param1 + x(i,:)'*xv(l,:))^k.param2; case "radial_basis" v(i,1) = exp(-norm(x(i,:)-xv(l,:))^2/k.param1^2); case "sigmoidal" v(i,1) = tanh(k.param1*x(i,:)'*x(l,:)+k.param2); end end y(l,1) = b + p'*v; end end 8.4.6 calculaerrores.m function [ ] = calcula_errores( e11_1a, e12_1a, e13_1a, e14_1a, e15_1a, e11_2a, e12_2a, e13_2a, e14_2a, e15_2a, e11_3a, e12_3a, e13_3a, e14_3a, e15_3a, e21_1a, e22_1a, e23_1a, e24_1a, e25_1a, e21_2a, e22_2a, e23_2a, e24_2a, e25_2a, e21_3a, e22_3a, e23_3a, e24_3a, e25_3a, e31_1a, e32_1a, e33_1a, e34_1a, e35_1a, e31_2a, e32_2a, e33_2a, e34_2a, e35_2a, e31_3a, e32_3a, e33_3a, e34_3a, e35_3a ) %Esta funciÛn calcula todos los errores necesarios a partir de los errores %en valor absoluto calculados como e = y_real-y_predicha; n = sqrt(length(e11_1a)); %% Errores cuadr·ticos por cada particiÛn kfoldCV se11_1 = (e11_1a).^2; se21_1 = (e21_1a).^2; se31_1 = (e31_1a).^2; se12_1 = (e12_1a).^2; se22_1 = (e22_1a).^2; se32_1 = (e32_1a).^2; se13_1 = (e13_1a).^2; se23_1 = (e23_1a).^2; se33_1 = (e33_1a).^2; se14_1 = (e14_1a).^2; se24_1 = (e24_1a).^2; se34_1 = (e34_1a).^2; se15_1 = (e15_1a).^2; se25_1 = (e25_1a).^2; se35_1 = (e35_1a).^2; se11_2 = (e11_2a).^2; se21_2 = (e21_2a).^2; se31_2 = (e31_2a).^2; se12_2 = (e12_2a).^2; se22_2 = (e22_2a).^2; se32_2 = (e32_2a).^2; se13_2 = (e13_2a).^2; se23_2 = (e23_2a).^2; se33_2 = (e33_2a).^2; se14_2 = (e14_2a).^2; se24_2 = (e24_2a).^2; se34_2 = (e34_2a).^2; se15_2 = (e15_2a).^2; se25_2 = (e25_2a).^2; se35_2 = (e35_2a).^2; se11_3 = (e11_3a).^2; se21_3 = (e21_3a).^2; se31_3 = (e31_3a).^2; se12_3 = (e12_3a).^2; se22_3 = (e22_3a).^2; se32_3 = (e32_3a).^2; Código desarrollado. 122 122 title('ParticiÛn kfold n˙mero 2');xlabel('Error absoluto');ylabel('Nº de muestras'); subplot(3,2,3,'Parent',p6); hist(e23_3a); title('ParticiÛn kfold n˙mero 3');xlabel('Error absoluto');ylabel('Nº de muestras'); subplot(3,2,4,'Parent',p6); hist(e24_3a); title('ParticiÛn kfold n˙mero 4');xlabel('Error absoluto');ylabel('Nº de muestras'); subplot(3,2,5,'Parent',p6); hist(e25_3a); title('ParticiÛn kfold n˙mero 5');xlabel('Error absoluto');ylabel('Nº de muestras'); e2m_3a = (e21_3a+e22_3a+e23_3a+e24_3a+e25_3a)./5; subplot(3,2,6,'Parent',p6); hist(e2m_3a); title('Error medio de las 5 muestras');xlabel('Error absoluto');ylabel('Nº de muestras'); %% CASO 7: Regresor 3, conjunto de par·metros 1. f7 = figure; p7 = uipanel('Parent',f7,'BorderType','none'); p7.Title = 'CASO 7: Tercer regresor + Primer conjunto par·metros'; p7.TitlePosition = 'centertop'; p7.FontSize = 12; p7.FontWeight = 'bold'; subplot(3,2,1,'Parent',p7); hist(e31_1a); title('ParticiÛn kfold n˙mero 1');xlabel('Error absoluto');ylabel('Nº de muestras'); subplot(3,2,2,'Parent',p7); hist(e32_1a); title('ParticiÛn kfold n˙mero 2');xlabel('Error absoluto');ylabel('Nº de muestras'); subplot(3,2,3,'Parent',p7); hist(e33_1a); title('ParticiÛn kfold n˙mero 3');xlabel('Error absoluto');ylabel('Nº de muestras'); subplot(3,2,4,'Parent',p7); hist(e34_1a); title('ParticiÛn kfold n˙mero 4');xlabel('Error absoluto');ylabel('Nº de muestras'); subplot(3,2,5,'Parent',p7); hist(e35_1a); title('ParticiÛn kfold n˙mero 5');xlabel('Error absoluto');ylabel('Nº de muestras'); e3m_1a = (e31_1a+e32_1a+e33_1a+e34_1a+e35_1a)./5; subplot(3,2,6,'Parent',p7); hist(e3m_1a); title('Error medio de las 5 muestras');xlabel('Error absoluto');ylabel('Nº de muestras'); %% CASO 8: Regresor 3, conjunto de par·metros 2. f8 = figure; p8 = uipanel('Parent',f8,'BorderType','none'); p8.Title = 'CASO 8: Tercer regresor + Segundo conjunto par·metros'; p8.TitlePosition = 'centertop'; p8.FontSize = 12; p8.FontWeight = 'bold'; subplot(3,2,1,'Parent',p8); hist(e31_2a); title('ParticiÛn kfold n˙mero 1');xlabel('Error absoluto');ylabel('Nº de muestras'); subplot(3,2,2,'Parent',p8); hist(e32_2a); title('ParticiÛn kfold n˙mero 2');xlabel('Error absoluto');ylabel('Nº de muestras'); 123 Técnicas de ajuste de los métodos Kernel para la regresión. subplot(3,2,3,'Parent',p8); hist(e33_2a); title('ParticiÛn kfold n˙mero 3');xlabel('Error absoluto');ylabel('Nº de muestras'); subplot(3,2,4,'Parent',p8); hist(e34_2a); title('ParticiÛn kfold n˙mero 4');xlabel('Error absoluto');ylabel('Nº de muestras'); subplot(3,2,5,'Parent',p8); hist(e35_2a); title('ParticiÛn kfold n˙mero 5');xlabel('Error absoluto');ylabel('Nº de muestras'); e3m_2a = (e31_2a+e32_2a+e33_2a+e34_2a+e35_2a)./5; subplot(3,2,6,'Parent',p8); hist(e3m_2a); title('Error medio de las 5 muestras');xlabel('Error absoluto');ylabel('Nº de muestras'); %% CASO 9: Regresor 3, conjunto de par·metros 3. f9 = figure; p9 = uipanel('Parent',f9,'BorderType','none'); p9.Title = 'CASO 9: Tercer regresor + Tercer conjunto par·metros'; p9.TitlePosition = 'centertop'; p9.FontSize = 12; p9.FontWeight = 'bold'; subplot(3,2,1,'Parent',p9); hist(e31_3a); title('ParticiÛn kfold n˙mero 1');xlabel('Error absoluto');ylabel('Nº de muestras'); subplot(3,2,2,'Parent',p9); hist(e32_3a); title('ParticiÛn kfold n˙mero 2');xlabel('Error absoluto');ylabel('Nº de muestras'); subplot(3,2,3,'Parent',p9); hist(e33_3a); title('ParticiÛn kfold n˙mero 3');xlabel('Error absoluto');ylabel('Nº de muestras'); subplot(3,2,4,'Parent',p9); hist(e34_3a); title('ParticiÛn kfold n˙mero 4');xlabel('Error absoluto');ylabel('Nº de muestras'); subplot(3,2,5,'Parent',p9); hist(e35_3a); title('ParticiÛn kfold n˙mero 5');xlabel('Error absoluto');ylabel('Nº de muestras'); e3m_3a = (e31_3a+e32_3a+e33_3a+e34_3a+e35_3a)./5; subplot(3,2,6,'Parent',p9); hist(e3m_3a); title('Error medio de las 5 muestras');xlabel('Error absoluto');ylabel('Nº de muestras'); end 125 REFERENCIAS [1] Tyler Vigen, Spourious Correlations, http://tylervigen.com/spurious-correlations [2] Giusepe Piazzi, (s.f.). En Wikipedia, https://es.wikipedia.org/wiki/Giuseppe_Piazzi [3] Nieto, M. M. The Titius-Bode Law of Planetary Distances: Its History and Theory. Oxford: Pergamon Press Ltd., 1972. [4] Ruye Wang, Kernels and Mercer’s Theorem. En http://fourier.eng.hmc.edu/e161/lectures/gaussianprocess/node8.html [5] B. Schölkopf and A.J. Smola, Support Vector Machines and Kernel Algorithms, [6] Teodoro Álamo y J.M. Bravo, Weighted least squares support vector machines, Tech. report, Universidad de Sevilla, 2015.  [7] Andrew Ng, Machine Learning, Standford University, En https://es.coursera.org/learn/machinelearning [8] Vsevolod I. Ivanov. Duality in nonlinear programming. Optimization Letters, 7(8):1643–1658, 2013 [9] Trevor J. Hastie, Robert John Tibshirani, and Jerome H Friedman. The elements of statistical learning: data mining, inference, and prediction. Springer, 2013. [10] Waclerly, Dennis; Mendenhall, William; Scheaffer, Richard L. (2008). Mathematical Statistics with Applications (7 ed.). Belmont, CA, USA [11] Daniel Rodriguez y Teodoro Álamo, Identificación mediante el método de los mínimos cuadrados, http://control-class.com/Tema_2/Slides/Tema_2_IdentificacionMinimosCuadrados.pdf 127