CommencezCommencez gratuitement

Fonction de perte personnalisée

Jusqu'à maintenant, nous avons utilisé l'erreur quadratique moyenne comme fonction de perte. Cela fonctionne bien, mais pour la prédiction du prix des actions, il peut être utile d'implanter une fonction de perte personnalisée. Une fonction de perte sur mesure peut améliorer le rendement de notre modèle de façons précises que nous choisissons. Par exemple, nous allons créer une fonction de perte qui impose une forte pénalité lorsqu'on prédit un mouvement de prix dans la mauvaise direction. Cela aidera notre réseau à au moins prédire la bonne direction du mouvement des prix.

Pour ce faire, nous devons écrire une fonction qui prend les arguments (y_true, y_predicted). Nous utiliserons aussi des fonctionnalités de l'arrière-plan 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.

Cette activité fait partie du cours

Machine Learning pour la finance en Python

Voir le cours

Instructions de l’exercice

  • Définissez les arguments de la fonction sign_penalty() à 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 — il s'agit de 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