scieee AI-readable full text Open interactive document viewer

Funciones de verosimilitud en el entorno del aprendizaje automático

Mirasierra Calleja, Victor

Abstract

Este documento recoge el estudio y desarrollo de funciones de disimilitud en el entorno del aprendizaje automático, así como su comparación con otras metodologías destacadas del sector, como los mínimos cuadrados o las máquinas de vectores soporte (SVM), desarrollando librerías especializadas para ello, que contemplan los principales problemas en el campo del aprendizaje automático o machine learning. Durante el estudio se tratará la importancia del campo del aprendizaje automático en la actualidad y los diferentes problemas que existen ligados a él, entre los cuales destacan los problemas de regresión y clasificación, pero no son los únicos, ya que a medida que avanza la tecnología se necesitan soluciones a otro tipo de problemas como el tratamiento de imágenes o el desarrollo de sistemas de recomendación. Puesto que el aprendizaje automático es una rama fuertemente ligada a los datos, se estudiarán en profundidad, incluyendo el formato, el proceso de tratamiento o la forma de introducirlos en los diferentes algoritmos. Además, se propondrán diversas formas de representar los datos, lo que permitirá medir el desempeño de los algoritmos y comprobar que éstos realmente aprenden según lo esperado. Como se verá, las funciones de verosimilitud propuestas ofrecen una familia entera de soluciones a algunos de estos problemas. En especial, cabe destacar su relevancia en el problema de predicción intervalar, ya que se adaptan mejor a las funciones probabilísticas de los datos del problema, lo que desemboca en unos mejores resultados. Por último, se comprobará que a veces metodos simples como un mantenedor de los datos ofrece mejores resultados que métodos más complejos y requeridores de una mayor potencia de cálculo. Esto es debido típicamente a la naturaleza ruidosa y díficil de predecir de algunas muestras.

Full text

Proyecto Fin de Carrera Ingeniería de Telecomunicación Formato de Publicación de la Escuela Técnica Superior de Ingeniería Autor: F. Javier Payán Somet Tutor: Juan José Murillo Fuentes Dep. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2013 Proyecto Fin de Grado Grado en Ingeniería de las Tecnologías Industriales Funciones de verosimilitud en el entorno del aprendizaje automático Autor: Víctor Mirasierra Calleja Tutor: Teodoro Álamo Cantarero Dep. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2017 Proyecto Fin de Grado Grado en Ingeniería de las Tecnologías Industriales Funciones de verosimilitud en el entorno del aprendizaje automático Autor: Víctor Mirasierra Calleja Tutor: Teodoro Álamo Cantarero Catedrático de Universidad Dep. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2017 Proyecto Fin de Grado: Funciones de verosimilitud en el entorno del aprendizaje automático Autor: Víctor Mirasierra Calleja Tutor: Teodoro Álamo Cantarero El tribunal nombrado para juzgar el trabajo arriba indicado, compuesto por los siguientes profesores: Presidente: Vocal/es: Secretario: acuerdan otorgarle la calificación de: El Secretario del Tribunal Fecha: Agradecimientos Este trabajo no habría sido posible sin el apoyo incondicional de mi madre Dory, quien ha conseguido guiarme durante todos estos años de estudio. También agradecer el apoyo a mi tutor Teo, sin el cual no habría descubierto el gran campo del machine learning, centro de este trabajo y en el que me gustaría trabajar en un futuro. I Resumen Este documento recoge el estudio y desarrollo de funciones de disimilitud en el entorno del aprendizaje automático, así como su comparación con otras metodologías destacadas del sector, como los mínimos cuadrados o las máquinas de vectores soporte (SVM), desarrollando librerías especializadas para ello, que contemplan los principales problemas en el campo del aprendizaje automático o machine learning. Durante el estudio se tratará la importancia del campo del aprendizaje automático en la actualidad y los diferentes problemas que existen ligados a él, entre los cuales destacan los problemas de regresión y clasificación, pero no son los únicos, ya que a medida que avanza la tecnología se necesitan soluciones a otro tipo de problemas como el tratamiento de imágenes o el desarrollo de sistemas de recomendación. Puesto que el aprendizaje automático es una rama fuertemente ligada a los datos, se estudiarán en profundidad, incluyendo el formato, el proceso de tratamiento o la forma de introducirlos en los diferentes algoritmos. Además, se propondrán diversas formas de representar los datos, lo que permitirá medir el desempeño de los algoritmos y comprobar que éstos realmente aprenden según lo esperado. Como se verá, las funciones de verosimilitud propuestas ofrecen una familia entera de soluciones a algunos de estos problemas. En especial, cabe destacar su relevancia en el problema de predicción intervalar, ya que se adaptan mejor a las funciones probabilísticas de los datos del problema, lo que desemboca en unos mejores resultados. Por último, se comprobará que a veces metodos simples como un mantenedor de los datos ofrece mejores resultados que métodos más complejos y requeridores de una mayor potencia de cálculo. Esto es debido típicamente a la naturaleza ruidosa y díficil de predecir de algunas muestras. III 1 Introducción Desde el pasado siglo y gracias al avance tecnológico, el control clásico ha evolucionado y han surgido nuevas ramas de éste que aprovechan la potencia de los ordenadores para resolver los diferentes problemas de control, abriendo camino a resultados más óptimos a cambio normalmente de un mayor requerimiento de potencia de cálculo. En especial, ha surgido una rama moderna del control automático conocida como Machine Learning, gracias a la cual podemos conseguir que un computador aprenda, mediante una serie de datos, a resolver un determinado problema. En el mundo de datos en el que vivimos, esto se ha convertido en una herramienta muy potente y muy amplia, aplicable a una gran variedad de problemas. En este documento, se informará acerca del aprendizaje automático, su historia, sus problemas y los algoritmos que se suelen utilizar para resolverlos. Asimismo, se propondrá una metodología de resolución basada en funciones de verosimilitud que complementan algunos de los algoritmos ya existentes. Todo esto vendrá acompañado de una comparación de los resultados de los diversos algoritmos en diferentes sets de datos pertenecientes a distintos problemas. Para este trabajo, se han desarrollado librerías capaces de resolver los problemas que se citan. Todo el código desarrollado es propio (a excepción de funciones incluidas en matlab y el método Fista de optimización), y estará recogido al final del documento. 1.1 Objetivos A continuación se detalla el programa de trabajo seguido y el orden en el que se ha seguido para conseguir desarrollar las tareas descritas anteriormente. Este orden supondrá a su vez una directriz de este trabajo. 1. Toma de contacto con el entorno de trabajo del Machine Learning. Estudio de los principales problemas y metodologías típicas para su resolución. 2. Definición de los problemas a tratar que permitan comprobar la eficacia de los métodos estudiados. 3. Desarrollo del algoritmo de disimilitud. 4. Solución de los problemas mediante algoritmos tradicionales. 5. Aplicación del nuevo algoritmo a los problemas planteados. 6. Representación y análisis de los resultados obtenidos. 1 2Capítulo 1. Introducción 1.2 Organización de la memoria En el capítulo 2 se realiza una introducción al campo del aprendizaje automático. El capítulo comienza explicando los orígenes del campo y comentando la importancia de éste. Posteriormente, describe los principales problemas que se tratan, los tipos de aprendizaje que se realizan, las limitaciones del machine learning y por último se valoran algunos de los métodos más conocidos de resolución de problemas de aprendizaje automático. El capítulo 3 se centrará en los datos y su tratamiento para el correcto funcionamiento de los algoritmos. Se presentarán los problemas que se tratarán en este trabajo y se propondrán formas de representación de los datos para poder extraer información de ellos. El capítulo 4 está orientado al desarrollo de una familia de funciones de verosimilitud. Se procederá a un desarrollo matemático de estas funciones, en el que se comentará la importancia de éstas en la resolución de algunos problemas de aprendizaje automático. Finalmente, se estudiará la forma de resolver estos problemas gracias a estas funciones. En el capítulo 5 se muestran los resultados obtenidos por los diferentes algoritmos en los sets de datos considerados. Se ofrecen datos como el error cuadrático medio cometido por cada algoritmo (y sus parámetros asociados) o tablas y gráficas que comparan los valores reales con los valores predichos por los algoritmos. El capítulo 6 supone una análisis de los resultados obtenidos en el apartado 6, comentando el desempeño de las diferentes metodologías en los problemas propuestos. El capítulo termina con una reflexión sobre los pasos que se deberían realizar para intentar mejorar los resultados obtenidos. Por último, el capítulo 7 recopila todo el código desarrollado para este trabajo. 2 Aprendizaje automático Hay muchas definiciones de aprendizaje automático. En general todas ellas coinciden en lo mismo: el aprendizaje automático es una rama de la inteligencia artificial que desarrolla técnicas que permiten a los ordenadores aprender. La metodología de aprendizaje es la de alimentar al ordenador o máquina con un conjunto de datos representativos del problema que tendrá que resolver, tal que la máquina sea capaz de obtener información de ellos y resolver el problema. Es difícil saber cuándo se creó el campo, ya que bebe de muchos otros como las matemáticas o la ciencia computacional. Aun así, sabemos que fue Arthur Samuel en 1952 quien escribió el primer programa por computador capaz de aprender con el tiempo. Aunque difiere mucho del aprendizaje automático moderno, este programa era capaz de jugar al juego de las damas y mejorar en el juego a medida que jugaba más partidas. Posteriormente llegaron metodologías que se asemejan más al aprendizaje automático tal como lo conocemos hoy. En 1957, Frank Rosenblatt diseñó la primera red neuronal para ordenadores, el perceptrón, el cual utilizaba conocimientos de neurociencia para conseguir el aprendizaje. En 1967 se escribió el algoritmo del “vecino cercano”, el cual permitía ya a los ordenadores un reconocimiento básico de patrones. El aprendizaje automático continuó levantando el interés de los investigadores, y hoy ya es visible en múltiples aplicaciones tal como sistemas de recomendación de películas o música, o la conducción autónoma, en la cual se han hecho grandes avances. 2.1 Problemas típicos El campo del aprendizaje automático es muy amplio y abarca numerosos tipos de problemas, entre los cuales siempre se suelen destacar los de clasificación y regresión. Pero a medida que se han ido desarrollando los conocimientos sobre este campo, han surgido otro tipo de problemas que han sido posibles de resolver gracias al aprendizaje automático. Entre ellos destacan los problemas de detección de anomalías y el desarrollo de sistemas de recomendación, entre otros. Aunque pueda parecer que estos problemas son muy diferentes entre sí, en realidad se han conseguido formular de forma similar, lo que hace posible que su resolución sea posible con algoritmos similares. Mencionar también que hay clasificaciones secundarias en cada tipo de problema, de las cuales se destacarán la clasificación supervisada y la clasificación insupervisada. 3 4Capítulo 2. Aprendizaje automático 2.1.1 Problema de regresión El objetivo de este tipo de problema es el de encontrar una función matemática cuya curva se adapte lo mejor posible a los datos. Esto nos permitirá predecir el valor de una variable salida conocidos los valores de otras variables entradas, que suelen incluir tanto parámetros del sistema, como valores pasados de la variable salida. 0 2 4 6 8 10 12 14 16 18 20 0 2 4 6 8 10 12 14 16 18 20 Figura 2.1 Ejemplo problema de regresión. Predicción temporal La predicción temporal es una particularización del problema de regresión. En este caso, tenemos que predecir el valor que tendrá cierta curva partiendo del conocimiento de sus valores pasados. Así, se puede comprobar que es un ejemplo del problema de regresión colocando los valores pasados de las salidas como variables entradas. Es conveniente aclarar que, aunque se pueda ampliar el horizonte de predicción, esto aumenta la incertidumbre y por lo tanto el error del algoritmo. Predicción intervalar La predicción intervalar se puede entender como un caso particular de regresión. Mientras que la regresión ordinaria nos proporciona el punto de mayor confianza, la esperanza matemática de que el valor real se corresponda con el punto predicho es 0. Para evitar eso, podemos proporcionar una solución menos ambiciosa. Dado un grado de confianza en la predicción, el problema consiste en establecer un margen tal que la esperanza de que el valor real entre en dicho margen sea la establecida por el usuario. 2.1.2 Problema de clasificación A diferencia del problema de regresión, en el problema de regresión los datos se encuentran agrupados en clases. El objetivo será el de calcular la clase a la que pertenece un determinado dato, conocidos los valores de las variables entradas. Es destacable que este tipo de problema, a diferencia del problema de regresión, tiene una salida discreta y limitada al número de clases existente. 2.1 Problemas típicos 5 En función del número de clases existente, podemos distinguir entre clasificación binaria y multiclase. Clasificación binaria La clasificación binaria recibe su nombre porque separa dos clases o regiones. Es la clasificación más básica y se emplea también para separar una única clase, entendiendo por la segunda clase aquella que engloba todos los datos que no pertenecen a la clase que queremos separar. La clasificación en género (hombre o mujer) basada en datos como la altura o el peso es un ejemplo de este problema. Figura 2.2 Ejemplo problema de clasificación binaria. Clasificación multiclase La clasificación multiclase separa varias clases. Normalmente se resuelve como un conjunto de clasificaciones binarias en lo que se conoce como la técnica "1 vs all", cuya idea es la de crear clasificadores independientes para cada clase, y clasificar los datos en aquella clase que obtenga un resultado más sólido. Un ejemplo puede ser la clasificación de flores en función de datos como la longitud del pétalo o del sépalo. 2.1.3 Detección de anomalías La idea es la de, dado un set de datos, buscar si existe alguno que sobresalga de la media de su clase. Se puede entender como una extensión del problema de clasificación. Este tipo de problema se puede entender como una clasificación binaria sesgada (el número de anomalías es muy reducido respecto al de datos normales) si se tuviera un histórico de anomalías. En el caso de no poseer un histórico, se trataría de un problema de aprendizaje no supervisado en el que se consideran anomalías aquellos datos que se separen del resto. Un ejemplo de este tipo de problema es el de detectar piezas defectuosas en el proceso de fabricación. 6Capítulo 2. Aprendizaje automático Figura 2.3 Ejemplo problema de clasificación multiclase. 2.1.4 Sistemas de recomendación Este problema ha surgido debido al desarrollo de internet y la creación de compañías como Amazon oNetflix. La idea es la de sugerir al usuario determinados productos, basándose en sus gustos (recogidos típicamente en un historial). Aunque este tema no se tratará en este trabajo, es notable conocerlo ya que está adquiriendo importancia y supone una gran fuente de beneficios en numerosas compañías. 2.1.5 Aprendizaje supervisado-Aprendizaje no supervisado Estos tipos no aprendizajes no son problemas, sino dos herramientas para resolver los problemas anteriores. La diferencia entre ambos reside en que, mientras el aprendizaje supervisado alimenta al algoritmo con valores de salida, indicando por ejemplo la clase a la que pertenece un dato, el aprendizaje no supervisado no lo hace, y deja que el algoritmo divida los datos sin una alimentación previa de la salida. Cada uno se usará en determinados problemas. Así, el aprendizaje no supervisado puede ser útil en situaciones en las que desconozcamos a priori el número de clases, como por ejemplo en la agrupación de alumnos según su rendimiento académico, mientras que el aprendizaje supervisado será más beneficioso en problemas como la detección de cáncer, en los que un aprendizaje no supervisado podría resultar en una clasificación diferente, y nunca indicaría cuál de las clases sería la afectada por el cáncer. No hay que olvidar que, mientras el aprendizaje supervisado proporciona una etiqueta a la salida, el aprendizaje no supervisado simplemente separa las clases, sin ofrecer ninguna información sobre éstas más que tienen características -desconocidas por el usuarioen común. 2.1.6 Ejemplo: Tratamiento de imágenes Los problemas antes mencionados son solo algunos de los problemas en los que se sustenta el aprendizaje automático. Hay multitud de variantes a los problemas comentados. Un 2.2 Limitaciones del aprendizaje automático 7 ejemplo de estos y que se tratará en este estudio es el de tratamiento de imágenes. Veremos como, por su naturaleza, se trata a priori de un problema de aprendizaje no supervisado, ya que los datos no suelen tener etiquetas o marcas que nos permitan tratarlo de forma supervisada (aunque se pueden dar situaciones en las que sí, no es lo normal). Así, veremos como podemos emplear algoritmos de aprendizaje no supervisado para resolver problemas en este ámbito de la ingeniería. 2.2 Limitaciones del aprendizaje automático A pesar de ser un campo prometedor, el machine learning tiene algunas limitaciones a considerar cuando se trata de resolver un problema. A continuación trataré dos de las limitaciones más relevantes. 2.2.1 Maldición de la dimensión La primera se trata de un problema conocido en inglés por el nombre de Curse of dimensionality. Este no es un problema a resolver, sino uno que se presenta a medida que las dimensiones de nuestro problema principal crecen. La maldición de la dimensión afirma que, a medida que aumentamos el número de características de un problema (o dimensiones), la cantidad de datos requerida para generalizar adecuadamente aumenta exponencialmente. Esto es debido a la reducción exponencial del volumen de la hiperesfera a medida que aumenta el número de dimensiones de la misma, lo que complica la tarea de encontrar puntos alrededor de ésta. Para lidiar con esto, se trata de elegir cuidadosamente los datos con los que se alimentan los algoritmos, intentando evitar datos irrelevantes para el problema. 2.2.2 Sobre ajuste y falta de ajuste Otro de los problemas a los que se enfrentan los algoritmos de aprendizaje automático es el de conseguir que el algoritmo generalice correctamente a partir de los datos que le entregamos. Al resolver un problema, debemos tener en cuenta que el algoritmo va a trabajar con datos diferentes a aquellos con los que lo estamos alimentando. De no ser así, podríamos conseguir ajustar una curva que predijera los datos sin error, tal que pasara por todos los puntos definidos. Aunque matemáticamente es posible, esta solución es indeseada ya que el modelo solo sería perfecto para los datos de entrenamiento, mientras que el error cometido en el resto de datos sería elevado. Así, normalmente se introduce un término de regulación o se detiene el proceso de aprendizaje cuando se considera que el resultado generaliza lo suficientemente bien los datos. 2.3 Estado del arte En la sección anterior se han mencionado diferentes ejemplos de problemas de aprendizaje automático. Aunque puedan parecer problemas muy diversos, en la práctica, nos encontramos generalmente algoritmos transversales, que, con escasas modificaciones aplican a muchos de los tipos de problemas. El objetivo de la clasificación anterior es el de definir a qué conjunto de problemas es aplicable cada algoritmo. 8Capítulo 2. Aprendizaje automático Los métodos se basan típicamente en la resolución de un problema de optimización con restricciones que se puede formular de la forma: L=1 2 N ∑ i=1 (e2(θ))+λθTθ 2(2.1) Donde Lsería la denominada función de coste, cuyo valor queremos minimizar. A continuación se tratarán algunos de los más conocidos y empleados tradicionalmente en el campo de aprendizaje automático. 2.3.1 Gradient descent El Gradient Descent es un método de optimización que consigue emplear la definición del gradiente de una función para seguir a ésta hasta su mínimo. Recordemos que el objetivo del aprendizaje es el de minimizar una cierta función denominada función de coste por lo que ésta es una solución sencilla y bastante intuitiva que será muy útil para empezar a resolver problemas. Entre los inconvenientes del este algoritmo, cabe destacar el incremento de tiempo de cálculo a medida que el número de datos disponibles aumenta, y el hecho de que seguir la dirección del gradiente puede provocar que el algoritmo acabe en un mínimo local si el problema no fuera convexo. La hipótesis que usaremos para predecir la salida será h(θ) = θTx , siendo θ el vector de parámetros y x las entradas del algoritmo. Así, tendremos que minimizar el error cuadrático medio, osea, J(θ) = 1 2m(θTx−y)T(θTx−y)(2.2) siendo m el número de datos de entrenamiento. J(θ) es la función de coste. En el método del gradient descent nos interesa su derivada. La calculamos algebraicamente, obteniendo la regla de actualización de los parámetros θ: θ=θ−αxT(θTx−y)(2.3) Esta actualización se repite hasta la convergencia de los parámetros o hasta un cierto límite de iteraciones. El parámetro α recibe el nombre de ratio de aprendizaje, y modifica la velocidad de aprendizaje del algoritmo. Un valor bajo nos asegura que el algoritmo converge, aunque lentamente, mientras que un valor alto supone que los parámetros se actualicen más rápido pero puede resultar en la divergencia de estos. Para solucionar el problema del tiempo de cálculo creciente con el aumento del número de datos, se recurre a modificaciones del algoritmo como Stochastic Gradient Descent oMini Batch Gradient Descent. La principal característica de estos dos métodos es que no necesitan del conjunto completo de datos en cada iteración, por lo que el algoritmo avanza más rápido hacia el mínimo. La diferencia de tiempos es especialmente notable si el set de datos es muy grande. La idea es la de realizar divisiones en el set de datos de entrenamiento y alimentar al algoritmo con estas, en el caso del Stochastic Gradient Descent, las divisiones serán de un único dato, mientras que en el Mini Batch Gradient Descent serán de varios. Por otra parte, seguimos teniendo el problema de que los algoritmos acaban en un mínimo local, en vez de en el mínimo global, que es el que realmente nos interesa. Solucionar esto 2.3 Estado del arte 9 es más complejo, y la solución más empleada es la de ejecutar varias veces el algoritmo desde diferentes puntos iniciales y escoger el mejor resultado obtenido. 2.3.2 Minimos cuadrados ordinarios (OLS) El método de los mínimos cuadrados nos permite identificar modelos lineales en los parámetros de la forma y(k)+a1y(k−1)+···+any(k−n) = b1u(k−1)+···+bmu(k−m)(2.4) Dicha formulación se puede simplificar de la forma Y=θTX , siendo X el regresor y θ el vector de parámetros de nuestro sistema. Nuestro objetivo será el de, dado un regresor, calcular el vector de parámetros que nos permita minimizar el error cuadrático medio de la salida. Así, definimos el error del algoritmo como la diferencia entre la salida real y la salida predicha: E=Y−ˆ θTX. El error cuadrático medio será por tanto: J(ˆ θ) = 1 NETE(2.5) siendo N el número de datos con el que alimentamos el algoritmo y J(ˆ θ) la función de coste de este algoritmo. Podemos reescribir J(ˆ θ)como: J(ˆ θ) = 1 N(Y−ˆ θTX)T(Y−ˆ θTX)(2.6) Puesto que nuestro objetivo es el de reducir el error cuadrático medio, calculamos la derivada de la función de coste y la igualamos a 0 para hallar el valor del regresor que minimiza nuestra función. dJ(ˆ θ) dˆ θ=0(2.7) (ˆ θTX−Y)X=0(2.8) De ahí obtenemos que el estimador de mínimos cuadrados será: θ∗= (XTX)−1XTY(2.9) Como vemos, este segundo método emplea una solución algebraica del problema, por lo que evitamos la iteración que necesitábamos en el Gradient Descent. Sin embargo, sí necesita calcular la inversa de XTX , algo muy caro computacionalmente que conlleva que el algoritmo sea muy lento cuando el número de datos es grande. También se puede dar el caso de que XTX sea no invertible. Aunque este caso es poco común, se puede solucionar eliminando características redundantes a nivel de datos, o bien calculando la pseudoinversa de la matriz. Dentro de los mínimos cuadrados, existen variantes que permiten adaptarnos mejor al problema en cuestión, entre las cuales caben destacar los mínimos cuadrados recursivos, una reformulación del problema que permite utilizar el algoritmo en línea, reduciendo el coste computacional y siendo más interesante para sistemas con dinámica cambiante y capaces de obtener información de sí mismos a través de sensores. 3 Tratamiento previo de datos Ya hemos estudiado los problemas y las soluciones tradicionales del aprendizaje automático, pero no hemos tratado uno de los aspectos fundamentales de éste: los datos. Como sabemos, el aprendizaje automático requiere de datos del problema para conseguir su resolución, es por ello que tenemos que ser capaces de conseguirlos y manipularlos de forma que consigamos extraer de ellos toda la información del problema y de la solución que nos ofrece el algoritmo. Para ello se explicarán los sets de datos seleccionados para evaluar los algoritmos, se propondrá un esquema de tratamiento de datos, se detallará un método de división de datos en sets de entrenamiento y finalmente se detallarán métodos de representación de los mismos que nos permitan comprobar que nuestros algoritmos realmente funcionan según lo previsto. 3.1 Problemas a tratar En esta sección se describirán los cuatro sets de datos elegidos para la evaluación de los algoritmos, explicando los datos que contienen y detallando los problemas aplicables a cada uno de ellos. 3.1.1 Flor de iris El set de datos de Iris es un problema de clasificación multiclase que fue empleado por primera vez por Fisher en 1936 en el el artículo The Use of Multiple Measurements in Taxonomic Problems. Incluye más de 50 muestras de cada flor en la que incluye las siguientes características: 1. Identificación de la muestra. 2. Longitud del sépalo en cm. 3. Amplitud del sépalo en cm. 4. Longitud del pétalo en cm. 5. Amplitud del pétalo en cm. 6. Especie correspondiente. En función de estos parámetros, se distingue entre tres especies: Iris-setosa, Iris-versicolor e Iris-virginica. La primera clase es linealmente separable de las otras dos, mientras que las restantes no son linealmente separables entre ellas. 17 18 Capítulo 3. Tratamiento previo de datos Es uno de los sets de datos más empleados en la literatura y en este estudio se empleará para mostrar la eficacia de diferentes algoritmos en la clasificación multiclase. 3.1.2 Concentraciones de proceso químico Esta muestra fue ofrecida por George Box y Gwilym Jenkins en 1976 y ofrece un conjunto de 197 medidas de concentración de un proceso químico con un intervalo de separación de dos horas entre cada muestra. Se estudiará ya que es una muestra sencilla de un problema de predicción temporal que nos permitirá evaluar los algoritmos de SVM y de verosimilitud desarrollados. 0 20 40 60 80 100 120 140 160 180 200 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 Concentración Tiempo Figura 3.1 Concentraciones de proceso químico. 3.1.3 Plan de pensiones A veces las empresas proporcionan datos relevantes en sus páginas web. Un ejemplo interesante y que se ha recogido en este trabajo es el caso de Bankia, que ofrece públicamente en su web la evolución del valor liquidativo de su plan de pensiones a través de los años. Exactamente, los datos recogen los valores desde el 19 de mayo del 2007 al mismo día de 2017 con una separación diaria entre cada dato. Con esto, se realizará una predicción temporal con un horizonte de predicción variable de la muestra de la figura 3.2. Esta muestra permitirá estudiar el desempeño de los algoritmos en muestras más complejas, ya que cuenta con un total de 3653 datos. 3.1.4 Imágenes varias Para el caso de los algoritmos de aprendizaje no supervisado, ya que por su naturaleza es difícil cuantificar su éxito, se ha estimado más conveniente emplearlos para el tratamiento de imágenes. El objetivo es el de, alimentando al algoritmo con los valores de los tres campos de una imagen RGB, conseguir que el algoritmo separe los objetos del fondo de 3.2 Tratamiento de datos 19 55 60 65 70 75 80 Evolución del valor liquidativo del plan Figura 3.2 Evolución del valor liquidativo del plan. las imágenes. Para ello se ha empleado una imagen de un triángulo enmarcado sobre un fondo blanco junto con otras imágenes incluídas en Matlab como ‘moon.tif’y ‘saturn.png’, tal como se muestra en la figura 3.3. El objetivo no es el de la separación perfecta de regiones, es por ello que no se terminará el tratamiento con otros métodos como el suavizado, ya que se distancian del objetivo de este trabajo. El fin es el de comprobar que los métodos de aprendizaje no supervisado son útiles en este campo. Figura 3.3 Imágenes a tratar. 3.2 Tratamiento de datos Para empezar a tratar los problemas, es necesario proveerse de un set de datos sobre el mismo, y tratarlo adecuadamente para que éstos se encuentren organizados de tal forma que nos sea sencillo trabajar con ellos. Para ello, llevamos a cabo las siguientes operaciones: 20 Capítulo 3. Tratamiento previo de datos 1. Adquisición de datos. 2. Cambio de formato. 3. Lectura de datos. 4. Ordenamiento de datos. 5. División en sets. 6. Normalización de datos. 3.2.1 Adquisición de datos Lo primero que debemos hacer es adquirir los datos, cualquiera que sea el formato en el que estos se encuentren. Para ello, se puede recurrir a páginas web como www.kaggle.com donde encontramos normalmente datos para probar los algoritmos, o podemos solicitar los datos al organismo poseedor de estos. Estos datos se encontrarán usualmente en formatos no adecuados para empezar a trabajar con ellos, de ahí que sea necesario el siguiente punto. 3.2.2 Cambio de formato Tras adquirir los datos, los pasaremos a un formato ordenado y adecuado antes de abrirlos desde el programa de tratamiento, que en nuestro caso será Matlab. Normalmente los datos originales están incompletos y tienen varias características que pueden no interesarnos, por lo que es conveniente un filtrado previo en este paso para evitar malos resultados por parte del algoritmo. En el estudio, el formato empleado ha sido .xlsx por su limpieza y las facilidades que proporciona para ordenar los datos en tablas, que posteriormente serán interpretadas como matrices. El medio para trabajar con este formato ha sido Microsoft Excel 2016. 3.2.3 Lectura de datos Una vez tenemos los datos en el formato adecuado, pasamos a leerlos en nuestro entorno de trabajo, que como ya se ha comentado, será Matlab. Asignamos los datos del fichero .xlsx a una variable mediante la orden: xlsread(nombredelarchivo.xlsx). Cuando tenemos el set de datos cargado en Matlab, será conveniente ordenarlo con las herramientas que nos proporciona este programa, como pueden ser vectores, matrices, estructuras o celdas. Esto puede incluir la creación de variables auxiliares que permitan una interpretación más adecuada de los datos y es necesario para simplificar todo el trabajo posterior. Un ejemplo de esto es la organización de los datos en matrices, la creación de variables como índices que permitan identíficar cada medida o el cálculo de distancias en función de las coordenadas iniciales y finales de un móvil. 3.2.4 Normalización de datos Conocido en inglés como feature scaling. Esta técnica permite mejorar la eficacia de los algoritmos escalando todas las características en el mismo rango y evitando los valores atípicos o outliers. Es necesario para que el algoritmo reaccione de igual forma a todos los datos, pues si una característica está en una escala diferente al resto, típicamente aprenderá a distinta velocidad, lo que no suele ser conveniente. 3.3 División en sets de entrenamiento 21 Entre los métodos de normalización encontramos muchos dependiendo del problema. En este estudio hemos considerado principalmente dos métodos: 1. Eliminación de outliers. Los outliers son datos atípicos que entorpecen el algoritmo sesgando los datos. Hay diversas formas de evitarlos, pero en este trabajo se ha optado por saturar los datos por debajo del percentil 5 y por encima del percentil 95. Esto es computacionalmente muy barato y descarta los datos mayores y menores del algoritmo, cualquiera que sea su valor, asignándole un valor máximo y un valor mínimo definido en estos percentiles. El problema es que nuestro algoritmo no nos proporcionará buenos resultados cuando los datos se alejen mucho de los valores promedio, pero a cambio conseguimos un método rápido de evitar los outliers que mejorará la eficacia general del método. 2. Normalización 0-1. El segundo de los métodos empleados ha sido una normalización afín de los datos resultantes en el intervalo [0,1]. Así, aunque hay algoritmos como el de verosimilitud que estudiaremos que no son sensibles a transformaciones afines, hay otros que sí, y se comportan mejor en un intervalo [0,1] de lo que lo harían en intervalos diferentes. 3.3 División en sets de entrenamiento Una vez tenemos los datos ordenados, podemos dividirlos en los diferentes sets de trabajo: entrenamiento, validación y ensayo. El objetivo es el de establecer los datos que le mostramos al algoritmo para que generalice, tal que elija los valores de parámetros más adecuados y finalmente verifique si el algoritmo funciona según lo deseado. El uso de estos sets se refleja en la figura 3.4. La idea es utilizar el set de entrenamiento para crear diferentes modelos del sistema variando los valores de los parámetros. Posteriormente, emplear el set de validación para elegir cual de ellos obtiene mejores resultados. El set de entrenamiento no es representativo en este aspecto ya que no permite comprobar la generalización del algoritmo a datos nuevos (que es con los que trabajará en la realidad). Por último, empleamos el set de datos de ensayo o test para calcular la eficacia del algoritmo. Estos sets contienen usualmente datos diferentes, pues la idea es no sesgar los resultados utilizando para medir la eficacia los mismos datos con los que hemos entrenado el algoritmo. Los datos incluidos en los sets se suelen escoger aleatoriamente, pues es probable que inicialmente los datos estuvieran ordenados de alguna forma, y cada uno de los sets de entrenamiento no reflejase la totalidad del sistema, que es lo que nos interesa. La cantidad de datos que incluiremos en cada conjunto no está definida, pero se suele adoptar un 60% de datos para el set de entrenamiento, un 20% para el set de validación y un 20% para el de ensayo. En este estudio, se ha definido la función splitdata() para realizar esta división. 3.3.1 División en entrada-salida La clasificación de los datos en entrada y salida es aún más importante que la clasificación anterior, ya que el algoritmo trabaja de forma diferente los datos de entrada que los de salida. Esta clasificación requiere conocer el problema y analizar qué datos pueden interesar en nuestro problema. A menudo se proporcionan muchos más datos de los necesarios para 22 Capítulo 3. Tratamiento previo de datos Figura 3.4 Empleo de los sets de entrenamiento. resolver un problema. Estos datos, además de ser innecesarios, suponen una pérdida de eficacia del algoritmo, llegando incluso a hacerlo inútil, por lo que el previo análisis de los datos de entrada y de salida será esencial. 3.4 Representación de datos Tan importante es conseguir que el algoritmo de aprendizaje aprenda de los datos como visualizar que realmente lo está haciendo de la forma indicada. Es por ello que se presentan a continuación dos técnicas que nos permiten comprobar el correcto funcionamiento de los algoritmos para los dos problemas principales: la regresión y la clasificación. Para el problema de regresión haremos uso de las curvas de aprendizaje, una herramienta potente que nos ayuda a visualizar el proceso de aprendizaje de nuestro algoritmo, mientras que para el problema de regresión emplearemos las matrices de confusión, que nos permitirá visualizar dónde se han cometido los fallos. 3.4.1 Curvas de aprendizaje El objetivo de esta técnica será el de definir una forma de comprobar si nuestros algoritmos funcionan correctamente. Ya que el objetivo del trabajo es el desarrollo de diferentes algoritmos de aprendizaje automático, es muy útil analizar si los algoritmos que implementamos están funcionando bien o si, por el contrario, hay ciertos bugs o errores que impiden el correcto funcionamiento de estos, por lo que sería necesario pulirlos. Con este fin, se estudian las curvas de aprendizaje, conocidas como Learning curves. Estas curvas no son sino una representación de cómo evoluciona nuestro algoritmo conforme lo entrenamos con un número creciente de datos. La figura 3.5 nos muestra la curva ideal, en la que podemos apreciar como, a medida que introducimos más datos, el algoritmo empieza a no ajustarse a todos los datos de entrenamiento y el error en este set aumenta, mientras que para el set de validación o prueba, el error disminuye, pues el algoritmo evoluciona para procesar datos nuevos. Este sería el funcionamiento ideal, pero también observamos otros tipos de comportamientos. La figura 3.6 muestra una curva con sobreajuste, en la que el error en el set de entrenamiento se mantiene muy bajo. Esto se produce por la presencia de un numero excesivo de parámetros y/o por la ausencia de un término de regulación, o por la presencia de uno 3.4 Representación de datos 23 Datos entrenamiento Error entrenamiento validación objetivo Figura 3.5 Curva ideal. despreciable. En este caso, el error en el set de validación o prueba se mantiene alto, como consecuencia de que el algoritmo no ha generalizado, sino que ha sobreajustado. Este tipo de gráficas se arreglan o bien reduciendo el número de parámetros o bien aumentando el término de regulación. También se puede comprobar que aumentar el número de datos de entrenamiento ayuda a mejorar el rendimiento del algoritmo, pero muchas veces el número de datos es limitado o costoso y no supone una opción viable. Datos entrenamiento Error entrenamiento validación objetivo Figura 3.6 Curva con sobreajuste. La imagen 3.7 muestra una curva con falta de ajuste, en la que el error en el set de entrenamiento se mantiene por encima de lo esperado, mientras que el error de ensayo se mantiene muy próximo a éste, sin estar tampoco cerca del rendimiento esperado. Esto 24 Capítulo 3. Tratamiento previo de datos se produce por la generalización excesiva debido a un término de regulación elevado o bien a un número de parámetros bajo e inadecuado. Este tipo de gráficas se arreglan o bien aumentando el número de parámetros o bien disminuyendo el término de regulación. Recordamos en este punto que una forma de aumentar el número de parámetros cuando no se dispone de otras características del problema, es la de crear combinaciones de las ya existentes, siguiendo la misma filosofía que en las máquinas de vectores soporte. Datos entrenamiento Error entrenamiento validación objetivo Figura 3.7 Curva con falta de ajuste. Como hemos visto, el empleo de estas gráficas es muy beneficioso para el desarrollo y ajuste de algoritmos de aprendizaje automático, permitiendo visualizar la evolución del aprendizaje y permitiendo el ajuste de diversos parámetros relativos a él. Se ha implementado la función learningcurves().m que permite visualizar estas curvas para cualquier método de los diseñados. 3.4.2 Matrices de confusión La matriz de confusión o confusion matrix, es un método que nos permite visualizar en una tabla dónde se clasifican los datos y dónde se deberían clasificar. La idea es simple: se crea una matriz como la mostrada en la tabla 3.1 en la que a lo largo de una dimensión se colocan las clases objetivo (donde deberíamos clasificar los datos), mientras que en la otra dirección se colocan las clases predichas por el algoritmo de clasificación. Así, si un dato de clase 1 lo predecimos correctamente en la clase 1, el contador de la matriz de confusión en la posición (1,1) se incrementaría en una unidad. La suma resultante de todos los valores de la matriz se corresponde por tanto al número total de clasificaciones realizadas. Es fácil comprobar que la matriz de confusión será siempre una matriz cuadrada, y que los elementos de su diagonal se corresponderán a clasificaciones correctas. Pero esta técnica va más allá de la visualización en tabla de los resultados, ya que nos permite definir unas medidas de acierto del algoritmo. Para ello, definimos tablas biclase para cada clase. Así definimos #TP (del inglés True Positives) aquellos datos que se hayan clasificado correctamente en la clase 1, #TN (del inglés True Negatives) 3.4 Representación de datos 25 Tabla 3.1 Esquema de matriz de confusión. Clasificaciones C1 C2 Realidad C1 #TP #FP C2 #FN #TN aquellos que se hayan clasificado correctamente en la clase 0. Por último, los datos que no se hayan clasificado correctamente los denominaremos #FN (False Negatives) si se han clasificado en la clase 0 y #FP (False Positives) si se han clasificado en la clase 1. Con estos cuatro parámetros se definen medidas auxiliares y representativas del problema como la sensibilidad, especificidad, precisión y exhaustividad de la forma Sensibilidad =#TP #T P +#FN (3.1) Especificidad =#TN #TN +#FP (3.2) Precisión =#TP #T P +#FP (3.3) Exhaustividad =#TP #T P +#FN (3.4) También podemos calcular el acierto del método, comparando el número de aciertos con el número de fallos en la clasificación. En los términos recién definidos la podemos expresar de la forma Acierto =#T P +#TN #T P +#TN +#FP +#FN (3.5) Pero con las medidas auxiliares definidas somos capaces de conseguir más información que con la medida del acierto, que únicamente separa los datos correctamente clasificados de los que no. De ahí surge la medida F1, que se puede expresar de la siguiente forma F1=2precisión×exhaustividad precisión+exhaustividad (3.6) Las medidas anteriores consideran que el set de datos está equilibrado, algo que no ocurre en muchos de los casos, especialmente en problemas como el de detección de anomalías. En estos casos, predecir siempre la salida más probable podría darnos buenos resultados de exactitud, sin embargo fallaría siempre que se intenta predecir la más improbable, por lo que el clasificador sería nefasto. Esto se puede solucionar calculando el Coeficiente de Correlación de Matthew, conocido por sus siglas inglesas MCC MCC =#T P ×#TN −#FP ×#FN p(#T P +#FP)(#TP +#FN)(#TN +#FP)(#TN +FN)(3.7) Si el denominador fuese nulo, entonces se sustituye por un 1. 5 Resultados En el capítulo se presentarán los resultados obtenidos al probar los algoritmos desarrollados en diferentes problemas. Los resultados están dispuestos de tal forma que no solo es posible comparar los algoritmos entre sí, sino que se puede visualizar el efecto del cambio de parámetros dentro del mismo algoritmo. Así, veremos en este capítulo cómo aumentar el término de regulación conlleva a curvas más suaves o cómo el aumento de la ganancia en el método del gradient descent puede llevar a desestabilizar el algoritmo y dar resultados erróneos. Junto a los resultados se incluirá asimismo un ejemplo de curvas de aprendizaje que nos permitirá comprobar que el algoritmo ha aprendido realmente según lo deseado. Los comentarios sobre los resultados se proporcionarán en el siguiente capítulo, mientras que este irá destinado a su ilustración. Dentro de cada problema, se han elegido los algoritmos que lo resuelven que ofrecen mejores resultados. Así, se han ignorado algoritmos no pensados para la clasificación como el regresor de disimilitud o el algoritmo de mínimos cuadrados ordinarios en el problema de flor de iris. El capítulo está ordenado por sets de datos, así, primero se estudiarán los resultados en el set de imágenes, posteriormente se verán los resultados sobre la muestra de concentraciones de un proceso químico, donde se estudiará el problema de predicción intervalar, entre otros. A continuación se seguirá con el problema de clasificación de flores y se terminará con la estimación de precios de casas. El valor de error proporcionado siempre será el del error cuadrático medio. 5.1 Imágenes Se mostrarán a continuación las imágenes de partida a la izquierda, acompañadas por las imágenes tratadas por el algoritmo k-means a su derecha, siendo la entrada de este los tres canales (R,G,B) de la imagen original y buscando por salida una distinción de los objetos de las diferentes imágenes. El tratamiento proporciona únicamente una distinción entre objetos dentro de una imagen, para visualizarlo mejor, se ha optado por representar cada uno de los objetos en un tono de gris, así, ya que en todas las imágenes hay solo dos objetos, los tonos son blanco puro y negro puro. 33 34 Capítulo 5. Resultados Figura 5.1 Luna frente a fondo. K-means. Figura 5.2 Saturno frente a fondo. K-means. 5.2 Concentraciones de proceso químico 35 Figura 5.3 Triángulo frente a fondo. K-means. 5.2 Concentraciones de proceso químico En esta muestra probaremos algoritmos de regresión, en particular las máquinas de vectores soporte (SVM), el algoritmo del gradient descent, los mínimos cuadrados ordinarios (OLS), el regresor de disimilitud y por último emplearemos el algoritmo de predicción de intervalos mediante funciones de verosimilitud para hallar un intervalo de confianza. Puesto que el problema se reduce en hallar una salida a partir de sus valores pasados, los resultados serán muy visuales, ya que podremos representar en un plano la evolución de las salidas reales y predichas respecto al tiempo. Además de representar las predicciones de los diferentes algoritmos en la gráfica de concentraciones original, se proporcionarán los valores del error, tanto en el set de validación como en el de entrenamiento. Todos los ensayos han sido alimentando a los diferentes algoritmos con las cinco salidas previas a la que debe predecir. 5.2.1 SVM Para cada resultado se indicará tanto el kernel empleado como sus parámetros. Así, también se indicará el valor escogido para el parámetro de equilibrio γ. 36 Capítulo 5. Resultados Tabla 5.1 Resultados SVM para concentraciones químicas. Error cuadrático medio Kernel Parámetros Figuras Validación Ensayo Lineal λ=15.4 0.0478 0.1329 γ=15.5 Polinomial λ=15.6 0.0499 0.1360 γ=1 c=15.7 d=2 Polinomial λ=15.8 0.0460 0.2491 γ=1 c=15.9 d=4 RBF λ=15.10 0.0767 0.1742γ=100 5.11 σ=0.5 RBF λ=15.12 0.0678 0.1455γ=100 5.13 σ=1.5 RBF λ=15.14 0.0502 0.1451γ=100 5.15 σ=5 0 20 40 60 80 100 120 140 160 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real predicción Figura 5.4 Kernel lineal. λ=1.γ=1. Set de validación. 5.2 Concentraciones de proceso químico 37 0 20 40 60 80 100 120 140 160 180 200 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real predicción Figura 5.5 Kernel lineal. λ=1.γ=1. Set de ensayo. 0 20 40 60 80 100 120 140 160 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real predicción Figura 5.6 Kernel polinomial. λ=1. c=1. d=2. γ=1. Set de validación. 38 Capítulo 5. Resultados 0 20 40 60 80 100 120 140 160 180 200 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real predicción Figura 5.7 Kernel polinomial. λ=1. c=1. d=2. γ=1. Set de ensayo. 0 20 40 60 80 100 120 140 160 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real predicción Figura 5.8 Kernel polinomial. λ=1. c=1. d=4. γ=1. Set de validación. 5.2 Concentraciones de proceso químico 39 0 20 40 60 80 100 120 140 160 180 200 16 16.5 17 17.5 18 18.5 real predicción Figura 5.9 Kernel polinomial. λ=1. c=1. d=4. γ=1. Set de ensayo. 0 20 40 60 80 100 120 140 160 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real predicción Figura 5.10 Kernel RBF. λ=1.σ=0.5.γ=100. Set de validación. 40 Capítulo 5. Resultados 0 20 40 60 80 100 120 140 160 180 200 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real predicción Figura 5.11 Kernel RBF. λ=1.σ=0.5.γ=100. Set de ensayo. 0 20 40 60 80 100 120 140 160 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real predicción Figura 5.12 Kernel RBF. λ=1.σ=1.5.γ=100. Set de validación. 5.2 Concentraciones de proceso químico 41 0 20 40 60 80 100 120 140 160 180 200 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real predicción Figura 5.13 Kernel RBF. λ=1.σ=1.5.γ=100. Set de ensayo. 0 20 40 60 80 100 120 140 160 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real predicción Figura 5.14 Kernel RBF. λ=1.σ=5.γ=100. Set de validación. 48 Capítulo 5. Resultados 0 20 40 60 80 100 120 140 160 15.5 16 16.5 17 17.5 18 18.5 19 real intervalo predicción Figura 5.24 Predicción intervalar. c=10. γ=0.1.α=0.9. Set de validación. 0 20 40 60 80 100 120 140 160 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real intervalo predicción Figura 5.25 Predicción intervalar. c=100. γ=0.α=0.9. Set de validación. 5.2 Concentraciones de proceso químico 49 0 20 40 60 80 100 120 140 160 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real intervalo predicción Figura 5.26 Predicción intervalar. c=100. γ=0.15.α=0.9. Set de validación. 0 20 40 60 80 100 120 140 160 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real intervalo predicción Figura 5.27 Predicción intervalar. c=500. γ=0.1.α=0.9. Set de validación. 50 Capítulo 5. Resultados 0 20 40 60 80 100 120 140 160 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real intervalo predicción Figura 5.28 Predicción intervalar. c=1000. γ=0.α=0.9. Set de validación. 0 20 40 60 80 100 120 140 160 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real intervalo predicción Figura 5.29 Predicción intervalar. c=100. γ=0.05.α=0.9. Set de validación. 5.2 Concentraciones de proceso químico 51 0 20 40 60 80 100 120 140 160 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real intervalo predicción Figura 5.30 Predicción intervalar. c=100. γ=0.05.α=0.85. Set de validación. 0 20 40 60 80 100 120 140 160 180 200 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real intervalo predicción Figura 5.31 Predicción intervalar. c=100. γ=0.05.α=0.85. Set de ensayo. 52 Capítulo 5. Resultados 0 20 40 60 80 100 120 140 160 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real intervalo predicción Figura 5.32 Predicción intervalar. c=100. γ=0.05.α=0.95. Set de validación. 0 20 40 60 80 100 120 140 160 180 200 16.2 16.4 16.6 16.8 17 17.2 17.4 17.6 17.8 18 18.2 real intervalo predicción Figura 5.33 Predicción intervalar. c=100. γ=0.05.α=0.95. Set de ensayo. 5.3 Flor de iris 53 5.3 Flor de iris Esta muestra nos ayudará a resolver el problema de la clasificación multiclase en un set de datos reducido y bien estudiado en la literatura. Se utilizarán los algoritmos de Gradient descent y de SVM. Los resultados se mostrarán mediante la matriz de confusión y mediante estadísticos como el porcentaje de aciertos (acierto), la medida F1 y el coeficiente de correlación de Matthew (MCC). Se ha resuelto la clasificación mediante 3 clasificadores binarios. Los estadísticos se han calculado mediante la media de estos estadísticos para las tres clases. Tabla 5.5 Resultados Gradient descent para flor de iris. Matriz Acierto F1 MCC Parámetros confusión Val. Test Val. Test Val. Test Gradient λ=05.6 0.64 0.67 0.64 0.70 0.61 0.65 descent α=0.25.7 Iteraciones =100 Gradient λ=05.8 0.96 0.83 0.96 0.85 0.94 0.80 descent α=25.9 Iteraciones =100 Kernel λ=15.10 0.84 0.67 0.84 0.70 0.79 0.65 lineal γ=15.11 Kernel λ=15.12 1 0.96 1 0.96 1 0.94 γ=1 polinómico c=15.13 d=2 Kernel λ=15.14 1 1 1 1 1 1RBF γ=100 5.15 σ=1 Tabla 5.6 Gradient descent. λ=0.α=0.2. Iteraciones =100. Set de validación. Clasificaciones Setosa Versicolor Virginica Realidad Setosa 8 0 0 Versicolor 0 3 9 Virginica 0 0 5 Tabla 5.7 Gradient descent. λ=0.α=0.2. Iteraciones =100. Set de ensayo. Clasificaciones Setosa Versicolor Virginica Realidad Setosa 6 0 0 Versicolor 0 4 8 Virginica 0 0 6 54 Capítulo 5. Resultados Tabla 5.8 Gradient descent. λ=0.α=2. Iteraciones =100. Set de validación. Clasificaciones Setosa Versicolor Virginica Realidad Setosa 8 0 0 Versicolor 0 11 1 Virginica 0 0 5 Tabla 5.9 Gradient descent. λ=0.α=2. Iteraciones =100. Set de ensayo. Clasificaciones Setosa Versicolor Virginica Realidad Setosa 6 0 0 Versicolor 0 8 4 Virginica 0 0 6 Tabla 5.10 SVM. Kernel lineal. λ=1.γ=1. Set de validación. Clasificaciones Setosa Versicolor Virginica Realidad Setosa 8 0 0 Versicolor 0 8 4 Virginica 0 0 5 Tabla 5.11 SVM. Kernel lineal. λ=1.γ=1. Set de ensayo. Clasificaciones Setosa Versicolor Virginica Realidad Setosa 6 0 0 Versicolor 0 4 8 Virginica 0 0 6 Tabla 5.12 SVM. Kernel polinómico. λ=1.γ=1.c=1.d=2. Set de validación. Clasificaciones Setosa Versicolor Virginica Realidad Setosa 8 0 0 Versicolor 0 12 0 Virginica 0 0 5 5.4 Plan de pensiones 55 Tabla 5.13 SVM. Kernel polinómico. λ=1.γ=1.c=1.d=2. Set de ensayo. Clasificaciones Setosa Versicolor Virginica Realidad Setosa 6 0 0 Versicolor 0 11 1 Virginica 0 0 6 Tabla 5.14 SVM. Kernel RBF. λ=1.γ=100.σ=1. Set de validación. Clasificaciones Setosa Versicolor Virginica Realidad Setosa 8 0 0 Versicolor 0 12 0 Virginica 0 0 5 Tabla 5.15 SVM. Kernel RBF. λ=1.γ=100.σ=1. Set de ensayo. Clasificaciones Setosa Versicolor Virginica Realidad Setosa 6 0 0 Versicolor 0 12 0 Virginica 0 0 6 5.4 Plan de pensiones El número de muestras de este set es de 3,653, lo que nos ayudará en el proceso de aprendizaje ya que, a mayor número de datos, mayor es la facilidad de generalizar a partir de ellos. El problema a tratar es el de predecir el valor que tendrá la salida en "r" muestras. Esto es muy útil, sobretodo en problemas como este ya que permite predecir momentos óptimos en los que realizar cierta inversión. Cabe mencionar que a mayor horizonte de predicción, mayor es la incertidumbre, lo que conlleva a una peor predicción. A este problema aplican todos los algoritmos que resuelven problemas de regresión, sin embargo, puesto que ya se han estudiado y comparado varios de ellos anteriormente, en este caso se va a emplear el algoritmo de mínimos cuadrados ordinarios (OLS), pues proporciona una solución rápida y buena. Se comparará con el mantenedor de orden cero (MOC), la solución más simple a cualquier problema de predicción temporal. Al contrario de lo que pueda parecer, el MOC es una solución que suele obtener buenos resultados en la práctica y es la empleada en multitud de aplicaciones, por lo que su comparación resulta de interés. Se trabajará con una dimensión de regresor 10 en el caso del algoritmo OLS, equivalente a tomar 10 salidas pasadas para predecir una futura. A diferencia de los resultados en el set de concentraciones químicas, se ha cambiado la visualización de los resultados en la gráfica temporal por una comparación de las salidas predichas con las reales, donde, en una regresión perfecta, todos los puntos se situarían en la recta y=x, pero, 56 Capítulo 5. Resultados en una regresión real, los puntos se situarán lo más cerca posible a la recta mencionada. La tabla donde se muestran los errores cuadráticos medios de los algoritmos en ambos sets (de validación y de ensayo) se ha mantenido, pues ofrece un resultado numérico muy claro que nos permite valorar rápidamente el desempeño de los algoritmos. Tras esto, se hará uso del set de validación para visualizar una curva de aprendizaje (learning curve) que nos permita comprobar si el algoritmo realmente aprende a medida que aumentamos los datos de entrenamiento. Por último, se representarán los coeficientes de correlación tanto de la muestra original, como de las variaciones de ésta. Estos coeficientes permitirán explicar la importancia que tienen regresores como el MOC en esta muestra. Tabla 5.16 Resultados OLS para concentraciones químicas. Error cuadrático medio Parámetros Figuras Validación Ensayo MOC r=15.34 0.0238 0.0380 5.35 MOC r=10 5.36 0.2726 0.3730 5.37 OLS r=15.38 0.0251 0.0402d=10 5.39 λ=0 OLS r=10 5.40 0.3495 0.4305d=10 5.41 λ=0 68 69 70 71 72 73 74 75 76 77 78 68 69 70 71 72 73 74 75 76 77 78 Valor real de la salida Valor predicho de la salida predicción recta predicción=real Figura 5.34 MOC. r=1. Set de validación. 5.4 Plan de pensiones 57 71 72 73 74 75 76 77 78 71 72 73 74 75 76 77 78 Valor real de la salida Valor predicho de la salida predicción recta predicción=real Figura 5.35 MOC. r=1. Set de ensayo. 68 69 70 71 72 73 74 75 76 77 78 79 68 69 70 71 72 73 74 75 76 77 78 79 Valor real de la salida Valor predicho de la salida predicción recta predicción=real Figura 5.36 MOC. r=10. Set de validación. 64 Capítulo 6. Conclusiones 6.2.2 OLS & Gradient descent Estos dos métodos proporcionan los mismos resultados, al igual que el kernel lineal. Estos resultados se ajustan bastante al problema y, la diferencia reside en las posibilidades de cada algoritmo. Mientras que el kernel lineal ofrece la sencillez de comparar los resultados con otros kernel sin usar más que un algoritmo, el algoritmo de Gradient Descent nos permite trabajar con sets de datos grandes, en especial con variantes como el Stochastic Gradient Descent o el Mini Batch Gradient Descent. Por último el algoritmo OLS nos permite resolver el problema algebraicamente sin necesidad de iterar, por lo que, en sets de datos pequeños es muy aconsejable. 6.2.3 Regresor de verosimilitud Los resultados proporcionados por el regresor basado en las funciones de verosimilitud estudiadas son bastante prometedores, ya que proporcionan el mejor resultado en el test de ensayo de entre los algoritmos estudiados. La grandeza del método es que, a diferencia del método de los mínimos cuadrados, nos permite ajustar la predicción a la función de probabilidad. Con un valor de γ adecuado, se pueden conseguir funciones de probabilidad diferentes a la normal, que es la que utilizan los métodos anteriores, por lo que, si cualquiera de estas funciones se adapta más a los datos que la normal, el regresor de verosimilitud ofrecerá mejores resultados. En este caso, observamos que γ=0.05 adapta muy bien y los resultados obtenidos son muy buenos. 6.2.4 Predictor intervalar. Algoritmo de verosimilitud Para terminar con la muestra de concentraciones químicas, analizaremos los resultados del predictor intervalar. Las primeras muestras que se aprecian en la tabla 5.4 se corresponden al proceso de ajuste de los parámetros c y γ al problema. Unos parámetros que no se ajusten bien llevarán a unos malos resultados. Puesto que se está prediciendo con un intervalo de confianza de α=0.9 , se espera que el acierto sea asimismo 0.9 , algo que ocurre cuando los parámetros c=100,γ=0.05 se ajustan a la muestra. Posteriormente comprobamos que si cambiamos el valor de confianza a α=0.85 y a α=0.95 , el acierto sigue siendo igual al valor de confianza α , por lo que observamos que la función se ajusta bien a la muestra. También observamos que en el set de ensayo, los resultados obtenidos empeoran. Esto era esperable ya que ha ocurrido en los métodos anteriores y se puede deber a un cambio de la dinámica de la muestra, que se traduce en que la función de probabilidad ha cambiado del set de validación al de ensayo. Por otra parte, es interesante ver cómo al cambiar los parámetros, también cambian el tiempo de cálculo del intervalo y la longitud de este. Observamos que, a medida que los valores de α y c aumentan, también lo hace el tiempo de cálculo, mientras que la longitud media del intervalo disminuye. 6.3 Flor de Iris En este set se ha optado por estudiar el comportamiento del Gradient descent con dos valores diferentes distintos del coeficiente α de aprendizaje. Observamos como con α=0.2 y 100 iteraciones, el algoritmo no ha terminado de converjer, por lo tanto no ha aprendido lo suficiente de los datos si lo comparamos con el segundo ensayo, con α=2 , donde 6.4 Plan de pensiones 65 se aprecian resultados mejores, dado que el algoritmo sí ha convergido. Si siguiésemos aumentando este coeficiente, llegaríamos a un valor en el que dejaría de aprender más rápido (necesitando menos iteraciones) y pasaría a no converger, tal como se explicó en apartados anteriores. Por otro lado tenemos que los métodos de SVM ofrecen esta vez muy buenos resultados, llegando incluso a separar perfectamente los tres sets. Observamos como en esta muestra sí somos capaces de mejorar los resultados mediante el uso de métodos más sofisticados que los mínimos cuadrados o el Gradient Descent. 6.4 Plan de pensiones Este problema nos ofrece unos resultados un poco inesperados a priori. El mantenedor de orden 0, método que predice que el valor futuro será igual al actual, proporciona siempre mejores resultados que el algoritmo de mínimos cuadrados en esta muestra. Esto se produce tanto con horizontes de predicción bajos (horizonte de predicción un día) como a horizontes medios. Como ya se comentó, el mantenedor de orden cero, conocido como MOC, es una solución típicamente muy buena y hay problemas, entre los cuales incluimos este del plan de pensiones, en los que es muy difícil conseguir mejores resultados que el MOC. Esto se puede explicar con la ayuda de las figuras 5.43 y 5.44, donde se observa que la muestra k−1 , tiene una correlación muy alta con la muestra k , que es la que predecimos. Asimismo, observamos que los coeficientes de correlación de las variaciones de los datos son muy bajos, por lo que podríamos despreciar el resto de muestras, ya que no aportan mucha información más que la muestra k−1 . Esto explica por qué métodos como el MOC funcionan tan bien, ya que solo necesitan de la muestra k−1 para predecir, y ésta está suficientemente correlacionada con la muestra kcomo para que la predicción sea fiable. Por último, vemos en la curva de aprendizaje cómo el algoritmo realmente aprende a medida que crece el número de muestras con las que se alimenta. En este caso, por sencillez, solo se ha mostrado la evolución del error en el set de validación a medida que se entrena el algoritmo con más muestras, pero es suficiente para comprobar que el error baja, por lo que el algoritmo aprende correctamente de los datos. 6.5 Futuras líneas Este trabajo tenía como objetivo el estudio de las funciones de verosimilitud propuestas en el capítulo 4, así, se ha centrado en la comprobación de que estas funciones son realmente útiles sin llegar a profundizar del todo en ellas. Para mejorar los resultados, se podría incluir en estas funciones información local del problema tal y como se comenta en el capítulo 4. Esto abriría la puerta a otra familia de soluciones variando los distintos parámetros de ponderación, por lo que sería más fácil obtener mejores resultados. Asimismo, con las funciones desarrolladas y recogiendo los datos adecuados, sería posible utilizar lo estudiado para resolver otros problemas como la detección de anomalías o sistemas de recomendación. 7 Código Nota: los símbolos ¬del código corresponden al símbolo de negación ∼. 7.1 Gradient descent 1function [val_error, train_error, yp_val, yp_train, CM_train, ... CM_val] = clas_gradient_descent(xtrain, ytrain, xval, yval, ... alfa,niter,lambda,tipo_problema) 2if ¬(strcmp(tipo_problema, 'clas') || strcmp(tipo_problema, ... 'regr')) 3return %Fallo 4end 5M=size(xtrain,1); 6xtrain=[ones(M,1),xtrain]; 7xval=[ones(length(xval),1),xval]; 8[M,N]=size(xtrain); 9Mv=size(xval,1); 10 n=size(ytrain,2); 11 %Inicializacion de variables 12 theta=NaN(N,n); 13 yp_train=NaN(M,n); 14 yp_val=NaN(Mv,n); 15 for jj=1:n 16 theta(:,jj)=rand(N,1); 17 for ii=1:niter 18 if strcmp(tipo_problema,'clas') 19 h=(1./(1+exp(-xtrain*theta(:,jj)))); 20 elseif strcmp(tipo_problema,'regr') 21 h=xtrain*theta(:,jj); 22 end 23 theta(:,jj)=theta(:,jj)*(1-alfa*lambda/M)- ... (alfa/M)*xtrain'*(h-ytrain(:,jj)); 24 aux(:,ii)=theta(:,jj); 25 end 26 yp_train(:,jj)=xtrain*theta(:,jj); 27 yp_val(:,jj)=xval*theta(:,jj); 28 end 29 %Calculo de clases en base a las salidas previamente calculadas 30 if strcmp(tipo_problema,'clas') 67 68 Capítulo 7. Código 31 [yp_train, yp_val]= clases(yp_train, yp_val); 32 end 33 %Analizo los resultados de ambos sets 34 [val_error, train_error, yp_train, yp_val, CM_train, CM_val]= ... analiza_resultados(ytrain, yp_train, yval, yp_val, ... tipo_problema); 7.2 Mínimos cuadrados ordinarios (OLS) 1 2function [val_error, train_error, yp_val, yp_train]= ... normal_equation( xtrain, ytrain, xval, yval, lambda) 3if nargin<5 4lambda=1; 5if nargin<4 6return 7end 8end 9M=size(xtrain,1); 10 Mv=size(xval,1); 11 xtrain=[ones(M,1),xtrain]; 12 xval=[ones(Mv,1),xval]; 13 N=size(xtrain,2); 14 L=eye(N); 15 L(1,1)=0; 16 Ny=size(ytrain,2); 17 %Inicializacion de variables 18 theta=NaN(N,Ny); 19 yp_train=NaN(M,Ny); 20 yp_val=NaN(Mv,Ny); 21 %Calculo de salidas 22 for jj=1:Ny 23 theta(:,jj)=pinv(xtrain'*xtrain+lambda*L)*xtrain'*ytrain(:,jj); 24 yp_train(:,jj)=xtrain*theta(:,jj); 25 yp_val(:,jj)=xval*theta(:,jj); 26 end 27 %Analizo los resultados de ambos sets 28 [val_error, train_error,yp_train,yp_val]= analiza_resultados( ... ytrain, yp_train, yval, yp_val, 'regr'); 7.3 SVM 1 2function [val_error, train_error, yp_train, yp_val, CM_train, ... CM_val]= svm( xtrain, ytrain, xval, yval, id, lambda, par1, ... par2, tipo_problema, gamma) 3%Calculo y analizo resultados en el set de entrenamiento 4yp_train= svm_raw(xtrain, ytrain, xtrain, id, lambda, par1, ... par2, gamma); 7.3 SVM 69 5%Calculo y analizo resultados en el set de validacion 6yp_val=svm_raw(xtrain, ytrain, xval, id, lambda, par1, par2, ... gamma); 7%Calculo de clases en base a las salidas previamente calculadas 8if strcmp(tipo_problema,'clas') 9[yp_train,yp_val]=clases(yp_train,yp_val); 10 end 11 %Analizo los resultados de ambos sets 12 [val_error, train_error,yp_train,yp_val,CM_train,CM_val]= ... analiza_resultados(ytrain, yp_train, yval, yp_val, ... tipo_problema); 1 2function y=svm_raw(xi, yd, x, id, lambda, par1, par2, gamma) ... %xi entradas, yd salida deseada, id identificador kernell y ... x entrada actual. y es la salida actual que se calcula. 3switch id 4case 1 5case 2 6c=par1; 7d=par2; 8case 3 9sigma=par1; 10 case 4 11 ca=par1; 12 cb=par2; 13 otherwise 14 return 15 end 16 N=size(xi,1); 17 n=size(x,1); 18 tau=NaN(N,1); %tau es el vector de pesos 19 for ii=1:N 20 tau(ii)=lambda^(N-ii); 21 end 22 s=sqrt(tau); 23 D=diag(s); 24 K=NaN(N); 25 for ii=1:N 26 for jj=1:N 27 if id==1 %Lineal 28 K(ii,jj)=xi(ii,:)*xi(jj,:)'; 29 end 30 if id==2 %Polinomica 31 K(ii,jj)=(c+xi(ii,:)*xi(jj,:)')^d; 32 end 33 if id==3 %RBF 34 K(ii,jj)=exp(-(norm(xi(ii,:)-xi(jj,:))^2)'/sigma^2); 35 end 36 if id==4 %Sigmoidal 37 K(ii,jj)=tanh(ca*xi(ii,:)*xi(jj,:)'+cb); 38 end 39 end 40 end 41 nn=size(D*yd,2); 70 Capítulo 7. Código 42 Af=[0,s';s,D*K*D+(1/gamma)*eye(length(s))]; 43 bf=[zeros(1,nn);D*yd]; 44 xo=Af\bf; 45 b=xo(1,:); 46 alpha=xo(2:end,:); 47 K2=NaN(n,N); 48 for ii=1:n 49 for jj=1:N 50 if id==1 51 K2(ii,jj)=x(ii,:)*xi(jj,:)'; 52 end 53 if id==2 54 K2(ii,jj)=(1+x(ii,:)*xi(jj,:)')^d; 55 end 56 if id==3 57 K2(ii,jj)=exp(-(norm(xi(jj,:)-x(ii,:))^2)/(sigma^2)); 58 end 59 if id==4 60 K2(ii,jj)=tanh(ca*x(ii,:)*xi(jj,:)'+cb); 61 end 62 end 63 end 64 b=repmat(b,n,1); 65 y=double(b+K2*(D*alpha)); 7.4 Regresor de disimilitud 1function [yp_val,val_error,yp_train,train_error]= ... dissimilarity_regressor_fista_reg(xtrain, ytrain, xval, ... yval, gamma) 2if nargin<5 3gamma=0; 4if nargin <4 5return 6end 7end 8 9%Adecua las dimensiones 10 xtrain=xtrain'; 11 ytrain=ytrain'; 12 xval=xval'; 13 yval=yval'; 14 15 m=size(ytrain,2); 16 yp_train=NaN(m,1); 17 M=size(yval,2); 18 yp_val=NaN(M,1); 19 %Calculo resultados en el set de entrenamiento 20 for ii=1:m 21 yp_train(ii,1)= dissimilarity_regressor_fista(xtrain, ... ytrain, xtrain(:,ii), gamma); 22 end 23 %Calculo resultados en el set de test 7.5 Método Fista 71 24 for ii=1:M 25 yp_val(ii,1)= dissimilarity_regressor_fista(xtrain, ytrain, ... xval(:,ii), gamma); 26 end 27 28 %Analizo los resultados de ambos sets 29 train_error= (1/(length(ytrain))) *(yp_train-ytrain')' *... (yp_train-ytrain'); 30 val_error= (1/(length(yval))) *(yp_val-yval')' *(yp_val-yval'); 1function ... y_predict=dissimilarity_regressor_fista(xtrain,ytrain,x,gamma) 2if nargin<4 3gamma=0; 4end 5N=size(xtrain,2); 6H=ones(N,1); 7% Esta parte sirve para incorporar informacion local al algoritmo 8% for ii=1:N 9% H(ii,1)=(1/norm(x-xtrain(:,ii)))^2; 10 % if H(ii,1)==Inf 11 % H(ii,1)=1000; 12 % end 13 % end 14 A=[xtrain;ones(1,N)]; 15 b=[x;1]; 16 [¬,lambda_opt]=Fista_Method(H,gamma,A,b); 17 y_predict=ytrain*lambda_opt; 18 end 7.5 Método Fista 1% Esta funcion obtiene u que minimiza 2% J=(1/2)*u'*(u./T) + alpha*sum(abs(u)); 3% Sujeto a A*u=b; 4% 5% Notese que T es un vector !! 6 7function [x,u,J,iter]=Fista_Method(T,alpha,A,b,x_inic) 8 9 10 n=size(A,1); 11 12 if (nargin==4) 13 x=zeros(n,1); 14 else 15 x=x_inic; 16 end 17 18 B_T_sqrt=repmat(sqrt(T)',n,1); 19 ATsqrt=A.*B_T_sqrt; 72 Capítulo 7. Código 20 H=ATsqrt*ATsqrt'; % H es igual a A*diag(T)*A' pero se calcula ... sin tener 21 % que montar la matriz diag(T). De esta ... forma, el numero 22 % de operaciones es del orden de N*nx, ... hacerlo directamente 23 % daria algo que crece con N^2. 24 25 R=chol(H)'; % H=R*R'; 26 S=R\eye(n); 27 28 As=S*A; 29 bs=S*b; 30 31 iter=0; 32 33 GoOn=1; 34 35 t0=1; 36 x_old=x; 37 y=x; 38 while (GoOn) 39 40 t1=0.5*(1+sqrt(1+4*t0^2)); 41 42 u=c_u_Dual(As'*y,T,alpha); 43 x_new=y-(As*u-bs); 44 y=x_new+((t0-1)/t1)*(x_new-x_old); 45 t0=t1; 46 x_old=x_new; 47 iter=iter+1; 48 if (norm(A*u-b)<1e-4) 49 GoOn=0; 50 end 51 end 52 x=x_new; 53 54 J=(1/2)*u'*(u./T) + alpha*sum(abs(u)); 1function u=c_u_Dual(c,T,alpha) 2 3N=length(T); 4u=zeros(N,1); 5 6% case c>alpha; 7c_dif=c-alpha; 8Ip=c_dif>0; 9u(Ip)=T(Ip).*c_dif(Ip); 10 11 % case c<-alpha; 12 c_sum=c+alpha; 13 In=c_sum<0; 14 u(In)=T(In).*c_sum(In); 7.6 Predicción intervalar 73 7.6 Predicción intervalar 1function interval_alfa_table(xtrain,ytrain,xval,yval,alfa,cc,gama) 2m=size(xval,1); 3lm=NaN(m,length(cc)); %longitud media (del intervalo) 4for gamma=gama 5for c=cc 6pc=0; 7for ii=1:m 8tic 9i1(ii,1)= interval_alfa_quantile2(xtrain, ytrain, ... xval(ii,:), (1-alfa)/2, c, gamma); 10 i2(ii,1)= interval_alfa_quantile2(xtrain, ytrain, ... xval(ii,:), 1-((1-alfa)/2), c, gamma); 11 time(ii,1)=toc; 12 if yval(ii)≥i1(ii,1) && yval(ii)≤i2(ii,1) 13 pc=pc+1; 14 end 15 lm(ii,1)=i1(ii,1)-i2(ii,1); 16 end 17 pc=pc/m; %Porcentaje de predicciones correctas 18 savename=['c' num2str(c) 'gamma' num2str(gamma) 'pred' ... num2str(alfa)]; 19 savename=savename(savename6='.') 20 savetime=time(:,1); 21 savelm=lm(:,1); 22 savepc=pc(1); 23 savei1=i1(:,1); 24 savei2=i2(:,1); 25 save(savename, 'savetime','savelm','savepc','savei1',... 'savei2','alfa') 26 end 27 end 1function res=interval_alfa_quantile2(xtrain,ytrain,xk,alfa,c,gamma) 2prec=0.005; %Precision en el calculo de alfa 3paso=0.1; 4if nargin<6 5gamma=0; 6end 7naux=1; 8niter=2; 9integralz= int_simpson_fista(@Jgamma_fista, 0, 30, xtrain', ... ytrain', xk', gamma, c); 10 if integralz==0 11 'ERROR. INTEGRAL=0' 12 end 13 for cc=c 14 a=0; 15 integral0= int_simpson_fista(@Jgamma_fista, a, a+paso, ... xtrain', ytrain', xk', gamma, cc); 16 while (integral0/integralz<alfa-prec || ... integral0/integralz>alfa+prec) 80 Capítulo 7. Código 5[M,N]=size(x); 6%Inicializacion de variables 7xnew=[]; 8V_DATA=ones(M,1); 9xprctile03=NaN(N,1); 10 xprctile97=NaN(N,1); 11 min_x=NaN(N,1); 12 max_x=NaN(N,1); 13 for jj=1:N 14 xprctile03(jj)=percentil(x(:,jj),0.05); 15 xprctile97(jj)=percentil(x(:,jj),0.95); 16 if percentiles==1 17 for ii=1:M 18 if x(ii,jj)>xprctile97(jj) || x(ii,jj)<xprctile03(jj) 19 x(ii,jj)=NaN; 20 V_DATA(ii)=0; 21 continue %No alimento el algoritmo con outliers 22 end 23 end 24 end 25 min_x(jj)=min(x(:,jj)); 26 aux=x(:,jj)-min_x(jj); 27 max_x(jj)=max(aux); 28 xnew=[xnew,aux/max_x(jj)]; 29 end 30 V_DATA=logical(V_DATA); 31 xnew=xnew(V_DATA,:); 32 33 end 1function x=desnormaliza(xnew,max_x,min_x) 2 3[M,N]=size(xnew); 4x=NaN(M,N); 5for jj=1:N 6x(:,jj)=xnew(:,jj)*max_x(jj)+min_x(jj); 7end 8 9end Índice de Figuras 2.1 Ejemplo problema de regresión 4 2.2 Ejemplo problema de clasificación binaria 5 2.3 Ejemplo problema de clasificación multiclase 6 2.4 Clasificador de SVM 11 2.5 Iteraciones del algoritmo k-means 13 2.6 Ejemplo de un árbol de decisión clasificador 14 2.7 Esquema de una red neuronal 15 3.1 Concentraciones de proceso químico 18 3.2 Evolución del valor liquidativo del plan 19 3.3 Imágenes a tratar 19 3.4 Empleo de los sets de entrenamiento 22 3.5 Curva ideal 23 3.6 Curva con sobreajuste 23 3.7 Curva con falta de ajuste 24 5.1 Luna frente a fondo. K-means 34 5.2 Saturno frente a fondo. K-means 34 5.3 Triángulo frente a fondo. K-means 35 5.4 Kernel lineal. λ=1.γ=1. Set de validación 36 5.5 Kernel lineal. λ=1.γ=1. Set de ensayo 37 5.6 Kernel polinomial. λ=1. c=1. d=2. γ=1. Set de validación 37 5.7 Kernel polinomial. λ=1. c=1. d=2. γ=1. Set de ensayo 38 5.8 Kernel polinomial. λ=1. c=1. d=4. γ=1. Set de validación 38 5.9 Kernel polinomial. λ=1. c=1. d=4. γ=1. Set de ensayo 39 5.10 Kernel RBF. λ=1.σ=0.5.γ=100. Set de validación 39 5.11 Kernel RBF. λ=1.σ=0.5.γ=100. Set de ensayo 40 5.12 Kernel RBF. λ=1.σ=1.5.γ=100. Set de validación 40 5.13 Kernel RBF. λ=1.σ=1.5.γ=100. Set de ensayo 41 5.14 Kernel RBF. λ=1.σ=5.γ=100. Set de validación 41 5.15 Kernel RBF. λ=1.σ=5.γ=100. Set de ensayo 42 5.16 OLS. λ=0. Set de validación 43 5.17 OLS. λ=0. Set de ensayo 43 5.18 OLS. λ=100. Set de validación 44 81 82 Índice de Figuras 5.19 OLS. λ=100. Set de ensayo 44 5.20 Gradient descent. Set de validación 45 5.21 Gradient descent. Set de ensayo 45 5.22 Regresor verosimilitud. γ=0.05. Set de validación 46 5.23 Regresor verosimilitud. γ=0.05. Set de ensayo 46 5.24 Predicción intervalar. c=10. γ=0.1.α=0.9. Set de validación 48 5.25 Predicción intervalar. c=100. γ=0.α=0.9. Set de validación 48 5.26 Predicción intervalar. c=100. γ=0.15.α=0.9. Set de validación 49 5.27 Predicción intervalar. c=500. γ=0.1.α=0.9. Set de validación 49 5.28 Predicción intervalar. c=1000. γ=0.α=0.9. Set de validación 50 5.29 Predicción intervalar. c=100. γ=0.05.α=0.9. Set de validación 50 5.30 Predicción intervalar. c=100. γ=0.05.α=0.85. Set de validación 51 5.31 Predicción intervalar. c=100. γ=0.05.α=0.85. Set de ensayo 51 5.32 Predicción intervalar. c=100. γ=0.05.α=0.95. Set de validación 52 5.33 Predicción intervalar. c=100. γ=0.05.α=0.95. Set de ensayo 52 5.34 MOC. r=1. Set de validación 56 5.35 MOC. r=1. Set de ensayo 57 5.36 MOC. r=10. Set de validación 57 5.37 MOC. r=10. Set de ensayo 58 5.38 OLS. λ=0. d=10. r=1. Set de validación 58 5.39 OLS. λ=0. d=10. r=1. Set de ensayo 59 5.40 OLS. λ=0. d=10. r=10. Set de validación 59 5.41 OLS. λ=0. d=10. r=10. Set de ensayo 60 5.42 Curva aprendizaje OLS. λ=0. d=10. r=1. Set de validación 60 5.43 Coeficiente de correlación de los datos de bankia 61 5.44 Coeficiente de correlación de las variaciones de los datos de bankia 61 Índice de Tablas 3.1 Esquema de matriz de confusión 25 5.1 Resultados SVM para concentraciones químicas 36 5.2 Resultados OLS para concentraciones químicas 42 5.3 Resultados regresor disimilitud para concentraciones químicas 46 5.4 Resultados predictor intervalar para concentraciones químicas 47 5.5 Resultados Gradient descent para flor de iris 53 5.6 Gradient descent. λ=0.α=0.2. Iteraciones =100. Set de validación 53 5.7 Gradient descent. λ=0.α=0.2. Iteraciones =100. Set de ensayo 53 5.8 Gradient descent. λ=0.α=2. Iteraciones =100. Set de validación 54 5.9 Gradient descent. λ=0.α=2. Iteraciones =100. Set de ensayo 54 5.10 SVM. Kernel lineal. λ=1.γ=1. Set de validación 54 5.11 SVM. Kernel lineal. λ=1.γ=1. Set de ensayo 54 5.12 SVM. Kernel polinómico. λ=1.γ=1.c=1.d=2. Set de validación 54 5.13 SVM. Kernel polinómico. λ=1.γ=1.c=1.d=2. Set de ensayo 55 5.14 SVM. Kernel RBF. λ=1.γ=100.σ=1. Set de validación 55 5.15 SVM. Kernel RBF. λ=1.γ=100.σ=1. Set de ensayo 55 5.16 Resultados OLS para concentraciones químicas 56 83 Bibliografía [1] Fernando Sancho Caparrini, Introducción al aprendizaje automático,http:// www.cs. us.es/ ~fsancho/ ?e=75, Consultado 03-05-2017. [2] R.A. Fisher, Iris species,https:// www.kaggle.com/ uciml/ iris, Recuperado 20-032017. [3] Teodoro Álamo, Modeling uncertainity. the one-dimensional case., Tech. report, Universidad de Sevilla. [4] ,Optimization strategies in systems engineering, Tech. report, Universidad de Sevilla, 2014. [5] , Ingeniería de control, Clase de universidad, 2016. [6] Teodoro Álamo y J.M. Bravo, Weighted least squares support vector machines, Tech. report, Universidad de Sevilla, 2015. [7] ,Interval predictor based on dissimilarity functions, Tech. report, Universidad de Sevilla, 2016. [8] Bernard Marr, A short history of machine learning – every manager should read,https:// www.forbes.com/ sites/ bernardmarr/ 2016/ 02/ 19/ a-short-history-ofmachine-learning-every-manager-should-read/ #538507b415e7, Consultado 11-032017. [9] Stephen Marsland, Machine learning : an algorithmic perspective, 2ªed., Chapman and Hall/CRC, 2014. [10] Andrew Ng, Aprendizaje automático,https:// www.coursera.org/ learn/ machinelearning/ , Consultado 01-05-2017. [11] George Box y Gwilym Jenkins, Chemical concentration readings,https:// datamarket. com/ data/ set/ 232f/ chemical-concentration-readings#!ds=232f&display=line, Recuperado 11-03-2017. [12] Daniel Rodriguez y Teodoro Álamo, Identificación mediante el método de los mínimos cuadrados,http://control-class.com/ Tema_2/ Slides/ Tema_2_ IdentificacionMinimosCuadrados.pdf , Consultado 03-05-2017. 85