कस्टम loss फंक्शन
अब तक, हमने loss फंक्शन के रूप में mean squared error का उपयोग किया है। यह ठीक काम करता है, लेकिन स्टॉक प्राइस प्रेडिक्शन में कभी-कभी कस्टम loss फंक्शन बनाना उपयोगी होता है। कस्टम loss फंक्शन हमारी पसंद के विशिष्ट तरीकों में मॉडल का प्रदर्शन बेहतर करने में मदद कर सकता है। उदाहरण के लिए, हम एक कस्टम loss फंक्शन बनाएँगे जो गलत दिशा में प्राइस मूवमेंट्स की भविष्यवाणी पर भारी पेनल्टी लगाएगा। इससे हमारा नेटवर्क कम से कम प्राइस मूवमेंट्स की दिशा सही बताना सीख लेगा।
ऐसा करने के लिए, हमें एक फंक्शन लिखना है जो (y_true, y_predicted) आर्ग्युमेंट्स ले। हम बैकएंड keras (जो tensorflow का इस्तेमाल करता है) की फंक्शनैलिटी भी उपयोग करेंगे ताकि वे केस ढूँढ सकें जहाँ वास्तविक मान और प्रेडिक्शन के साइन मेल नहीं खाते, और फिर उन केसों को पेनलाइज़ करें।
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Finance के लिए Machine Learning
अभ्यास निर्देश
sign_penalty()फंक्शन के आर्ग्युमेंट्स कोy_trueऔरy_predसेट करें।- जब
y_trueऔरy_predके साइन अलग हों, तो squared error (tf.square(y_true - y_pred)) कोpenaltyसे गुणा करें। - फंक्शन से
lossवैरिएबल का औसत लौटाएँ — यही mean squared error है (जिसमें वास्तविक बनाम प्रेडिक्शन के विपरीत साइन के लिए हमारी पेनल्टी शामिल है)।
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
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)