تقييم نموذج التعلم الآلي
لذلك قمت بتدريب نموذج تنبؤي. كيف تعرف ما إذا كان جيدا؟
لتقييم نموذج، تحتاج إلى استخدام بيانات التحقق من الصحة التي قمت بالاحتفاظ بها. بالنسبة لنماذج التعلم الآلي الخاضعة للإشراف، يمكنك هذا الأسلوب من مقارنة التسميات المتوقعة من قبل النموذج بالتسميات الفعلية في مجموعة بيانات التحقق من الصحة. من خلال مقارنة التنبؤات بقيم التسمية الحقيقية، يمكنك حساب مجموعة من مقاييس التقييم لتحديد الأداء التنبؤي للنموذج.
تقييم نماذج الانحدار
تتنبأ نماذج الانحدار بالقيم الرقمية، لذلك يتطلب منك أي تقييم للأداء التنبؤي للنموذج مراعاة الاختلافات بين القيم المتوقعة وقيم التسمية الفعلية في مجموعة بيانات التحقق من الصحة. نظرا لأن مجموعة بيانات التحقق من الصحة تتضمن حالات متعددة، قد يكون لبعضها تنبؤات أكثر دقة من غيرها، فأنت بحاجة إلى طريقة ما لتجميع الاختلافات وتحديد مقياس عام للأداء. تتضمن المقاييس النموذجية المستخدمة لتقييم نموذج الانحدار ما يلي:
- متوسط الخطأ التربيعي (MSE):يتم حساب هذا المقياس عن طريق تحديد الاختلافات بين كل توقع وقيمة فعلية، وإضافة الاختلافات التربيعية معا، وحساب المتوسط (المتوسط). يجعل تربيض القيم الاختلافات مطلقة (مع تجاهل ما إذا كان الفرق سالبا أو موجبا) ويعطي وزنا أكبر للاختلافات الأكبر.
- خطأ تربيعي متوسط الجذر (RMSE): في حين أن مقياس MSE هو مؤشر جيد على مستوى الخطأ في تنبؤات النماذج، فإنه لا يرتبط بالوحدة الفعلية للقياس للتسمية. على سبيل المثال، في نموذج يتنبأ بالمبيعات (بالدولار الأمريكي)، تمثل قيمة MSE في الواقع قيم الدولار التربيعية. لتقييم مدى بعد التنبؤات من حيث الدولارات، تحتاج إلى حساب الجذر التربيعي ل MSE.
- معامل التحديد (R2):يقيس مقياس R2 الارتباط بين الميزة التربيعية والقيم المتوقعة. ينتج عن هذا قيمة بين 0 و1 تقيس مقدار التباين الذي يمكن تفسيره بواسطة النموذج. كلما اقتربت هذه القيمة من 1، كان توقع النموذج أفضل.
توفر معظم أطر التعلم الآلي فئات تحسب هذه المقاييس نيابة عنك. على سبيل المثال، توفر مكتبة Spark MLlib فئة RegressionEvaluator ، والتي يمكنك استخدامها كما هو موضح في مثال التعليمات البرمجية هذا:
from pyspark.ml.evaluation import RegressionEvaluator
# Inference predicted labels from validation data
predictions_df = model.transform(validation_df)
# Assume predictions_df includes a 'prediction' column with the predicted labels
# and a 'label' column with the actual known label values
# Use an evaluator to get metrics
evaluator = RegressionEvaluator()
evaluator.setPredictionCol("prediction")
mse = evaluator.evaluate(predictions_df, {evaluator.metricName: "mse"})
rmse = evaluator.evaluate(predictions_df, {evaluator.metricName: "rmse"})
r2 = evaluator.evaluate(predictions_df, {evaluator.metricName: "r2"})
print("MSE:", str(mse))
print("RMSE:", str(rmse))
print("R2", str(r2))
تقييم نماذج التصنيف
تتنبأ نماذج التصنيف بالتسميات الفئوية (الفئات) عن طريق حساب قيمة احتمال لكل فئة ممكنة وتحديد تسمية الفئة ذات الاحتمال الأعلى. تعكس المقاييس المستخدمة لتقييم نموذج التصنيف عدد المرات التي كانت فيها تنبؤات الفئة هذه صحيحة عند مقارنتها بالتسميات الفعلية المعروفة في مجموعة بيانات التحقق من الصحة. تتضمن المقاييس النموذجية المستخدمة لتقييم نموذج التصنيف ما يلي:
- الدقة: مقياس بسيط يشير إلى نسبة تنبؤات الفئة التي أجراها النموذج والتي كانت صحيحة. في حين أن هذا قد يبدو وكأنه الطريقة الواضحة لتقييم أداء نموذج التصنيف، ضع في اعتبارك سيناريو يستخدم فيه النموذج للتنبؤ بما إذا كان الشخص سيتنقل للعمل بالسيارة أو الحافلة أو الترام. لنفترض أن 95% من الحالات في مجموعة التحقق من الصحة تستخدم سيارة، و3% تأخذ الحافلة، و2% تلتقط ترام. نموذج ببساطة يتوقع دائما سيارة سيكون 95% دقيقة - على الرغم من أنه في الواقع ليس لديه قدرة تنبؤية للتمييز بين الفئات الثلاث.
- المقاييس لكل فئة:
- الدقة: نسبة تنبؤات الفئة المحددة الصحيحة. يتم قياس هذا على أنه عدد الإيجابيات الحقيقية (التنبؤات الصحيحة لهذه الفئة) مقسوما على العدد الإجمالي للتنبؤات لهذه الفئة (بما في ذلك الإيجابيات الزائفة).
- الاستدعاء: نسبة المثيلات الفعلية لهذه الفئة التي تم التنبؤ بها بشكل صحيح (الإيجابيات الحقيقية مقسومة على العدد الإجمالي إذا كانت مثيلات هذه الفئة في مجموعة بيانات التحقق من الصحة، بما في ذلك السلبيات الخاطئة - الحالات التي توقع فيها النموذج فئة مختلفة بشكل غير صحيح).
- درجة F1: مقياس مجمع للدقة والاستدعاء (يتم حسابه على أنه الوسط التوافقي للدقة والاسترجاع).
- مقاييس الدقةوالاستدعاءوF1 المجمعة (المرجحة) لجميع الفئات.
أما الانحدار، فإن معظم أطر التعلم الآلي تتضمن فئات يمكنها حساب مقاييس التصنيف. على سبيل المثال، تستخدم التعليمات البرمجية التالية MulticlassclassificationEvaluator في مكتبة Spark MLlib.
from pyspark.ml.evaluation import MulticlassClassificationEvaluator
# Inference predicted labels from validation data
predictions_df = model.transform(validation_df)
# Assume predictions_df includes a 'prediction' column with the predicted labels
# and a 'label' column with the actual known label values
# Use an evaluator to get metrics
accuracy = evaluator.evaluate(predictions_df, {evaluator.metricName:"accuracy"})
print("Accuracy:", accuracy)
labels = [0,1,2]
print("\nIndividual class metrics:")
for label in sorted(labels):
print ("Class %s" % (label))
precision = evaluator.evaluate(predictions_df, {evaluator.metricLabel:label,
evaluator.metricName:"precisionByLabel"})
print("\tPrecision:", precision)
recall = evaluator.evaluate(predictions_df, {evaluator.metricLabel:label,
evaluator.metricName:"recallByLabel"})
print("\tRecall:", recall)
f1 = evaluator.evaluate(predictions_df, {evaluator.metricLabel:label,
evaluator.metricName:"fMeasureByLabel"})
print("\tF1 Score:", f1)
overallPrecision = evaluator.evaluate(predictions_df, {evaluator.metricName:"weightedPrecision"})
print("Overall Precision:", overallPrecision)
overallRecall = evaluator.evaluate(predictions_df, {evaluator.metricName:"weightedRecall"})
print("Overall Recall:", overallRecall)
overallF1 = evaluator.evaluate(predictions_df, {evaluator.metricName:"weightedFMeasure"})
print("Overall F1 Score:", overallF1)
تقييم نماذج التجميع غير الخاضعة للإشراف
لا تحتوي نماذج التجميع غير الخاضعة للإشراف على قيم تسمية صحيحة معروفة. الهدف من نموذج التجميع هو تجميع حالات مماثلة في مجموعات استنادا إلى ميزاتها. لتقييم نظام مجموعة، تحتاج إلى مقياس يشير إلى مستوى الفصل بين المجموعات. يمكنك التفكير في الحالات المجمعة كنقاط مخططة في مساحة متعددة الأبعاد. يجب أن تكون النقاط في نفس المجموعة قريبة من بعضها البعض، وبعيدة عن النقاط في مجموعة مختلفة.
أحد هذه المقاييس هو مقياس الظلية ، الذي يحسب المسافة التربيعية الإقليدية ويوفر مؤشرا على الاتساق داخل المجموعات. يمكن أن تتراوح قيم الظلية بين 1 و-1، مع قيمة قريبة من 1 تشير إلى أن النقاط في نظام المجموعة قريبة من النقاط الأخرى في نفس المجموعة وبعيدة عن نقاط المجموعات الأخرى.
توفر مكتبة Spark MLlib فئة ClusteringEvaluator ، التي تحسب الصورة الظلية للتنبؤات التي تم إجراؤها بواسطة نموذج تجميع كما هو موضح هنا:
from pyspark.ml.evaluation import ClusteringEvaluator
from pyspark.ml.linalg import Vectors
# Inference predicted labels from validation data
predictions_df = model.transform(validation_df)
# Assume predictions_df includes a 'prediction' column with the predicted cluster
# Use an evaluator to get metrics
evaluator = ClusteringEvaluator(predictionCol="prediction")
silhouetteVal = evaluator.evaluate(predictions_df)
print(silhouetteVal)