Funciones de pérdida en Machine Learning

0

Funciones de pérdida en Machine Learning y optimizaciones

Las máquinas aprenden mediante una función de pérdida. Es un método para evaluar qué tan bien un algoritmo específico modela los datos otorgados.

Si las predicciones se desvían demasiado de los resultados reales, la función de pérdida en Machine Learning arrojaría un número muy grande. Poco a poco, con la ayuda de alguna función de optimización, la función de pérdida en Machine Learning aprende a reducir el error en la predicción.

En este artículo analizaremos varias funciones de pérdida y sus aplicaciones en el dominio de Machine Learning / aprendizaje profundo.

No existe una función de pérdida para todos los algoritmos en Machine Learning. La elección de una función de pérdida para un problema específico, como el tipo de algoritmo de Machine Learning elegido, la facilidad de cálculo de las derivadas y, en cierta medida, el porcentaje de valores atípicos en el conjunto de datos son diversos.

En general, las funciones de pérdida pueden clasificarse en dos categorías principales dependiendo del tipo de tarea de aprendizaje con la que estamos tratando:  Pérdidas por regresión y Pérdidas por clasificación.

Pérdidas por clasificación

En la clasificación, estamos tratando de predecir el resultado del conjunto de valores categóricos finitos, es decir, dado un gran conjunto de datos de dígitos escritos a mano, categorizándolos en uno de 0-9 dígitos.

Pérdidas por regresión

La regresión, por otro lado, trata de predecir un valor continuo, por ejemplo, el área del piso , el número de habitaciones, el tamaño de las habitaciones, predecir el precio de la habitación.


Funciones de pérdida en Machine Learning

Pérdidas de regresión

Error cuadrático medio / Pérdida cuadrática / Pérdida L2

Fórmula matemática :

 

Como su nombre indica, el error cuadrático medio  se mide como el promedio de la diferencia al cuadrado entre las predicciones y las observaciones reales. Solo le preocupa la magnitud promedio del error, independientemente de su dirección.

Sin embargo, debido a la cuadratura, las predicciones que están muy lejos de los valores reales son penalizadas fuertemente en comparación con las predicciones menos desviadas.

Además podemos decir que MSE tiene buenas propiedades matemáticas que hacen que sea más fácil calcular gradientes.

 import numpy as np
 y_hat = np.array ([0.000, 0.166, 0.333]) 
 y_true = np.array ([0.000, 0.254, 0.998])
 def rmse (predictions, targets): 
     differences = predictions - targets 
     differences_squared = differences ** 2 
     mean_of_differences_squared = differences_squared.mean () 
     rmse_val = np.sqrt (mean_of_differences_squared) 
     return rmse_val
 
 print("d es:" + str (["%.8f" % elem for elem in y_hat])) 
 print ("p es:" + str (["%.8f" % elem for elem in y_true]))
 
 rmse_val = rmse (y_hat, y_true) 
 print ("error rms es:" + str (rmse_val))

Error Absoluto Medio / Pérdida L1

Fórmula matemática :

El error absoluto medio por otro lado, se mide como el promedio de la suma de las diferencias absolutas entre las predicciones y las observaciones reales.

Al igual que MSE (error cuadrático medio), también mide la magnitud del error sin considerar su dirección.

A diferencia de MSE (error cuadrático medio), MAE (error absoluto medio) necesita herramientas más complicadas, como la programación lineal para calcular los gradientes. Además, MAE es más robusto para los valores atípicos, ya que no utiliza cuadrado.

import numpy as np
 
y_hat = np.array ([0.000, 0.166, 0.333]) 
y_true = np.array ([0.000, 0.254, 0.998])
print("d es:" + str (["%.8f" % elem for elem in y_hat])) 
print("p es:" + str (["%.8f" % elem for elem in y_true])) 

def mae (predictions, targets): 
    differences = predictions - targets 
    absolute_differences = np.absolute (differences) 
    mean_absolute_differences = absolute_differences.mean () 
    return mean_absolute_differences
 
mae_val = mae (y_hat, y_true) 
print ("El error de mae es : "+ str (mae_val))

Error de sesgo promedio

Esto es mucho menos común en el dominio de Machine Learning en comparación con su contraparte.

Esto es igual que MSE (error cuadrático medio) con la única diferencia de que no tomamos valores absolutos.

Claramente hay una necesidad de precaución ya que los errores positivos y negativos pueden anularse mutuamente. Aunque menos preciso en la práctica, podría determinar si el modelo tiene sesgo positivo o sesgo negativo.

Fórmula matemática :

Pérdidas de clasificación

Bisagra Pérdida / Multi clase SVM Loss

En términos simples, el puntaje de la categoría correcta debe ser mayor que la suma de los puntajes de todas las categorías incorrectas por algún margen de seguridad (generalmente uno).

Y por lo tanto, la pérdida de bisagra se usa para la clasificación de margen máximo más notablemente para máquinas de vectores de soporte .

Aunque no diferenciable es una función convexa que facilita el trabajo con los optimizadores convexos habituales utilizados en el dominio de aprendizaje automático.

 

Formula matemática :

Considere un ejemplo en el que tenemos tres ejemplos de entrenamiento y tres clases para predecir: perro, gato y caballo. Debajo de los valores predichos por nuestro algoritmo para cada una de las clases:

Pérdidas de bisagra de cálculo para los tres ejemplos de entrenamiento:
 ## 1. ejemplo de entrenamiento 
 max( 0, (1.49) - (-0.39) + 1) + max(0, (4.21) - (-0.39) + 1) 
 max(0, 2.88) + max(0, 5.6) 
 2.88 + 5.6 
 8.48 (Pérdida alta como predicción incorrecta) 
 ## 2. ejemplo de entrenamiento 
 max(0, (-4.61) - (3.28) + 1) + max(0, (1,46) - (3,28) + 1) 
 max(0, -6,89) + max(0, -0,82) 
 0 + 0 
 0 (Pérdida cero como predicción correcta) 
  ## 3. ejemplo de entrenamiento 
 max(0, (1.03) - (-2.27) + 1) + max(0, (-2.37) - (-2.27) + 1) 
 max(0 , 4.3) + max(0, 0.9) 
 4.3 + 0.9 
 5.2 (Pérdida alta como predicción incorrecta) 

 

Pérdida de entropía cruzada / Probabilidad de registro negativo

Esta es la la configuración más común para los problemas de clasificación. La pérdida de entropía cruzada aumenta a medida que la probabilidad prevista diverge de la etiqueta real.

Fórmula matemática :

Observe que cuando la etiqueta real es 1 (y ( i) = 1), la segunda mitad de la función desaparece, mientras que en el caso de que la etiqueta real sea 0 (y (i) = 0) se deja caer la primera mitad.

En resumen, solo estamos multiplicando el registro de la probabilidad pronosticada real para la clase de verdad en el terreno. Un aspecto importante de esto es que la pérdida de entropía cruzada penaliza fuertemente las predicciones que son seguras pero erróneas .

 import numpy as np
      predictions = np.array([[0.25,0.25,0.25,0.25]
                             [0.01,0.01,0.01,0.96]] ) 
      targets = np.array([[0,0,0,1]
                         [0,0,0,1]])

def cross_entropy(predictions, targets, epsilon = 1e-10): 
    predictions = np.clip(predictions, epsilon, 1 .-epsilon) 
    N = predictions.shape[0]
    ce_loss = -np.sum(np.sum(targets * np.log(predicciones + 1e-5))) / N 
    return ce_loss

 cross_entropy_loss = cross_entropy(predictions, targets) 
 print ("La pérdida de entropía cruzada es:" + str(cross_entropy_loss))

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *