PROPÓSITO: La siguiente unidad tiene como propósito principal el análisis de carácteristicas para implementar los algoritmos de aprendizaje basádo en las caracteristicas
En matemáticas, estadísticas, ciencias empíricas, ciencia de la computación, o economía, optimización matemática (o bien, optimización o programación matemática) es la selección del mejor elemento (con respecto a algún criterio) de un conjunto de elementos disponibles.1
En el caso más simple, un problema de optimización consiste en maximizar o minimizar una función real (función objetivo) eligiendo sistemáticamente valores de entrada (tomados de un conjunto permitido) y computando el valor de la función. La generalización de la teoría de la optimización y técnicas para otras formulaciones comprende un área grande de las matemáticas aplicadas. De forma general, la optimización incluye el descubrimiento de los "mejores valores" de alguna función objetivo dado un dominio definido, incluyendo una variedad de diferentes tipos de funciones objetivo y diferentes tipos de dominios.
Optimización hace referencia a la acción y efecto de optimizar. En términos generales, se refiere a la capacidad de hacer o resolver alguna cosa de la manera más eficiente posible y, en el mejor de los casos, utilizando la menor cantidad de recursos.
En las últimas décadas, el término optimización se ha vinculado al mundo de la informática. Sin embargo, es un concepto que también se utiliza en las matemáticas, en la gestión de procesos y la economía.
La optimización matemática es la elección del mejor elemento, dentro de un grupo más amplio de elementos disponibles. Estos problemas, que implican el uso de fórmulas para calcular valores óptimos, son llamados problemas de optimización, y forman parte de las matemáticas aplicadas.
La optimización matemática tiene varios subcampos, entre los que destacan:
La optimización combinatoria o univariada, encargada de estudiar los problemas en los que el conjunto de soluciones puede ser reducido a uno, o puede ser discreto (divisible un número finito de veces)
Optimización dimensional infinita o multivariada: estudia los problemas cuyas soluciones se encuentran en un subconjunto de espacio de dimensión infinita (como por ejemplo, las funciones).
Heurísticas y Metaheurísticas: se encargan de hacer suposiciones sobre un problema de optimización.
Otros subcampos son programación lineal, no lineal, cónica, de cono de segundo orden, geométrica, con enteros, semidefinida, cuadrática, fraccionaria, dinámica, entre otros.
Es un método de optimización univariada, en donde se hace el supuesto de que la función a optimizar cumple los requerimientos de concavidad/convexidad, unimodal y continua. Se trata del método más simple entre el resto de los métodos de optimización univariada, por lo que es un buen punto de partida.
En el método de búsqueda exhaustiva, el óptimo de la función es encerrado al calcular los valores de la función de puntos igualmente espaciados (vea figura). Usualmente, la búsqueda comienza desde un límite inferior de la variable y tres valores de la función consecutivos son comparados al mismo tiempo basado en el supuesto de unimodalidad de la función. Basado en el resultado de la comparación, la búsqueda se termina o continúa reemplazando uno de los tres puntos por un nuevo punto. La búsqueda continua hasta que el mínimo es encerrado.
En la optimización multivariable, la función objetivo que se trabajará depende de distintas variables. En estos casos, la implementación de los algoritmos considerará las mismas condiciones para cada una de las variables (incluidas las restricciones). Existen distintos algoritmos de optimización para realizar optimiación multivariable. A continuación, se describen algunos de los cuales podemos aplicar en python.
Simplicial Homology Global Optimization
Creo que la mejor forma de explicar lo que es el gradiente, es diciendo que es una generalización de la derivada. En matemáticas, la derivada de una función mide la rapidez con la que cambia el valor de dicha función matemática, según cambie el valor de su variable independiente. La derivada de una función es un concepto local, es decir, se calcula como el límite de la rapidez de cambio media de la función en cierto intervalo, cuando el intervalo considerado para la variable independiente se torna cada vez más pequeño. Por ello se habla del valor de la derivada de una función en un punto dado.
En muchas de las técnicas de aprendizaje automático, el «aprendizaje» consiste en encontrar qué parámetros W minimizan la función de costo. Esto es así para la regresión lineal y polinómica, la regresión logística, el deep learning, etc. El gradiente descendiente es un método de optimización numérica para estimar los mejores coeficientes, descendiendo al valor minimo los gradientes evaluados para una función.
Varios ejemplos de implementación del gradiente pueden encontrarse aquí y aquí.
En el siguiente código podremos encontrar un algoritmo de estimación de gradientes en Python. Analicémoslo