Kom igångKom igång gratis

Anpassad förlustfunktion

Hittills har vi använt medelkvadratfelet som förlustfunktion. Det fungerar bra, men vid förutsägelse av aktiekurser kan det vara värdefullt att implementera en anpassad förlustfunktion. En sådan funktion låter oss styra modellens inlärning på ett mer målinriktat sätt. Vi ska till exempel skapa en anpassad förlustfunktion som ger ett stort straff när modellen förutsäger fel prisriktning. Det hjälper nätverket att åtminstone lära sig att förutsäga om kursen rör sig uppåt eller nedåt.

För att göra detta behöver vi skriva en funktion som tar argumenten (y_true, y_predicted). Vi använder även funktionalitet från keras backend (via tensorflow) för att identifiera fall där det verkliga värdet och förutsägelsen har olika tecken – och sedan bestraffa just dessa fall.

Den här övningen är en del av kursen

Maskininlärning för finans i Python

Visa kurs

Övningsinstruktioner

  • Ange argumenten för funktionen sign_penalty() som y_true och y_pred.
  • Multiplicera kvadratfelet (tf.square(y_true - y_pred)) med penalty när y_true och y_pred har olika tecken.
  • Returnera medelvärdet av variabeln loss från funktionen – det vill säga medelkvadratfelet med straffet för motsatta tecken mellan faktiska värden och förutsägelser.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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)
Redigera och kör kod