Full text
Proyecto Fin de Máster Máster en Sistemas de Energía Eléctrica Autor: Carlos Rodríguez Manzanares Tutores: Jesús Manuel Riquelme Santos Juan Manuel Roldán Fernández Departamento de Ingeniería Eléctrica Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2015 Análisis de los Métodos de Predicción Aplicados a los Desvíos en el Sistema Eléctrico Ibérico Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2018
Proyecto Fin de Máster Máster en Sistemas de Energía Eléctrica Análisis de los Métodos de Predicción Aplicados a los Desvíos en el Sistema Eléctrico Ibérico Autor: Carlos Rodríguez Manzanares Tutores: Jesús Manuel Riquelme Santos Catedrático de Universidad Juan Manuel Roldán Fernández Doctor Ingeniero Industrial Departamento de Ingeniería Eléctrica Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2018
5 ÍNDICE ÍNDICE DE FIGURAS .................................................................................................................. 6 ÍNDICE DE TABLAS .................................................................................................................... 8 RESUMEN ................................................................................................................................. 9 1. INTRODUCCIÓN .............................................................................................................. 10 1.1. RESULTADOS DEL ANÁLISIS DE LOS DESVÍOS .......................................................... 10 1.2. MERCADO DE PRODUCCIÓN ................................................................................... 11 2. METODOLOGÍA ............................................................................................................... 14 2.1. WEKA ...................................................................................................................... 14 2.1.1. ENTRADA AL PROGRAMA ................................................................................ 15 2.1.2. EL EXPLORER ................................................................................................... 15 2.2. DATOS DE PARTIDA ................................................................................................. 16 2.3. ENTRADA DE DATOS A WEKA.................................................................................. 20 2.4. DEMOSTRACIÓN FUNCIONAL .................................................................................. 21 2.4.1. CARGA DE DATOS ............................................................................................ 22 2.4.2. CLASIFICACIÓN DE DATOS ............................................................................... 24 2.4.3. SELECCIÓN DE ATRIBUTOS............................................................................... 38 2.4.4. VISUALIZACIÓN DE ATRIBUTOS ....................................................................... 49 2.4.5. EL EXPERIMENTER ........................................................................................... 51 3. HIPÓTESIS Y RESULTADOS DEL PRIMER ESTUDIO. .......................................................... 58 4. HIPÓTESIS Y RESULTADOS DEL ESTUDIO FINAL............................................................... 71 4.1. VENTANA MÓVIL .................................................................................................... 71 4.2. OTROS RESULTADOS ............................................................................................... 80 5. CONCLUSIONES Y LÍNEAS FUTURAS ................................................................................ 84 6. BIBLIOGRAFÍA ................................................................................................................. 86
6 ÍNDICE DE FIGURAS Figura 2.1 - Ventana inicial de WEKA ....................................................................................... 15 Figura 2.2 - Inicio de la web de www.meteomanz.com ........................................................... 18 Figura 2.3 - Distribución de estaciones españolas disponibles en Meteomanz ......................... 19 Figura 2.4 - Formato de entrada de datos a WEKA .................................................................. 20 Figura 2.5 - Preprocess con datos cargados ............................................................................. 22 Figura 2.6 - Ventana de Visualize all ........................................................................................ 23 Figura 2.7 - Ejecución de filtros ............................................................................................... 24 Figura 2.8 - Interfaz del clasificador......................................................................................... 24 Figura 2.9 - Validación cruzada................................................................................................ 25 Figura 2.10 - Resultadosde ZeroR ............................................................................................ 26 Figura 2.11 - Selección del clasificador .................................................................................... 27 Figura 2.12 - Parámetros del árbol de decisión ........................................................................ 28 Figura 2.13 - Árbol completo y detalle .................................................................................... 29 Figura 2.14 - Resultados sin alterar la matriz de costes ........................................................... 30 Figura 2.15 - Configuración del metaclasificador ..................................................................... 31 Figura 2.16 - Resultado modificando matriz de costes ............................................................ 31 Figura 2.17 - Estructura del perceptrón multicapa .................................................................. 32 Figura 2.18 - Resultado de 92% de acierto con MultilayerPerceptron ...................................... 35 Figura 2.19 - Predicción en la salida ........................................................................................ 36 Figura 2.20 - Predicción de 25 horas....................................................................................... 37 Figura 2.21 - Ventana de selección de atributos ...................................................................... 38 Figura 2.22 - Selección con método Ranker ............................................................................. 39 Figura 2.23 - Resultados con CfsSubsetEval ............................................................................. 41 Figura 2.24 - Resultado con método Wrapper ......................................................................... 42 Figura 2.25 - Ventana de Visualize .......................................................................................... 49 Figura 2.26 - Visualización Demanda-Nuclear .......................................................................... 50 Figura 2.27 - Atributos ideales para clasificar .......................................................................... 51 Figura 2.28 - Ventana del Experimenter .................................................................................. 52 Figura 2.29 - Creación de fichero de salida del experimento.................................................... 53 Figura 2.30 - Elección de conjuntos de datos y algoritmos para el experimento ...................... 54 Figura 2.31 - Ventana del estado del experimento .................................................................. 54 Figura 2.32 - Ventana de visualización de resultados del experimento .................................... 55 Figura 2.33 - Visualización de resultados del experimento ...................................................... 56 Figura 2.34 - Visualización de los tiempos de cada algoritmo en el experimento ..................... 57 Figura 3.1 - Resultados del primer estudio para los desvíos del sistema .................................. 60 Figura 3.2 - Resultados del primer estudio para los desvíos de la demanda ............................. 61 Figura 3.3 - Resultados del primer estudio para los desvíos eólicos ......................................... 62
7 Figura 3.4 - Energía Media Horaria de los Desvíos a Subir de la Generación Eólica en MWh 2014,2015 y 2016 ................................................................................................................... 63 Figura 3.5 - Energía Media Horaria de los Desvíos a Subir de la Demanda en MWh 2014,2015 y 2016 ....................................................................................................................................... 63 Figura 3.6 - Resultados del primer estudio para los desvíos fotovoltaicos ................................ 64 Figura 3.7 - Energía Media Horaria de los Desvíos a Subir de la Generación Fotovoltaica en MWh 2014,2015 y 2016 .......................................................................................................... 64 Figura 3.8 – Selección mediante validación cruzada y método wrapper .................................. 65 Figura 3.9 - Clasificación mediante selección con validación cruzada, wrapper y red neuronal 66 Figura 3.10 - Selección simple mediante método wrapper y redes neuronales ........................ 67 Figura 3.11 - Clasificación mediante selección simple, wrapper y redes neuronales ................ 67 Figura 3.12 - Selección simple mediante método wrapper y árboles de decisión ..................... 68 Figura 3.13 - Clasificación mediante selección simple, wrapper y árbol de decisión ................. 68 Figura 4.1 - Ventana móvil de entrenamiento y testeo ............................................................ 71 Figura 4.2 - Resultados para ventana móvil de 100 días .......................................................... 73 Figura 4.3 - Resultados para ventana móvil de 50 días ............................................................ 74 Figura 4.4 - Resultados para ventana móvil de 200 días .......................................................... 74 Figura 4.5 - Segundos resultados para ventana móvil de 100 días ........................................... 76 Figura 4.6 - Representación gráfica de fallos y aciertos totales junto al número y sentido de los desvíos.................................................................................................................................... 78 Figura 4.7 - Precio medio horario de los desvíos para el año 2016 ........................................... 78 Figura 4.8 - Resultados para los desvíos de la demanda con ventana móvil de 100 días .......... 81 Figura 4.9 - Tiempos de computación para los desvíos de la demanda con ventana móvil de 100 días .................................................................................................................................. 82 Figura 4.10 - Resultados para los desvíos eólicos con ventana móvil de 100 días ..................... 82 Figura 4.11 - Resultados para los desvíos fotovoltaicos con ventana móvil de 100 días ........... 83
8 ÍNDICE DE TABLAS Tabla 1.1 - Energía desviada y sobrecostes globales del sistema.............................................. 10 Tabla 1.2 - Coste de los desvíos de la demanda, eólicos y fotovoltaicos. .................................. 11 Tabla 1.3 - Sesiones de Mercado Intradiario............................................................................ 12 Tabla 2.1 - Resultados selección de atributos .......................................................................... 44 Tabla 2.2 - Resultados ranker y J48 ......................................................................................... 45 Tabla 3.1 - 8 primeras divisiones de la muestra principal ......................................................... 59 Tabla 3.2 - Ranking de selecciones realizadas .......................................................................... 69 Tabla 4.1 - Resultado de las predicciones realizadas para la ventana de 100 días .................... 77 Tabla 4.2 - Matrices de confusión para las 24 horas del período de 59 días ............................. 79
9 RESUMEN Actualmente, la estructuración de la generación-demanda en el Sistema Eléctrico Español se organiza mediante mecanismos de mercado. En estos mercados, acuden tanto consumidores como productores con el fin de realizar sus ofertas de compraventa de energía, creándose finalmente un compromiso de todos ellos de satisfacer los tratos realizados consumiendo o generando la energía pactada. Esto no sería posible de llevar a cabo sin un respaldo del operador del sistema, gestionando mecanismos de reserva y regulación para corregir los déficits o excesos que se creen derivados de la incertidumbre que existe al tratar con energías renovables como la fotovoltaica, la eólica o el comportamiento, no siempre predecible, de la demanda. Todo sujeto de mercado que no pueda asegurar satisfacer el acuerdo en su totalidad es candidato a recibir penalizaciones económicas. La realización del presente proyecto surge como continuación de un trabajo inicial titulado Análisis de los Desvíos en el Sistema Eléctrico Ibérico y sus Implicaciones Económicas y resultará útil tener cierto conocimiento de las conclusiones que en él se obtienen para un mejor seguimiento de este estudio. En dicho trabajo se utilizan datos reales de distintos parámetros del Sistema Eléctrico Español para llevar a cabo un estudio del volumen de energía desviada junto con sus pérdidas económicas asociadas. Se analiza qué sujetos de mercado intervienen en el problema y en qué medida lo hacen, se describen patrones y tendencias y se desarrollan estrategias con el fin de reducir dichos desvíos. Más allá del desarrollo de estrategias que ayuden a los ofertantes a ver disminuidas sus penalizaciones, lo que busca este estudio es el desarrollo de metodologías que ayuden a predecir el sentido de desvío del sistema con un día de antelación. Esto aportará información muy valiosa a aquellos sujetos de mercado afectados, posibilitándoles el modificar sus ofertas de la manera oportuna y hacer una mejor gestión de la energía producida o consumida.
16 Cluster y Associate: estas dos funcionalidades no se han llegado a utilizar en el estudio pero sirven para crear agrupaciones y asociaciones de los datos de entrada al programa. Select Attributes: esta también será una herramienta de cierta importancia, ya que permitirá realizar clasificaciones y selección de los datos proporcionados como entrada al programa. Para ello, utilizará los mismos algoritmos de aprendizaje y clasificación que se pueden encontrar en Classify. Esto ayuda a saber qué atributos, de los que se han dado como entrada, son importantes para realizar la predicción deseada. Ayuda a acotar el estudio, a eliminar variables que puedan falsear el resultado y a reducir los tiempos de computación. Visualize: en este apartado es posible visualizar la información dada como entrada al programa por parejas de atributos. Experimenter: esta herramienta no forma parte del Explorer, pero se incluirá en este apartado simplemente para que sea nombrada, ya que será explicada más exhaustivamente al final de la metodología. Con ella básicamente se podrán programar experimentos más complejos utilizando los algoritmos y funciones aprendidas en el Explorer. Hasta aquí, se ha hecho una descripción general de las principales funciones que se utilizarán en el estudio. A continuación se presentará la información que se ha decidido utilizar, de dónde se ha conseguido, como ha sido tratada para ser introducida en WEKA y la realización de pruebas con estos datos a modo de ejemplo que sirva para mostrar, de manera más profunda, las posibilidades del programa. 2.2. DATOS DE PARTIDA Como ya se ha adelantado en la introducción, como datos de entrada se utilizarán: los resultados publicados del PDVP para cada tecnología, los requerimientos de reserva de potencia a subir, los requerimientos de regulación secundaria e información de ciertas variables meteorológicas de lugares concretos de la Península. Las páginas de referencia para la descarga de datos serán www.esios.ree.es en el caso de información relacionada con el sistema eléctrico, y www.meteomanz.com para la meteorológica.
17 A continuación, se enumeran los distintos ficheros que se han descargado de www.esios.ree.es, con información horaria de distintas variables desde el año 2014 al 2017, ambos inclusive: Resultado del PDVP para la demanda. Resultado del PDVP para el enlace de Baleares. Resultado del PDVP para las interconexiones internacionales. Resultado del PDVP para bombeo en centrales hidráulicas de bombeo. Resultado del PDVP para turbinación en centrales hidráulicas de bombeo. Resultado del PDVP para centrales de carbón. Resultado del PDVP para centrales de ciclo combinado. Resultado del PDVP para centrales de cogeneración. Resultado del PDVP para las centrales nucleares. Resultado del PDVP para centrales hidráulicas. Resultado del PDVP para centrales eólica. Resultado del PDVP para centrales fotovoltaicas. Resultado del PDVP para centrales termosolares. Precio del mercado diario. Requerimientos de reserva de potencia a subir. Requerimientos de regulación secundaria a bajar. Requerimientos de regulación secundaria a subir. Sentido del desvío del sistema. Sentido del desvío de la demanda. Sentido del desvío eólico. Sentido del desvío fotovoltaico. Sentido de la gestión de desvíos. A continuación, se enumeran los distintos ficheros que se han descargado de www.meteomanz.com, con información horaria de distintas variables meteorológicas desde el año 2014 al 2017, ambos inclusive: Temperatura en Madrid. Velocidad del viento en Madrid. Humedad relativa en Madrid. Presión atmosférica en Madrid. Temperatura en Vigo. Velocidad del viento en Vigo. Humedad relativa en Vigo. Presión atmosférica en Vigo. Temperatura en Gibraltar. Velocidad del viento en Gibraltar. Humedad relativa en Gibraltar. Presión atmosférica en Gibraltar.
18 Son estas cuatro variables meteorológicas las que se han elegido porque son las que presentan un formato numérico más fácil de tratar o porque básicamente, se proporcionan valores de ellas para casi la totalidad de las horas de los 4 años que componen el estudio. En la página también se pueden encontrar otras variables como la nubosidad o el sentido del viento, pero se han desechado, ya sea por entender que no proporcionan información adicional o porque falten gran cantidad de datos. Se puede encontrar esta información para estaciones meteorológicas repartidas por todo el mundo. En este caso, tratándose de España, se han escogido Madrid, Vigo y Gibraltar por varios motivos. Por un lado, se sabe que la demanda es la que más desvíos comete, seguida de la generación eólica. También se conoce que tanto el consumo eléctrico como la generación renovable dependen en gran medida de factores meteorológicos como la temperatura o el viento. Por lo tanto se han buscado lugares donde la demanda sea importante, como Madrid, y lugares con alta densidad de centrales eólicas, como son Galicia y la provincia de Cádiz. Así será posible encontrar una relación lógica o un mayor impacto entre estas variables meteorológicas y las variables del sistema eléctrico. En el anterior proyecto ya se explicaba como descargar la información de la página de REE. Así que se explicará simplemente como funciona la web de Meteomanz. A continuación se puede ver (figura 2.2) el aspecto que tiene el inicio de la web. Se ha remarcado en rojo la zona que resulta de interés. Figura 2.2 - Inicio de la web de www.meteomanz.com Se ha de seleccionar la región, estado o zona de la que se quiere extraer la información. En este caso se seleccionará España. En la pestaña Tipo de salida, se escogerá la opción Mapas y en Tipo de mapa se seleccionará la opción Mapa de nombre de estaciones. Esto nos permite ver la distribución de estaciones meteorológicas que se encuentran disponibles en la web, junto con su nombre, coordenadas y otra serie de datos que se pueden visualizar accediendo a cada una de ellas.
19 Figura 2.3 - Distribución de estaciones españolas disponibles en Meteomanz Una vez visto como están distribuidas las estaciones y ver cuáles están disponibles, se vuelve a la ventana inicial y se vuelve a seleccionar España, pero esta vez se escoge la estación que se desee en la pestaña Estación. Se seleccionará Datos por horas (variables principales) en la pestaña de Tipo de salida y se elegirá fecha y hora de inicio y final. La página solo permite descargar de una sola vez la información relativa a un mes, con lo que habrá que hacerlo mes a mes hasta ir completando la información para los cuatro años de estudio. Es posible elegir la descarga en formato Excel para poder tratar los ficheros más fácilmente con Matlab. Resulta también recomendable, crear una función que lea la información de los distintos meses y devuelva a la salida un fichero donde encontrar todos los datos ya ordenados de forma fiable para cada año. Para crear esta función es importante tener en cuenta si faltan datos para algunas horas. Esto se puede corregir utilizando la media de las dos horas vecinas más próximas. También es importante comprobar que estén realizados correctamente los dos cambios horarios anuales, sabiendo que un día del año tendrá 23 horas y otro 25, y también habrá que tener en cuenta si el año es bisiesto o no. Para algunos de los archivos descargados de Esios, sucede algo parecido, y habrá que tratar cada fichero de la manera correspondiente. Todo lo que se acaba de comentar, resulta extremadamente importante a la hora de hacer un estudio de estas características. Es común que los ficheros no vengan siempre de la manera deseada y hay que prestar atención a como se transforma esa información, para que al comparar unas variables con otras, se tenga la seguridad de que se están comparando valores que se dieron justamente en el mismo instante. Los ficheros que se manejan en este estudio pueden llegar a tener más de 35.000 valores horarios consecutivos. Si se relaciona una cantidad importante de valores de unos ficheros con otros pensando que corresponden al mismo instante
20 y realmente no es así, se pueden llegar a cometer errores muy graves que invaliden el estudio por completo, ya que no estará arrojando un resultado real. Una vez se tiene la información horaria para todas las variables tanto eléctricas como meteorológicas, se pueden almacenar por columnas en un mismo archivo Excel. A este archivo se le añaden también cuatro columnas más con la información sobre la hora (valores de 1 a 24), día de la semana (valores de 1 a 7), mes (valores de 1 a 12) y año (valores de 2014 a 2017) en la que se encuentran los datos de esa fila. Esto permitirá poder clasificar la totalidad de los datos de manera sencilla, sabiendo qué resultados del PDVP y que condiciones meteorológicas se han dado para cada hora de estos cuatro años. Resultará útil para el caso en que se quieran hacer estudios de horas, días, meses o años concretos. 2.3. ENTRADA DE DATOS A WEKA WEKA admite la entrada de ficheros de texto con formato .arff. Tiene una estructura donde primero se declaran las variables para luego añadir los datos reales asociados a esas variables. En la siguiente imagen (figura 2.4), se ve un ejemplo del formato que debe seguir el fichero de texto para que WEKA pueda leer la información. Figura 2.4 - Formato de entrada de datos a WEKA
21 Lo primero será añadir una primera línea donde tras la expresión @RELATION, se escribirá el nombre que se quiera que reciba el archivo dentro de WEKA. Este nombre es importante que no coincida con el nombre escogido para ningún atributo, lo cual da problemas a la hora de introducir el fichero en el programa. Seguidamente, en el ejemplo, se pretende crear un algoritmo de aprendizaje que ayude a poder predecir el sentido del desvío del sistema conociendo la información relativa a los atributos que en la figura (figura 2.4) se observan. Para ello, se irán añadiendo las distintas variables escribiendo sus nombre tras la expresión @ATTRIBUTE y añadiendo el tipo de dato que contiene. Para el caso de este estudio serán todos números reales por lo que se debe añadir REAL tras el nombre del atributo. El último atributo añadido en el caso del ejemplo es la variable que se quiere predecir, y como solo se encontrarán los valores 1 y -1 en ella (describiendo así el sentido de desvío), se escriben directamente estos dos números entre llaves y separados por coma. A este atributo se le llamará “la clase”, ya que será el que clasifique cada conjunto de datos con 1 ó -1. Por último, tras escribir la expresión @DATA, se añadirá la información real que aportan las variables. Esto se hace, añadiendo el primer valor de cada atributo en la primera fila, separados por comas. Luego en la siguiente fila irán los segundos valores de cada atributo y así sucesivamente. Los valores de los atributos de cada fila tienen que estar ordenados del mismo modo que se han ordenado los atributos al declararlos. Si se incluye toda la información descargada en un archivo Excel, tal como se comentó anteriormente, en los que cada columna contenga la información horaria para cada una de las variables del estudio desde 2014 hasta 2017, es fácil crear una función en Matlab que genere el fichero de entrada a WEKA. Es importante que esa función permita escoger fácilmente los datos que introduce en el fichero si se quieren realizar distintos estudios de manera ágil. Por ejemplo, si se quiere estudiar de manera independiente lo que ocurre en ciertas horas del día o en ciertos días de la semana, al contar con columnas que representan estos datos, será sencillo filtrar y volcar a WEKA solo la información que corresponda a los instantes deseados. 2.4. DEMOSTRACIÓN FUNCIONAL Hasta aquí, se ha hecho una breve descripción del programa, se ha descrito la información de partida del estudio y se ha explicado el formato con el que introducirla en WEKA. A continuación, se hará una demostración real de las funciones de WEKA. Para ello se utilizará una muestra de los datos pertenecientes a la información de partida del estudio y se realizarán pruebas con ella, navegando por cada una de las funciones que se han utilizado. Se han escogido la totalidad de los atributos descritos en el apartado 2.2.Datos de partida, pero incluyendo únicamente aquellos valores que pertenecen a días festivos del año 2017.
22 2.4.1. CARGA DE DATOS Tal como se explicó anteriormente, tras abrir WEKA, se accede al Explorer. Previamente se ha debido de crear el fichero de texto, añadiendo la extensión .arff e incluyendo la información en el formato requerido. Al abrir el Explorer, aparecerá la ventana del Preprocess (figura 2.5). Lo primero que se debe hacer es cargar el fichero de entrada en la opción Open File. Automáticamente se verá que en la columna de la izquierda aparecen todos los atributos que se añadieron al fichero con su nombre. También a la izquierda se verá el número de datos que tiene cada atributo (Instances) y el número de atributos (Attributes). Para el caso actual se cuenta con la información de 2520 horas y con 34 atributos distintos. De los 34 atributos, uno será el sentido del desvío del sistema. Este atributo será el que se utilice para clasificar el conjunto de datos de cada hora. En la parte superior derecha aparece información estadística sobre los atributos como media, desviación típica y valores máximo y mínimo. Unique se refiere al número de valores que sólo aparecen una vez en ese atributo y Distinct al número de valores distintos (excluyendo valores repetidos). Un poco más abajo, aparece el desglose de los valores del atributo por clase. En el eje X aparecen los valores del atributo seleccionado en la parte de la izquierda (en la imagen aparece como atributo seleccionado la temperatura en Madrid, aunque podría ser cualquier otro). Figura 2.5 - Preprocess con datos cargados Se recuerda que existen dos posibles casos: desvío a subir del sistema (sobra energía) o desvío a bajar del sistema (necesita energía). Estos dos casos se representan con colores en el gráfico. Se ve para todo el rango de temperaturas, cuantas veces se han dado desvíos a subir (azul) y
23 cuantas a bajar (rojo). Esta clasificación se hace para cada una de las variables y se pueden ver una a una si se van seleccionando en la columna de la izquierda, pero si se pulsa Visualize All, se abre una ventana donde aparece el desglose de todos los atributos a la vez (figura 2.6). Esto puede servir para hacer una comprobación rápida de lo útil que resulta cada atributo, considerado por separado. Figura 2.6 - Ventana de Visualize all Uno de los objetivos de introducir un número elevado de atributos, es el de encontrar buenos clasificadores, es decir, atributos que sean capaz de separar los datos pertenecientes a distintas clases. Si se recorren uno a uno los gráficos para cada uno de los atributos, es difícil encontrar alguno que marque una frontera clara por sí solo. Por ejemplo, en la imagen anterior donde se observaba la temperatura de Madrid, se veía que a bajas temperaturas, predominaba el color rojo, por lo que, con vistas a realizar una predicción, será más probable que en esos momentos se produzcan desvíos a bajar. Sin embargo no han dejado de producirse desvíos a subir, por lo que se necesitarán de otros atributos y de métodos más complejos para establecer una clasificación fiable. En la siguiente imagen (figura 2.7), se muestra cómo se pueden seleccionar filtros para los datos y los atributos, además de poder borrar algunos de ellos. Los filtros permiten, por ejemplo, normalizar los datos, borrar los que culpan un determinado criterio, crear nuevos atributos, etc. Aunque al venir los datos previamente filtrados desde Matlab, estas herramientas no se utilizarán por el momento.
24 Figura 2.7 - Ejecución de filtros 2.4.2. CLASIFICACIÓN DE DATOS Una vez se tienen los datos deseados cargados en el programa, se puede realizar una primera clasificación para los datos. Se pulsa en la pestaña Classify que se encuentra justo al lado de Preprocess y se abrirá una nueva ventana. En la siguiente imagen (figura 2.8) se observa la ventana de Classify con indicaciones de sus principales herramientas. Figura 2.8 - Interfaz del clasificador
25 Lo primero será elegir el método de predicción pulsando en Choose, dónde por defecto aparecerá el clasificador ZeroR. Este método, clasifica todos los datos según la clase mayoritaria, es decir, que si en la muestra con la que se va a realizar la prueba, el mayor porcentaje de los desvíos son a subir, clasificará el resto de datos del mismo modo. Es conveniente utilizar primero este método porque dará una pista sobre el porcentaje mínimo de aciertos que habrá que superar con cualquier otro clasificador. Debajo de Choose, se encuentran las distintas opciones de test, las cuales son: Use training set: esta opción utilizará para hacer el test el mismo conjunto de datos que utiliza para hacer el entrenamiento. Con esto se prevé que el modelo creado genere un porcentaje de aciertos demasiado optimista. Al igual que el clasificador ZeroR se utilizaba para tener una idea del porcentaje mínimo de aciertos que se debe superar. Esta opción puede utilizarse para tener una idea del máximo que se puede alcanzar. Supplied test set: si se cuenta con un fichero de datos para testeo distinto del fichero de datos de entrenamiento, es en esta opción donde se podrá seleccionar. Crossvalidation: esta opción permite hacer una validación cruzada de K iteraciones. Los datos de la muestra se dividen en K subconjuntos. En cada una de las K iteraciones, el subconjunto K se utiliza como datos de prueba y el resto (K-1), se utiliza como datos de entrenamiento. Una vez se termina el proceso de validación cruzada, se realiza la media aritmética de los resultados de cada iteración para obtener un único resultado. Este método resulta preciso puesto que evalúa K combinaciones de prueba y entrenamiento aunque desde el punto de vista computacional resulta más lento mientras más iteraciones se añadan. La elección del número de iteraciones debe depender de la medida del conjunto de datos. El programa utiliza por defecto 10 iteraciones. Figura 2.9 - Validación cruzada
32 Como se comprueba, el modificar la matriz de costes de la manera indicada, ha supuesto una mejora en los resultados de la predicción, subiendo de un 84% a un 88% de acierto. Aún se siguen cometiendo dos errores clasificando erróneamente como desvío a subir y uno solo como desvío a bajar. Pero si se sigue aumentando el coste de clasificar como desvío a subir, se mejorará este indicador a costa de empeorar el otro, con lo cual, no tiene sentido continuar modificando la matriz de costes. 2.4.2.2. PERCEPTRÓN MULTICAPA Ahora se cambiará de algoritmo de clasificación y se realizará la misma tarea que con el árbol de decisión. Si se despliega de nuevo la lista de clasificadores y se abre la pestaña functions, aparecerá el clasificador MultilayerPerceptron. Este algoritmo se encuentra dentro de la clasificación de red neuronal. Su arquitectura se caracteriza básicamente porque tiene sus neuronas agrupadas en capas de distintos niveles. Cada una de las capas está formada por un conjunto de neuronas y se distinguen tres tipos de capas distintas: la capa de entrada, la capa oculta y la capa de salida. Figura 2.17 - Estructura del perceptrón multicapa Las neuronas de la capa de entrada no actúan como neuronas propiamente dichas, sino que se encargan únicamente de recibir las señales o patrones del exterior (en este caso serán los atributos) y propagar dichas señales a todas las neuronas de la siguiente capa. La última capa actúa como salida de la red, proporcionando al exterior la respuesta de la red para cada uno de los patrones de entrada. Las neuronas de las capa oculta o capas ocultas (pueden ser más de una), realizan un procesamiento no lineal de los patrones recibidos. Esto lo hacen definiendo una serie de pesos para cada una de sus conexiones, los cuales hacen que al entrar una serie de datos de entrada, vayan tomando un camino hasta llegar al valor de clasificación.
33 Si se selecciona el clasificador y se abre su ventana de configuración, se puede pulsar Capabilites y ver si es apto para tratar los datos de entrada y salida. En la clase y en los atributos se puede ver respectivamente Binary class y Numeric attributes entre otros. Por lo tanto es un algoritmo apto para clasificar los datos de entrada. Si se pulsa en More, se podrá ver el resumen que hace WEKA sobre este clasificador. En este caso, se explica que el Perceptrón Multicapa utiliza retropropagación para realizar el entrenamiento de las neuronas. En la retropropagación, se aplica un patrón a la entrada como estímulo (entrada de datos de los atributos) y este se propaga desde la primera capa hasta las siguientes, generando una salida. La señal de salida se compara con la salida deseada y se calcula una señal de error para cada una de ellas. Las señales de error se propagan hacia atrás, partiendo de la capa de salida, hacia todas las neuronas de la capa oculta que contribuyen directamente a esa salida. Sin embargo las neuronas de la capa oculta solo reciben una fracción de la señal total del error, basándose aproximadamente en la contribución relativa que haya aportado cada neurona a la salida original. Este proceso se acaba repitiendo para todas las capas hasta que todas las neuronas hayan recibido una señal de error que describa su contribución relativa al error total. Posteriormente, durante la fase de testeo, cuando a las neuronas se les presente un patrón arbitrario que contenga ruido o que esté incompleto, las neuronas de la capa oculta responderán con una salida activa si la nueva entrada contiene un patrón que se asemeje a aquella característica que las neuronas individuales hayan aprendido a reconocer durante su entrenamiento. Si se observan los distintos parámetros, hay algunos que resultan interesantes, en concreto hay tres que influyen en gran medida en la complejidad y funcionamiento de la red: hiddenLayers, learningRate y momentum. El primero define número de capas ocultas y número de neuronas en cada capa que tendrá la red. El segundo es el encargado de controlar cuanto cambian los pesos de la red en función del error obtenido y el tercero aporta estabilidad al segundo cuando este es tan alto que provoca divergencias en el modelo. Para el número de neuronas en la capa oculta, viene por defecto la siguiente fórmula: 𝑁𝑒𝑢𝑟𝑜𝑛𝑎𝑠𝐶𝑎𝑝𝑎𝑂𝑐𝑢𝑙𝑡𝑎=(𝑁º 𝑎𝑡𝑟𝑖𝑏𝑢𝑡𝑜𝑠 + 𝑁º 𝑐𝑙𝑎𝑠𝑒𝑠) 2 (𝐸𝑐𝑢𝑎𝑐𝑖ó𝑛 1) Lo cual WEKA lo codifica con la letra ‘a’. También se podrán elegir el número de neuronas en la capa oculta mediante otras letras: ‘i’,’o’ y ‘t’, representando estas a: el número de atributos, el número de clases o el número de clases más el de atributos, respectivamente. Independientemente se puede escoger el número de neuronas que se desee, lo anterior son solo opciones predefinidas que da el programa. Es posible crear más de una capa oculta. Solo será necesario escribir n valores separados por comas y se crearán n capas ocultas del número de neuronas especificado por cada uno de los valores. En este estudio se utilizará una sola capa. En cuanto a factor de aprendizaje (learningRate) y a la “cantidad de movimiento” (momentum), WEKA da 0.3 y 0.2 como valores por defecto. En principio las simulaciones se harán con todos
34 los valores por defecto y luego se verá cómo cambian algunos de los resultados en función de estos parámetros. También existen otros parámetros importantes en la configuración del Perceptrón Multicapa. Para este algoritmo es posible seleccionar que una parte del conjunto de entrenamiento sirva para validar el modelo a medida que se va iterando y poder parar esta iteración si se detecta que se ha llegado a un mínimo de la señal de error o se están cometiendo demasiados errores consecutivos en cada iteración. Estos parámetros son ValidationSetSize, ValidationThreshold¸ y TrainingTime. El primero fija un porcentaje de la muestra de entrenamiento que podrá ser utilizada para validar el modelo. El segundo establece el número de veces seguidas que se permitirá que aumente el error obtenido del proceso de validación tras cada iteración antes de parar el entrenamiento. Por último, el tercero establece el número máximo de iteraciones que se realizarán en el entrenamiento. Si no se selecciona un porcentaje para la muestra de validación, se realizarán todas las iteraciones que marque este parámetro, pero de haberse fijado un porcentaje, el proceso iterativo podrá pararse antes. Una iteración completa consistirá en la introducción de todas las filas de datos del conjunto de entrenamiento una vez, habiendo modificado los pesos en función de las salidas obtenidas. El programa establece de inicio un porcentaje nulo para el conjunto de validación y un TrainingTime de 500 iteraciones. Estos valores se dejarán por defecto con lo que no habrá muestra de validación. En principio, se recuerda que el resultado con el clasificador ZeroR fue de 54% de aciertos, con lo que esto será lo mínimo que se deba aceptar. La primera simulación se hace utilizando la opción Use training set, que ya se vio que realizaba el test con la misma muestra que usaba para entrenar el modelo. Lo primero que se observa es que el tiempo de computación es bastante mayor en comparación con el J48. El porcentaje de aciertos ha sido de 90.5%. Comparando con el J48, se reduce el porcentaje ideal de aciertos de 96 a 90.5%. Esto ha sido para un número de neuronas de la capa oculta igual al que venía por defecto (Ecuación 1.). Teniendo en cuenta que se tienen 33 atributos y dos clases, se habrán cogido 17 o 18 neuronas, según hacia donde haya redondeado el programa. Ahora se prueba a aumentar el número de neuronas al máximo valor predefinido por el programa, que será el de la suma de atributos y clases (35). Se obtiene un 97.6% de aciertos pero un tiempo de computación de 48 segundos. Esto resulta casi el doble de utilizar el anterior valor de neuronas (25 segundos). Si se coge el mínimo predefinido de neuronas, que corresponde con el número de clases (2), se obtiene un 75% con casi 4 segundos de tiempo de computación. Resulta muy rápido pero para ser una prueba realizada sobre la misma muestra de entrenamiento no resulta mínimamente aceptable. Se vuelve a poner el mismo valor de neuronas que venía por defecto, se selecciona la validación cruzada con 10 divisiones y se pulsa Start. Se obtiene 76.5% de aciertos en un tiempo de computación de 24 segundos por modelo, teniendo en cuenta que ha calculado 10 modelos, este tiempo se dispara a 4 minutos. Subiendo el número de neuronas a 35, el tiempo de computación sube a 46 segundos por modelo, lo que hacen cerca de 8 minutos, subiendo a casi un 78.2% de aciertos. Si en la configuración se suben ligeramente ahora los parámetros de learningRate y momentum, se vuelve a simular y se obtiene un 78.7% de aciertos aunque aumentando el tiempo de computación a 48 segundos por modelo creado. Por último, antes de terminar con la validación cruzada se hace una simulación con la configuración de parámetros inicial pero con 5 divisiones, lo que reducirá el tiempo a la mitad. Se obtiene un 76.4%
35 disminuyendo ligeramente el porcentaje que se obtuvo con 10 divisiones. No se hará simulación para 20 divisiones porque lo único que se puede esperar es que suba ligeramente el porcentaje de aciertos a un costo computacional muy elevado. Por el momento, se empieza a ver que con la red neuronal pueden conseguirse, ligeramente, mejores resultados que con el árbol de decisión pero con un tiempo de computación bastante más elevado, ya que el J48 da resultados casi instantáneos. Esto sobre todo resulta tedioso para realizar pruebas cambiando distintos parámetros y haciendo más compleja la red o aumentando el número de atributos. Aunque si se tienen directrices claras de cómo llegar a un modelo bien definido, puede merecer la pena dedicar algunos minutos más de simulación para conseguir un mejor resultado. Ahora se pasa a realizar una sola división entre muestra de entrenamiento y de testeo. Se comienza con el 66% que aparece por defecto y con la configuración habitual de parámetros. El porcentaje de aciertos resulta de casi 77%, lo cual es de los mejores porcentajes conseguidos hasta ahora en un tiempo de 24 segundos. Aunque este porcentaje se ve drásticamente reducido a 52% si se impone orden en la muestra. Si se aumenta la división al 99% de la muestra como se hizo anteriormente, los aciertos suben al 84% en el caso de muestra desordenada, y bajan a 44% en el caso de muestra ordenada. Subiendo el número de neuronas ocultas a 35, el resultado con la muestra ordenada sube a 80%, lo cual ya empieza a ser bastante interesante. Una vez visto que el algoritmo funciona mejor aumentando el número de neuronas ocultas, se van a hacer pruebas modificando el learningRate y el momentum. Si se aumenta el primero de 0.3 a 0.5, se obtiene un porcentaje de aciertos del 88%, con un tiempo de 46 segundos. Viendo que al aumentar este parámetro, mejora la predicción, se sube a 0.6 y se vuelve a simular, bajando el acierto hasta el 72%. Ahora es cuando se entra a modificar el momentum, subiéndolo de 0.2 a 0.3, manteniendo el learningRate en 0.6. Se obtiene 92% de aciertos, lo cual supone que se han acertado 23 de 25 horas. Al haber utilizado además, una muestra de datos ordenada, resulta un caso bastante real de lo que se podría llegar a hacer: tratar de predecir las 24 horas siguientes en función de los datos de los últimos 100 días. Figura 2.18 - Resultado de 92% de acierto con MultilayerPerceptron
36 Se siguen probando otras combinaciones de parámetros pero esta última es la que ofrece mejores resultados. Si se selecciona previamente en More options, la opción de Output predictions y se escoge la opción de PlainText, aparecerá la predicción realizada junto con los valores reales y el error (figura 2.19). Figura 2.19 - Predicción en la salida Si se hace click derecho en la simulación que ha generado el resultado más favorable (en Result list), se despliegan una serie de opciones. Una de ellas es save model, que permitirá guardar el modelo generado para poderlo aplicar a futuros datos. Este modelo se ha generado con la posibilidad de testearlo posteriormente con los últimos datos sobre el sentido del desvío, pero en una situación real, se hubieran tenido los valores de los atributos para las últimas 25 horas pero no el sentido del desvío. Por lo tanto, el primer paso del procedimiento es realizar una predicción usando la opción Use training set pero sin contar con los valores de las últimas 25 horas. Una vez hecho esto, se guarda el modelo generado y se aplica sobre el conjunto de 25 datos para cada atributo que ya se conoce para el día siguiente. Para hacer esto mediante WEKA, lo más rápido e intuitivo es generar para los datos de las 25 horas del día siguiente, un fichero .arff igual que los anteriores, pero al no saber cuál será el sentido del desvío, se coloca un 1 por defecto a todas las horas. Este valor no será importante, ya que aplicando el modelo al conjunto de datos, el programa hará su predicción independientemente del resultado que lea como correcto. Para aplicar el modelo guardado a un conjunto de datos, se deberá cargar primero el conjunto de datos en la opción Supplied test set. Luego se hace click derecho en la ventana de Result list (aunque la ventana esté completamente en blanco, se abrirá una lista desplegable) y se selecciona Load model. Con esto, aparecerá un nuevo resultado en la lista que hace referencia al modelo cargado. Se hace click derecho sobre él y se selecciona Re-evaluate model on current test set. Con esto se estará aplicando el modelo a este último conjunto de datos, obteniéndose en este caso un 68% de
37 aciertos. Pero no es este resultado lo que interesa porque ya se sabe que es falso. Si previamente se ha seleccionado la aparición de la predicción con los resultados, se habrá generado en la ventana, un vector con la predicción del sentido del desvío para cada una de las horas del día siguiente. Este vector de 25 valores es el que realmente interesa, ya que, los 25 atributos se clasificaron con clase 1 por defecto simplemente para que pudiesen entrar al programa. Una vez obtenido este resultado, se podrá utilizar para tomar las decisiones que se consideren oportunas a la hora de ofertar. Figura 2.20 - Predicción de 25 horas Hasta ahora, se ha visto de manera general la funcionalidad de la herramienta de clasificación para los dos algoritmos escogidos. Se ha visto que con árboles de decisión se generaban modelos de forma muy rápida pero daban peores resultados que con redes neuronales. Aun así, los resultados no llegan a ser malos porque se supera en buena medida al clasificador ZeroR. Con redes neuronales se alcanzan predicciones bastante más precisas pero tienen el inconveniente del tiempo de computación. Aunque esto solo será a la hora de generar modelos. Una vez se tiene un modelo que se considere fiable, el testeo se hace de manera instantánea. También hay que tener en cuenta la cantidad de datos que se manejan: 33 atributos con 2520 valores cada uno. Desde ese punto de vista, se puede entender que uno de los métodos tarde algo más en dar un buen resultado y otro tarde muy poco en dar un resultado peor pero que ya aporta más información de la que se tenía previamente. Ahora, para ambos algoritmos, se tratará de acotar el problema realizando una selección de atributos. Con ello se puede esperar una mejora de resultados y un menor tiempo de computación.
38 2.4.3. SELECCIÓN DE ATRIBUTOS Para acceder a la selección de atributos, habrá que ir a la pestaña de Select attributes. Ahora habrá que tomar dos decisiones para poder realizar la selección. La primera, será elegir el método de evaluación de los atributos y la segunda, el método de búsqueda. Hay dos métodos de búsqueda principales, los cuales son: Ranker y GreedyStepwise. Al igual que con los distintos clasificadores era posible ver el funcionamiento de cada uno y la explicación de cada uno de sus parámetros, con los métodos de búsqueda y de evaluación también será posible obtener esta información. El método Ranker, básicamente ordena los distintos atributos utilizando el criterio del método de evaluación que se haya elegido para decidir si cada uno por separado, son mejores o peores para realizar una predicción. Con GreedyStepwise se utiliza el método de evaluación para encontrar un grupo de atributos que en conjunto den un buen resultado. Por otro lado, para cada uno de los métodos de evaluación, habrá uno de estos dos métodos de búsqueda asociado. No habrá ningún método que pueda funcionar de igual manera con los dos. Con esto, existen tres posibilidades principales a la hora de clasificar atributos: Evaluación independiente de atributos. Utilizando Ranker y por ejemplo un método de evaluación afín como puede ser InfoGainAttributeEval. Evaluación de conjuntos de atributos. Utilizando GreedyStepwise y un método de evaluación afín, para lo cual se tienen dos opciones: o Utilizar un método que directamente filtre los atributos y proporcione un conjunto de ellos. o Utilizar un método Wrapper, el cual requiere que se seleccione un clasificador base para realizar la selección de atributos. Este clasificador puede ser la red neuronal o el árbol de decisión utilizado previamente. Figura 2.21 - Ventana de selección de atributos
39 Se empezará escogiendo InfoGainAttributeEval, el cual utiliza Ranker como método de búsqueda. Este método de evaluación, evalúa cada atributo, midiendo su ganancia respecto de la clase (el sentido del desvío del sistema en este caso). Antes de pulsar Start, habrá que escoger un modo de selección de atributos, entre Use full training set y Cross-validation. Ambas son opciones que ya se conocen y básicamente, con uno se obtiene una sola evaluación para cada atributo y con la otra, una media de las evaluaciones que se hayan hecho según número de divisiones de la muestra. Se hará una simulación con cada una de las opciones y en concreto para la segunda, se escogerán 4 divisiones. Se reduce el número de divisiones pretendiendo disminuir el tiempo de cálculo, ya que solo se quiere hacer una demostración de los resultados de salida. Figura 2.22 - Selección con método Ranker En la imagen anterior (figura 2.22), se observan dos columnas distintas. La primera corresponde al uso de Use full training set, con la cual, al utilizar una única muestra, clasifica cada atributo con un único número, medido con InfoGainAttributeEval. En la segunda columna se dan dos informaciones: el average merit y el average Rank, ambos con sus desviaciones típicas. Con average merit, se refiere a la media de las correlaciones obtenidas en cada uno de los cuatro
40 ciclos de validación cruzada, lo cual clasifica cada atributo como mejor o peor dentro del ranking. La columna de average Rank, se refiere al orden medio en el que quedó cada atributo en cada uno de los cuatro ciclos. Por ejemplo, para el primero de los atributos (month), el orden medio es de 1.3 +- 0.43, lo que indica que probablemente debió quedar a veces primero y a veces segundo en la clasificación. Resulta también curioso como el resultado de la nuclear queda primero en la clasificación de muestra única, pero cae al séptimo puesto cuando se divide en cuatro, con un orden medio de 7.3 +-7.6. Esto da la pista de que con toda probabilidad quedó primera en algunas de las divisiones, pero que una mala clasificación lo ha bajado 6 posiciones. Ahora, si se quisiese realizar una selección de atributos para una posterior clasificación, se debería marcar una frontera entre los atributos que se tendrán en cuenta y los que no. Para este caso, parece que 10 es un buen número, ya que, los diez primeros atributos de una columna y de la otra son los mismos, solo que cambiados de orden. Estos atributos serán: 1. NuclearPVP 2. Month 3. TemperaturaGibraltar 4. TemperaturaMadrid 5. Hour 6. TemperaturaVigo 7. InterconexionesPVP 8. TermosolarPVP 9. FotovoltaicaPVP 10. DemandaPVP A continuación, se utilizará un método que filtre atributos y proporcione un conjunto que funcione bien como tal. Se escogerá una opción que no requiera de clasificador base. Para ello, puede seleccionarse el método de evaluación CfsSubsetEval y el método de búsqueda GreedyStepwise. Al utilizar Use full training set y Cross-validation con cuatro divisiones, los resultados son los siguientes (figura 2.23):
41 Figura 2.23 - Resultados con CfsSubsetEval En la columna de la izquierda, se representan los resultados de la validación cruzada, marcados por un porcentaje. Este porcentaje será el número de veces que el atributo fue seleccionado de entre todas las divisiones. En la columna de la derecha se tienen los resultados de haber utilizado la muestra completa sin divisiones. En la leyenda se ha marcado con colores en que porcentaje coinciden los atributos seleccionados en una columna y otra. Hay atributos como DemandaPVP que aparece seleccionado a la derecha y también con el 100% a la izquierda. Otros como TermosolarPVP, aparece en la selección donde se usó toda la muestra, pero solo se escogió en una de las cuatro divisiones al utilizar la validación cruzada. También resulta curioso que el atributo month haya sido resultado elegido en las cuatro divisiones pero no al haber utilizado la muestra al completo. Si se utiliza la columna de la izquierda como referencia y se compara con la obtenida con el método ranker, se ve que la mayoría de atributos que se seleccionaron por su potencial de manera individual, aparecen en la nueva selección. Solo TermosolarPVP y FotovoltaicaPVP parece que no acaban de funcionar del todo bien en conjunto con otros. Al contrario sucede con VientoGibraltar que no aparece seleccionado por sus propiedades individuales, pero sí parece que trabaja bien en conjunto, siendo seleccionado en las cuatro divisones. Por último, se probará el método Wrapper, que proporciona un conjunto de atributos que funcionan bien en conjunto pero para ello utiliza un clasificador base. Se probará tanto para árboles de decisión como para redes neuronales. Para ello se selecciona como método de
48 de 25 horas. Se prueba a cambiar parámetros, tanto para hacer la red más compleja como para hacerla más simple y en ambos casos el porcentaje de aciertos cae bastante bajo. Por lo tanto parece que los parámetros por defecto son adecuados. Finalmente, se puede decir que no es mal resultado obtener un 80%, pero que utilizando el árbol de decisión se conseguía un mejor resultado y con un tiempo de computación casi instantáneo. Es lógico, ya que los atributos fueron seleccionados mediante un árbol de decisión y no mediante una red neuronal. Ahora se invertirá el orden anterior y se probará la última selección de atributos, primero con la clasificación que hace la red neuronal y después con el árbol de decisión. Esto se hará porque esta selección de atributos se realizó mediante un wrapper con red neuronal y parece el orden lógico de seguir. Lo primero es actualizar la lista de atributos seleccionados para realizar la clasificación. Hasta ahora, la mayor selección de atributos se hizo con el J48 que seleccionó 13 atributos. La actual selección tiene 15 atributos y es la mayor de las cuatro que se han obtenido. Después se vuelve a la ventana de clasificación y se selecciona la red neuronal para empezar a clasificar. En principio los resultados para el testeo con la muestra completa y la validación cruzada no son especialmente buenas. Se obtuvieron mejores resultados con la muestra de atributos completa. Al realizar la simulación para la división de 99% con orden, se obtiene un 84% de aciertos, o 21 horas de 25 acertadas. No es un mal resultado, pero se podría esperar algo más de la red neuronal, teniendo en cuenta que los atributos fueron seleccionados mediante el mismo método y que requiere de más tiempo de computación que el J48. Además, se prueba a modificar los parámetros de la red neuronal y el resultado lo único que hace es empeorar. Por último, se utilizará esta última selección de atributos para clasificar los datos con el árbol de decisión. En principio, se realizan el testeo con el modelo generado sobre la misma muestra y también la simulación con 10 divisiones. Los resultados son ligeramente peores que los resultados de haber utilizado el J48, pero no se alejan notablemente de ellos. En cambio, cuando se divide la muestra al 99% con orden, el porcentaje de aciertos cae fuertemente hasta el 60%. Se intentan modificar parámetros de entrada al algoritmo pero no se consigue mejorar el resultado. Con esto, se dan por probados de manera general, los métodos de selección de atributos. Entonces, según lo experimentado, es posible decir que a los árboles de decisión les viene bien acotar los atributos que se utilicen, aunque conviene utilizar el propio algoritmo con el método wrapper para obtener esta selección. Es un algoritmo bastante rápido generando modelos y seleccionando atributos, con lo que merece la pena realizar suficientes pruebas de parámetros y atributos hasta sacar buenos resultados. Esto es posible conseguirlo, ya que bajo determinadas condiciones, se han obtenido resultados muy cercanos al 90% de aciertos. Por otro lado, las redes neuronales, con un mayor tiempo de computación, parece que son capaces de generar modelos más complejos y más efectivos cuando se tratan grandes cantidades de datos. Se podía esperar un mejor comportamiento del algoritmo utilizando su propia clasificación de atributos pero aun así no deja de ser un clasificador malo bajo estas condiciones. De cualquier modo, no se llega a justificar el tiempo que se tarda en obtener una selección de atributos con la red neuronal y el porcentaje de aciertos que se obtiene finalmente. También hay que tener en cuenta que quizás, la selección de los datos iniciales del estudio no
49 es la más correcta, ya que, se recuerda que la muestra, contenía los datos para todos los fines de semana del año. Esto puede ser que de tan buenos resultados como malos. Puede parecer lógico comparar horas que cumplan esta condición de fin de semana de 2017, pero también se puede pensar que un fin de semana de Enero no tenga nada que ver con uno de Julio. No se puede saber en principio y es necesario realizar distintas pruebas. Aun así, se ha visto que es posible obtener resultados muy positivos con ambos métodos, teniendo las consideraciones pertinentes. 2.4.4. VISUALIZACIÓN DE ATRIBUTOS Otra manera de realizar una preselección de atributos de manera sencilla es la pre-visualización gráfica. En cualquier momento, una vez cargados los datos de los atributos en el programa, es posible visualizar gráficamente cómo funcionan los atributos por parejas. Si se abre la ventana de Visualize (figura 2.25), se puede ver una cuadrícula donde en cada una de las celdas se encuentra una gráfica con la distribución de datos de cada atributo, indicando con colores (rojo y azul) si corresponden a desvíos a bajar o a subir. Figura 2.25 - Ventana de Visualize Por ejemplo, si se observan las selecciones de atributos que se han realizado, se puede ver que tanto el atributo DemandaPVP como el de NuclearPVP, aparecen en las cuatro selecciones realizadas. Por ello, se entiende que son buenos atributos y puede ser interesante comparar uno con otro en la ventana de visualización (figura 2.26).
50 Figura 2.26 - Visualización Demanda-Nuclear En el eje de abscisas se tienen los valores de la demanda y en el eje de ordenadas, los del resultado de la nuclear. Los distintos puntos marcados son los distintos valores que se han dado en cada hora y el color azul o rojo, indica el sentido del desvío para ese momento. Realmente, es una clasificación tan compleja y se requiere de la información de tantas variables, que es complicado ver una clara diferencia entre si un atributo es bueno o no mediante este método. En la siguiente imagen (figura 2.27), se observa un ejemplo de atributos que realizan la clasificación de manera ideal. Para el caso hipotético representado se clasifican según tres clases en lugar de dos, como en el actual estudio. De ahí que aparezcan tres colores en lugar de dos. De por sí, los dos atributos son capaces de separar perfectamente en las tres clases, como se representa con las líneas negras. Antes de entrar en cualquier estudio de detalle sobre cualquier muestra de atributos, es aconsejable dirigirse a esta ventana para ver si se puede obtener alguna pista adicional sobre cómo enfocar el estudio.
51 Figura 2.27 - Atributos ideales para clasificar 2.4.5. EL EXPERIMENTER El Experimenter es la última de las herramientas que se explicarán y una de las más útiles del programa. No aporta nada nuevo en cuanto a métodos de predicción, ya que los algoritmos que aplica y los parámetros de entrada serán los mismos que ya se han explicado. Lo que la hace interesante, es la posibilidad de programar experimentos sobre distintos grupos de datos y utilizando distintos métodos de predicción, obteniendo una comparación final de los resultados obtenidos. Es decir, el Experimenter nos dirá si las diferencias aparentes en porcentajes de aciertos de distintos algoritmos son estadísticamente significativas o son debidas al azar. Para abrir esta herramienta, será necesario volver a la ventana de inicio previa al Explorer. Una vez en la ventana inicial (figura 2.28), se identifican tres pestañas en la parte superior: Setup, Run y Analyse. En la primera de ellas se establecerán todas las condiciones, datos de entrada y algoritmos que se aplicarán durante el experimento. En la segunda, se dará inicio al experimento y se verá la evolución del mismo. Esto es importante, ya que se si van a realizar múltiples simulaciones sobre distintos grupos de datos, el tiempo de computación puede ser significativo y desde esta ventana, se podrá ver qué conjunto de datos y qué algoritmos se están simulando en cada momento. En la última, se encuentra el visor de los resultados y también será posible elegir qué información se presenta por pantalla y el formato de los datos para su exportación.
52 Figura 2.28 - Ventana del Experimenter Lo primero que se debe hacer, es establecer las condiciones del experimento en Setup. La primera opción que aparece en la pantalla, es la de escoger entre realizar una configuración simple o avanzada del experimento (Experiment Configuration Mode). En principio se escogerá la configuración simple, la cual aparece por defecto y resulta suficiente para el estudio que se va a llevar a cabo. Seguidamente habrá que escoger entre realizar un nuevo experimento o abrir uno que se hubiese guardado previamente. Como es la primera vez que se utiliza esta herramienta, se seleccionará New. Hecho esto, se habrán habilitado todas las pestañas y ventanas de selección que antes aparecían en gris. Ahora habrá que crear el fichero al que se volcarán todos los resultados del experimento. Para ello, se hará click en Browse, se selecciona el lugar donde se quiere guardar el fichero y se le pone un nombre cualquiera. Con esto, aparecerá la ruta del fichero creado en la ventana de Filename. Este fichero de salida se le puede dar tres formatos distintos: ARFF, CSV o JDBC. En principio ARFF será un formato válido, ya que hasta ahora es el que se ha manejado para todos los datos de entrada y salida. Es el formato que aparece por defecto, pero aun así, una vez creado el fichero de salida, se debe volver a hacer click en ARFF file para que se le aplique al fichero. Cuando se hace esto, automáticamente aparece .arff en la ruta del fichero de salida. De no hacerlo, puede aparecer un error al querer comenzar la simulación más adelante.
53 Figura 2.29 - Creación de fichero de salida del experimento Ahora se debe elegir el tipo de experimento en la ventana de Experiment Type. Será posible escoger entre validación cruzada (con un número de divisiones a elegir) y división de la muestra en entrenamiento y testeo con un porcentaje fijado. Para esta última opción se puede elegir tanto manteniendo el orden como sin él. También se puede escoger entre realizar una clasificación o una regresión. Para el experimento actual se escogerá la división del 99% que ya se ha realizado previamente y manteniendo el orden de los datos. Por supuesto también se escogerá clasificación. En la ventana de Iteration Control se tendrá habilitada para este caso dos opciones: Data sets first y Algorithms first. Si se selecciona la primera, se aplicarán todos los algoritmos a un mismo conjunto de datos antes de pasar al siguiente. Si se escoge la segunda, sucede lo contrario: para todos los conjuntos de datos se aplica un algoritmo y así sucesivamente hasta aplicarlos todos. En este caso se escogerá Data sets first. Por último, se deben escoger los grupos de datos que se quieren clasificar (ventana de Datasets) y los algoritmos que se utilizarán para ello (ventana de Algorithms). Hasta ahora, solo se había simulado con un solo grupo de datos, pero como ahora se quiere ver la funcionalidad completa de esta herramienta, se añadirá un nuevo grupo. Antes se utilizaron los datos para los días festivos de 2017 y ahora se añadirá un segundo conjunto que pertenezca a los datos de los días festivos de 2016. Para los algoritmos, se seleccionarán distintos casos dentro de los ya simulados. El primero será el clasificador ZeroR, lo cual servirá para marcar la referencia que han de superar el resto. Para árboles de decisión se realizarán tres simulaciones utilizando el J48. Las dos primeras fijando el confidenceFactor en 0.25 y 0.01. En la tercera se hará una preselección de atributos con método Wrapper que utilice el J48 como clasificador base, ya que fue la que mejores resultados proporcionó anteriormente. Para redes neuronales se puede realizar una primera clasificación utilizando el MultilayerPerceptron sin modificar sus parámetros, otra modificando ligeramente sus parámetros y una última utilizando una preselección de atributos con GreedyStepwise. Se utiliza este método y no otro debido a que se vio que no merecía la pena el tiempo de computación para realizar una clasificación más compleja.
54 Figura 2.30 - Elección de conjuntos de datos y algoritmos para el experimento Esta selección de algoritmos con distintos parámetros y configuraciones es posible guardarla si se quiere utilizar en futuros experimentos con otros conjuntos de datos. También es posible guardar la configuración completa que se ha hecho de todo el experimento. Una vez establecidas todas las condiciones, se selecciona la pestaña Run y se pulsa Start. En la ventana de Log aparecen los distintos hitos que se van cumpliendo a lo largo de la simulación. En caso de no existir ningún error en la configuración y en la entrada de datos, la secuencia de mensajes que aparecerán son los que se pueden ver en la siguiente imagen (figura 2.31). En la barra de Status se podrá ver a lo largo de la simulación, las distintas acciones que se van realizando, indicando conjunto de datos y algoritmo que se está utilizando en ese momento. Figura 2.31 - Ventana del estado del experimento
55 Una vez el experimento ha acabado y aparece el mensaje de “cero errores”, hay que acceder a la pestaña de Analyse. En esta ventana es donde se realizará la visualización de los resultados del experimento. Lo primero será hacerle saber al programa, los resultados de qué experimento debe cargar. Si el experimento ha sido recién concluido, habrá que hacer click en Experiment. Como todo experimento vuelca sus resultados en un fichero al cual se le ha puesto nombre al principio, será posible también acceder a los resultados de cualquier experimento pasado desde la pestaña File. Para el caso actual, se pulsa la pestaña Experiment y automáticamente aparecen en la ventana de Test output los distintos experimentos que se han llevado a cabo. Para este caso, aparecen los siete casos distintos de algoritmos que se han aplicado. Si se pulsa Swap en la columna de la izquierda, aparecerán en su lugar los conjuntos de datos utilizados para la simulación, con lo que si no se conoce bien que contiene un fichero de experimento, de este modo es posible ver lo que contiene. Figura 2.32 - Ventana de visualización de resultados del experimento Pulsando en Perform test se devolverán por pantalla los resultados del experimento. Previamente se pueden modificar las opciones de visualización en la columna de la izquierda (Configure test). Si esto no se ha realizado para cuando se pulsa Perform test no hay problema, ya que se tratan únicamente de opciones de visualización y se puede volver a modificar la configuración y volver a pulsarlo para que aparezcan los resultados de la manera requerida. Lo primero que se hará antes de obtener la visualización, será abrir la pestaña de Output Format. Se elegirá la opción de Plain Text, lo cual es lo más recomendable para una primera visualización y se seleccionará la opción Show Average (muestra una media de efectividad para cada algoritmo utilizado a partir de los resultados individuales que cada algoritmo ha obtenido con cada grupo de datos). En Advanced setup existen más parámetros que se pueden modificar para presentar la información de un modo u otro, aunque esto resulta ya menos importante y dependerá de la elección del usuario. Antes de seguir comentando el resto de opciones de la
56 columna de configuración, resulta conveniente ver los resultados para ver mejor el sentido que tiene cambiar parámetros de visualización (figura 2.33). Figura 2.33 - Visualización de resultados del experimento Una vez se obtienen los resultados en la ventana de visualización, se ve como aparecen distribuidos en una tabla con algoritmos en uno de los ejes y conjuntos de datos en el otro. En el caso mostrado en la imagen, se evalúan los distintos clasificadores según los aciertos que obtienen con unos conjuntos de datos y otros. Si se volviese a pulsar Swap, serían los conjuntos de datos los que serían evaluados para cada uno de los algoritmos. Es posible ver como todos los algoritmos muestran sus resultados y aparte son comparados con un algoritmo de base. Por defecto aparece ZeroR al haber sido elegido el primero. Esto se ha hecho a propósito ya que en teoría, este es el mínimo a acertar. Aun así, es posible cambiar el algoritmo de base en la pestaña Test base. La comparación se realiza con una nomenclatura concreta. Cada uno de los resultados que no correspondan al clasificador ZeroR, tendrán un asterisco (*), una “v” o no tendrán nada. En el caso del asterisco, significará que el clasificador obtiene un resultado significativamente peor que el clasificador de base. En el caso de la “v” significará que el resultado mejora en gran medida el resultado proporcionado por el clasificador base. En el caso de que no cuente con ningún símbolo significará que el resultado no presenta grandes diferencias con el del clasificador base. Así por ejemplo, en la anterior imagen (figura 2.33), parece que ninguno de los métodos mejora al clasificador ZeroR para los datos de 2016 de ese día concreto. Resulta curioso el dato, ya que con ZeroR se obtiene un 96% de aciertos en ese caso. Eso quiere decir que para ese día, el 96% de los desvíos fueron en el mismo sentido y que ZeroR tuvo la suerte de acertarlo. Eso no quiere decir que sea un buen clasificador, ya que del mismo modo, si se hubiera dado un día donde todos los desvíos fuesen al contrario, ZeroR hubiera obtenido un resultado muy cercano a 0%. Para los resultados de 2017 se ve como todos los clasificadores mejoran a ZeroR con mejor o peor resultado según qué casos. Es posible también obtener los datos de salida en otros formatos que no sea el porcentaje de aciertos. Se pueden ver también
57 como número de aciertos, número de fallos, tiempo que ha tardado cada algoritmo en obtener su modelo y una larga lista de opciones que permitirá ver los resultados desde distintos puntos de vista. Figura 2.34 - Visualización de los tiempos de cada algoritmo en el experimento Para la imagen anterior (figura 2.34), se pueden ver los distintos algoritmos clasificados según el tiempo de computación que ha utilizado cada uno para generar su modelo. Se ve como los clasificadores asociados a árboles de decisión son bastante rápidos en contraposición a la lentitud de las redes neuronales, que solo ven reducido los tiempos en el caso 7, donde se realizó una selección previa de atributos. En definitiva, son muchas las opciones a elegir y es numerosa la cantidad de información que se puede obtener con esta herramienta. Corresponderá a la propia experiencia de cada usuario el explorar las distintas opciones y posibilidades que aquí se ofrecen. Un último punto importante a añadir, es que todos estos resultados son exportables en distintos formatos. Concretamente, al exportarlo en formato HTML, se podrán abrir en EXCEL en forma de columnas ordenadas. Esto resultará útil si se manejan varios clasificadores diferentes con numerosos conjuntos de datos distintos. Una vez se tengan la configuración de la visualización y del formato del modo requerido, se hará click en Save output y se extraerá el experimento para poder ser tratado desde otro programa si se requiere. Por último, se aclara que este apartado tiene únicamente la intención de demostrar y enseñar las capacidades y herramientas del programa. Los resultados mostrados se han obtenido utilizando datos reales y por lo tanto arrojan resultados reales, pero no deberán ser tenidos en cuenta a nivel de conclusiones generales, ya que son fruto de haber escogido unas condiciones muy concretas y una ventana temporal de la muestra específica. De haber cambiado las condiciones o de haber simulado con muestras distintas se podría haber llegado a conclusiones distintas.
64 Figura 3.6 - Resultados del primer estudio para los desvíos fotovoltaicos Aquí, al igual que con la demanda, vuelven a verse porcentajes de aciertos positivos, aunque del mismo modo, no parece posible el generar un modelo de un año para otro. Esto último va en contraposición con algunas conclusiones que se obtuvieron en el anterior proyecto. Precisamente, los desvíos fotovoltaicos se sucedían de manera tan similar año tras año (figura 3.7), que de la simple observación de las curvas de un año era posible desarrollar una estrategia de oferta para el año siguiente que reducía las pérdidas por desvíos en cerca de un 50% en la mayoría de casos. Probablemente, este caso de predicción sea tan sencillo que el incluir tal cantidad de atributos genere más problemas que soluciones, siendo además el desvío que menos interés tiene en ser predicho ya que, en porcentaje dentro de los desvíos del sistema, es el que menor presencia tiene si se le compara con los desvíos eólicos o de la demanda. Figura 3.7 - Energía Media Horaria de los Desvíos a Subir de la Generación Fotovoltaica en MWh 2014,2015 y 2016
65 Una vez vistos los resultados de las clasificaciones anteriores, se decide comprobar si el uso de la herramienta de selección de atributos mejora o no los porcentajes de aciertos. La selección de atributos se hará para el estudio de los desvíos de la demanda, dado que los resultados de esta predicción han sido los más positivos. Para acotar el estudio, se decide realizar la selección solo para las 8 muestras de la pareja de años de 2016 y 2017. Para realizar la selección se utilizará el método de evaluación ClassifierSubsetEval con GreedyStepwise como método de búsqueda. En este caso, al ser un método wrapper¸ habrá que incluir un clasificador base. Se selecciona una red neuronal y se decide utilizar la validación cruzada con 10 divisiones. En la siguiente imagen (figura 3.8) se puede ver el resultado para las 8 muestras y los atributos ordenados de mayor a menor presencia en las selecciones realizadas. Figura 3.8 – Selección mediante validación cruzada y método wrapper Al ser una validación cruzada con diez divisiones, cada atributo presentará un porcentaje en cada columna. Este porcentaje corresponde al número de veces que fue seleccionado dentro del grupo de atributos elegidos en cada una de las divisiones. Es decir, si un atributo aparece con un 60% significará que en 6 de las 10 divisiones formo parte del grupo seleccionado. Es posible ver que los atributos varían su eficacia según la estación o el día en el que se encuentren. Al realizar la media de todo el año, hay un grupo de 5 atributos que presentan valores iguales o superiores al 60%. En cambio en el caso concreto del atributo PresionVigo, no ha sido seleccionado en ninguna de las columnas ni en ninguna de las divisiones realizadas con lo que es un claro atributo a ser descartado. En la siguiente imagen (figura 3.9), puede verse el efecto que crea el realizar la clasificación reduciendo el número de atributos escalonadamente según su porcentaje de aparición. Se ha utilizado únicamente la muestra para días laborales de invierno.
66 Figura 3.9 - Clasificación mediante selección con validación cruzada, wrapper y red neuronal Es posible ver como los porcentajes van variando en cierta medida según se van eliminando los atributos menos importantes, aunque no es posible ver un sentido definido para estas fluctuaciones. En algunos casos parece que eliminar atributos mejora la predicción y en otras que la empeora. En cualquier caso, no se detecta una mejoría o empeoramiento significativo hasta que se empiezan a eliminar los atributos con porcentajes menores a 60-70%, donde ya sí que se ve un claro empeoramiento de los resultados. No obstante, parece que los mejores resultados aparecen con la muestra completa o simplemente eliminado los pocos atributos que nunca fueron seleccionados. Es aquí donde se debe poner en balance si conviene reducir en cierta medida el porcentaje de aciertos pero conseguir menores tiempos de computación. En cualquier caso, parece que el añadir atributos lo mínimo que hace es mejorar y no empeorar el resultado de la clasificación. Teniendo en cuenta el coste computacional que requiere realizar la clasificación anterior, donde se ha utilizado validación cruzada con diez divisiones y redes neuronales, no parece que merezca la pena dedicar tanto esfuerzo para obtener los resultados que se han obtenido. Se probará a realizar la misma clasificación pero utilizando la muestra completa sin divisiones, con lo cual se espera reducir los tiempos de computación. En la siguiente imagen (figura 3.10), se pueden ver los resultados para las 8 divisiones que se han hecho de la pareja de años 2016-2017, donde se han marcado con un 0 los atributos que no han sido seleccionados y con un 1 los que sí lo han sido. Finalmente se obtiene la suma de las veces que cada atributo ha sido seleccionado en todo el año y se ordenan de mayor a menor aparición.
67 Figura 3.10 - Selección simple mediante método wrapper y redes neuronales De nuevo vuelve a quedar el atributo PresionVigo en el último lugar y atributos como TemperaturaGibraltar o TemperaturaMadrid, siguen estando bien posicionados arriba. A continuación en la siguiente imagen (figura 3.11), se ve como queda la clasificación utilizando la anterior selección de atributos para las 8 muestras de la pareja de años seleccionada. Figura 3.11 - Clasificación mediante selección simple, wrapper y redes neuronales Se observa que por lo general, la eliminación de atributos empeora los resultados pero no lo hace de manera excesiva. Aun así, si antes se eliminaban atributos de manera gradual porque
68 se disponía de unos porcentajes, ahora se ha hecho cogiendo solo los atributos seleccionados en cada una de las muestras, es decir, una selección de atributos todo-nada. También el tiempo de computación para obtener la selección ha sido significativamente más corto. A continuación se exponen los resultados de selección y clasificación utilizando el mismo último método pero con árboles de decisión como clasificador base (figuras 3.12 y 3.13). Figura 3.12 - Selección simple mediante método wrapper y árboles de decisión Figura 3.13 - Clasificación mediante selección simple, wrapper y árbol de decisión
69 En este caso, sí que han empeorado de manera significativa los resultados de la clasificación. Por lo que se ve, dada la cantidad de datos de las muestras, la complejidad del estudio y con una reducción de los atributos, la red neuronal es capaz de obtener mejores resultados que los árboles de decisión. Lo que puede llegar a resultar curioso, es la relación de atributos que cada clasificador considera importantes. En la siguiente tabla (tabla 3.2), se comparan los rankings obtenidos en cada una de las tres clasificaciones con un ranking general obtenido de aplicar una media ponderada a los resultados obtenidos por cada atributo en cada una de las selecciones. Tabla73.2 - Ranking de selecciones realizadas Poniendo atención en las distintas selecciones y en el ranking final, se observan casos curiosos. Por un lado, en las tres selecciones realizadas, se considera que el resultado del mercado diario de la nuclear (NuclearPVP) es un buen atributo para predecir desvíos. De hecho, es el atributo que lidera el ranking al realizar la media ponderada. Por otro lado, el resultado de la eólica (EolicaPVP) resulta importante bajo el punto de vista de los árboles de decisión pero no por el contrario para las redes neuronales, con lo que este atributo cae a la mitad de la tabla en la
70 clasificación general. Algo parecido pero al revés ocurre para TemperaturaMadrid, el cual está muy bien considerado por las redes neuronales pero resulta ser uno de los últimos para los árboles de decisión. Para otros atributos como PresionVigo, ninguno de los métodos presenta dudas en posicionarlo todas las ocasiones en el último lugar de la tabla. En definitiva, para este primer estudio se ha visto que, dada la complejidad de la predicción, el programa no realiza malas clasificaciones, siempre que se parta de un grupo de atributos bien relacionados con la clase y de una variada y gran cantidad de datos de entrenamiento. Esta idea se ve reflejada en el momento en que no es posible obtener un modelo de predicción con los datos de un año para aplicarlo al siguiente, pero sí es posible obtener una predicción aceptable con los mismos datos pero de forma desordenada y aplicando el mismo porcentaje 50% entrenamiento y 50% testeo. Y a medida que se aumenta este porcentaje o se realizan validaciones cruzadas, el número de aciertos se incrementa. Por ello, se entiende que los datos de entrenamiento para la realización de un modelo de predicción, deben encontrarse lo más próximo posible en el tiempo a los datos que se quieren predecir. Del estudio también se extrae la idea de que no solo se debe pensar con lógica a la hora de elegir los atributos para realizar la predicción, sino que hay que tener en cuenta que pueden existir variables que pasen completamente desapercibidas pero que realmente aporten información valiosa. Por ejemplo, esto se da con los resultados del mercado diario para la generación nuclear. Por algún motivo desconocido, ya sea directo o indirecto, esta variable es capaz de discriminar mejor que otras si los desvíos serán en un sentido u otro. Por ello, en un primer momento parece recomendable incluir cuantos más atributos mejor y luego ir filtrando si es necesario.
71 4. HIPÓTESIS Y RESULTADOS DEL ESTUDIO FINAL 4.1. VENTANA MÓVIL Dados los resultados del estudio anterior, se decide que lo más conveniente es utilizar datos de entrenamiento que se encuentren cercanos en el tiempo a los datos que se quieren clasificar para obtener una predicción. Por ello se plantea crear una ventana móvil de n días, en la cual se utilicen los n-1 primeros días para entrenar el modelo y el último para testear. Se utilizará esta ventana móvil para predecir el sentido de los desvíos del sistema para los 59 días comprendidos entre el 1 de Enero de 2018 y el 28 de Febrero de 2018. Se utilizarán los dos métodos estudiados hasta ahora (árboles de decisión y redes neuronales), con distintas configuraciones de sus parámetros y con distintas dimensiones para la ventana móvil. Figura 4.1 - Ventana móvil de entrenamiento y testeo Para la primera ventana móvil se creará una primera muestra de 100 días y si se pretende que el último día de esta ventana sea el 1 de Enero de 2018, el primer día de la ventana deberá ser el 24 de Septiembre de 2017. Se escoge la muestra de 100 días porque permite realizar de un modo sencillo la división entrenamiento-testeo que se quiere hacer, correspondiendo un 99% a entrenamiento y el 1% restante a testeo. Una vez se obtengan los resultados, se puede ampliar o reducir esta ventana para comprobar si los resultados mejoran o empeoran en función de su longitud. Por lo tanto, ya se tiene definida una longitud para la ventana y un periodo temporal por el que se va a deslizar. Lo próximo, será crear los ficheros de entrada al programa con las distintas versiones de la ventana móvil, es decir, las 59 muestras en las que se va sumando un día en la cabeza y se le va restando uno en la cola. Esto es sencillo, ya que si en un principio se creó una función de Matlab que creaba ficheros de entrada a WEKA con datos que cumpliesen una serie de características, ahora solo se debe modificar tal función para que, tras definir la ventana requerida, entre en un bucle y vaya creando las 59 muestras de 2400 horas cada una. Una vez que se tienen las 59 muestras, no será necesario ir al Explorer y simularlas una a una. Gracias a que se cuenta con la
72 herramienta del Experimenter, se pueden introducir como entrada las 59 muestras, elegir varios clasificadores distintos, marcar las condiciones de clasificación (muestra ordenada con 99% para entrenamiento y 1% para testeo) y comenzar a simular. Estas simulaciones pueden llevar bastante tiempo en realizarse, ya que son 59 muestras y según los métodos de clasificación escogidos, los tiempos de computación pueden ser largos. Pero esta herramienta presenta la comodidad de poder establecer parámetros para múltiples experimentos en el inicio y obtener al final, resultados que orienten en gran medida hacia donde debe ir el estudio, como conocer qué longitud es la óptima para la ventana o que método aporta mejores resultados. Lo siguiente será definir los métodos de clasificación que se utilizarán para testear las 59 muestras de la ventana. A continuación se enumeran los métodos elegidos para hacer una primera aproximación: 1. Clasificador ZeroR. 2. Clasificador J48 con 0.01 de confidenceFactor. 3. Clasificador J48 con 0.25 de confidenceFactor. 4. Clasificador J48 con 0.01 de confidenceFactor tras haber realizado una selección de atributos con Metaclasificador AttributeSelectedClasifier con método wrapper que use J48 como clasificador base. 5. Clasificador J48 con 0.25 de confidenceFactor tras haber realizado una selección de atributos con Metaclasificador AttributeSelectedClasifier con método wrapper que use J48 como clasificador base. 6. Clasificador MultilayerPerceptron con 0.3 en learningRate, 0.2 en momentum y “a” neuronas en una capa oculta. 7. Clasificador MultilayerPerceptron con 0.6 en learningRate, 0.2 en momentum y “t” neuronas en una capa oculta. 8. Clasificador MultilayerPerceptron con 0.4 en learningRate, 0.1 en momentum y “t” neuronas en una capa oculta. 9. Clasificador MultilayerPerceptron con 0.3 en learningRate, 0.1 en momentum y “a” neuronas en una capa oculta tras haber realizado una selección de atributos con Metaclasificador AttributeSelectedClasifier con método GreedyStepwise que use MultilayerPerceptron como clasificador base. Así, se tendrán resultados para ambos clasificadores principales (árboles de decisión y redes neuronales), con distintas configuraciones de parámetros más y menos complejas y siempre comparando frente a los resultados de ZeroR, el cual es el clasificador a superar. En la siguiente imagen (figura 4.2), pueden verse los resultados obtenidos para la ventana móvil de 100 días y utilizando las 9 configuraciones anteriormente descritas. En cada una de las columnas se encuentran los resultados para cada uno de los métodos y es posible identificar cual es cada uno debido a que se han numerado del mismo modo en que se han descrito.
73 Figura 4.2 - Resultados para ventana móvil de 100 días Cada columna corresponde a cada uno de los métodos enumerados y cada fila a cada una de las 59 versiones de la ventana móvil, con lo que es posible ver fácilmente que resultado ha arrojado cada método con cada muestra de datos. Al final de la tabla se puede ver una media de los resultados y una comparación de cada método con el método base (ZeroR). En esta comparación se pueden ver tres valores entre paréntesis y separados por barras. Estos valores se rigen por la codificación que se puede ver a la izquierda de la fila (v/ /*). Los números en la posición de la “v”, son las veces que el método en cuestión ha superado al método base. Los que se encuentren en la posición del “*”, serán las veces que el método ha arrojado resultados inferiores a los del método base. Y por último, los números que se encuentren en la posición donde no hay símbolo, serán las veces en que el método ha arrojado un resultado estadísticamente similar al del método base. Se puede comprobar como el método base, de media arroja resultados del 50% de aciertos. En ciertas ocasiones obtiene 100% de aciertos debido a que en el día en cuestión todos los desvíos fueron en el sentido mayoritario pero en muchas otras ocasiones también ofrece 0% de aciertos con lo que se ve la irregularidad e ineficacia del método. Donde se han obtenido mejores resultados es utilizando el octavo método de la lista. Este corresponde al perceptrón multicapa con 0.4 de learningRate, 0.1 de momentum y “t” neuronas en una capa oculta, lo cual correspondía al número de atributos más la clase. Con un 70.62% de aciertos de media, supera en 20 puntos los resultados del clasificador base. Esta media podría ser algo superior, pero debido a algunos malos resultados puntuales, esta se ve disminuida. A continuación, se realizará la misma simulación para el periodo de tiempo dado y con ventanas móviles de 50 y 200 días. Lo único que cambiará en este caso es la magnitud de las 59 muestras de entrada y el porcentaje de entrenamiento y testeo, el cual será de 98% para la ventana de 50
80 o no, incluir penalizaciones en la matriz de coste, tal como se explicó en el capítulo de metodología (figura 2.15). Si se hace este análisis, probablemente pueda mejorarse el casi 71% de aciertos medios que se ha obtenido y la disminución de las pérdidas por desvíos. 4.2. OTROS RESULTADOS En el primer estudio, donde se realizaban predicciones por parejas de años, primero se obtuvieron resultados para los desvíos del sistema y posteriormente se hizo lo propio para el resto de desvíos (demanda, generación eólica y fotovoltaica). Por lo que en este caso, se hará lo mismo. Se realizará el mismo estudio de la ventana móvil, pero esta vez aplicando únicamente la ventana de 100 días. También se aplicarán los mismos métodos de clasificación exceptuando la red neuronal con 0.6 de learningRate, 0.2 de momentum y “t” neuronas en una capa oculta. Esto se hará debido a que, al ser el clasificador más complejo de todos, también es el que más tiempo de computación requiere y en este caso, al haber obtenido unos resultados satisfactorios para los desvíos del sistema, no se pretende hacer un estudio más profundo del que ya se ha hecho para el resto de desvíos. Por lo tanto la lista de distintos métodos y configuraciones se presenta a continuación, reduciéndose de 9 a 8 simulaciones para cada uno de los 59 días: 1. Clasificador ZeroR. 2. Clasificador J48 con 0.01 de confidenceFactor. 3. Clasificador J48 con 0.25 de confidenceFactor. 4. Clasificador J48 con 0.01 de confidenceFactor tras haber realizado una selección de atributos con Metaclasificador AttributeSelectedClasifier con método wrapper que use J48 como clasificador base. 5. Clasificador J48 con 0.25 de confidenceFactor tras haber realizado una selección de atributos con Metaclasificador AttributeSelectedClasifier con método wrapper que use J48 como clasificador base. 6. Clasificador MultilayerPerceptron con 0.3 en learningRate, 0.2 en momentum y “a” neuronas en una capa oculta. 7. Clasificador MultilayerPerceptron con 0.4 en learningRate, 0.1 en momentum y “t” neuronas en una capa oculta. 8. Clasificador MultilayerPerceptron con 0.3 en learningRate, 0.1 en momentum y “a” neuronas en una capa oculta tras haber realizado una selección de atributos con Metaclasificador AttributeSelectedClasifier con método GreedyStepwise que use MultilayerPerceptron como clasificador base.
81 En la siguiente imagen (figura 4.8), pueden observarse los resultados para el estudio de la ventana móvil de 100 días para los desvíos de la demanda. Figura 4.8 - Resultados para los desvíos de la demanda con ventana móvil de 100 días Tal como era de esperar, los resultados iban a ser ligeramente mejores que los de los desvíos del sistema. También vuelve a obtener las mejores predicciones el mismo clasificador con los mismos parámetros de configuración que obtuvo los mejores resultados anteriormente. Eso sí, los resultados para los árboles de decisión mejoran notablemente en este caso, acercándose bastante a los porcentajes de aciertos medios que obtienen las redes neuronales. Además, de los árboles de decisión utilizados, el que mejor resultado obtiene (69.77%), es el que se le ha definido un confidenceFactor más pequeño (0.01), es decir, el árbol más sencillo de todos. Esto tiene una interpretación bastante positiva, ya que es el clasificador que más rápido genera sus modelos. No llega a tardar más de 11 segundos en realizar las 59 simulaciones. En la siguiente imagen (figura 4.9), se puede ver la misma tabla de resultados que se acaba de exponer, pero cambiando los porcentajes de aciertos por los tiempos de computación que ha gastado cada método en realizar el entrenamiento y generar cada uno de los modelos.
82 Figura 4.9 - Tiempos de computación para los desvíos de la demanda con ventana móvil de 100 días Como se comprueba, la media de tiempo que utiliza dicho árbol de decisión para generar un modelo de una muestra de 2400 datos, es de 0.18 segundos, lo que multiplicado por 59, hace un total de 10.62 segundos. En cambio la red neuronal con la configuración de parámetros elegida, tarda 47.50 segundos en generar un modelo, lo que hace un total de casi 47 minutos para realizar las 59 simulaciones. A continuación se muestran (figura 4.10) los resultados de las simulaciones para los desvíos eólicos. Figura 4.10 - Resultados para los desvíos eólicos con ventana móvil de 100 días
83 Para el caso eólico, como ya se vio en el primero de los estudios utilizando las parejas de años, los resultados no son nada positivos. Exceptuando un par de ocasiones donde se supera ligeramente al clasificador ZeroR, el resto de configuraciones no generan ninguna mejoría sobre lo que ya aporta este método. Por último, se muestran también (figura 4.11) los resultados para los desvíos de la generación fotovoltaica. Figura 4.11 - Resultados para los desvíos fotovoltaicos con ventana móvil de 100 días Como se podía prever, se dan resultados positivos y que se asemejan a los obtenidos para los desvíos del sistema y de la demanda. Aun así, se debería hacer un análisis más exhaustivos si se quiere comprobar si verdaderamente estos métodos mejoran en alguna medida, las estrategias desarrolladas en el anterior trabajo, ya que los desvíos de la fotovoltaica se sucedían de manera tan repetitiva que era fácil predecir las curvas con ayuda de la simple observación y quizás se podía esperar que con métodos más sofisticados mínimamente se igualasen los resultados.
84 5. CONCLUSIONES Y LÍNEAS FUTURAS Una vez llegados a este punto, es importante hacer un repaso de las ideas generales del estudio y recopilar las que han podido ser las conclusiones más importantes. En primer lugar, se vuelve a hacer hincapié en la idea de que este trabajo nace como continuación de un estudio anterior con una serie de conclusiones, las cuales se han utilizado como base para muchas de las ideas e hipótesis aquí planteadas. Tanto en este estudio, como en el anterior, todos los resultados se han obtenido partiendo de datos reales, los cuales han sido tratados con especial atención. Esta última aclaración resulta realmente importante cuando se tratan cantidades tan grandes de datos. Si la información de las distintas variables tiene un origen poco fiable, o se cometen errores que hacen emparejar datos que realmente no coinciden en el tiempo, los resultados no serían reales y las conclusiones obtenidas, falsas. Tras una breve introducción al estudio, se ha hecho una descripción y un recorrido por el programa utilizado. Posteriormente se han establecido diferentes hipótesis y casos de estudio y se han obtenido una serie de resultados, más o menos positivos dependiendo del caso. Con todo ello, se ha podido comprobar del gran potencial que tiene WEKA. Aunque solo se hayan explicado las herramientas principales y dos de sus métodos de predicción, el programa cuenta con más herramientas, más algoritmos de predicción y otros puntos de vista desde los que aplicar los métodos ya utilizados. Ya se vio en el anterior trabajo, que a nivel económico, resultaba interesante a nivel privado de cada sujeto de mercado, el poder prever el sentido del desvío del sistema, ya que, tras una serie de casos prácticos con datos reales, se veía que el nivel de pérdidas era significativo. Concretamente, se exponía uno caso hipotético de una central eólica de 100 MW. Para esta hipotética central, se suponía una generación y unos desvíos anuales iguales a los de la totalidad de la generación eólica española pero guardando proporcionalidad con sus 100 MW instalados. Dentro de estas condiciones y con datos reales sobre los desvíos, esta central hubiera tenido unas pérdidas de 91.872,00 € para 2016. Simplemente haciendo una observación de los resultados de ese año, se proponían una serie de factores por los que multiplicar las ofertas realizadas por la central para tratar de disminuir los desvíos. Una vez conocidos los resultados del año y aplicando los factores a posteriori, se vio que se podría haber obtenido un 7.25 % de ahorro, pero esto se obtuvo una vez se conocían los datos de lo sucedido. Sería posible realizar un estudio económico de lo que podría haberse ahorrado en distintas épocas utilizando la metodología de predicción del actual trabajo, pero ello requeriría de un estudio en profundidad, nueva descarga y tratamiento de datos y realizar nuevas predicciones lo cual no es objeto de este proyecto, quedando esta idea para desarrollos futuros. Aun así, es posible de manera sencilla aportar ciertos datos que dan una idea de la utilidad de los resultados obtenidos. Para el caso de la central eólica, se ha dicho que las pérdidas en penalizaciones ascendieron a 91.872,00 €. Se conoce que esta central cometió 6044 desvíos a favor de los desvíos del sistema, es decir, perjudicándolo. Estos desvíos son los que trajeron aparejados las pérdidas citadas. Utilizando el método de los factores que conseguía una reducción de 7.25%, se disminuían los desvíos cometidos en contra del sistema a 5476 desvíos. En este estudio, se ha desarrollado una
85 metodología que obtiene una media de aciertos en las predicciones por encima del 70 %, lo cual en un primer momento, reduce los desvíos en contra del sistema a un máximo de 2628 desvíos. Esto corresponde a haber podido reducir los desvíos cometidos en un 56,5 %. No se conocen cifras económicas reales porque entran en juego el precio de los desvíos para cada hora y los distintos casos que se puedan dar, por lo tanto no resulta sencillo ni fiable realizar una ponderación, debería hacerse un estudio más completo. Aun así, a simple vista la mejoría es considerable. Además hay que tener en cuenta que esto es una primera aproximación y que se han dejado vías abiertas para un estudio más exhaustivo, donde se haga un seguimiento día a día, se obtengan las distintas matrices de confusión y se apliquen factores de penalización a las horas donde se conozcan los fallos que se están cometiendo. Una idea que resulta también importante, es la de que el sistema eléctrico está en constante evolución. Continuamente surgen nuevos decretos y regulaciones. Hace 20 años el mercado aún estaba por liberalizar, hace pocos años que las renovables han dejado de ofertar a cero en los mercados y ya se está viendo la derogación del impuesto al sol. Esta constante evolución hace que las reglas y las variables de importancia en la red cambien cada año, por lo que lo primordial, será conocer que parámetros son importantes para determinar el comportamiento de la variable que se esté estudiando y contar con datos actualizados de ellos.
86 6. BIBLIOGRAFÍA La totalidad de la bibliografía consultada para el desarrollo del proyecto se encuentra en los procedimientos de Red Eléctrica de España que más adelante se enumeran y en el manual de usuario de WEKA. Todos los datos descargados relativos al sistema eléctrico español y a la información meteorológica han sido descargados de www.esios.ree.es y www.meteomanz.com respectivamente. WEKA Manual for versión 3-8-2 P.O.1.5 Establecimiento de la Reserva para la Regulación Frecuencia-Potencia P.O.2.1 Previsión de la Demanda P.O.3.1 Programación de la Generación P.O.3.2 Restricciones Técnicas P.O.3.3 Gestión de Desvíos P.O.7.2 Regulación Secundaria P.O.7.3 Regulación Terciaria P.O.14.4 Derechos de Cobro y Obligaciones de Pago por los Servicios de Ajuste del Sistema