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

استخدام  MeanSquaredError  كدالة تكلفة، وكمعيار كفاءة لنماذج التوقع Regression في Keras

Meezo ML

السؤال

Recommended Posts

  • 1

أشهر دالة تكلفة والأفضل مع مسائل التوقع ويمكن استخدامها أيضاً كمعيار لكن من غير الشائع القيام بذلك، وهي تقوم على  حساب متوسط الفرق التربيعي بين القيم المتوقعة من النموذج والقيمة الفعلية.
ال MSE قوي في التعامل مع القيم المتطرفة في البيانات.
الصيغة الرياضية:

MSE.png.ebfc2607b55c1754f70f4e46bbce4615.png
ال  MSE من أجل عينة ما :

# من أجل عينة واحدة
loss = square(y_true - y_pred)

لاستخدامها نقوم بتمررها إلى الدالة compile  في نوذجنا كما في المثال:

# تحميل الداتا
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='rmsprop', loss=keras.losses., metrics=['mae'])
    #بالشكل التالي compile هنا استخدمناها كدالة تكلفة وكمعيار عن طريق تمريره إلى الدالة 
    #model.compile(optimizer='rmsprop', loss='mse', metrics=['mse'])
    return model
# تدريب النموذج
model = build_model()
model.fit(train_data, train_targets,epochs=8, batch_size=64)
"""
Epoch 1/8
7/7 [==============================] - 1s 2ms/step - loss: 583.3815 - mse: 583.3815
Epoch 2/8
7/7 [==============================] - 0s 2ms/step - loss: 531.9802 - mse: 531.9802
Epoch 3/8
7/7 [==============================] - 0s 3ms/step - loss: 503.3803 - mse: 503.3803
Epoch 4/8
7/7 [==============================] - 0s 3ms/step - loss: 409.2950 - mse: 409.2950
Epoch 5/8
7/7 [==============================] - 0s 2ms/step - loss: 387.9506 - mse: 387.9506
Epoch 6/8
7/7 [==============================] - 0s 3ms/step - loss: 303.1605 - mse: 303.1605
Epoch 7/8
7/7 [==============================] - 0s 2ms/step - loss: 253.2450 - mse: 253.2450
Epoch 8/8
7/7 [==============================] - 0s 3ms/step - loss: 190.7695 - mse: 190.7695

"""

 

تم التعديل في بواسطة Ali Haidar Ahmad
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

Mean Squared Error (MSE) من أشهر دوال حساب الخطأ في regression problems والتي تحسب متوسط مربعات الفروقات بين القيم المتوقعة من النموذج و القيم الحقيقية، تمثل رياضياً ب:

gif.latex.gif.c1ca747931632f321063de5f0237fdd1.gif

والدالة توجد في sklearn.metrics ويمكن مناداتها كالتالي:

from sklearn.metrics import mean_squared_error
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
mean_squared_error(y_true, y_pred)

والان يمكننا أن نقوم بعرض مثال لطريقة تطبيق mse على بيانات boston dataset:

from keras import models, layers
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
X, y = load_boston(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.4)
print(X_train.shape, y_train.shape,X_test.shape, y_test.shape)
model = models.Sequential()
model.add(layers.Dense(13, activation='linear', input_shape=(13,)))
model.add(layers.Dense(26, activation='sigmoid'))
model.add(layers.Dense(1, activation='tanh'))
model.compile(optimizer='rmsprop',loss=tf.keras.losses.mean_squared_error,metrics=['mse'])
model.fit(X_train, y_train, epochs=3, batch_size=200)

لاحظ ناتج تنفيذ النموذج و الذي يكون عبارة عن 3 حلقات epochs في كل مرة يتم فيها تدريب النموذج على عدد 200 مدخل و يتم تقييم النموذج بإستخدام mean_squared_error.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...