CommencerCommencez gratuitement

Fonction de perte personnalisée

Jusqu'ici, nous avons utilisé l'erreur quadratique moyenne comme fonction de perte. Cela fonctionne bien, mais pour la prédiction de cours boursiers, il peut être utile d'implémenter une fonction de perte personnalisée. Une fonction de perte personnalisée peut aider à améliorer les performances de notre modèle de façon ciblée. Par exemple, nous allons créer une fonction de perte qui applique une forte pénalité lorsque le modèle se trompe de direction sur le mouvement du prix. Cela aidera notre réseau à apprendre au moins à prédire le bon sens du mouvement.

Pour cela, nous devons écrire une fonction qui prend pour arguments (y_true, y_predicted). Nous utiliserons aussi des fonctionnalités du backend keras (avec tensorflow) pour repérer les cas où la valeur réelle et la prédiction n'ont pas le même signe, puis pénaliser ces cas.

Cet exercice fait partie du cours

<cours>Machine Learning pour la finance en Python</cours>
Voir le cours

Instructions de l’exercice

  • Définissez les arguments de la fonction sign_penalty() comme y_true et y_pred.
  • Multipliez l'erreur quadratique (tf.square(y_true - y_pred)) par penalty lorsque les signes de y_true et y_pred sont différents.
  • Retournez la moyenne de la variable loss depuis la fonction — c'est l'erreur quadratique moyenne (avec notre pénalité lorsque le signe de la valeur réelle et celui de la prédiction sont opposés).

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

import keras.losses
import tensorflow as tf

# Create loss function
def sign_penalty(____, ____):
    penalty = 100.
    loss = tf.where(tf.less(y_true * y_pred, 0), \
                     ____ * tf.square(y_true - y_pred), \
                     tf.square(y_true - y_pred))

    return tf.reduce_mean(____, axis=-1)

keras.losses.sign_penalty = sign_penalty  # enable use of loss with keras
print(keras.losses.sign_penalty)
Modifier et exécuter le code