En apprentissage automatique, vous pouvez résoudre la modélisation prédictive par des problèmes de classification. Pour chaque observation du modèle, vous devez prédire l’étiquette de classe. Les données d’entrée contiennent l’une des variables suivantes : variables catégorielles ou variables continues. Cependant, la sortie contiendra toujours une variable catégorielle. Nous pouvons comprendre ce concept à l’aide de l’exemple suivant. Disons que nous prévoyons le temps qu’il fera dans le voisinage. Nous considérerons la période de l’année et les informations météorologiques comme des caractéristiques d’entrée. Les informations météorologiques comprennent la température, la vitesse du vent, l’humidité, le temps nuageux ou ensoleillé. Nous générerons une sortie indiquant s’il va pleuvoir ou non. Dans un autre exemple, nous pouvons prédire si un email est un spam ou non en considérant les informations de l’expéditeur et le contenu de l’email en sortie.

Comprendre la perte de logs

La perte de log est une métrique de classification essentielle pour les prédictions basées sur des probabilités. Bien que l’interprétation des valeurs brutes de perte logarithmique soit une tâche délicate, vous trouverez que la perte logarithmique est une technique efficace pour comparer un modèle d’apprentissage automatique à un autre. Gardez à l’esprit que pour trouver de bonnes prédictions pour n’importe quel problème, vous devriez considérer la valeur de perte logarithmique la plus faible. Vous pouvez également faire référence à la perte logarithmique en tant que perte d’entropie croisée ou perte logistique.
La fonction de perte est utile pour les modèles multinominaux tels que la régression logistique et ses extensions. Les extensions incluent les réseaux neuronaux et d’autres types de modèles. En d’autres termes, la fonction de perte est la log-vraisemblance négative dans un modèle logistique. À condition que le modèle renvoie (y_pred) les probabilités de formation des données (y_true).
Vous ne pouvez définir la perte logarithmique que pour deux étiquettes et plus. L’équation de la perte logarithmique, en considérant le premier échantillon avec une estimation de probabilité p=Pr (y=1) et un vrai label y∈{0,1} serait :
Llog(y,p)=-(ylog(p)+(1-y)log(1-p)).

Exemples de perte logarithmique

Supposons que les probabilités prédites par le modèle pour trois maisons soient [0,8, 0,4, 0,1]. Seule la dernière de toutes ces maisons n’a pas été vendue. Par conséquent, vous représenterez numériquement le résultat final de ces entrées comme [1, 1, 0].

Perte de logarithme et Python

Ci-dessous, nous allons aborder différents types de fonctions de perte pour la fonction de perte concrète. Nous utiliserons Python pour le calcul :

– Perte par erreur quadratique moyenne

La perte d’erreur quadratique moyenne est une fonction de perte de régression. Vous calculerez la MSE comme la moyenne de la variance au carré entre les valeurs prédites et les valeurs réelles. Quel que soit le signe des valeurs prédites et des valeurs réelles, vous obtiendrez toujours un résultat positif. La valeur parfaite serait 0,0. Malgré le fait que vous pouvez faire un score négatif et utiliser la valeur de perte pour le processus d’optimisation de la maximisation, le résultat sera minimum. La fonction Python suivante calculera l’erreur quadratique moyenne. De plus, vous pouvez créer une liste de quantités prédites et réelles.
# calculer l’erreur quadratique moyenne
def mean_squared_error(réel, prédit) :
sum_square_error = 0.0
for i in range(len(actual)) :
sum_square_error += (réel[i] – prédit[i])**2.0
erreur_carrée_moyenne = 1,0 / len(réel) * erreur_carrée_somme
return erreur_carrée_moyenne
Vous devez utiliser la fonction mean squared error() pour implémenter efficacement la perte d’erreur.

– Perte d’entropie croisée (ou perte logarithmique)

La perte d’entropie croisée peut être appelée perte logarithmique, perte d’entropie croisée, perte logarithmique ou perte logistique. Elle indique que chaque probabilité que vous prédisez est comparée à la valeur réelle de sortie de la classe, soit 0 ou 1. Cette technique permet de calculer le score. Ce score va pénaliser la probabilité en raison de la distance entre la valeur de sortie et la valeur attendue. La nature de la pénalité sera logarithmique. Une grande différence contiendra un score énorme, tel que 0,9 ou 10. En revanche, les différences plus faibles contiendront de petits scores tels que 0,1 ou 0,2.
Le modèle avec des probabilités précises contiendra une perte logarithmique ou une entropie croisée de 0,0. Cela indique que la perte d’entropie croisée est minimale, et que les petites valeurs représenteront un bon modèle plutôt que les grandes. Parmi tous les exemples, l’entropie croisée pour les prédictions à deux classes ou les problèmes binaires calculera l’entropie croisée moyenne.
Les fonctions Python suivantes vous aideront à calculer le Log Loss. Vous devez implémenter ce pseudocode et comparer les valeurs 0 et 1 et prédire les probabilités pour la classe 1. Ainsi, vous serez en mesure de calculer le Log Loss :
from math import log

# calculer l’entropie croisée binaire
def binary_cross_entropy(actual, predicted) :
sum_score = 0.0
for i in range(len(actual)) :
sum_score += réel[i] * log(1e-15 + prédit[i])
moyenne_sum_score = 1.0 / len(actual) * sum_score
retourne -mean_sum_score
Pour éviter l’erreur, nous devons ajouter une petite valeur dans les probabilités prédites. Cela signifie que la meilleure perte possible sera la valeur la plus proche de zéro, mais elle ne doit pas être exactement zéro. Vous pouvez calculer l’entropie croisée pour une classification à classes multiples. Sur la base de chaque classe, les prédictions doivent inclure les possibilités prédites et contenir des caractéristiques binaires. Ensuite, l’entropie croisée sera la somme des caractéristiques moyennes et binaires de tous les exemples de l’ensemble de données.
La fonction Python suivante vous aidera à calculer l’entropie croisée de la liste des valeurs codées. Elle aidera à comparer les possibilités prédites et les valeurs codées pour chaque classe :
from math import log

# calculer l’entropie croisée catégorielle
def categorical_cross_entropy(actual, predicted) :
sum_score = 0.0
for i in range(len(actual)) :
for j in range(len(actual[i])) :
sum_score += réel[i][j] * log(1e-15 + prédit[i][j])
mean_sum_score = 1.0 / len(actual) * sum_score
return -mean_sum_score
Vous devriez utiliser la fonction log_loss() pour mettre en œuvre l’entropie croisée de manière efficace.

Conclusion

Vous devez interpréter soigneusement les compétences du modèle utilisant la fonction log-loss en raison de la faible valeur de log-loss et du jeu de données déséquilibré. Lors de la création d’un modèle statistique, celui-ci doit atteindre le score log-loss de base en fonction de l’ensemble de données donné. S’il n’atteint pas le score log, le modèle statistique formé est inexact et n’est pas utile. Dans ce cas, vous devez utiliser un meilleur modèle pour trouver la perte logarithmique d’une probabilité.