Regresión lineal usando el método de descenso de gradiente [Explicado con ejemplo de codificación]
Publicado: 2020-12-21El aprendizaje automático sigue dando vueltas sin importar si aspira a ser desarrollador de software, científico de datos o analista de datos. Para hacer esfuerzos serios en la regresión lineal, debe estar bien versado en Python. Comenzar en una fase inicial puede ser una tarea tediosa, este artículo lo ayudará a comprender la regresión más a fondo.
El método de descenso de gradiente se opta en varias iteraciones debido a las técnicas de optimización que ofrece. Con el algoritmo es factible reducir el tamaño, por ejemplo, regresión logística y red neuronal. Antes de comenzar con el gradiente, echemos un vistazo a la regresión lineal.
Leer: Algoritmos de aprendizaje automático para ciencia de datos
Tabla de contenido
¿Qué es la regresión lineal?
Es el enfoque lineal que se toma hacia el modelado de la relación entre una variable dependiente y una o más variables independientes. La relación lineal entre dichas variables se expresaría en formato de ecuación ay=mx+b.
Es un algoritmo de aprendizaje automático monitoreado que mejorará su curva de aprendizaje a partir de una variable dependiente dada x e y como el otro responsable de causar un efecto. Esta naturaleza ayuda a predecir los valores y factores de certeza para x e y.
¿Qué es el descenso de gradiente?
El uso de la regresión de gradiente implica optimizar el algoritmo utilizado para encontrar los valores de los parámetros requeridos de una función que permite minimizar directamente el costo de una función.

Entendamos el concepto con un escenario, imagina que quieres descender de un fuerte en un entorno completamente oscuro. Durante esto, supongamos que está completamente discapacitado y necesita encontrar la distancia más corta y fácil para volver a bajar. El descenso de pendiente será el recurso utilizado para encontrar la forma optimizada de llegar a su destino. Con una entrada direccional básica, el algoritmo sería posible trazar y sugerir la mejor ruta.
El gradiente es uno de los algoritmos más utilizados y ampliamente aceptados en el aprendizaje automático; también se considera que sienta las bases para dominar el aprendizaje automático en las etapas iniciales.
Para una mejor aproximación del gradiente, intentemos implementarlo con un código en una muestra, trabajando en python con la ayuda de NumPy.
de importación NumPy *
# y = mx + b
# m es la pendiente, b es la intersección con el eje y
def calcular_error_para_línea_puntos_dados(b, m, puntos):
error total = 0
para i en el rango (0, len (puntos)):
x = puntos[i, 0]
y = puntos[i, 1]
error total += (y – (m * x + b)) ** 2
return totalError / float(len(puntos))
def step_gradient(b_current, m_current, points, learningRate):
b_gradiente = 0
gradiente_m = 0
N = float(len(puntos))
para i en el rango (0, len (puntos)):
x = puntos[i, 0]
y = puntos[i, 1]
b_gradiente += -(2/N) * (y – ((m_actual * x) + b_actual))
m_gradiente += -(2/N) * x * (y – ((m_corriente * x) + b_corriente))
nuevo_b = b_actual – (tasa de aprendizaje * b_gradiente)
nuevo_m = m_actual – (tasa de aprendizaje * m_gradiente)
devolver [nuevo_b, nuevo_m]
def gradiente_descendente_corredor(puntos, inicio_b, inicio_m, tasa_de_aprendizaje, num_iteraciones):
b = inicio_b

m = m_inicial
para i en el rango (num_iteraciones):
b, m = step_gradient(b, m, array(points), learning_rate)
volver [b, m]
def ejecutar():
puntos = genfromtxt(“datos.csv”, delimitador=”,”)
tasa_de_aprendizaje = 0.0001
initial_b = 0 # valor inicial de intercepción en y
initial_m = 0 # cálculo de la pendiente inicial
num_iteraciones = 1000
imprime “Iniciando descenso de gradiente en b = {0}, m = {1}, error = {2}”.format(initial_b, initial_m, compute_error_for_line_given_points(initial_b, initial_m, points))
imprimir "Corriendo..."
[b, m] = gradiente_descent_runner(puntos, initial_b, initial_m, learning_rate, num_iterations)
imprimir "Después de {0} iteraciones b = {1}, m = {2}, error = {3}". formato (núm_iteraciones, b, m, calcular_error_para_línea_puntos_dados (b, m, puntos))
si __nombre__ == '__principal__':
correr()
Código de referencia
Esta es una representación visual del programa de búsqueda de gradientes donde los problemas se resuelven en la regresión lineal trazando los puntos en una sola línea. El código es una demostración de cómo funciona y ayuda a establecer varios puntos a lo largo de una línea. El descenso de gradiente intenta encontrar los mejores valores para estos parámetros en relación con una función de error.
El código contiene una función peculiar etiquetada como 'ejecutar'. Ayuda a definir un conjunto de parámetros utilizados en el algoritmo para realizar un conjunto inicial de predicciones basadas en el comportamiento de las variables y la pendiente de la línea. Los otros factores involucran el número de iteraciones requeridas para lograr el descenso del gradiente en el formato que se muestra a continuación:
initial_b = 0 # valor inicial de intercepción en y
initial_m = 0 # cálculo de la pendiente inicial
num_iteraciones = 1000
Puede comprender fácilmente que el método Gradiente es bastante simple y directo. Una vez que comprenda sus capacidades de funcionamiento, la única parte en la que debe concentrarse es en el costo de la función que le interesa optimizar.

El objetivo es hacer esfuerzos continuos para hacer diferentes iteraciones para cada uno de los valores de las variables, evaluar sus costos y crear nuevas variables que inicien un mejor y más bajo costo en el programa.
Debe leer: Preguntas de la entrevista de aprendizaje automático
Consejos para el descenso de gradiente
1. Tasa de aprendizaje
El protocolo de optimización ayuda a reducir el valor de la tasa de aprendizaje incluso en decimales más pequeños, intenta barajar diferentes valores adecuados para la plataforma y luego opta por el mejor valor de trabajo. El aprendizaje puede ser mucho más rápido y fructífero, para que eso suceda, asegúrese de limitar la cantidad de pasadas a través de cada conjunto de datos. El número ideal sería entre 1 y 10.
2. Trazar Costo Medio
El tiempo de entrenamiento para cada instancia del conjunto de datos puede causar un retraso debido al tiempo adicional que se toma durante la ejecución del algoritmo. Para obtener mejores resultados, elija el promedio sobre 100 o 1000 para tener mejores probabilidades de encontrar una mejor tendencia de aprendizaje para el algoritmo.
Resumen
En este artículo aprendiste sobre el gradiente y cómo crear dicho algoritmo, esto ayuda a hacer predicciones precisas y más efectivas con un modelo de regresión aprendido. Para comprender en un nivel mucho más completo y profundo con escenarios de casos reales, inscríbase con upGrad. Ofrecemos cursos seleccionados especialmente estructurados para aspirantes a científicos de datos y solicitantes de aprendizaje automático.