اذهب إلى المحتوى

السؤال

Recommended Posts

  • 2
نشر

متوسط النسبة المئوية للخطأ المطلق (MAPE)، هي دالة تستخدم لحساب متوسط النسبة المئوية للخطأ المطلق بين y_true و y_pred أي القيم الحقيقية والقيم المتوقعة من قبل النموذج.  وتستخدم مع مهام التوقع، وهي تشابه لحد ما الدالة MAE:

loss = 100 * abs(y_true - y_pred) / y_true

ويعتبر هذا المقياس من المقاييس الأكثر شيوعاً المستخدمة مع مهام التنبؤ بالمناخ، ويعمل بشكل أفضل إذا لم تكن البيانات متطرفة (ولاتحوي أصفاراً). ويمكن استدعاؤها من الموديول التالي:

tf.keras.losses.MeanAbsolutePercentageError

مثال على استخدامها في كيراس:

import tensorflow as tf
y_true = [[2., 1.], [2., 3.]]
y_pred = [[1., 1.], [1., 0.]]
mape = tf.keras.losses.MeanAbsolutePercentageError()
mape(y_true, y_pred).numpy()
50.

لاستخدامها في نماذجك يمكنك تمريرها للدالة compile بالشكل التالي:

model.compile(
	...
	loss="MeanAbsolutePercentageError"
)
# أو
model.compile(
	...
	loss=tf.keras.losses.MeanAbsolutePercentageError()
)

مثال عليها أثناء تدريب نموذج لتوقع أسعار المنازل:

# تحميل الداتا
from keras.datasets import boston_housing
import keras
(train_data, train_targets), (test_data, test_targets) = boston_housing.load_data()
# توحيد البيانات
mean = train_data.mean(axis=0)
train_data -= mean
std = train_data.std(axis=0)
train_data /= std
test_data -= mean
test_data /= std
from keras import models
from keras import layers
# بناء النموذج
def build_model():
    model = models.Sequential()
    model.add(layers.Dense(64, activation='relu',
    input_shape=(train_data.shape[1],)))
    model.add(layers.Dense(64, activation='relu'))
    model.add(layers.Dense(1))
    model.compile(optimizer='adam', loss="MeanAbsolutePercentageError", metrics=['mae'])
    return model
# تدريب النموذج
model = build_model()
model.fit(train_data, train_targets,epochs=14, batch_size=32)
-----------------------------------------------------------------------------------------------
Epoch 11/14
13/13 [==============================] - 0s 3ms/step - loss: 17.9825 - mae: 4.1283
Epoch 12/14
13/13 [==============================] - 0s 2ms/step - loss: 15.7485 - mae: 3.3775
Epoch 13/14
13/13 [==============================] - 0s 2ms/step - loss: 14.7182 - mae: 3.3004
Epoch 14/14
13/13 [==============================] - 0s 2ms/step - loss: 14.9168 - mae: 3.4608

<keras.callbacks.History at 0x7fe5c3a0f810>

 

  • 0
نشر

MeanAbsolutePercentageError هي دالة تكلفة تستخدم لحساب نسبة الخطأ كنسبة مئوية بين القيم الحقيقية y_true  والقيم المتوقعة y_pred من النموذج واعطاءه كنسبة مئوية ويتم حسابها كالتالي:

loss = ((y_true - y_pred) / y_true)* 100

وفي keras توجد الدالة على الصورة الاتيه:

tf.keras.losses.MeanAbsolutePercentageError(
    reduction=losses_utils.ReductionV2.AUTO,
    name='mean_absolute_percentage_error'
)

حيث توجد ضمن دوال التكلفة tf.keras.losses، ويمكنك استخدامها كالتالي:

>>> y_true = [[0., 1.], [0., 0.]]
>>> y_pred = [[1., 1.], [1., 0.]]
>>> # Using 'auto'/'sum_over_batch_size' reduction type.  
>>> mse = tf.keras.losses.MeanSquaredError()
>>> mse(y_true, y_pred).numpy()
0.5

0.5 تعني هنا ان نص ما توقعنا به جاء مطابقا للقيم الحقيقية.

ويمكنك استخدامها اثناء تدريب النموذج باضافتها في اخر سطر للتدريب كالتالي:

model.compile(optimizer='adam', loss="MeanAbsolutePercentageError", metrics=['mae']

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...