Introducción al Machine Learning #8 - Algoritmos de Regresión
Introducción:
El problema de Regresión:
Regresión Lineal:
Regresión Lineal Simple:
Regresión Lineal Multiple:
Rectas De Regresión:
- La recta de regresión de Y sobre X:
- La recta de regresión de X sobre Y:
Aplicaciones de la Regresión Lineal:
Otros algoritmos de regresión:
- Árboles de regresión (Ej: Random Forest).
- Maquinas de Vectores de Soporte para Regresión (SVR).
- Regresión no lineal.
- K Vecinos más cercanos.
- Ridge Regressión
Un ejemplo de Regresión Lineal:
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()
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.
-
gran aporte!
Deja una respuesta
Me toca agradecerte Luis! excelente articulo, muy claro!