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
Övningsinstruktioner
- Ange argumenten för funktionen
sign_penalty()somy_trueochy_pred. - Multiplicera kvadratfelet (
tf.square(y_true - y_pred)) medpenaltynäry_trueochy_predhar olika tecken. - Returnera medelvärdet av variabeln
lossfrå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)