Začněte nyníZačněte zdarma

Vlastní ztrátová funkce

Dosud jsme jako ztrátovou funkci používali střední kvadratickou chybu. To funguje dobře, ale při predikci cen akcií může být užitečné implementovat vlastní ztrátovou funkci. Ta nám umožňuje ovlivnit chování modelu přesně tak, jak potřebujeme. Například vytvoříme vlastní ztrátovou funkci s vysokou penalizací za predikci pohybu ceny ve špatném směru. Díky tomu se síť naučí předpovídat pohyby cen alespoň ve správném směru.

K tomu potřebujeme napsat funkci, která přijímá argumenty (y_true, y_predicted). Využijeme také funkcionalitu backendu keras (s tensorflow) k nalezení případů, kdy skutečná hodnota a predikce mají různá znaménka, a tyto případy penalizujeme.

Toto cvičení je součástí kurzu

Machine Learning for Finance in Python

Zobrazit kurz

Pokyny k cvičení

  • Nastav argumenty funkce sign_penalty() na y_true a y_pred.
  • Vynásob kvadratickou chybu (tf.square(y_true - y_pred)) hodnotou penalty v případech, kdy mají y_true a y_pred různá znaménka.
  • Vrať průměr proměnné loss z funkce – to odpovídá střední kvadratické chybě (s naší penalizací za opačná znaménka skutečných hodnot a predikcí).

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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)
Upravit a spustit kód