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
Pokyny k cvičení
- Nastav argumenty funkce
sign_penalty()nay_trueay_pred. - Vynásob kvadratickou chybu (
tf.square(y_true - y_pred)) hodnotoupenaltyv případech, kdy majíy_trueay_predrůzná znaménka. - Vrať průměr proměnné
lossz 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)