ПочатиПочніть безкоштовно

Користувацька функція втрат

Дотепер ми використовували середньоквадратичну помилку як функцію втрат. Це працює добре, але для прогнозування ціни акції інколи корисно реалізувати користувацьку функцію втрат. Користувацька функція втрат може покращити роботу моделі в заданий нами спосіб. Наприклад, ми створимо функцію втрат із великим штрафом за прогноз руху ціни в хибному напрямку. Це допоможе нашій мережі принаймні передбачати напрямок руху ціни правильно.

Для цього нам потрібно написати функцію, яка приймає аргументи (y_true, y_predicted). Ми також використаємо функціональність бекенда keras (на базі tensorflow), щоб знайти випадки, коли знак істинного значення і прогнозу не збігаються, і застосувати до них штраф.

Ця вправа є частиною курсу

Machine Learning для фінансів у Python

Переглянути курс

Інструкції до вправи

  • Задайте аргументи функції sign_penalty() як y_true і y_pred.
  • Помножте квадратичну помилку (tf.square(y_true - y_pred)) на penalty, коли знаки y_true і y_pred різні.
  • Поверніть із функції середнє значення змінної loss — це і є середньоквадратична помилка (з нашим штрафом за протилежні знаки фактичних значень та прогнозів).

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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)
Редагувати та запускати код