Comece agoraComece grátis

Função de loss personalizada

Até agora, usamos o erro quadrático médio como função de loss. Isso funciona bem, mas, para prever preços de ações, pode ser útil implementar uma função de loss personalizada. Uma função de loss personalizada pode ajudar a melhorar o desempenho do nosso modelo de maneiras específicas que escolhemos. Por exemplo, vamos criar uma função de loss com uma penalidade alta para previsões que erram a direção do movimento do preço. Isso vai ajudar nossa rede a, pelo menos, prever a direção correta dos movimentos de preço.

Para isso, precisamos escrever uma função que receba os argumentos (y_true, y_predicted). Também vamos usar recursos do backend do keras (com tensorflow) para encontrar os casos em que o valor real e a previsão têm sinais diferentes e, então, penalizar esses casos.

Este exercicio faz parte do curso

Machine Learning para Finanças em Python

Ver curso

Instruções do exercicio

  • Defina os argumentos da função sign_penalty() como y_true e y_pred.
  • Multiplique o erro quadrático (tf.square(y_true - y_pred)) por penalty quando os sinais de y_true e y_pred forem diferentes.
  • Retorne a média da variável loss na função — isso é o erro quadrático médio (com nossa penalidade para sinais opostos entre o valor real e as previsões).

exercicio interativo prático

Tente este exercicio completando este código de exemplo.

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)
Editar e Executar Código