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
Instructions de l’exercice
- Définissez les arguments de la fonction
sign_penalty()ày_trueety_pred. - Multipliez l'erreur quadratique (
tf.square(y_true - y_pred)) parpenaltylorsque les signes dey_trueety_predsont différents. - Retournez la moyenne de la variable
lossdepuis 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)