Fungsi loss kustom
Sampai sekarang, kita menggunakan mean squared error sebagai fungsi loss. Ini baik-baik saja, tetapi untuk prediksi harga saham ada kalanya berguna membuat fungsi loss kustom. Fungsi loss kustom dapat membantu meningkatkan kinerja model dengan cara-cara spesifik yang kita inginkan. Misalnya, kita akan membuat fungsi loss kustom dengan penalti besar jika memprediksi pergerakan harga dengan arah yang salah. Ini akan membantu jaringan kita belajar untuk setidaknya memprediksi arah pergerakan harga yang benar.
Untuk melakukannya, kita perlu menulis fungsi yang menerima argumen (y_true, y_predicted). Kita juga akan menggunakan fungsionalitas dari backend keras (menggunakan tensorflow) untuk mencari kasus ketika nilai sebenarnya dan prediksi memiliki tanda yang berbeda, lalu memberi penalti pada kasus-kasus tersebut.
Latihan ini merupakan bagian dari kursus
Machine Learning untuk Keuangan dengan Python
Instruksi latihan
- Atur argumen fungsi
sign_penalty()menjadiy_truedany_pred. - Kalikan squared error (
tf.square(y_true - y_pred)) denganpenaltyketika tanday_truedany_predberbeda. - Kembalikan nilai rata-rata dari variabel
lossdari fungsi — ini adalah mean squared error (dengan penalti untuk tanda aktual vs prediksi yang berlawanan).
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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)