Google+ Seguidores

viernes, 19 de enero de 2018

Introducción al Machine Learning #8 - Algoritmos de Regresión

Introducción: 

En el articulo anterior (Introducción al Machine Learning #7 - Algoritmos de Clasificación), hablamos de los problemas de clasificación, los distintos algoritmos que se suelen utilizar para resolver estos problemas, y realizamos un pequeño ejercicio. 

En el día de hoy, les explicare el problema de Regresión, cuales son los algoritmos más usados para resolverlos, y al final realizaremos un ejemplo sencillo.

Como hemos visto en artículos anteriores, la clasificación y regresión se consideran instancias del aprendizaje supervisado, es muy importante saber con que tipo de problema se va a tratar, ya que con ello, sabremos cuales serán los algoritmos y la configuración adecuada que debamos tomar.

El problema de Regresión:

La regresión es un proceso que trata de estimar la relación entre dos variables (La variable independiente y la dependiente). En los problemas de regresión, tratamos de predecir un valor continuo, ejemplo: Dado el tamaño de una casa, predecir su precio (valor real). 

Más específicamente, la regresión nos ayuda a entender como el valor de la variable dependiente varia al cambiar una de las variables independientes.

Mientras que en la clasificación se trata de predecir valores discretos para Y (Ej: 1,2,3 y 4), en la regresión se predicen valores continuos (Ej: 222.6, 434.87, 300, 587 ...).

Regresión Lineal:

Existen muchos modelos para la regresión, pero el más común es el de Regresión Lineal.

La Regresión Lineal es un modelos matemático, que se utiliza para aproximar la relación de dependencias entre una variable dependiente Y, una variable independiente X, y un termino aleatorio ε.

La regresión lineal es fácil de entender ya que podemos representarla como una simple ecuación lineal:


Donde:

: Variable dependiente o regresando.
Variables independientes o regresores.
Parámetros, miden la influencia que las variables independientes tienen sobre el regrediendo.

A continuación te mostrare una imagen de un ejemplo de regresión lineal, con una variable dependiente y una variable independiente.



La linea roja, es el modelo en acción, el modelo trata de ajustarse lo mejor posible, trazando la recta.

Existen diferentes tipos de regresión lineal, entre ellos:

Regresión Lineal Simple:

Donde se maneja un variable independiente, por lo que sólo cuenta con 2 parámetros. Su forma es:


Regresión Lineal Multiple:

Maneja varias variables independientes. Cuenta con varios parámetros y se expresa de la siguiente manera:


Rectas De Regresión:

Las rectas de regresión son las rectas que mejor se ajustan al diagrama de dispersión (puntos). Son posibles dos rectas de máximo ajuste:

  1. La recta de regresión de Y sobre X: 
  2. La recta de regresión de X sobre Y: 
En artículos posteriores, profundizaremos más en estos tipos de regresión lineal.

Aplicaciones de la Regresión Lineal:

La regresión lineal como modelo estadístico, tiene muchos usos y aplicaciones como determinar si un conjunto de datos han aumentado o decremento en un determinado periodo. ¿Que datos? Bien puede ser el  precio del petroleo, el valor de acciones, el Producto Bruto de un país, las ventas de una empresa, entre otros.

Otros algoritmos de regresión:

A parte de la regresión lineal, tenemos algoritmos como :
  1. Árboles de regresión (Ej: Random Forest).
  2. Maquinas de Vectores de Soporte para Regresión (SVR).
  3. Regresión no lineal.
  4. K Vecinos más cercanos.
  5. Ridge Regressión
Entre otros.

Un ejemplo de Regresión Lineal:

Muy bien, ya disponemos de suficiente conocimiento para realizar nuestro primer ejemplo.

El ejemplo lo realizaremos utilizando el modulo Scikit-Learn y Matplotlib.

En el ejemplo de hoy, ajustaremos a un modelo de regresión lineal, para calcular las ventas estimadas para el periodo 7 (Mes de Julio).

Supongamos que tenemos una pequeña tienda que vende computadoras, la cual en enero vendió 7000 unidades, en marzo 9000 unidades, en febrero 5000 unidades, en abril 11000 unidades, en mayo 10000 unidades y en junio 13000 unidades. Como podemos ver, hay altos y bajas. Lo que quiero hacer es calcular un promedio de las ventas que se realizaran para el mes de julio (periodo 7). Para lograr mi objetivo, utilizare el Aprendizaje Automático.

import numpy as np
import matplotlib.pyplot as pl
from sklearn import linear_model

# Datos para ajustar al modelo
x1=[[1],[2],[3],[4],[5],[6]]
y1=[7000, 9000, 5000, 11000, 10000, 13000]

x=[[1],[2],[3],[4],[5],[6], [7]]

# Creamos el objeto LinearRegression (Modelo)
regr = linear_model.LinearRegression()

# Ajustamos a nuestro modelo con los datos
regr.fit(x1,y1)


# Imprimimos el Coeficiente estimado para el problema
print('Coeficiente: \n', regr.coef_, regr.intercept_)
# Utilizamos matplotlib para mostrar el diagrama en pantalla
pl.figure(1)

# El método title asigna un nombre al grafico
# Utilizamos el metodo predict para predecir las futuras ventas
pl.title("Las Ventas para el periodo 7 es equivalente a %s" % regr.predict([[7]]))

# El método plot nos permite trazar la linea
pl.plot(x, regr.predict(x), color='black', linewidth=2)

# El método scatter genera los puntos que conforman al diagrama de dispersión
pl.scatter(x1, y1, s=40, marker='o', color='k')

# Mostramos el punto que predice el modelo (Punto azul)
pl.scatter(7, regr.predict([[7]]))

# Describimos los ejes del gráfico
pl.xlabel('X') pl.ylabel('Y')

# Asignamos los limites del gráfico
pl.xlim(.0, 8.0) pl.ylim(.0, 19000)

# Mostramos el gráfico en pantalla
pl.show()

Coeficiente: 
 [ 1114.28571429] 5266.66666667













Perfecto, como pueden observar, no he introducido una gran cantidad de datos ya que es ejemplo sencillo, pero recuerden que entre más datos mejor.

Muy bien, mi objetivo era determinar cuantas unidades se venderían en el periodo 7 (mes de Julio), para ello ajuste a mi modelo con el numero de unidades vendidas en los meses anteriores. El resultado fue "13066" unidades, lo que me dice que las ventas para Julio, incrementaran en un 0,5% con respecto al mes pasado.

Los puntos en el diagrama, representan las unidades vendidas en cada mes, el punto azul es el punto que a predicho el modelo.

Para que el modelo sea más eficiente y más preciso, se podrían cambiar parámetros y por supuesto, agregar muchos más datos. Pero eso, lo dejaremos para otro día.

Esto esta bien por ahora, lo explique de manera sencilla y clara, pero siempre surgen dudas, así que si tienes dudas, no olvides preguntar.

Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.

No hay comentarios :
Write comentarios

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

Powered by Blogger .