Ejemplos de Machine Learning para el uso y aplicación de regresiones
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
Jason Yair Corona Ventura 2890c5ed71 Avance 4 years ago
fig Figuras 4 years ago
Batchgradientdecent.py Descenso por gradiente en lotes 4 years ago
Descensogradientecomp.py Descenso por Gradiente 4 years ago
Earlystop.py Metodo de detención temprana 4 years ago
README.md Avance 4 years ago
RegresionElastic.py Regresión Elastica 4 years ago
RegresionLasso.py Regresion Lasso 4 years ago
RegresionRidge.py Modelo lineal regularizado Ridge 4 years ago
Regresionlinealmatricial.py Ejemplo de regresion lineal 4 years ago
regresionpolinomial.py Ejemplo de regresión polinomial 4 years ago
stochasticgradientdescent.py Descenso por gradiente estocastico 4 years ago

README.md

Python machine learning

This repository has example codes about the reading found on Chapter 4 "Training models" from the book Hands-On Machine Learning with Scikit-Learn and TensorFlow by Aurélien Géron


Usage

Codes are written on python and can be executed by both python 2 and 3 as long as the libraries are available.

Report

Siguiendo el orden que se encuentra en el libro, Comenzamos con el analisis de regresión lineal que utiliza la función de costo mostrada en la siguiente figura:
Función de costo para regresión lineal matricial
Se utilizan como datos originales para las funciones lineales la ecuación: 4 + 3 * X agregandole un error con distribución normal. El primer ejemplo "Regresionlinealmatricial.py", entrega el resultado mostrado a continuación:
Resultado al implementar Regresion lineal
Llegando la regresión a la ecuación 3.96263358 + 3.02663111 * X siendo esta muy cercana a la original.

Ya que las operaciones matriciales necesarias para resolver una regresión lineal son en general muy lentas y complejas de computar, se muestra la opción de optimizar el algoritmo mendiante una opción más optima: descenso por gradiente. Este método utiliza el vector gradiente de la función de costo original, que se muestra a continuación:
Función de costo gradiente
Uno de los parámetros más importantes dentro del método de descenso por gradiente es el tamaño de los pasos que se dan entre cada descenso, ya que si es muy pequeño el algoritmo necesita muchas iteraciones para converger, mientras que si es muy alto, podría diverger al saltar el valle donde se encuentra el mínimo.

Para ilustrar lo anterior y como primero ejemplo, se muestra desde el código "Descensogradientecomp.py", el comportamiento obtenido al utilizar diferentes valores de paso "step": Descenso por gradiente con diferentes pasos En la figura anterior se puede observar la aproximación a los datos, como se esperaba, el comportamiento para n muy pequeño provoca que se necesiten muchas iteraciones para alcanzar el resultado, en la segunda un acercamiento optimo, mientras que en la tercera opción, un crecimiento demasiado grande resultando en sobrepaso.

A continuación, se presenta un metódo optimizado de descenso por gradiente, ya que el anterior utiliza todo el conjunto de datos para computar su resultado, se vuelve lento de ejecutar, como una primera alternativa, se presenta el descenso por gradiente estocástico que en lugar de tomar todo el arreglo, toma aleatoriamente una muestra de los datos a la vez en múltiples ocasiones, lo que le permite utilizar menos memoria por iteración volviendose más fácil de ejecutar. En el mismo código "Regresionlinealmatricial.py", en la siguiente sección, se encuentra un ejemplo de esta variación de descenso por gradiente, el resultado se muestra a continuación. Descenso por gradiente estocástico

El último ejemplo de descenso por gradiente, es una combinación de los dos anteriores, descenso por gradiente por mini lotes, en lugar de iterar a través de todo el arreglo de datos o de sólo un punto, se itera sobre subconjuntos de los datos lo que otorga ventajas en cuestiones de optimización matricial. En la última sección del código, se encuentra esta implementación y la comparación entre los 3 metódos, se muestra a continuación. Comparación entre tipos de descenco por gradiente
En la figura se puede apreciar que todos los metódos se aproximan a los valores originales de la ecuación; 4 y 3. El metodo de lote, tiene el comportamiento más estable mientras que los otros dos oscilan entre sus cambios de valores hasta establecerse en un punto.

Para casos en que los datos a analizar, no puedan ser aproximados por una linea recta, se muestran metódos alternos de solución, comenzando por la regresión polinómica. Este metódo utiliza la misma metodología que la regresión lineal con la diferencia que agrega potencias extras según el grado del polinomio a cada caracteristica. Para los siguientes polinomios, la ecuación que origina los datos es: 0.5 * X^2 + X + 2 agregando nuevamente ruido aleatorio a los datos. Los resultados obtenidos con la regresión polinomica que se encuentra en el código "regresionpolinomial.py" se muestran a continuación Comparación entre tipos de descenco por gradiente